explore-codebase
0
总安装量
4
周安装量
安装命令
npx skills add https://github.com/vinta/hal-9000 --skill explore-codebase
Agent 安装分布
opencode
4
gemini-cli
4
claude-code
4
codex
4
antigravity
2
Skill 文档
Explore Codebase
Tool Selection
| Need | Tool |
|---|---|
| Structural patterns (functions, classes) | sg (ast-grep) |
| Text/regex patterns (strings, names) | rg (ripgrep) |
| File discovery by name/extension | fd |
Decision flow: Find files first? fd â pipe to rg/sg. Syntax-aware match needed? sg. Fast text search? rg. Uncertain? Start with rg, escalate to sg if structure matters.
ast-grep Essentials
ast-grep is the least familiar tool — key syntax summarized here. See references/ast-grep.md for language-specific patterns and YAML rule files.
sg -p 'PATTERN' -l LANG [PATH]
sg -p 'PATTERN' --has 'INNER' -l LANG # Must contain
sg -p 'PATTERN' --not-has 'INNER' -l LANG # Must not contain
sg -p 'PATTERN' --inside 'OUTER' -l LANG # Must be within
Metavariables
| Syntax | Captures | Example |
|---|---|---|
$VAR |
Single node | console.log($MSG) |
$$$VAR |
Zero or more nodes | function($$$ARGS) — any arity |
$_ |
Non-capturing | $_FUNC($_) — match without capture |
Rules: must be UPPERCASE, same name = same content ($A == $A matches x == x not x == y).
Examples
sg -p 'function $NAME($$$ARGS) { $$$ }' -l js
sg -p 'async function $NAME($$$) { $$$ }' --has 'await $EXPR' -l js
sg -p 'class $NAME extends $PARENT { $$$ }' -l ts
sg -p 'def $NAME($$$): $$$' -l py
ripgrep / fd Quick Reference
Standard CLI tools — use references/ripgrep.md and references/fd.md for full flag tables.
rg PATTERN -t TYPE [PATH] # Search by file type
rg -F 'LITERAL' -t TYPE # Fixed string (no regex)
rg PATTERN -l # List matching files only
rg PATTERN -C 3 # With context lines
fd -e EXT [PATH] # Find by extension
fd PATTERN [PATH] # Find by name regex
fd -e py | xargs rg 'pattern' # Pipe fd into rg
Performance
- Narrow scope first:
fd -e py src/ | xargs rg 'class.*Test' - Always use type filters:
rg PATTERN -t rust,sg -p 'PATTERN' -l rs - Exclude artifacts:
rg PATTERN -g '!node_modules' -g '!dist'