mcpField
A
ast-grep-find

ast-grep-find

github.com/parcadei開発3.9k520 回インストール39 週間前に更新
リポジトリ

ast-grep-find について

ASTパターンで構文を認識してコード検索やリファクタリングを行うスキルです。Python、JavaScript、TypeScript、Goなどに対応し、ast-grep MCPサーバーが必要です。

主な機能

  1. 01構文パターンの検索
  2. 02呼び出し・インポート・定義の照合
  3. 03一致したコード構造の置換
  4. 04dry runによる変更プレビュー
  5. 05パスやglobによる検索絞り込み

活用シーン

  1. 01コメントを除外した関数呼び出しの検索
  2. 02インポートやクラス定義の特定
  3. 03繰り返しコードパターンのリファクタリング
  4. 04適用前の変更内容の確認

MCP 対応

検索とリファクタリングの実行には、`mcp_config.json` で `ast-grep` MCPサーバーを設定する必要があります。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/parcadei/continuous-claude-v3 --skill ast-grep-find

インストール後、Claude Code で/ast-grep-findを入力して読み込まれたか確認します。

詳細

AST-Grep Find

構文を理解した構造的なコード検索です。関数呼び出し、インポート、クラス定義などのパターンを検索できます。テキストだけの検索ではありません。

使用するタイミング

  • コードのパターンを検索する(文字列やコメントは無視します)
  • 関数呼び出し、クラス定義、インポートを検索する
  • AST の精度でコードをリファクタリングする
  • コードベース全体で変数や関数の名前を変更する

使い方

パターンを検索する
uv run python -m runtime.harness scripts/ast_grep_find.py \
    --pattern "import asyncio" --language python
特定のディレクトリを検索する
uv run python -m runtime.harness scripts/ast_grep_find.py \
    --pattern "async def \$FUNC(\$\$\$)" --language python --path "./src"
パターンをリファクタリング/置換する
uv run python -m runtime.harness scripts/ast_grep_find.py \
    --pattern "console.log(\$MSG)" --replace "logger.info(\$MSG)" \
    --language javascript
ドライラン(変更をプレビューする)
uv run python -m runtime.harness scripts/ast_grep_find.py \
    --pattern "print(\$X)" --replace "logger.info(\$X)" \
    --language python --dry-run

パラメーター

パラメーター説明
--pattern検索する AST パターン(必須)
--language言語:python、javascript、typescript、go など
--path検索するディレクトリ(デフォルト:.)
--globファイルの glob パターン(例:**/*.py)
--replaceリファクタリング用の置換パターン
--dry-run変更を適用せずにプレビューします
--context前後に表示する行数(デフォルト:2)

パターン構文

構文意味
$NAME単一のノード(変数、式)に一致
$$$複数のノード(引数、文)に一致
$_任意の単一ノードに一致(ワイルドカード)

例

# Find all function definitions
uv run python -m runtime.harness scripts/ast_grep_find.py \
    --pattern "def \$FUNC(\$\$\$):" --language python

# Find console.log calls
uv run python -m runtime.harness scripts/ast_grep_find.py \
    --pattern "console.log(\$\$\$)" --language javascript

# Replace print with logging
uv run python -m runtime.harness scripts/ast_grep_find.py \
    --pattern "print(\$X)" --replace "logging.info(\$X)" \
    --language python --dry-run

morph/warpgrep との比較

ツール最適な用途
ast-grep構造的なパターン(コードの構文を理解します)
warpgrep高速なテキスト/正規表現検索(grep より 20 倍高速)

構文を認識した一致が必要な場合は ast-grep を使用します。速度を優先する場合は warpgrep を使用します。

必要な MCP サーバー

mcp_config.json に ast-grep サーバーが必要です。

コメント