mcpField
S
structural-search

structural-search

github.com/0xdarkmatter開発7855 回インストール2 週間前に更新
リポジトリ

structural-search について

ast-grepで構文木のパターンを使ってコードを検索するスキルです。正規表現では捉えにくい意味的な一致を探し、リファクタリングを準備する開発者向けです。

主な機能

  1. 01ASTベースのコード検索
  2. 02パターンによるコード照合
  3. 03書き換えのプレビューと適用
  4. 04JSON・文脈・件数の出力
  5. 05YAMLルールの実行

活用シーン

  1. 01関数やメソッドの使用箇所を探す
  2. 02フックやAPI呼び出しを特定する
  3. 03大規模なリファクタリングを準備する
  4. 04アンチパターンやセキュリティ問題を検出する

インストール

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

$npx skills add https://github.com/0xdarkmatter/claude-mods --skill structural-search

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
rule-template.yaml
references/
advanced-usage.md
go-rust-patterns.md
js-ts-patterns.md
python-patterns.md
security-patterns.md
scripts/
.gitkeep

詳細

構造検索

抽象構文木(AST)の構造に基づいてコードを検索します。正規表現では確実に一致させられない意味的なパターンを見つけます。

ツール

ツールコマンド用途
ast-grepsg -p 'pattern'AST を考慮したコード検索

パターン構文

パターン一致するもの例
$NAME名前付き識別子function $NAME() {}
$_任意の単一ノードconsole.log($_)
$$$0 個以上のノードfunction $_($$$) {}

特に重要なパターン 10 選

# 1. Find console.log calls
sg -p 'console.log($_)'

# 2. Find React hooks
sg -p 'const [$_, $_] = useState($_)'
sg -p 'useEffect($_, [$$$])'

# 3. Find function definitions
sg -p 'function $NAME($$$) { $$$ }'
sg -p 'def $NAME($$$): $$$' --lang python

# 4. Find imports
sg -p 'import $_ from "$_"'
sg -p 'from $_ import $_' --lang python

# 5. Find async patterns
sg -p 'await $_'
sg -p 'async function $NAME($$$) { $$$ }'

# 6. Find error handling
sg -p 'try { $$$ } catch ($_) { $$$ }'
sg -p 'if err != nil { $$$ }' --lang go

# 7. Find potential issues
sg -p '$_ == $_'           # == instead of ===
sg -p 'eval($_)'           # Security risk
sg -p '$_.innerHTML = $_'  # XSS vector

# 8. Preview refactoring
sg -p 'console.log($_)' -r 'logger.info($_)'

# 9. Apply refactoring
sg -p 'var $NAME = $_' -r 'const $NAME = $_' --rewrite

# 10. Search specific language
sg -p 'pattern' --lang typescript

クイックリファレンス

タスクコマンド
パターンを検索sg -p 'pattern'
言語を指定sg -p 'pattern' --lang python
置換(プレビュー)sg -p 'old' -r 'new'
置換(適用)sg -p 'old' -r 'new' --rewrite
コンテキストを表示sg -p 'pattern' -A 3
JSON 出力sg -p 'pattern' --json
ファイル一覧のみ表示sg -p 'pattern' -l
一致数をカウントsg -p 'pattern' --count
YAML ルールを実行sg scan

使用する場面

  • 関数やメソッドのすべての使用箇所を見つける
  • 特定のコードパターン(フック、API 呼び出し)を特定する
  • 大規模なリファクタリングに備える
  • 正規表現では誤検出が起きる場合
  • アンチパターンやセキュリティ上の問題を検出する
  • カスタムの lint ルールを作成する

追加リソース

すべてのパターンを確認するには、以下を読み込んでください。

  • ./references/js-ts-patterns.md - JavaScript/TypeScript のパターン
  • ./references/python-patterns.md - Python のパターン
  • ./references/go-rust-patterns.md - Go および Rust のパターン
  • ./references/security-patterns.md - セキュリティ脆弱性の検出
  • ./references/advanced-usage.md - YAML ルールとツール連携
  • ./assets/rule-template.yaml - カスタムルール用のスターターテンプレート

コメント