Community程式設計與開發github.com

farfarfun-skill/publish-skill

驗證技能儲存庫中 skills/<slug>/SKILL.md 的前置元資料與主體內容,為 skills.sh 探索產生安裝指令清單,並將公開技能儲存庫鏡像同步到另一個 GitHub 組織(例如市集或聚合器)。當 Codex 需要檢查技能是否準備好發布、產生 skills.sh 安裝命令,或將技能儲存庫分支/同步到次要平台時使用。

publish-skill 是什麼?

這個技能(Publish Skill)提供了一套完整的自動化工具,用於管理基於 skills.sh 的技能發布流程。skills.sh 沒有提交佇列,而是透過爬取公開 GitHub 儲存庫中格式良好的 `skills/<slug>/SKILL.md` 檔案來發現技能。因此,「發布」意味著儲存庫必須是公開的,且每個 SKILL.md 都包含有效的前置元資料。此技能支援四大核心功能:驗證(validate)檢查所有 SKILL.md 的前置元資料和主體內容是否正確;產生安裝清單(manifest)為每個有效技能生成 `npx skills add` 命令;一次發布整個組織(org)的功能能遍歷組織內所有公開儲存庫並執行驗證與清單產生;以及鏡像(mirror)功能將通過驗證的儲存庫分支同步到另一個 GitHub 組織,以便在次要平台上進行二次發現。它主要用於技能開發者或儲存庫管理員,確保技能在 skills.sh 上可被正確發現和安裝。支援的平台為 GitHub 和 skills.sh。其工作方式是透過 Python 腳本(`scripts/skill_publisher.py`)與 GitHub CLI(`gh`)協作,對本地克隆的儲存庫進行靜態分析,並提供可操作的結果(允許、修正、阻止),而不需要任何外部提交 API。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/farfarfun-skill/publish-skill/tree/main/skills/publish-skill

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

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 是資訊性/動作輸出,而非閘道——不要因它們而阻止。

相關技能