find
検証済みv1.0.0ファイル・コードの所在を安いモデルのサブエージェントに委譲して探し、パスのみ返す。
- トリガー: 「探して」「どこにある」「〜してるコードどこ」「〜の設定どのファイル」「find」。
- 対象: ファイル/ディレクトリ/コードの所在特定・命名規則の横断調査。
- NOT for: 内容の詳細レビュー・監査(→ 通常のRead/コードレビュー系)、単一パスがほぼ確定している1ファイルの取得(オーバーヘッドの方が高いので直接 Glob/Read で取る)。
ファイル・ディレクトリ・コードの所在特定を、安いモデルのサブエージェントに委譲して行うスキル。 Opus 本体で Glob/Grep/Read を回さず、探索処理そのものと、ヒットした大量ファイルの中身が Opus のコンテキストに流れ込む無駄の両方を削る。
前提条件
Claude Code のみ(Agent tool と Explore サブエージェントタイプを使用)。追加のツール導入は不要。
入力
$ARGUMENTS
探したい対象(例: 「サンプルアプリの Cron 設定どこ」「株式会社サンプルの料率テーブルを持ってるファイル」「起動時に常駐する設定ファイル全部」)。
実行方針
1. まず「委譲すべきか」を判定(過剰委譲を避ける)
- 単一パスがほぼ確定している1ファイル取得 → 委譲せず、その場で Glob/Read で直接取る(サブエージェント起動の往復オーバーヘッドの方が高い)。この場合はスキルを使わず即答してよい。
- 広域・探索的(どこにあるか不明 / 複数候補 / 命名規則の横断調査 / 概念で探す)→ 以下の通りサブエージェントに委譲する。
2. モデルを選ぶ
- 既定 = Haiku(
model: "haiku"): 「このファイル名どこ」「この plist 群」「この文字列を含むファイル」等、パターン一致で片が付く単純探索。 - Sonnet に昇格(
model: "sonnet"): 「〜する処理を書いてるコード」「この機能を実装してる箇所」等、何がヒットかを意味で判断する必要がある概念的な探索。判断に迷ったら Sonnet。
3. Explore サブエージェントに委譲
Agent tool を、subagent_type: "Explore"、上で選んだ model で1回起動する。プロンプトには必ず次を含める:
- 探索対象($ARGUMENTS の意図を具体化したもの)
- 探索範囲のヒント(分かれば。例: プロジェクトのルートディレクトリ配下、
~/.claude/配下 等) - TCC 保護領域は触らない指示(
~/Library/Containers,~/Library/Mail,~/Library/Messages,~/Library/Safari等。~直下の全舐めもしない) - 返す形式の厳命:
- ヒットした 絶対パス の一覧
- 各パスに 1行だけ の所在説明(何がそこにあるか / なぜ該当か)
- ファイル中身のダンプ・長い引用は禁止。必要なら該当行番号のみ
- 見つからなければ「該当なし」と、試した探索範囲を1行で
複数の独立した探索軸がある場合のみ、Agent を並列で複数起動してよい(例: plist と launchd ログを別軸で)。それ以外は1本で十分。
4. Opus 側での扱い
サブエージェントが返した「パス+1行」だけを受け取り、ユーザーに要点を提示する。 中身が必要になった時点で、確定したパスをピンポイントで Read する(全候補を先読みしない)。
出力
- 見つかったパス(絶対パス)と各1行説明
- 該当なしの場合は探索範囲を添えて報告
- 使ったモデル(Haiku/Sonnet)を末尾に1行明記(コスト透明化のため)