dist/pi/skills/searching-code/SKILL.md
Intelligent codebase search with AST-first local search and zoom-out mapping. Use when user asks "how does X work", "trace flow", "find all implementations", "understand codebase", "zoom out", "map this area", structural code-pattern search, or cross-file exploration in large repos. Try ast-grep before rg for code-shape queries; use WarpGrep for semantic flow.
npx skillsauth add alexei-led/claude-code-config searching-codeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Map code with verified file references. Do not read the whole repo because the user sounds curious. Curiosity is not a query plan.
ast-grep / sg for structural code patterns.rg for exact text, strings, comments, docs, logs, and config keys.fd for file and directory discovery.Agent with reviewer for compressed multi-file context when the search is
broad.grep / find only when modern tools are unavailable.CONTEXT.mdCONTEXT-MAP.md*/CONTEXT.mddocs/adr/*.mdast-grep run or ast-grep scan.rg.fd.Agent with reviewer to gather
compressed context. Keep the main loop in control.command -v ast-grep || command -v sg
ast-grep run --pattern 'console.log($$$)' --lang javascript .
ast-grep scan --inline-rules 'id: await-in-func
language: javascript
rule:
kind: function_declaration
has:
pattern: await $EXPR
stopBy: end
' .
rg -n 'login|authenticate|AuthService|Session|UserRepository'
fd 'auth|login|session|user'
Use sg in place of ast-grep if that is the installed binary.
Use when the user says "zoom out", "map this area", "go up a layer", or sounds lost in local details.
Return:
file:line references.For structural searches, include the ast-grep pattern or rule used.
## Code Map
### Scope
<what was mapped>
### Flow
1. `path:line` — fact
2. `path:line` — fact
### Modules
- `module/path` — responsibility and key files
### Search
- `<command or rule>` — why it was used
### Unknowns
- <gap and how to verify>
### Read Next
1. `path` — why
tools
Use when planning, executing, checkpointing, finishing, or inspecting lightweight spec-driven work. Runs one task at a time using `.spec/` markdown files and the bundled `specctl` helper. NOT for broad product discovery beyond a short requirement interview. NOT for generic implementation planning that does not read or write `.spec/` files.
development
Simple web development with HTML, CSS, JS, and HTMX. Use when working with .html, .css, or .htmx files, web templates, stylesheets, or vanilla JS scripts. NOT for React/Vue/Angular (use writing-typescript) or Node.js backends.
tools
Idiomatic TypeScript development. Use when writing TypeScript code, Node.js services, React apps, or TypeScript design advice. Emphasizes strict typing, boundary validation, composition, fast feedback, behavior tests, and project-configured tooling. NOT for Go, Python, Rust, plain HTML/CSS/JS, or server-rendered templates (use writing-web).
tools
Idiomatic shell development for POSIX sh, Bash, Zsh, Fish, hooks, CI shell steps, and scriptable CLI glue. Use when writing or changing `.sh`, `.bash`, `.zsh`, `.fish`, `.bats`, shell functions, shell pipelines, CI `run:` shell bodies, or command-runner recipes. Emphasizes portability, quoting, safe filesystem/process handling, non-TUI CLI tools, ShellCheck, shfmt, Bats, and ShellSpec. NOT for Python, Rust, TypeScript, Go, web code, or GitHub Actions workflow/job/permissions semantics; use operating-infra.