structural-search について
ast-grepで構文木のパターンを使ってコードを検索するスキルです。正規表現では捉えにくい意味的な一致を探し、リファクタリングを準備する開発者向けです。
主な機能
- 01ASTベースのコード検索
- 02パターンによるコード照合
- 03書き換えのプレビューと適用
- 04JSON・文脈・件数の出力
- 05YAMLルールの実行
活用シーン
- 01関数やメソッドの使用箇所を探す
- 02フックやAPI呼び出しを特定する
- 03大規模なリファクタリングを準備する
- 04アンチパターンやセキュリティ問題を検出する
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ 0xdarkmatter/ claude-mods --skill structural-searchインストール後、Claude Code で/structural-searchを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/rule-template.yamlreferences/advanced-usage.mdgo-rust-patterns.mdjs-ts-patterns.mdpython-patterns.mdsecurity-patterns.mdscripts/.gitkeep詳細
構造検索
抽象構文木(AST)の構造に基づいてコードを検索します。正規表現では確実に一致させられない意味的なパターンを見つけます。
ツール
| ツール | コマンド | 用途 |
|---|---|---|
| ast-grep | sg -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- カスタムルール用のスターターテンプレート
コメント
Markdown 対応