Publish Skill
skills.sh 沒有提交佇列——它是透過爬取公開 GitHub 儲存庫中格式良好的 skills/<slug>/SKILL.md 檔案來發現技能。因此,「發布」意味著:儲存庫是公開的,每個 SKILL.md 都有有效的前置元資料,並且(可選地)該技能也會鏡像到直接索引儲存庫的次要市集/組織中。
驗證
從此技能目錄執行:
python3 scripts/skill_publisher.py validate --workspace /path/to/repo --fail-on block
檢查每個 skills/<slug>/SKILL.md:前置元資料以 --- 開頭和結尾,name 存在且為小寫 kebab-case,name 與其目錄名稱相符,description 存在且長度在 20 到 1024 字元之間,並且前置元資料後面的主體內容包含實際的指示(而不僅僅是佔位符)。
使用 --fail-on revise 進行更嚴格的閘道檢查,使用 --format json 進行機器可讀的輸出。
產生安裝清單
python3 scripts/skill_publisher.py manifest --workspace /path/to/repo
從 git remote origin 解析儲存庫的 GitHub 別名,並為每個有效的技能列印一行 npx skills add <owner>/<repo> --skill <name>。這就是可以分發(或貼到 README/公告中)作為「從 skills.sh 安裝」的指示——沒有單獨的提交步驟。
all 在一次呼叫中執行 validate 和 manifest,並共用相同的 --fail-on 閘道。
用一個命令發布整個組織
python3 scripts/skill_publisher.py org --org farfarfun-skill --workspaces-dir /path/to/farfarfun-skill
這是一鍵「發布所有內容」的入口點。它透過 gh repo list 列出 --org 中每個公開、非分支的儲存庫,克隆任何尚未簽出到 --workspaces-dir 的儲存庫(絕不拉取或修改現有克隆),跳過沒有 skills/ 目錄的儲存庫,對其餘儲存庫執行 validate,並列印整個組織的組合安裝清單。--workspaces-dir 預設為 --workspace 的父目錄,因此如果從一個與其同級儲存庫並存在磁碟上的儲存庫中執行,則無需額外的標誌。
新增 --register 也會對每個通過驗證的技能在本機執行 npx skills add <owner>/<repo> --skill <name> -y——這是實際提供 skills.sh 安裝遙測/排行榜的機制(沒有提交 API),並且它也會將技能安裝到此機器的代理技能目錄中,因此僅在需要此副作用時傳遞此標誌。
新增 --mirror-to <org> 以額外將每個通過的儲存庫分支/同步到次要組織(請參閱下文)。
鏡像到另一個平台
python3 scripts/skill_publisher.py mirror --workspace /path/to/repo --target-org farfarfun-skills
在首次執行時將儲存庫分支到 --target-org(預設為 farfarfun-skills),名稱為 <owner>--<repo>,並在每次後續執行時從源頭重新同步該分支——這與此組織已鏡像 farfarfun-skill/* 儲存庫以進行二次發現的方式相符。需要 gh 已通過驗證,並且具有在目標組織中建立儲存庫的權限。這是唯一會更改遠端 GitHub 狀態的子命令;請先執行 validate,並且僅鏡像通過驗證的儲存庫。
回傳結果
從 validate 回傳 allow、revise 或 block,以及通過的檢查,並針對任何發現的問題提供具體的修復路徑(哪個檔案、哪個欄位、要更改什麼)。manifest 和 mirror 是資訊性/動作輸出,而非閘道——不要因它們而阻止。