Community寫作與編輯github.com

ssheleg/make-skill

一個專門用來建構技能的工具:建立、稽核並發佈 Agent Skills 與 Claude Code 外掛 — 遵循開放標準,提供可失敗的驗證器,涵蓋所有發佈管道與 MCP/A2A 邊界。

make-skill 是什麼?

這個技能(名為「make-skill」)是專為開發者與 AI 代理(如 Claude Code、Cursor、Codex 等)設計的後設技能,其核心目的是幫助使用者建立、稽核並發佈符合業界標準的 Agent Skills 與 Claude Code 外掛。它不僅提供建立新技能的工作流程,還包含完整的「改裝」(Retrofit)流程,能對現有技能或儲存庫進行 14 項檢查清單的稽核,確保其符合開放標準與 Anthropic 平台規範。此技能支援多種發佈管道,包括 Claude Code 外掛市場、Skills CLI、npx、Cursor 及家族儲存庫,並詳細涵蓋了 MCP(模型上下文協定)與 A2A(代理間協定)的整合方式。其工作方式強調以檢查清單與程序化指令為主,並內建多個參考文件(如 `references/agent-skills-spec.md`、`references/distribution.md` 等),提供按需載入的詳細指引,確保代理能在不遺漏關鍵細節的情況下正確執行任務。

相容平台✓Claude Code✓Codex CLI✓Cursor
npx skills add ssheleg/make-skill

Installed? Explore more 寫作與編輯 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜歡的 AI 中提問

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

說明文件

make-skill — 以經過驗證的方式建立、改裝與發佈技能

從一個運作中的儲存庫(通常是 ~/DATA/<name>)複製:ssheleg/super-ux(多重技能套件,Cursor 規則)或 ssheleg/task-pipeline(單一技能編排器,發佈自動化)。make-skill 本身即依此規範建置。

參考文件 — 按需載入

請閱讀時機
references/agent-skills-spec.md撰寫或稽核任何 SKILL.md 時 — 來自兩方權威的硬性限制、選填欄位、預算、誰會拒絕什麼
references/authoring.md撰寫或調整主體/說明時 — 命名規則、第三人稱、自由度、腳本規則、評估循環
references/surfaces.md發佈到 Claude Code 以外的任何地方時 — Skills API 上傳/版本/每次 8 個請求、claude.ai zip、無網路限制
references/enterprise.md安裝他人的技能,或管理技能群時 — 風險等級、審查檢查清單、核准關卡、生命週期
references/retrofit.md稽核現有技能/儲存庫時 — 14 項檢查清單、證據規則、個人技能簡化版
references/host-capabilities.md發佈鉤子、子代理、命令、腳本或 MCP 依賴時 — 各項的優缺點、鉤子事件與退出碼、降級條款
references/claude-code-plugin.md任何以 Claude Code 外掛/市場形式發佈的專案 — 清單結構、元件佈局、路徑變數、validate 失敗
references/distribution.md儲存庫佈局、發佈版本與所有五種管道 — 外掛、skills CLI、npx、Cursor、父層家族儲存庫
references/mcp.md、references/mcp-ship.md技能 vs MCP 伺服器,包裝其中一個 — 然後發佈:掛載、其 404、server.json、註冊中心
references/a2a.md技能橫跨兩個自主代理 (A2A):代理卡片、任務生命週期、委派

此副本遺漏了?原始備援: raw.githubusercontent.com/ssheleg/make-skill/main/plugins/make-skill/skills/make-skill/references/<file>

選擇工作流程

從請求以及 $ARGUMENTS 中的任何路徑進行偵測;宣布所做的選擇。

情況工作流程
新技能,僅供此使用者的代理使用建立(個人)
新技能,可讓其他使用者/代理安裝建立(可發佈)
現有技能或儲存庫低於此標準,且詢問「是否符合規範?」改裝
個人技能應變成可安裝升級

沒有引數時,偵測而非詢問:目前目錄中有 SKILL.md、.claude-plugin/ 或 plugins/*/skills/*/ → 執行改裝稽核並報告差距表及一個下一步行動。無任何可偵測項目 → 用一行文字詢問要建立什麼。

