cheez-search について
cheez-searchは、コードナビゲーションの質問をtilth MCP、AST検索、LSPなど適切なセマンティック検索バックエンドへ振り分けるスキルです。リポジトリの範囲を定め、型に基づく検索、構文パターン、コード以外の質問を適切なツールへ案内します。
主な機能
- 01tilth MCP、AST検索、LSPへの振り分け
- 02シンボル定義と呼び出し元の検索
- 03ソース内容と範囲指定した正規表現の検索
- 04ASTパターンによる構造の照合
- 05リポジトリ範囲と鮮度要件の設定
活用シーン
- 01シンボルの定義と使用箇所を特定
- 02関数の呼び出し箇所を検索
- 03ソース内のTODOやエラーテキストを検索
- 04依存関係と影響範囲を調査
MCP 対応
広範なソース検索には、シンボル、呼び出し元、インポート、内容、正規表現、依存関係を扱うtilth MCPツールを使用します。AST検索やLSPを使う場面も説明します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ paulnsorensen/ easy-cheese --skill cheez-searchインストール後、Claude Code で/cheez-searchを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/routing.mdsg-patterns.mdtilth-deps.mdtilth-search-reference.md詳細
cheez-search
バックエンドの契約:盲目的なテキスト検索ではなく、セマンティックなコード検索バックエンドを使用してください。質問に答えられる最も範囲の狭いツールを選択してください。
バックエンドの検出
質問の種類に応じてバックエンドを選択します。
- 型に基づく質問では LSP が優先されます: インポートをたどった定義、シャドーイングや再エクスポートを考慮した参照、ホバー/型情報、実装、名前変更の計画、サーバーが認識しているコードアクション。
- 構文の形状検索では AST 検索/
sgが優先されます: メタ変数を使った構造パターンや、構文の形状を保った繰り返しのコードモッド。 - 広範なソース検索では tilth MCP が優先されます: シンボル、呼び出し元、インポート、コンテンツ、範囲を限定した正規表現、依存関係/影響範囲のコンテキストを、1 回の新鮮なリポジトリスキャンで検索できます。
注記: すべての tilth ツールには cwd(絶対パスで指定するチェックアウトディレクトリ)が必要です。サーバー自身の cwd は起動時に固定されます。Claude Code ではフックが cwd を自動で挿入するため、設定しないでください。フックのないハーネスでは、相対パスやスコープが正しく解決されるように cwd を明示してください。root パラメーターはありません。
例
「handleAuth はどこで定義されていますか?」
tilth_search(queries: [{query: "handleAuth"}], scope: "src/")
# Search: "handleAuth" in src/ — 6 matches (2 definitions, 4 usages)
## src/auth.ts:44-89 [definition]
→ [44-89] export fn handleAuth(req, res, next)
## src/routes/api.ts:34 [usage]
→ [34] router.use('/api/protected/*', handleAuth);
[definition] タグで質問に答えられます。使用箇所も自動的に付いてきます。
「validateToken を呼び出しているのはどこですか?」
tilth_search(queries: [{query: "validateToken", kind: "callers"}])
# Callers: "validateToken" — 3 call sites
## src/auth.ts:62 [usage] in handleAuth
→ [62] const claims = validateToken(token);
## src/middleware/admin.ts:18 [usage] in requireAdmin
→ [18] if (!validateToken(req.headers.authorization)) return next(403);
kind: "callers" を使うと、コメントと文字列が除外され、実際の呼び出し箇所だけが返されます。
「再試行に言及している TODO をすべて見つける」
tilth_search(queries: [{query: "TODO.*retry", kind: "regex"}], scope: "src/")
コンテンツ全体からパターンを検索するには kind: "regex" を使用します。コストを抑えるため、対象範囲を限定してください。
スコープ:コード検索バックエンドを使う場合と使わない場合
cheez-search が対象とするのは、追跡対象で、解析可能なソースファイル内のコード(Rust、TypeScript/TSX/JS、Python、Go、Java、Scala、C/C++、Ruby、PHP、C#、Swift)です。シンボル形式のクエリ、呼び出し元、コンテンツ、範囲を限定した正規表現、AST 形状のパターン、型に基づく検索には AST/LSP バックエンドを使用します。
スコープと鮮度
アクティブなリポジトリを対象とし、ディスク上の最新状態を反映したバックエンドを使用してください。tilth MCP は要求に応じて作業ツリーを走査し、.gitignore を尊重します。ネイティブの sg と LSP は、現在のチェックアウトを参照し、要求されたセマンティックな形状の質問に答えられる場合に適しています。
実用上の注意:
- 古いインデックスは使わないでください。バックエンドが現在のファイルを認識する前に更新を必要とする場合は、更新するか、より新しい状態を反映するバックエンドを選んでください。
- バックエンドが明示的にそのスコープをサポートしていない限り、兄弟ワークツリー、システムパス、依存関係キャッシュにリポジトリスコープのバックエンドを使わないでください。
- リポジトリをまたぐ質問は、cheez-search に入る前に適切な経路へ振り分けてください。
/cheez-search を呼び出さない場合
以下の質問は対象外です。cheez-search には入らず、呼び出し元のワークフロースキルで振り分け先を示す表を参照してください。
| 質問(cheez-search を使わない) | 振り分け先 | 理由 |
|---|---|---|
メタ変数を含むパターン(JSON.parse(JSON.stringify($X))) | sg (ast-grep) — cheez-search から Bash 経由で呼び出せる、認められた例外 | AST の形状は名前/テキスト検索では表現できません |
外部ライブラリのドキュメント(「React の useEffect はどのように動作しますか?」) | /briesearch (Context7) | 自分のコードではなく、ベンダーの最新ドキュメントが必要です |
| 大量の通常の非コードテキスト(ログ、ビルド出力、大きな CSV) | 呼び出し元のワークフロースキルから、rg、jq、awk、head/tail を使うホストの Bash | ここでは Tree-sitter による解析はトークンを浪費します。形式に特化したツールの方が適しています |
リポジトリ外のファイル(システムパス、~/Library、/etc) | 呼び出し元のワークフロースキルから使うホストの Grep/Bash | cheez-search のスコープはリポジトリです(上記参照) |
| コミット、プッシュ、通常の PR、または積み重ねた PR の変更 | /plate | 公開はコード検索ではありません |
入る前に振り分ける(型に基づく質問)
名前形式のクエリは、この実行で選択したセマンティック検索バックエンド(tilth、ネイティブ AST 検索、または同等のインデックス付きソース検索経路)を使ってください。型に基づく質問は、cheez-search に入る前に別の経路へ振り分けてください。LSP と Serena の振り分け表については、references/routing.md を参照してください。
検索の種類を選ぶ
コードのナビゲーション(X がどこにあるか/Y を何が呼び出すか/影響範囲)では、まず kind:symbol で定義を見つけ、次に kind:callers で呼び出し箇所を探します。シンボル名がわからない場合に限り、content/regex に切り替えてください。
| 目的 | バックエンドの例 | 例 |
|---|---|---|
| シンボルの定義箇所/使用箇所を見つける | tilth_search の symbol 種別、ネイティブ AST シンボル検索、または型が確定している場合の LSP 定義 | 例 — 「handleAuth はどこで定義されていますか?」 |
| 関数の呼び出し箇所をすべて見つける | tilth_search の callers 種別、ネイティブ AST 呼び出し元検索、または型が確定している場合の LSP 参照 | 例 — 「validateToken を呼び出しているのは何ですか?」 |
| 文字列リテラル、TODO、エラーメッセージを見つける | セマンティックバックエンドでのコンテンツ検索 | tilth_search(queries: [{query: "error message", kind: "content"}]) |
| 正規表現に一致する行を見つける | セマンティックバックエンドでの範囲を限定した正規表現検索 | tilth_search(queries: [{query: "rate.?limit", kind: "regex"}]) |
| AST の形状(メタ変数を含むテンプレート)に一致させる | sg(ast-grep、Bash 経由) | sg --lang typescript -p 'JSON.parse(JSON.stringify($X))' --json src/ |
| モジュールのインポート/影響範囲グラフ | tilth_deps、LSP 参照/インポートグラフ、または同等の依存関係コンテキスト | tilth_deps(path: "src/auth.ts") |
経験則: 名前の形やテキストの形で指定するクエリでは、セマンティックなソース検索バックエンドを使い続けてください。
選択したバックエンドで表現できない構造的メタ変数($X、
$$$BODY)がパターンに必要な場合に限り、sg に切り替えてください。
MCP ツールリファレンス
呼び出し形式、パラメーターのオプション、種別ごとの実例については、
references/tilth-search-reference.md を参照してください。
AST 形状パターン -- ast-grep による代替
メタ変数($X、$$$BODY)を含む形状では、Bash 経由で sg に切り替えてください。これは、sg --rewrite による構造的なコード変換に対応する、唯一許可されたシェルへの切り替え方法です。構文、言語の対応表、安全な呼び出しルール、注意点、コード変換のドライラン手順については、references/sg-patterns.md を参照してください。
禁止事項と適用範囲の制限
- コード検索にはセマンティックバックエンドを使用してください。
sgは AST 形状のメタ変数パターンとコード変換に対応します。LSP は型が確定している定義と参照に対応します(名前変更とコードアクションは編集操作のため、cheez-write に振り分けてください)。コード作業以外では、サイズ、更新日時、権限などの名前以外の条件にfindを使用できます。コード検索に grep、rg、ripgrep、ag、ack、find、fd を使用しないでください。 - 展開済みの結果はすでに表示されています。 再読み込みしないでください。
- デフォルトの展開数から始めてください。 必要な場合に限り増やし、展開を過剰に使用しないでください。
- ファイル全体の読み込みには cheez-read を使用してください。 ここでは行いません。
- コードの編集には cheez-write を使用してください。 ここでは行いません。
- テストの実行にはプロジェクトのテスト/ビルドスキルを使用してください。 ここでは行いません。
- Git 操作には git/gh スキルを使用してください。 ここでは行いません。