ast-grep-outline について
ast-grep outline でソースコードの簡潔な構造図を作るスキルです。宣言、メンバー、行番号を先に確認して対象箇所を絞れます。参照解決やコールグラフ作成は行わないローカル構文ビューです。
主な機能
- 01トップレベル宣言とメンバーの一覧
- 02行番号とシグネチャの表示
- 03エクスポート、インポート、構造で絞り込み
- 04名前または型による項目の絞り込み
- 05ファイル構造を JSON ストリームで出力
活用シーン
- 01編集前にファイル構造を把握
- 02不慣れなディレクトリの公開 API を確認
- 03シンボルのメンバーと行番号を特定
- 04ファイル間の依存方向を調査
- 05変更ファイルの構造を確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ast-grep/ agent-skill --skill ast-grep-outlineインストール後、Claude Code で/ast-grep-outlineを入力して読み込まれたか確認します。
詳細
ast-grep outline を使う
ast-grep outline は、行番号付きでソースコードの簡潔な構造マップを出力します。トップレベルの項目(インポート、関数、クラス、構造体、インターフェース、モジュール、列挙型)と、その直接のメンバー(フィールド、メソッド、コンストラクター、列挙型のバリアント)が表示されます。ローカルな構文のみを表示するため、ファイル全体を読み込む前に実行しても低コストです。
コードは段階的に読みます。検索またはファイル名で候補ファイルを見つけ、アウトラインを表示してから、アウトラインが示すソース範囲だけを開きます。デフォルトの表示は入力に応じて変わります。ファイルの場合は、メンバーの要約を含むファイル内の構造が表示され、ディレクトリの場合は、エクスポートされる項目だけが名前ごとにグループ化されて表示されます。
使用する場面
編集前にファイルを把握する。 実装の詳細を読む前に、目次、依存関係、公開エントリーポイントを確認します。
ast-grep outline <file>
ast-grep outline <file> --items imports
ast-grep outline <file> --items exports
不慣れなディレクトリの構造を把握する。 サブツリーの公開範囲をスキャンし、探しているものが分かったらシンボルの種類で絞り込みます。
ast-grep outline <dir> --items exports
ast-grep outline <dir> --type struct,enum,function
既知のシンボルを詳しく調べる。 検索で候補となる名前が見つかったら、本体全体を読む代わりに、行番号付きでメンバーを一覧表示します。
ast-grep outline <file> --match <symbol> --type class --view expanded
依存関係の方向をたどる。 パッケージやモジュールをインポートしているファイルを調べ、変更を加える場所を判断します。
ast-grep outline <dir> --items imports --view signatures
編集後に変更されたファイルを確認する。 Git で変更箇所を確認し、アウトラインで変更後の構造と公開範囲を要約します。
ast-grep outline $(git diff --name-only HEAD) --items exports
引数ガイド
--items <KIND>はトップレベルの項目を選択します。structureはローカルな宣言(ファイルのデフォルト)、exportsは公開 API(ディレクトリのデフォルト)、importsは依存関係、allはインポートとエクスポートの関係をまとめて確認する場合に使います。--view <VIEW>は詳細度を指定します。低い順に、namesはディレクトリのスキャン用、signaturesは項目ごとに 1 行、digestはシグネチャとメンバー名、expandedはメンバーごとに行番号付きで 1 行ずつ表示します。--match <REGEX>は名前またはシグネチャでトップレベルの項目を絞り込みます。Rust の正規表現を使用し、大文字と小文字を区別します。メンバーには一致しません。--type <TYPE[,TYPE...]>は、--type class,functionのように、トップレベルのシンボルの種類を絞り込みます。method,fieldのようなメンバーの種類は、トップレベルの項目には一致しません。--pub-membersは、メンバーを表示する際に非公開メンバーを非表示にします。--json=streamは、正確な範囲情報を含む JSON オブジェクトをファイルごとに 1 つ出力します。パイプ処理またはエントリーの後処理にのみ使用してください。移動先の確認にはテキストをおすすめします。
制限
outline が表示するのは、ローカルな構文構造です。参照の解決、型の推論、再エクスポートの連鎖の追跡、呼び出しグラフの作成は行いません。これらの確認には ast-grep run、rg、またはコンパイラーを利用するツールを使い、それらで見つかった候補ファイルに対してアウトラインを表示してください。