スキル棚卸し は何をしますか?
スラッシュコマンド(/skill-stocktake)は、すべてのClaudeスキルとコマンドを品質チェックリストとAIによる総合判断で監査します。Quick Scan(最近変更されたスキルのみ)とFull Stocktake(完全レビュー)の2つのモードをサポートします。
スコープ
このコマンドは、呼び出されたディレクトリからの相対パスで以下のパスを対象とします。
| パス | 説明 |
|---|---|
~/.claude/skills/ | グローバルスキル(すべてのプロジェクト) |
{cwd}/.claude/skills/ | プロジェクトレベルのスキル(ディレクトリが存在する場合) |
フェーズ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から自動検出。必要な場合のみ明示的に指定) - 出力が
[]の場合:「前回の実行から変更はありません。」と報告し停止 - 変更されたファイルのみを、フェーズ2と同じ基準で再評価
- 前回の結果から変更のないスキルを引き継ぐ
- 差分のみを出力
- 実行:
bash ~/.claude/skills/skill-stocktake/scripts/save-results.sh \ ~/.claude/skills/skill-stocktake/results.json <<< "$EVAL_RESULTS"
Full Stocktake フロー
フェーズ1 — 棚卸し
実行: bash ~/.claude/skills/skill-stocktake/scripts/scan.sh
このスクリプトはスキルファイルを列挙し、フロントマターを抽出し、UTC mtimeを収集します。
プロジェクトディレクトリは $PWD/.claude/skills から自動検出。必要な場合のみ明示的に指定します。
スクリプトの出力からスキャンサマリーと棚卸しテーブルを表示します。
スキャン中:
✓ ~/.claude/skills/ (17 ファイル)
✗ {cwd}/.claude/skills/ (見つかりません — グローバルスキルのみ)
| スキル | 7日間使用 | 30日間使用 | 説明 |
|---|
フェーズ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": "..." }
チャンクガイダンス: コンテキストを管理可能に保つため、サブエージェント呼び出しごとに約20スキルを処理します。各チャンクの後、中間結果を results.json(status: "in_progress")に保存します。
すべてのスキルの評価が完了したら: status: "completed" を設定し、フェーズ3に進みます。
再開検出: 起動時に status: "in_progress" が見つかった場合、最初の未評価スキルから再開します。
各スキルは以下のチェックリストに対して評価されます。
- [ ] 他のスキルとのコンテンツ重複を確認
- [ ] MEMORY.md / CLAUDE.md との重複を確認
- [ ] 技術リファレンスの鮮度を確認(ツール名 / CLIフラグ / APIが存在する場合はWebSearchを使用)
- [ ] 使用頻度を考慮
評定基準:
| 評定 | 意味 |
|---|---|
| Keep | 有用で最新 |
| Improve | 維持する価値はあるが、特定の改善が必要 |
| Update | 参照されている技術が古い(WebSearchで確認) |
| Retire | 低品質、古い、またはコストに見合わない |
| Merge into [X] | 別のスキルと大幅に重複している。マージ先を指定 |
評価はAIによる総合判断であり、数値ルーブリックではありません。判断のガイドとなる次元:
- アクション可能性: 即座に行動できるコード例、コマンド、手順がある
- スコープ適合性: 名前、トリガー、コンテンツが一致しており、広すぎず狭すぎない
- 独自性: MEMORY.md / CLAUDE.md / 他のスキルでは代替できない価値がある
- 最新性: 技術リファレンスが現在の環境で動作する
理由の品質要件 — reason フィールドは自己完結的で判断を可能にする必要があります。
- 「変更なし」だけを書かないでください — 常に核心となる証拠を再記述してください
- Retire の場合: (1) 具体的にどのような欠陥が見つかったか、(2) 代わりに同じニーズをカバーするものを述べてください
- 悪い例:
"Superseded" - 良い例:
"disable-model-invocation: true が既に設定されている。continuous-learning-v2 が同じパターンすべてに加えて信頼性スコアリングをカバーしている。独自のコンテンツは残っていない。"
- 悪い例:
- Merge の場合: ターゲットを指定し、統合するコンテンツを説明してください
- 悪い例:
"X と重複" - 良い例:
"42行の薄いコンテンツ。chatlog-to-article のステップ4が既に同じワークフローをカバーしている。'記事の角度'のヒントをそのスキルにメモとして統合する。"
- 悪い例:
- Improve の場合: 必要な具体的な変更を説明してください(どのセクション、どのアクション、関連する場合はターゲットサイズ)
- 悪い例:
"長すぎる" - 良い例:
"276行。「フレームワーク比較」セクション(L80-140)が ai-era-architecture-principles と重複している。それを削除して約150行にする。"
- 悪い例:
- Keep の場合(Quick Scanでのmtimeのみの変更): 元の評定理由を再記述し、「変更なし」と書かないでください
- 悪い例:
"変更なし" - 良い例:
"mtimeは更新されたがコンテンツは変更なし。rules/python/ によって明示的にインポートされる独自のPythonリファレンス。重複は見つからず。"
- 悪い例:
フェーズ3 — サマリーテーブル
| スキル | 7日間使用 | 評定 | 理由 |
|---|
フェーズ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、自己作成、自動抽出)に関係なくすべてのスキルに適用されます
- アーカイブ/削除操作は常に明示的なユーザー確認を必要とします
- スキルの起源による評定の分岐はありません