mcpField
A
ast-grep-find

ast-grep-find

github.com/parcadeiDevelopment3.9k520 installsUpdated 39w ago
Repository

About ast-grep-find

A skill for syntax-aware code search and refactoring through AST patterns. It supports Python, JavaScript, TypeScript, Go, and other languages, and requires the ast-grep MCP server.

Key features

  1. 01Search syntax-aware code patterns
  2. 02Match calls, imports, and definitions
  3. 03Replace matching code structures
  4. 04Preview edits with dry run
  5. 05Filter searches by path or glob

Use cases

  1. 01Find function calls while ignoring comments
  2. 02Locate imports or class definitions
  3. 03Refactor repeated code patterns
  4. 04Preview changes before applying them

MCP support

The skill requires an `ast-grep` MCP server in `mcp_config.json` to perform its searches and refactors.

Install

Copy the command and run it in a terminal.

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

After installing, type/ast-grep-findin Claude Code to confirm it loaded.

Details

From the project README

AST-Grep Find

Structural code search that understands syntax. Find patterns like function calls, imports, class definitions - not just text.

When to Use

  • Find code patterns (ignores strings/comments)
  • Search for function calls, class definitions, imports
  • Refactor code with AST precision
  • Rename variables/functions across codebase

Usage

Search for a pattern
uv run python -m runtime.harness scripts/ast_grep_find.py \
    --pattern "import asyncio" --language python
Search in specific directory
uv run python -m runtime.harness scripts/ast_grep_find.py \
    --pattern "async def \$FUNC(\$\$\$)" --language python --path "./src"
Refactor/replace pattern
uv run python -m runtime.harness scripts/ast_grep_find.py \
    --pattern "console.log(\$MSG)" --replace "logger.info(\$MSG)" \
    --language javascript
Dry run (preview changes)
uv run python -m runtime.harness scripts/ast_grep_find.py \
    --pattern "print(\$X)" --replace "logger.info(\$X)" \
    --language python --dry-run

Parameters

ParameterDescription
--patternAST pattern to search (required)
--languageLanguage: python, javascript, typescript, go, etc.
--pathDirectory to search (default: .)
--globFile glob pattern (e.g., **/*.py)
--replaceReplacement pattern for refactoring
--dry-runPreview changes without applying
--contextLines of context (default: 2)

Pattern Syntax

SyntaxMeaning
$NAMEMatch single node (variable, expression)
$$$Match multiple nodes (arguments, statements)
$_Match any single node (wildcard)

Examples

# 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

vs morph/warpgrep

ToolBest For
ast-grepStructural patterns (understands code syntax)
warpgrepFast text/regex search (20x faster grep)

Use ast-grep when you need syntax-aware matching. Use warpgrep for raw speed.

MCP Server Required

Requires ast-grep server in mcp_config.json.

Comments

Markdown supported