mcpField
T
tool-ast-grep-rules

tool-ast-grep-rules

github.com/heyvhuang開発33865 回インストール30 週間前に更新
リポジトリ

tool-ast-grep-rules について

構造的なコード検索、 lint、書き換えに取り組む開発者向けの ast-grep スキルです。YAML ルールの構文やプロジェクト設定、マッチ結果の検証手順を扱います。

主な機能

  1. 01構造マッチ用 YAML ルール
  2. 02Lint・書き換えルールの作成
  3. 03sgconfig.yml によるプロジェクトスキャン
  4. 04AST クエリのデバッグ
  5. 05複数言語のパターン例

活用シーン

  1. 01コードパターンの Lint ルール作成
  2. 02コードの自動書き換え
  3. 03プロジェクトソースでのルール検証
  4. 04デバッグ時の AST 構造確認

インストール

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

$npx skills add https://github.com/heyvhuang/ship-faster --skill tool-ast-grep-rules

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

同梱ファイルcommon-patterns.mdrule-syntax.md

詳細

ast-grep ルール作成ガイド

ast-grep は tree-sitter を使用してコードを AST に解析し、正確なパターンマッチングを可能にします。ルールは YAML で定義し、コードの lint、検索、書き換えに使用します。

クイックスタート

id: no-console-log
language: JavaScript
rule:
  pattern: console.log($$$ARGS)
fix: logger.log($$$ARGS)
message: Replace console.log with logger

プロジェクト設定

プロジェクトレベルのスキャンには、sgconfig.yml 設定ファイルが必要です。

# sgconfig.yml (project root)
ruleDirs:
  - rules          # Rule directory, recursively loads all .yml files

一般的なプロジェクト構成:

my-project/
├── sgconfig.yml
├── rules/
│   ├── no-console.yml
│   └── custom/
│       └── team-rules.yml
└── src/

プロジェクトをスキャンするには:

ast-grep scan              # Automatically finds sgconfig.yml
ast-grep scan --config path/to/sgconfig.yml  # Specify config

注:ast-grep scan コマンドには sgconfig.yml が必要ですが、ast-grep run -p は単独で使用できます。

ルールのワークフロー

Lint ルール(一般的)

修正は行わずにチェックだけを行います。CI/エディターのヒントに使用します。

# rules/no-console-log.yml
id: no-console-log
language: JavaScript
severity: warning
message: Avoid console.log in production code
rule:
  pattern: console.log($$$ARGS)

確認:

ast-grep scan -r rules/no-console-log.yml src/
書き換えルール(任意)

自動修正が必要な場合は、fix を追加します。

id: no-console-log
language: JavaScript
severity: warning
message: Replace console.log with logger
rule:
  pattern: console.log($$$ARGS)
fix: logger.log($$$ARGS)

修正を適用:

ast-grep scan -r rules/no-console-log.yml --update-all src/
開発ワークフロー
- [ ] 1. Explore pattern with CLI: ast-grep -p 'pattern' src/
- [ ] 2. Create rule file (.yml)
- [ ] 3. Verify: ast-grep scan -r rule.yml src/
- [ ] 4. If false positives → add constraints → re-verify

AST 構造をデバッグ:

ast-grep -p 'console.log($ARG)' --debug-query ast

基本構文

要素構文例
単一ノード$VARconsole.log($MSG)
複数ノード$$$ARGSfn($$$ARGS)
同じ内容同じ名前を使用$A == $A
キャプチャしない$_VAR$_FN($_FN)

コアルールのクイックリファレンス

種類用途例
patternコード構造にマッチpattern: if ($COND) {}
kindAST ノードの種類にマッチkind: function_declaration
allすべての条件にマッチall: [pattern: X, kind: Y]
anyいずれかの条件にマッチany: [pattern: var $A, pattern: let $A]
notマッチを除外not: {pattern: safe_call()}
has子ノードを持つ必要があるhas: {kind: return_statement}
inside祖先ノード内にある必要があるinside: {kind: class_body}

詳細リファレンス

構文の完全ガイド:rule-syntax.md を参照してください。

  • アトミックルール(pattern、kind、regex、nthChild、range)
  • 複合ルール(all、any、not、matches)
  • 関係ルール(has、inside、follows、precedes)
  • Transform と fixConfig

言語固有のパターン:common-patterns.md を参照してください。

  • JavaScript/TypeScript の例
  • Python の例
  • Go と Rust の例

サポート対象言語

Bash、C、Cpp、CSharp、Css、Elixir、Go、Haskell、Hcl、Html、Java、JavaScript、Json、Kotlin、Lua、Nix、Php、Python、Ruby、Rust、Scala、Solidity、Swift、Tsx、TypeScript、Yaml

コメント