品質チェックリスト + AI全体判断を使用して、すべてのClaudeスキルとコマンドを審査するスラッシュコマンド(/skill-stocktake)。2つのモードをサポートする:最近変更されたスキルの高速スキャンと、完全レビューのための完全棚卸し。
このコマンドは、コマンドを呼び出したディレクトリを基準とした以下のパスを対象とする:
| パス | 説明 |
|---|---|
~/.claude/skills/ |
グローバルスキル(全プロジェクト) |
{cwd}/.claude/skills/ |
プロジェクトレベルのスキル(ディレクトリが存在する場合) |
フェーズ1の開始時に、コマンドはどのパスが見つかりスキャンされたかを明示的にリストアップする。
プロジェクトレベルのスキルを含めるには、そのプロジェクトのルートから実行する:
cd ~/path/to/my-project
/skill-stocktake
プロジェクトに .claude/skills/ ディレクトリがない場合、グローバルスキルとコマンドのみが評価される。
| モード | トリガー条件 | 所要時間 |
|---|---|---|
| 高速スキャン | results.json が存在する(デフォルト) |
5〜10分 |
| 完全棚卸し | results.json が存在しない、または /skill-stocktake full |
20〜30分 |
結果キャッシュ: ~/.claude/skills/skill-stocktake/results.json
前回の実行以降に変更されたスキルのみを再評価する(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 から自動検出。必要な場合のみ明示的に渡す)[] の場合:「前回の実行以降に変更なし。」とレポートして停止するbash ~/.claude/skills/skill-stocktake/scripts/save-results.sh \ ~/.claude/skills/skill-stocktake/results.json <<< "$EVAL_RESULTS"
実行する:bash ~/.claude/skills/skill-stocktake/scripts/scan.sh
スクリプトはスキルファイルを列挙し、フロントマターを抽出し、UTC修正時刻を収集する。
プロジェクトディレクトリは $PWD/.claude/skills から自動検出。必要な場合のみ明示的に渡す。
スクリプト出力からスキャンサマリーとインベントリテーブルを表示する:
スキャン中:
✓ ~/.claude/skills/ (17 個のファイル)
✗ {cwd}/.claude/skills/ (見つからない — グローバルスキルのみ)
| スキル | 7日間使用 | 30日間使用 | 説明 |
|---|
完全なインベントリとチェック項目を含む汎用エージェントツールのサブエージェントを起動する:
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全体判断——数値スコアリングルーブリックではない。指針となる次元:
理由の品質要件 — reason フィールドは自己完結型で意思決定を支えられる必要がある:
"Superseded"
"disable-model-invocation: true already set; superseded by continuous-learning-v2 which covers all the same patterns plus confidence scoring. No unique content remains."
"Overlaps with X"
"42-line thin content; Step 4 of chatlog-to-article already covers the same workflow. Integrate the 'article angle' tip as a note in that skill."
"Too long"
"276 lines; Section 'Framework Comparison' (L80–140) duplicates ai-era-architecture-principles; delete it to reach ~150 lines."
"Unchanged"
"mtime updated but content unchanged. Unique Python reference explicitly imported by rules/python/; no overlap found."
| スキル | 7日間使用 | 判定 | 理由 |
|---|
~/.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"
}
}
}