mcpField
H
heal-skill

heal-skill

github.com/scientiacapitalエージェントワークフロー2868 回インストール4 週間前に更新
リポジトリ

heal-skill について

heal-skillは、スキルファイルや設定を管理する人向けの診断・修復スキルです。重要度別に検査し、ユーザーの確認後に修正を適用します。

主な機能

  1. 01構造・内容・連携を段階的に検査
  2. 02YAMLフロントマターとJSON設定の検証
  3. 03必須セクションとリンク切れの確認
  4. 04スキルごとの健全性スコア報告
  5. 05差分を提示し確認後に修正

活用シーン

  1. 01スキルライブラリ全体の問題を検出
  2. 02個別スキルが読み込めない原因を診断
  3. 03設定スキーマや命名の問題を修正

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/scientiacapital/skills --skill heal-skill

インストール後、Claude Code で/heal-skillを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

config.json
reference/
known-issues.md
validation-rules.md

詳細

壊れたスキルを診断し、自動修復します。ライブラリ全体をスキャンするには `/heal-skill` を、単一のスキルを診断するには `/heal-skill ` を実行します。重大度別に問題を報告し、ヘルススコアリングを行い、ユーザーの確認を得たうえで自動修正を提案します。

<quick_start>

/heal-skill              → Full library scan (all skills)
/heal-skill <name>       → Single skill diagnosis
/heal-skill --fix        → Apply all auto-fixes (with confirmation)
/heal-skill --fix <name> → Fix single skill (with confirmation)

</quick_start>

<success_criteria>

  • すべての YAML frontmatter が Anthropic の仕様に準拠して検証される
  • 必要な XML セクションがすべて存在する(<objective>、<quick_start>、<success_criteria>)
  • すべての config.json ファイルが正しいキーを持つ標準スキーマを使用している
  • ヘルススコアを報告する:スキルごとに X/Y チェックが合格
  • 自動修正はユーザーの確認を得た場合にのみ適用する(まず diff をプレビュー)
  • セルフテストが合格する:/heal-skill heal-skill が問題 0 件を報告する </success_criteria>

<core_content>

3 層診断エンジン

エンジンは重大度の順にチェックを実行します。各層は前の層の上に構築されます。

Layer 1: STRUCTURAL (CRITICAL)     → Files exist, YAML parses, required fields present
Layer 2: CONTENT (HIGH)            → XML sections, line count, naming conventions
Layer 3: INTEGRATION (MEDIUM)      → config.json schema, duplicate triggers, cross-refs
レイヤー 1:構造検証(CRITICAL)

これらのチェックは、スキルがそもそも読み込めるかどうかを検証します。ここで失敗すると、スキルは壊れていることを意味します。

IDチェックルール自動修正
S1YAML frontmatter が存在するSKILL.md が --- で始まるいいえ
S2name フィールドが存在する必須、空でない文字列いいえ
S3name の形式が有効^[a-z0-9-]+$、最大 64 文字はい — スラッグ化
S4description フィールドが存在する必須、空でない文字列いいえ
S5description の長さ最大 1024 文字はい — 切り詰め
S6description に XML タグがない値に <tags> がないはい — タグを除去
S7description が文字列であるYAML の配列/オブジェクトではないはい — 配列なら結合
S7bfrontmatter のキーが有効すべてのキーが有効なセットに含まれる(下記参照)警告
S8SKILL.md が存在するスキルディレクトリに存在する必要があるいいえ
S9config.json が存在するスキルディレクトリに存在する必要があるはい — SKILL.md から生成
S10config.json が有効な JSON であるエラーなくパースできる必要があるいいえ

S1〜S2 の検出: 最初の 5 行を読み取り、--- 区切りと name: キーを確認します。 S3 の検出: name の値に正規表現 ^[a-z0-9-]+$ を適用し、length <= 64 を確認します。 S6 の検出: description の値に正規表現 <[a-z_]+> を適用します。 S7 の検出: YAML をパースし、型が文字列であり、配列/オブジェクトでないことを確認します。 S7b の検出: 有効な frontmatter キーは次のとおりです:name、description、disable-model-invocation、user-invocable、allowed-tools、model、context、agent、argument-hint、hooks。それ以外のキーは WARNING です(エラーではありません — 未知のキーは Claude Code によって無視され、拒否されません)。