可發佈的工作是一個真正的專案:先有規格(docs/superpowers/specs/),後有程式碼,且規格會先鎖定目標專案的檔案合約 — 技能是針對該合約撰寫的,絕非臨時湊合。

撰寫規則(每個工作流程都適用)

規格基礎優先 — 開放標準和 Anthropic 的平台規則都是不可協商的;此規範僅在其之上增加項目。 欄位表、其差異及檢查清單:references/agent-skills-spec.md。

  • name:字元規則請見 references/agent-skills-spec.md;需等於目錄名稱。陷阱:絕不能包含 anthropic 或 claude — 這些是保留子字串,Claude Code 會愉快地載入,但 Skills API 會在上傳時拒絕,因此失敗會發生在別人的機器上。
  • description:≤1024 個字元(此限制僅針對此欄位,而非整個 front-matter 區塊),不得有尖括號,使用第三人稱 — 它會被注入到系統提示中,在那裡「我可以幫你…」會降低被選中的機率。說明它做什麼以及何時使用。
  • 可攜帶的選填欄位集為 license、compatibility、metadata 和 allowed-tools — 限制與型別請見 references/agent-skills-spec.md。
  • license 是選填的 — 無論如何都宣告它,在 front matter 和 marketplace.json 的外掛條目中都要:根目錄的 LICENSE 檔案既不會到達外掛列表,也不會到達已安裝的技能,而且不會報錯,因此這個缺口會一直存在(此處的所有六個儲存庫,截至 2026-07-30)。
  • 主機擴充功能是合法的,但絕不能是關鍵依賴。 Claude Code 會讀取另一組僅屬於主機的設定(references/claude-code-plugin.md);其他代理會忽略它,因此依賴於它的技能在其他地方會壞掉。規範 ∪ 主機之外的內容 = 拼寫錯誤。
  • 主體 < 500 行且 < 5000 tokens,並保留 5% 的餘裕 — 一個預算使用率達 99% 的主體會讓下一次修正變成與驗證器的戰鬥。較重的材料應放入技能目錄內部的 references/、scripts/、assets/,深一層,每個都需從主體連結並說明載入觸發條件(「當 Y 時閱讀 X」)— 絕不能只是「請見 references/」。超過 100 行的參考檔案應以 ## 目錄 列表開頭:代理通常只會進行部分 head 讀取。
  • 注意事項留在 SKILL.md 中:代理無法知道去開啟一個它不知道存在的陷阱檔案。
  • 為你所聲稱的最弱表面撰寫(references/surfaces.md):Claude API 容器沒有網路和沒有套件安裝,claude.ai 情況各異,只有 Claude Code 兩者都有。一個執行 pip install 或 curl 的腳本是 Claude Code 專用的技能 — 請在 compatibility 中說明或刪除它。各表面之間沒有同步;git 才是事實的來源。

