Community寫作與編輯github.com

Zane456/skill-doctor

AI 代理技能的自我健康檢查工具。skill-doctor 診斷為何 SKILL.md 無法可靠觸發、對每個參考執行路由召回測試,並重構套件。包含 4 個確定性腳本與 GLM 路由評估。支援 Claude Code 與 Codex。

skill-doctor 是什麼?

Skill Doctor 是一個專為 AI 代理技能(如 Claude Code、Codex)設計的自我診斷與改進工具。它的主要功能是分析一個 SKILL.md 檔案無法可靠觸發的原因,並提供結構化的修復建議。此工具不僅包含 4 個確定性腳本(用於檢查預算、平台、路由等),還整合了 GLM 路由評估,用以測試技能描述是否能被正確召回。 其診斷流程分為四個步驟:讀取目標 SKILL.md 並檢查其對整體技能清單預算的影響、根據參考文件對技能進行多維度評判(包含效果、結構、具體性等)、輸出包含「必須修復」、「建議改善」與「已通過檢查」的詳細診斷報告,最後在用戶確認後套用修復。此工具的一大特色是強調機械化檢查與人類判斷的分離,所有量化的硬性規則都集中在 `references/` 目錄下,而非散落在主說明文件中。 對於開發者而言,Skill Doctor 能顯著提升 AI 代理技能開發的品質與可靠性,確保技能在被引用時能正確觸發並執行預期行為,減少因格式錯誤或描述不清導致的代理行為異常。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add Zane456/skill-doctor

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

在你喜歡的 AI 中提問

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

說明文件

Skill Doctor

診斷並改善任何 SKILL.md。這是指南針,不是操作手冊——具體標準存放在 references/ 中,按需讀取。

觸發後的診斷流程(每個步驟必須產生可見輸出)

沒有可見輸出的步驟會被靜默跳過(Seleznov 實驗,2026)。每個步驟列印一行確認訊息。 自我審查標記:如果本次對話已編輯/寫入目標 SKILL.md,請在每次 doctor 列印行前綴加上 [self-review],並在步驟 3 的最後附加一行:「結論為自我評估,建議使用全新子代理重新審查。」

步驟 1:讀取目標 SKILL.md,宣告診斷開始

讀取正在編輯的 SKILL.md 全文,執行 python3 <此技能目錄>/scripts/check_listing_budget.py "<專案根目錄>"(路徑需加引號——路徑中常有空格),列印兩行:

[skill-doctor] 稽核中:<路徑>  主體=<N> 行  描述=<M> 字元
[skill-doctor] 預算(<平台>):<K> 個技能,<T> 字元 vs 約<B> → <符合 | 超出 ×N.N>

自動偵測平台(CC / Codex / Hermes / OpenClaw)。退出碼:0 = 符合;1 = 超出;2 = 無法使用(無平台 / 上下文未知 → 詢問用戶的平台 + 視窗)。超出是整體層級的注意事項,非針對受審技能的發現:印出數字讓用戶知道,但不要因預算因素縮短此技能的描述——瘦身是全域性的操作,永遠不是單一技能的修正。

步驟 2:根據各面向評判

從參考索引(面向章節)選取要載入的面向——僅讀取那些 when-to-read 條件觸發的條目。 載入後,列印一行:

[skill-doctor] 已載入:<列表>;已跳過:<列表及單詞原因>

步驟 2.5:乾執行逐步演練(僅當主體包含工作流程時)

依照 references/effect-dry-run.md,選取 1 個最典型的提示,在主體的步驟中逐步演練,檢查輸入/指令/輸出是否連貫。 任何斷連或含糊之處 → 標記為 P0(效果問題)並放入步驟 3 的 ❌ 區塊。 列印一行:

[skill-doctor] 乾執行提示:「<提示>」  斷連數=<N>

若主體無工作流程(純規則 / 參考型技能),則列印:

[skill-doctor] 乾執行:已跳過(無工作流程)

步驟 2.6:即時注入檢查(僅當目標技能在本次對話的範圍內)

檢查目標技能是否出現在本次對話的可用技能列表中且附帶其描述(不僅是名稱)。三種情況(已注入 / 僅名稱預算掉落 / 範圍外跳過)以及整體注意事項規則請參閱 references/live-injection-check.md。列印一行:

[skill-doctor] 即時注入:<已注入 | 已掉落(僅名稱)| 已跳過(<原因>)>

步驟 3:輸出診斷報告

嚴格按照以下格式,列印到對話中:

[skill-doctor] 診斷

❌ 必須修復(按 P0→P3 排序,定義見 references/priority-tiers.md)
  [P0 效果中斷]   <問題>:<原因> → <修復>
  [P1 結構]      <問題>:<原因> → <修復>
  [P2 具體性]    <問題>:<原因> → <修復>
  [P3 影響執行] <問題>:<原因> → <修復>

⚠️ 建議改善(包含純粹外觀 / 冗長型 P3)
  - <問題>:<原因> → <修復>

✅ 已通過檢查
  - <列表>

P3 放置規則:問「如果不修復,下一個執行此技能的 LLM 是否會做錯事?」——是 → ❌;僅是難看/冗長 → ⚠️。詳見 references/priority-tiers.md。

每個問題必須給出具體的行號或欄位——不得含糊。當同一類違規出現在多處時,請分開列出——例如,內容被錯誤歸類到三個子目錄中應視為 3 個問題,而非 1 個合併條目。

若適用,請標示失效模式(定義見 references/predictability-glossary.md):在發現前加上 [no-op] / [sediment] / [premature-completion] / [weak-leading-word] / [duplication] / [sprawl] 前綴。該名詞說明何種問題;P 層級仍說明多嚴重——兩者正交,因此前綴永不取代層級。

步驟 4:用戶確認後使用編輯套用

未經確認絕不編輯。等待用戶說「修復它」後再行動。

行動前,套用尺寸閘門與刪除前檢查;之後結束循環——完整程序見 references/apply-safety.md。 修復完成後,列印一行:

[skill-doctor] 已套用 <N> 個修復至 <路徑>  主體:<舊>→<新> 行(<+X%>)

硬性規則快速參考

量化的硬性規則(違規視為錯誤,非建議)存放在 references/hard-rules.md——每次稽核時查閱。

例外處理

當路徑遺失、YAML 無法解析、或捆綁腳本(scripts/check_listing_budget.py + scripts/detect_platform.py / scripts/check_routes.py / scripts/eval_retrieval.py / scripts/check_desc_slim.py)遺失或退出碼為 2 時——請依 references/exception-fallback.md 處理。先向用戶宣告例外;永遠不要靜默跳過。

輸出與語言

報告文字遵循 references/output-style.md(清晰、終端安全、結論優先)。主體/參考預設為英文;標記無合理理由的非英文 ⚠️ — 政策與兩個正當例外見 references/language-policy.md。

超出此技能範圍的事項

  • 實際功能是否正確(那是邏輯錯誤,非技能格式問題)
  • 專案特定慣例(應放在 CLAUDE.md,而非技能中)
  • 一次性修復腳本(執行一次後即丟棄,不應作為技能)

為何存在此技能

為何 LLM 會把 SKILL.md 寫得像操作手冊,以及此技能如何將機械檢查與判斷分離:references/rationale.md。

相關技能