レイヤー 2:コンテンツ品質(HIGH)

これらのチェックは、スキルが発見しやすさに関するライブラリの規約に従っているかを検証します。

IDチェックルール自動修正
C1<objective> セクションが存在するSKILL.md 本文に存在する必要があるはい — スタブを追加
C2<quick_start> セクションが存在するSKILL.md 本文に存在する必要があるはい — スタブを追加
C3<success_criteria> セクションが存在するSKILL.md 本文に存在する必要があるはい — スタブを追加
C4行数本文が 500 行以下(警告のみ)警告
C5無効な参照リンク内部の reference/ リンクが解決できる必要があるはい — 無効なものを削除
C6命名規則ディレクトリが -skill で終わる警告

C1〜C3 の検出: SKILL.md の本文(frontmatter より後)で <objective>、<quick_start>、<success_criteria> を検索します。 C4 の検出: wc -l SKILL.md。 C5 の検出: [text](reference/...) リンクからパスを抽出し、ファイルが存在するか確認します。 C6 の検出: ディレクトリ名が -skill で終わるか確認します。

レイヤー 3:統合の健全性(MEDIUM)

これらのチェックでは、ライブラリ全体の一貫性を検証します。

IDチェックルール自動修正
I1config.json に標準キーがあるname、version、category が必要ですはい — 不足分を追加
I2activation_triggers キーを使用しているtriggers(旧名称)ではないことはい — キー名を変更
I3depends_on キーを使用しているdependencies(旧名称)ではないことはい — キー名を変更
I4version フィールドがあるversion 文字列が必要ですはい — "1.0.0" を追加
I5アクティベーショントリガーが重複していないスキル間でトリガーが競合していないこと警告

I2 の検出: config.json に activation_triggers ではなく triggers キーがあるか確認します。 I3 の検出: config.json に depends_on ではなく dependencies キーがあるか確認します。


診断フロー

1. DISCOVER
   - Scan active/ and stable/ directories
   - Build skill inventory (name, path, has SKILL.md, has config.json)

2. LAYER 1 — STRUCTURAL
   - For each skill: parse YAML frontmatter, validate fields
   - STOP on critical failures (no SKILL.md = skip remaining checks)

3. LAYER 2 — CONTENT
   - For each skill: search for XML sections, check line count
   - Check naming convention

4. LAYER 3 — INTEGRATION
   - For each skill: validate config.json schema
   - Cross-skill: check for duplicate triggers

5. REPORT
   - Generate health report grouped by severity
   - Calculate health score
   - List available auto-fixes

出力形式

レポートを以下の正確な形式で生成します。

SKILL HEALTH REPORT
════════════════════════════════════════════════
Scanned: X skills | Health Score: Y/Z (N%)

CRITICAL (n):
  ✗ skill-name: Description of issue [CHECK-ID]

HIGH (n):
  ⚠ skill-name: Description of issue [CHECK-ID]

MEDIUM (n):
  ℹ skill-name: Description of issue [CHECK-ID]

WARNINGS (n):
  ~ skill-name: Description of advisory [CHECK-ID]

════════════════════════════════════════════════
AUTO-FIX AVAILABLE: N issues can be auto-fixed
  Run /heal-skill --fix to preview and apply

単一スキルモード — 同じ形式ですが、対象は 1 つのスキルのみです。

重大度の定義:

  • CRITICAL: スキルを読み込めない、またはアクティベートできない(S1~S10 の失敗)
  • HIGH: スキルは読み込めるものの、必要なセクションが不足している(C1~C3)
  • MEDIUM: ライブラリのツールに影響するスキーマの不整合(I1~I5)
  • WARNING: 助言のみで、対応は不要(C4、C6)

