スキル棚卸し は何をしますか?
スラッシュコマンド(/skill-stocktake)で、全てのClaudeスキルとコマンドを品質チェックリスト+AIの総合判断で監査します。Quick Scan(最近変更されたスキルのみ)とFull Stocktake(完全レビュー)の2モードをサポートしています。
スコープ
このコマンドは、実行されたディレクトリからの相対パスで以下のパスを対象とします。
| パス | 説明 |
|---|---|
~/.claude/skills/ | グローバルスキル(全プロジェクト) |
{cwd}/.claude/skills/ | プロジェクトレベルのスキル(ディレクトリが存在する場合) |
Phase 1の開始時点で、コマンドはどのパスが見つかりスキャンされたかを明示的にリスト表示します。
特定のプロジェクトを対象とする
プロジェクトレベルのスキルを対象に含めるには、そのプロジェクトのルートディレクトリから実行します。
cd ~/path/to/my-project
/skill-stocktake
プロジェクトに .claude/skills/ ディレクトリがない場合は、グローバルスキルとコマンドのみが評価されます。
モード
| モード | トリガー | 所要時間 |
|---|---|---|
| Quick Scan | results.json が存在する(デフォルト) | 5~10分 |
| Full Stocktake | results.json がない、または /skill-stocktake full | 20~30分 |
結果キャッシュ: ~/.claude/skills/skill-stocktake/results.json
Quick Scan のフロー
前回の実行以降に変更されたスキルのみを再評価します(5~10分)。
~/.claude/skills/skill-stocktake/results.jsonを読み込む- 実行:
bash ~/.claude/skills/skill-stocktake/scripts/quick-diff.sh \ ~/.claude/skills/skill-stocktake/results.json(プロジェクトディレクトリは$PWD/.claude/skillsから自動検出。必要な場合のみ明示的に渡す) - 出力が
[]の場合: 「前回の実行から変更はありません。」と報告して停止 - 変更されたファイルのみを、Phase 2と同じ基準で再評価
- 変更がないスキルは前回の結果を引き継ぐ
- 差分のみを出力
- 実行:
bash ~/.claude/skills/skill-stocktake/scripts/save-results.sh \ ~/.claude/skills/skill-stocktake/results.json <<< "$EVAL_RESULTS"
Full Stocktake のフロー
Phase 1 — インベントリ
実行: bash ~/.claude/skills/skill-stocktake/scripts/scan.sh
このスクリプトはスキルファイルを列挙し、フロントマターを抽出し、UTCのmtimeを収集します。
プロジェクトディレクトリは $PWD/.claude/skills から自動検出。必要な場合のみ明示的に渡します。
スクリプト出力からスキャンサマリとインベントリテーブルを表示します。
Scanning:
✓ ~/.claude/skills/ (17 files)
✗ {cwd}/.claude/skills/ (not found — global skills only)
| Skill | 7d use | 30d use | Description |
|---|
Phase 2 — 品質評価
完全なインベントリとチェックリストを指定して、Agentツールのサブエージェント(汎用エージェント)を起動します。
Agent(
subagent_type="general-purpose",
prompt="
次のスキルインベントリをチェックリストに照らして評価してください。
[INVENTORY]
[CHECKLIST]
スキルごとにJSONを返してください:
{ \"verdict\": \"Keep\"|\"Improve\"|\"Update\"|\"Retire\"|\"Merge into [X]\", \"reason\": \"...\" }
"
)
サブエージェントは各スキルを読み込み、チェックリストを適用し、スキルごとのJSONを返します。
{ "verdict": "Keep"|"Improve"|"Update"|"Retire"|"Merge into [X]", "reason": "..." }
チャンクガイダンス: コンテキストを管理しやすくするため、サブエージェントの1回の呼び出しで約20スキルを処理してください。各チャンクの後、中間結果を results.json(status: "in_progress")に保存します。
すべてのスキルが評価されたら、status: "completed" に設定し、Phase 3に進みます。
再開検出: 起動時に status: "in_progress" が見つかった場合、最初の未評価スキルから再開します。
各スキルは以下のチェックリストに照らして評価されます。
- [ ] 他のスキルとの内容の重複がチェックされている
- [ ] MEMORY.md / CLAUDE.md との重複がチェックされている
- [ ] 技術参照の鮮度が確認されている(ツール名 / CLIフラグ / APIが存在する場合はWebSearchを使用)
- [ ] 使用頻度が考慮されている
判定基準:
| 判定 | 意味 |
|---|---|
| Keep | 有用で最新 |
| Improve | 維持する価値があるが、具体的な改善が必要 |
| Update | 参照している技術が古くなっている(WebSearchで確認) |
| Retire | 品質が低い、古い、またはコストに見合わない |
| Merge into [X] | 他のスキルと大幅に重複しているため、統合先を指定する |
評価はAIの総合判断であり、数値ルーブリックではありません。ガイドとなる次元:
- Actionability: すぐに行動に移せるコード例、コマンド、手順があること
- Scope fit: 名前、トリガー、内容が一致しており、広すぎず狭すぎないこと
- Uniqueness: MEMORY.md / CLAUDE.md / 他のスキルで代替できない固有の価値があること
- Currency: 技術参照が現在の環境で動作すること
理由の品質要件 — reason フィールドは自己完結し、意思決定を可能にするものでなければなりません。
- 「変更なし」だけを書かない — 常に核となる証拠を再述すること
- Retire の場合: (1) どのような具体的な欠陥が見つかったか、(2) 代わりに同じニーズをカバーするものは何か、を述べること
- 悪い例:
"Superseded" - 良い例:
"disable-model-invocation: true が既に設定されている。continuous-learning-v2 が同じパターンをすべてカバーし、さらに信頼性スコアを追加している。ユニークな内容は残っていない。"
- 悪い例:
- Merge の場合: 統合先を指定し、どの内容を統合するかを説明すること
- 悪い例:
"Overlaps with X" - 良い例:
"42行の薄い内容。chatlog-to-article のステップ4で既に同じワークフローをカバーしている。'article angle' のヒントをそのスキルに注釈として統合する。"
- 悪い例:
- Improve の場合: 必要な具体的な変更(どのセクション、どのアクション、該当する場合は目標サイズ)を説明すること
- 悪い例:
"Too long" - 良い例:
"276行。セクション 'Framework Comparison' (L80–140) が ai-era-architecture-principles と重複しているため削除し、約150行にする。"
- 悪い例:
- Keep の場合(Quick Scanでmtimeのみの変更): 元の判定の根拠を再述し、「変更なし」と書かないこと
- 悪い例:
"Unchanged" - 良い例:
"mtimeは更新されたが内容は変更なし。rules/python/ で明示的にインポートされるユニークなPython参照。重複なし。"
- 悪い例:
Phase 3 — サマリテーブル
| Skill | 7d use | Verdict | Reason |
|---|
Phase 4 — 統合
- Retire / Merge: 各ファイルについて、ユーザーに確認する前に詳細な根拠を提示する:
- どのような具体的な問題が見つかったか(重複、陳腐化、参照切れなど)
- 同じ機能をカバーする代替手段(Retireの場合: どの既存のスキル/ルールか;Mergeの場合: 統合先ファイルと統合する内容)
- 削除による影響(依存するスキル、MEMORY.mdの参照、影響を受けるワークフロー)
- Improve: 具体的な改善提案とその根拠を提示する:
- 何を変更するか、その理由(例:「セクションX/Yがpython-patternsと重複しているため、430行→200行に削減」)
- ユーザーが実行するかどうかを決定する
- Update: 確認したソースとともに更新内容を提示する
- MEMORY.mdの行数を確認し、100行を超える場合は圧縮を提案する
結果ファイルのスキーマ
~/.claude/skills/skill-stocktake/results.json:
evaluated_at: 評価完了時の実際のUTC時刻に設定する必要があります。
Bashで取得: date -u +%Y-%m-%dT%H:%M:%SZ。T00:00:00Z のような日付のみの近似値は使用しないでください。
{
"evaluated_at": "2026-02-21T10:00:00Z",
"mode": "full",
"batch_progress": {
"total": 80,
"evaluated": 80,
"status": "completed"
},
"skills": {
"skill-name": {
"path": "~/.claude/skills/skill-name/SKILL.md",
"verdict": "Keep",
"reason": "Concrete, actionable, unique value for X workflow",
"mtime": "2026-01-15T08:30:00Z"
}
}
}
注意事項
- 評価は盲目的に行われます。同じチェックリストが全てのスキルに適用され、その起源(ECC、自作、自動抽出)は問いません。
- アーカイブ / 削除操作は常に明示的なユーザー確認が必要です。
- スキルの起源による判定の分岐はありません。