code-symbols

Find and edit symbols in code using ast-grep (tree-sitter based). Use when finding function definitions, class definitions, symbol usages, renaming symbols, or replacing code in JavaScript, TypeScript, Python, Go, Rust, and other languages. NOT for Clojure - use clj-symbols instead.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "code-symbols" with this command: npx skills add brettatoms/agent-skills/brettatoms-agent-skills-code-symbols

Code Symbols Skill

Use ast-grep (sg) for structural code search based on tree-sitter parsing. Works with 31 languages.

Important: Clojure is NOT supported. Use the clj-symbols skill for Clojure code.

Prerequisites

# npm
npm install --global @ast-grep/cli

# Homebrew
brew install ast-grep

# Cargo
cargo install ast-grep --locked

Verify: ast-grep --version or sg --version

Supported Languages

CategoryLanguages
WebJavaScript, TypeScript, HTML, CSS, JSON
SystemsC, C++, Go, Rust
ScriptingPython, Ruby, PHP, Lua, Bash
JVMJava, Kotlin, Scala
OtherSwift, Haskell, Elixir, Nix

Not supported: Clojure, Erlang, R, MATLAB

Quick Reference

TaskCommand
Find patternast-grep run --pattern 'PATTERN' --lang LANG path/
Find with JSONast-grep run --pattern 'PATTERN' --lang LANG path/ --json
Rename symbolast-grep run --pattern 'old' --rewrite 'new' --lang LANG path/ --update-all

Pattern Syntax

Patterns must be valid code that tree-sitter can parse.

Meta-Variables

SyntaxMeaningExample
$NAMEMatch single nodefunction $NAME() {}
$$$Match zero or more nodesfunction foo($$$)
$_Match but don't capture$_($$$)

Basic Examples

# Match any function call
ast-grep run --pattern '$FUNC($$$)' --lang js path/

# Match specific function
ast-grep run --pattern 'myFunction($$$)' --lang js path/

# Match variable assignment
ast-grep run --pattern 'const $NAME = $VALUE' --lang js path/

Common Operations

Find Function Definition

# JavaScript
ast-grep run --pattern 'function $NAME($$$) { $$$ }' --lang js path/

# Python
ast-grep run --pattern 'def $NAME($$$):' --lang py path/

# Go
ast-grep run --pattern 'func $NAME($$$)' --lang go path/

Find Symbol Usages

ast-grep run --pattern 'myFunction($$$)' --lang js path/
ast-grep run --pattern '$OBJ.myMethod($$$)' --lang js path/

Rename Symbol

# Preview
ast-grep run --pattern 'oldName' --rewrite 'newName' --lang js src/

# Apply
ast-grep run --pattern 'oldName' --rewrite 'newName' --lang js src/ --update-all

# Interactive
ast-grep run --pattern 'oldName' --rewrite 'newName' --lang js src/ --interactive

JSON Output

ast-grep run --pattern '$FUNC($$$)' --lang js path/ --json

Parse with jq:

ast-grep run --pattern 'function $NAME($$$) { $$$ }' --lang js path/ --json \
  | jq '.[] | {name: .metaVariables.single.NAME.text, file, line: .range.start.line}'

When to Use ast-grep vs ripgrep

ScenarioTool
Find by name (text pattern)ripgrep (rg)
Find by structure (function, class)ast-grep
Language-specific patternsast-grep
Maximum speedripgrep
Accurate symbol boundariesast-grep

Additional References

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

alpinejs

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

playwright

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

browser-tools

No summary provided by upstream source.

Repository SourceNeeds Review