AgentSkillsCN

ast-grep

使用ast-grep通过抽象语法树模式搜索代码。在寻找依赖于语法而非文本的代码结构、错误模式或重构候选时使用。

SKILL.md
--- frontmatter
name: ast-grep
description: Search code using Abstract Syntax Tree patterns with ast-grep. Use when finding code structures, bug patterns, or refactoring candidates that depend on syntax rather than text.
allowed-tools: Bash, Read, Glob

ast-grep - Structural Code Search

ast-grep searches code by matching AST patterns, not text. This finds code based on structure regardless of formatting or variable names.

Basic Usage

bash
ast-grep run -p 'PATTERN' -l LANGUAGE

Pattern Syntax

  • $VAR - Match any single node (like a wildcard)
  • $$$ - Match zero or more nodes
  • Literal code matches itself

Common Patterns

GoalPatternLanguage
Find subtraction with specific left operanddiscount - $VARtypescript
Find all useEffect with empty depsuseEffect($FN, [])tsx
Find console.log callsconsole.log($$$)typescript
Find async functionsasync function $NAME($$$) { $$$ }typescript

Example: Finding Reversed Operands

To find where discount appears on the left side of subtraction:

bash
ast-grep run -p 'discount - $VAR' -l typescript

This would find bugs like discount - basePrice (should be basePrice - discount).

When to Use

  • Finding bug patterns based on code structure
  • Locating specific API usage patterns
  • Identifying refactoring candidates
  • Searching for security anti-patterns