2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Codeの監査コマンド /doctor prompt-audit を、Skill・エージェント24本の自前構成で検証した

2
Last updated at Posted at 2026-10-04

Claude Code v2.1.283(2026年9月25日リリース)で追加された /doctor prompt-audit(別名 /checkup prompt-audit)は、CLAUDE.md・Skill・エージェント定義・スラッシュコマンドを横断して「古いモデル向けのプロンプティングパターンが残っていないか」を洗い出す監査コマンドだ。

先日、この機能を検証した記事を読んだ。著者はSKILL.mdを持つディレクトリが49本ある環境で、1回目の実行ではプロジェクト内18ファイルしか対象にならず、Skillもサブエージェントも1つも見なかった。--add-dir ~/.claude を付けた2回目でようやくSkill45本・サブエージェント286個を認識したが、全文を読んだのはSkill3ファイルとサブエージェント2個だけで、残りはgrepの流し見だったという。

私も複数のカスタムSkillとエージェント定義を長期運用している身として、これが自分の構成でどう動くのか気になった。この記事は、自分の環境で実際に手を動かして確認した結果と、そこから見えた見落としパターンの記録である。

まず自分の構成を数えた

検証の前に、自分がどれだけの定義ファイルを抱えているかを数えた。

# トップレベルのSkill数
find skills -maxdepth 1 -name "*.md" | wc -l
# => 6

# skills/media-profiles/ は「Skillそのもの」ではなく
# write-blog Skillが内部で読むデータファイル
ls skills/media-profiles/
# => _template.md note.md qiita.md