在規範之上的自訂補充:

  • 散文使用英文;字面值則保持其原本輸入的語言。 西里爾字母僅在四種情況下保留,即該字串本身即為重點:觸發詞組、拒絕詞組(操作者輸入這兩者 — 如果翻譯了,它們就不再與實際說出的內容相符)、專有名詞、語言範例(«вы»/«ты»)。預算規則優先於風格規則:俄語以每個 token 1.9–2.3 個字元編碼,而英語為 5.0(cl100k),將八個 ssheleg 路由器改寫為英文後,其 token 數從 3408 減少到 1885,且無損意義。
  • description 以「Use when …」開頭,並列出具體的觸發詞組 — 英文和俄文(使用者在兩種語言中工作)。一個無人觸發的技能是死重量。在此處也保留 5% 的餘裕(≤970 of 1024):一個接近邊界的相鄰項目會迫使加入「NOT for …」子句,而一個使用率達 98% 上限的說明會沒有空間容納它。
  • 統一的命名模式,最好是動名詞形式 (processing-pdfs);永遠不要使用 helper、utils、tools、data — 模糊的名稱會失去所有被選中的機會。
  • 一個技能 = 一個工作。多個關注點 → 多個技能 + 一個共享的合約檔案。將合約放在技能目錄內部(references/…):skills CLI 只會發送技能自身的目錄,因此一個同層級的 skills/references/ 在作為 Claude Code 外掛時可以運作,但在其他所有代理上到達時都是壞的。跨技能共享 → 在每個技能目錄中複製,並由驗證器檢查是否相同。
  • 主體:命令式、程序式、檢查清單優先於散文;將不可協商的項目明確陳述。根據脆弱程度調整規定程度 — 對於破壞性或依賴順序的工作使用精確命令,對於由上下文決定的情況僅提供方向(references/authoring.md)。
  • 評估先於散文: 在沒有技能的情況下執行目標任務,記錄失敗,針對這些失敗撰寫 ≥3 個評估,然後撰寫能夠通過的最低限度內容;一個沒有基準線建立的技能所記錄的是想像中的問題。加入現有家族 → 根據已安裝的集合衡量共存性,不要猜測:你提名的相鄰項目通常不是最近的那個。
  • 提供單一指令的進入點:冪等 — 檢查狀態 → 修復缺失的部分 → 狀態報告 → 精確建議一個下一步行動。偵測模式,永遠不要詢問。技能本身就是那個指令;不同頻道的調用方式不同(從技能目錄調用為 /<skill>,作為外掛調用為 /<plugin>:<skill>)— 在 README 中同時寫明這兩者,而不是僅承諾一種。
  • 永遠不要覆寫使用者資料:僅在不存在時建立種子資料;僅在加上 --force 時才能覆寫。

降級合約(每個會接觸主機功能的技能)

鉤子、子代理、/commands、外掛路徑變數和 MCP 伺服器僅存在於 Claude Code 內部 — 這是技能運行的少數環境。每個都是加速器,並附有書面備援方案;沒有它,技能仍然能完成工作,只是速度較慢。 將三種情況寫入主體,使用代理的語言,並在代理需要它們的時候出現(形式請見 references/host-capabilities.md):

  • 非 Claude Code(Cursor、Codex、skills CLI、API):沒有鉤子、沒有子代理、沒有 /command。指明內聯程序;捆綁的 scripts/ 仍然會傳送,因此請提供每個頻道的路徑。
  • 推薦的外掛/技能缺失:說明一次哪些功能會降級,然後繼續走手動路徑。一個因為缺少選用夥伴而拒絕啟動的階段是壞掉的,而不是嚴格的。
  • 工具、直譯器或 MCP 伺服器缺失:說明一次,回退到手動程序,永遠不要循環重試。互動式認證是人工步驟。

你知道但沒有寫下來的備援方案就不是備援方案。

此技能隨附的工作範例 — 複製這些,而不是你的記憶

scripts/audit_skill.py 可稽核任何技能目錄(標準庫;改裝流程的機械部分),包裝為 bin/make-skill-audit 供 Claude Code 使用。旁邊還有:hooks/(PostToolUse,除非寫入了 SKILL.md,否則保持靜默)、commands/skill-audit.md(故意不使用技能的名稱)、agents/skill-auditor.md,以及六個骨架:assets/SKILL.template.md、assets/plugin.template.json、assets/marketplace.template.json、assets/hooks.template.json、assets/agent.template.md、assets/command.template.md。

建立(個人)

根據撰寫規則在 ~/.claude/skills/<name>/SKILL.md 建立 — 完成。沒有儲存庫,沒有版本控制;下次啟動時載入。提及「升級」作為升級路徑。

需要鉤子、代理或 MCP 伺服器,但仍然沒有儲存庫?在同一個資料夾中加入 .claude-plugin/plugin.json — Claude Code 會在下次啟動時將其作為 <name>@skills-dir 載入。

建立(可發佈)