自動修正プロトコル

--fix が指定された場合は、以下の正確なプロトコルに従います。

1. PREVIEW
   - Show each proposed change as a diff:
     ```
     FIX: skill-name — [CHECK-ID] Description
     --- before
     +++ after
     @@ change description @@
     -old content
     +new content
     ```

2. CONFIRM
   - Ask user: "Apply N fixes? (yes/no/select)"
   - "select" lets user pick individual fixes

3. APPLY
   - Make changes to files
   - Re-run affected checks to verify fix worked

4. RE-VALIDATE
   - Run full scan on fixed skills
   - Report new health score

チェックごとの自動修正方法:

チェック修正方法
S3スラグ化:小文字にし、空白や特殊文字をハイフンに置き換えます
S5最後の文の区切りで 1024 文字に切り詰めます
S6正規表現 </?[a-z_]+> で XML タグを空文字列に置き換えます
S7配列の場合:要素を ". " で結合します。オブジェクトの場合:最初の値を使用します
S9SKILL.md のフロントマターから最小限の config.json を生成します
C1フロントマターの後に <objective>\nTODO: Add objective\n</objective> を追加します
C2objective の後に <quick_start>\nTODO: Add quick start\n</quick_start> を追加します
C3quick_start の後に <success_criteria>\nTODO: Add success criteria\n</success_criteria> を追加します
C5参照先が存在しない [text](reference/...) リンクを削除します
I1SKILL.md のフロントマターの既定値を使って、不足しているキーを追加します
I2config.json 内の triggers を activation_triggers に変更します
I3config.json 内の dependencies を depends_on に変更します
I4config.json に "version": "1.0.0" を追加します

既知の問題パターン

これらのパターンは、実際の GitHub の issue とライブラリ監査から得られたものです。診断エンジンは、これらすべてをチェックします。

ソースパターンチェック
GitHub #9817--- の前に空白があると YAML の解析に失敗するS1
GitHub #11322Prettier が description を複数行に整形するS7
GitHub #17604description 内の YAML 配列によってスラッシュコマンドがクラッシュするS7
GitHub #6377有効な YAML 構造であるにもかかわらず、name フィールドがないS2
GitHub #14882スキルがすべてのトークンを消費する(段階的な情報開示がない)C4
GitHub #14577/skills に「スキルが見つかりません」と表示される — フロントマターの解析に失敗S1、S2
ライブラリ監査8 個のスキルで XML セクションが不足しているC1~C3
ライブラリ監査9 個のスキルが旧式の config.json キーを使用しているI2、I3
ライブラリ監査1 個のスキルで -skill サフィックスが不足しているC6

</core_content>

<common_mistakes>

よくある問題

問題対処方法
差分を確認せずに --fix を実行する必ず事前にプレビューしてください。プロトコルでは確認が必要です。
警告を無視する警告は助言ですが、技術的負債を示しています。追跡してください。
CRITICAL の問題だけを修正するHIGH と MEDIUM の問題も、見つけやすさやツールに影響します。すべてのレイヤーを修正してください。
XML のスタブを追加したまま、内容を記入しないスタブはプレースホルダーです。実際の内容を記述する時間を確保してください。
ライブラリ全体に問題があるのに、単一のスキルだけを修復するまず全体をスキャンし、全体像を把握してください。

</common_mistakes>

結果サイドカーの出力

最後のステップとして、~/.claude/skill-analytics/last-outcome-heal-skill.json に書き込みます:

{"ts":"[UTC ISO8601]","skill":"heal-skill","version":"1.0.0","variant":"default",
 "status":"[success|partial|error]","runtime_ms":[estimated ms from start],
 "metrics":{"skills_scanned":[n],"issues_found":[n],"fixes_applied":[n]},
 "error":null,"session_id":"[YYYY-MM-DD]"}

一部のステージが失敗しても結果が生成された場合は、ステータスに「partial」を使用します。出力がまったく生成されなかった場合にのみ「error」を使用します。

</common_mistakes>

コメント