# エージェント定義(ルート直下+部門サブディレクトリ)
ls agents/*.md | wc -l          # => 19
find agents -mindepth 2 -name "*.md" | wc -l   # => 5(secretary/cfo/cmo/dev配下)

ルート直下のエージェント定義19本+部門サブディレクトリ(agents/secretary/・agents/cfo/・agents/cmo/・agents/dev/)配下の専門エージェント5本で、合計24本のエージェント定義を運用している。Skillは6本だが、skills/media-profiles/ には媒体プロファイルとして3ファイルが別に存在する。ここで最初の学びがあった。「Skillの本数」を単純に.mdの数で数えると、写経元記事が抱えていた「49本のはずが実際のカウントは48→45とズレる」問題を、自分の構成でも即座に再現できる。media-profilesはwrite-blogSkillが参照する設定ファイルであって独立したSkillではないので、数え方の定義次第で本数がぶれる。

実行しようとして、実行できなかった

元記事を追試する形で /doctor prompt-audit を非対話実行しようとしたが、私の環境では手前でつまずいた。

$ claude --version
Error: claude native binary not installed.

Either postinstall did not run (--ignore-scripts, some pnpm configs)
or the platform-native optional dependency was not downloaded
(--omit=optional).

CLIのネイティブバイナリが入っていないため claude -p すら起動できない状態だった。元記事の著者も1回目の実行を claude -p の非対話セッションで行っており、ユーザー階層(~/.claude)への権限が下りずスコープが狭まったと報告している。私の場合はそれ以前の環境問題で足止めを食らった形だが、裏を返せば「監査コマンドを当てにする前に、そもそも実行環境が対話セッションと同じ権限・同じスコープで動くかを確認する」という同じ論点に行き着く。

実行できない以上、コマンドの出力そのものは検証できない。そこで、元記事が明らかにした「監査コマンドがどこを見て、どこを見ないか」の境界線を、自分のリポジトリ構造に当てはめて手動で洗い出すことにした。

可視範囲チートシート

元記事の実測(1回目=プロジェクト内18ファイルのみ・2回目=--add-dirで45Skill/286サブエージェント認識)から逆算すると、監査コマンドの可視範囲は次の3層に分かれる。

実行方法 見える範囲 自分の環境での該当箇所
プロジェクト内で素実行 カレントプロジェクトのCLAUDE.md・.claude/配下のみ ルートCLAUDE.md1本+agents/24本+skills/6本
--add-dir ~/.claude 併用 ユーザー階層のSkill・サブエージェント定義も追加 個人設定側のカスタム定義(プロジェクトと別スコープ)
対象外(自分で個別に回すしかない) 別プロジェクト・サブリポジトリのCLAUDE.md projects/配下の子リポジトリ・worktree

3列目は自分で洗い出して初めて気づいた点だ。試しに数えてみたところ、リポジトリ内には独立したCLAUDE.mdが11本、別々のディレクトリに散らばっていた(子リポジトリ7本、worktree系2本、tools/配下1本、ルート1本)。監査コマンドを1回実行しただけでは、これらは対象に入らない。プロジェクトごとに個別に/doctor prompt-auditを回す必要があり、「1回実行して終わり」にすると11分の1しかカバーできない計算になる。

実際にやった代替検証:誤検知も1件見つかった

構造の洗い出しと合わせて、「監査コマンドが指摘しそうな『使われなくなった参照』が実際に残っていないか」もgrepで確認した。

# 過去に廃止したSkill名が、他のエージェント定義に
# 「生きている参照」として残っていないか確認
grep -rl "polish-content\|upgrade-automation\|generate-cover" agents/ skills/
# => agents/publisher-agent.md

1件ヒットした。中身を見ると、該当箇所は「このSkillは過去に廃止済み・再度必要になったら作り直す」という注記付きの記述で、実際に壊れた参照ではなく意図的に残した履歴コメントだった。監査コマンドが「stale paths, stale commands and contradicting instruction files」を優先的に報告する仕様である以上、こうした注記付きの意図的な廃止記録を機械的に「古い参照」として拾ってしまう可能性はある。人間が見て初めて「これは事故ではなく記録だ」と判断できるケースがあることは、実際に手を動かして初めて分かった。

CLAUDE.mdや各種定義ファイルを増やしてきた過程では、以前Hooks機能でファイル変更のたびにESLintとJestを自動実行する仕組みを組み込んだことがある。ついでにkillスイッチ用のPreToolUseフックも導入したところ、構文エラーやテスト失敗の見逃しがゼロになった。今回のように定義ファイルが何十本にも増えると、「どこに何を書いたか」を人間の記憶だけで管理するのは早々に限界が来る。あのときHooksで「AIの行動に自動チェックポイントを設ける」仕組みを入れたのと同じで、定義ファイル自体も「書いたら終わり」ではなく定期的に検証する対象として扱う必要がある。

見落としパターン対応表

自分の環境で確認できた範囲を、トラブルシューティング表としてまとめる。

見落としパターン 原因 対策
Skill・エージェントが0件扱いになる 非対話セッションでユーザー階層への権限が下りない --add-dir ~/.claude を明示的に付ける
Skillの本数が資料と食い違う データ用ファイル(プロファイル等)を独立Skillとしてカウントしてしまう Skill本体とSkillが参照する設定ファイルをディレクトリで分けておく
サブリポジトリ・worktreeのCLAUDE.mdが対象外になる 監査は実行時のカレントプロジェクトだけを見る 子リポジトリごとに個別実行するか、対象パス一覧を台帳化しておく
大量のファイルは全文でなく grep の流し見になる 数十〜数百本規模だと全文読み込みのコストが高い 優先度の高いCLAUDE.md・頻用Skillだけでも個別に全文レビューする運用を残す
廃止済みの参照が「古い記述」として拾われる 廃止記録の注記か、本当に壊れた参照かは機械では区別しづらい 廃止時は「いつ・なぜ廃止したか」を1行コメントで残し、指摘が出たら人間が最終判断する

まとめ

実際に手を動かして分かったのは、/doctor prompt-auditという名前がついていても、その実態は「設定ファイルの内容そのものの良し悪し」より先に「そもそもどこまで見えているか」という実行スコープの問題にぶつかるということだった。私の環境ではコマンド自体を動かすところで止まってしまったが、構造を自分の目で数え直しただけでも、Skillのカウント基準のブレやサブリポジトリの取りこぼしといった、監査コマンドが実際に指摘しそうな穴を先に見つけられた。結局のところ、監査コマンドは「代わりに全部やってくれる道具」ではなく、「どこを見ていないかを教えてくれる道具」として使うのが実態に近いと感じている。


この記事の要点だけ持ち帰るなら、監査コマンドを実行する前に、自分のSkill・エージェント定義が何本あり、どこに散らばっているかを一度自分で数えておく、という一点だけ覚えておけば十分です。
自分の環境で試すときのメモ代わりに ストック しておくと、必要になったときにすぐ引けます。

関連記事

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?