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
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, or command-runner recipes. Emphasizes portability, quoting, safe filesystem/process handling, non-TUI CLI tools, ShellCheck, shfmt, Bats, and ShellSpec. NOT for Python, TypeScript, Go, web code, or infrastructure operations.
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.
testing
Author, inspect, troubleshoot, and review infrastructure across IaC, Kubernetes, cloud resources, containers, CI/CD, and Linux hosts. Use when changing Terraform/OpenTofu, Kubernetes, Helm, Kustomize, Dockerfiles, GitHub Actions, AWS, GCP, Cloud Run, BigQuery, IAM, logs, instances, or service health. NOT for deploy/apply/rollback workflows (see deploying-infra). NOT for shell scripts or generic command pipelines (see writing-shell).
development
Configure safe git workflow hygiene: pre-commit/pre-push hooks, Gitleaks secret scanning, .gitignore rules, local git config, and guardrails. Use when setting up git hooks, gitleaks/git leaks, staged pre-commit checks, pre-push validation, core.hooksPath, .gitignore, or git config best practices. NOT for creating commits (use committing-code), cleaning branches/worktrees (use cleanup-git), or creating worktrees (use using-git-worktrees).