Task-specific local codebase-understanding workflow for OpenCode, MCP, Pi, omp, and Codex. Use compact context for unfamiliar repository orientation, direct definition and graph tools for known targets.
Installs into .claude/skills of the current project.
Are you the author of Codebase Search?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/helweg-codebase-search)
---
name: codebase-search
description: Task-specific local codebase-understanding workflow for OpenCode, MCP, Pi, omp, and Codex. Use compact context for unfamiliar repository orientation, direct definition and graph tools for known targets.
---
# Codebase Search Skill
Use this skill when you need local repository knowledge before web lookup.
## Core workflow
1. Run `index_status` when index readiness or freshness is unknown.
2. When repository orientation is needed (layout, relevant symbols, or cross-file intent), use one compact `codebase_context(query, tokenBudget: 600, limit: 5)` first pass and inspect returned evidence before broad reads or searches. Do not call it mechanically before every task or tool.
3. For a known definition, use `implementation_lookup(query)` directly. For callers or callees, use `call_graph(name, direction)` directly; for relationships between identified endpoints, use `call_graph_path(from, to)` directly.
4. For a change with a known or suspected target symbol, optionally use `codebase_edit_context` for bounded target source plus direct callers and callees.
5. Use `codebase_peek(query, ...)` when only semantic locations are needed, and `codebase_search(query, ...)` when matching source content is needed. Neither requires another context call when the task is already scoped.
6. Read known paths directly and use `grep` for exact identifiers or exhaustive literal matches. Use `find_similar(code)` for analogous implementations and duplicates.
Avoid repeating broad reads or retrieval when existing evidence already answers the question. If results are weak, check readiness, compatibility, and scope with `index_status`; run `index_codebase` only when the index is missing, stale, or incompatible.
## Tool Priority
- `codebase_context` for compact, unfamiliar-repository orientation; explicit `symbol` and `from` + `to` routing remains supported.
- `implementation_lookup` for known definitions.
- `call_graph` and `call_graph_path` for relationships once symbols or endpoints are identified.
- `codebase_edit_context` as an optional bounded pre-edit step.
- `codebase_peek` for metadata-only semantic locations.
- `codebase_search` for matching implementation content.
- `find_similar` for pattern matching and duplication.
- `index_codebase` (force/estimate/dryRun/verbose) for first-time or stale indexes.
- `index_status`, `index_health_check`, `index_metrics`, `index_logs` for operational checks.
## Suggested Commands
- Unfamiliar subsystem: `codebase_context("payment processing flow", tokenBudget: 600, limit: 5)`.
- Known definition: `implementation_lookup("validate")`.
- Callers or callees: `call_graph("chargeCard", "callees")`.
- Known endpoints: `call_graph_path("submitPayment", "chargeCard")`.
- Change target: `codebase_edit_context(query: "reject expired tokens", symbol: "validateToken")`.
- Matching source after scope is known: `codebase_search("payment retry guards")`.
- Analogous code: `find_similar("function validate(data)")`.
## Additional Notes
- Use `grep` for exact identifiers and tiny, deterministic lookups.
- Use `websearch` only when local tools return no results and docs are likely missing.
- Choose the next tool from the evidence needed, not a mandatory context → peek → search chain.