儲存庫樹結構、公開儲存庫基本要求、claude plugin validate … --strict 的兩次執行以及內部驗證器規範都在 references/distribution.md → 可發佈的儲存庫佈局 中。在建立第一個檔案之前先打開它。 始終適用的規則:

  • 在儲存庫根目錄有 .claude-plugin/marketplace.json;外掛位於 plugins/<name>/ 下,並有自己的 .claude-plugin/plugin.json;技能位於 plugins/<name>/skills/<skill>/ 下,其內部包含 references/、scripts/、assets/。只有清單文件存放在 .claude-plugin/ 中 — 埋藏在那裡的元件載入時會變為空無一物,而外掛看起來仍能正常運作。
  • 版本同步(硬性規則): marketplace.json、plugin.json、package.json 以及頂層的 CHANGELOG 條目必須攜帶相同的 semver 版本,並一起更新(如果 SKILL.md 攜帶了 metadata.version,則再加上第 5 個同步點)。
  • 兩次 --strict 執行都必須通過,在 CI 中,作為獨立作業 — 它們只讀取清單,因此 front-matter 規則應放在你自己的 test/validate.py 中,並且該測試需要一個負面自我測試:一個不能失敗的驗證器只是裝飾品。在 plugin.json以及市場條目中提供 $schema 和 displayName(市場根目錄不接受這兩者)。
  • 一個公開儲存庫應為讀者提供英文優先的 README、包含驗證變更的離線命令的 CONTRIBUTING.md,以及指名私有通訊管道和安裝程式所觸及範圍的 SECURITY.md。

首次發佈 — 端到端,同一次工作階段

一路完成,不能有半成品交接。只有首次發佈需要人工介入(npm 2FA);讓 CI 能夠進行發佈是發佈流程的一部分,這樣第二次就不需要了。11 個步驟的序列在 references/distribution.md → 首次發佈 中。 完成 = 五個已驗證的事實:儲存庫 + CI 通過、npm 可透過 npx 解析、外掛已安裝、skills-CLI 發現功能正常運作、下一個標籤無需人工即可發佈。

改裝(將現有技能/儲存庫提升至標準)

先稽核,後修正,在同一工作階段內完成。每個項目的判定結果:通過 / 有差距 / 未執行,並附上證據 — 一個 file:line 或你實際執行的命令的輸出。「看起來沒問題」不是一個判定結果,基於推理而非執行的檢查得到「通過」也一樣;一個缺少工具的檢查項目是附帶原因的「未執行」,絕非「通過」。

先執行隨附的稽核器 — 它會確定性地完成機械部分,並且永遠不依賴於未設定的變數:

make-skill-audit <skill-dir> --house    # Claude Code:外掛的 bin/ 在 PATH 中

在任何其他地方,從你剛才讀取此內容的 make-skill 目錄執行 scripts/audit_skill.py。然後處理 references/retrofit.md 中的 14 項檢查清單 — 規範基礎、外掛基礎、表面、單一任務、進入點、佈局與版本同步、驗證器與 CI、評估、README、發佈、儲存庫後設資料、注意事項、協定、主機功能。對於個人技能,僅適用其中三項;該檔案會說明是哪三項。

然後: 報告差距表,修正所有現在可以修正的問題,更新一個次要/修訂版本號,執行發佈檢查清單。

升級(個人 → 可發佈)

按照佈局建立儲存庫,將技能移至 plugins/<name>/skills/<skill>/,將合約提取到 references/,然後端到端執行首次發佈。僅在確認外掛安裝已驗證之後,才刪除舊的 ~/.claude/skills/<skill> 副本。

安裝他人的技能

技能是代理執行的指令加上代理在未閱讀情況下執行的程式碼 — 安裝技能就是安裝軟體。任何不是你寫的技能,首先都要經過 references/enterprise.md 中的審查檢查清單。風險最高的形式:一個從 URL 獲取其指令的技能 — 該內容在批准它的審查之後可能會變更。

協定連接的技能(MCP / A2A)

技能是指令;它無法授予能力。教導代理如何做是技能的工作。針對即時系統提供新能力的是 MCP 伺服器(先看 mcp.md,然後看 mcp-ship.md 以掛載和發佈)。將結果委派給另一個自主代理的是 A2A(a2a.md)。這兩個參考文件都包含了線路層級的規則 — 每個主機的工具名稱發現、代理卡片,以及將互動式認證視為人工步驟。

相關技能