Code Navigation — act101 Agent Skill
Traverse large repositories efficiently using act's query tools. Use when exploring unfamiliar code, mapping dependencies, understanding API surfaces, analyzing side effects before modifying functions, or following call chains across files. Avoids reading entire files by querying only the structure needed.
Code Navigation with act
Use act's query tools to traverse large repositories efficiently. Do NOT read entire files when you can query for specific information.
Rules
-
Start with repo-outline — Before exploring a codebase, run
repo_outlineto understand the file tree, languages, and structure. Use--symbolsfor files of interest. -
Use skeleton for file structure — When you need to understand a file's structure, use
skeletonto see declarations without bodies. Never read an entire file just to find function names. -
Use interface for API surfaces — When you need to understand how to use a class or module, use
interfaceto get signatures, types, and docstrings without implementation details. -
Follow the dependency graph — Use
graphto understand how files are connected. Start from the file you're interested in with--direction out(what it depends on) or--direction in(what depends on it). -
Use mutations for raw side-effect detection — Before modifying a function, use
mutationsto see the individual reads/writes of external state. -
Use effect_summary for a categorized effect picture — When you want the function's effects classified (reads, writes, raises, allocations, blocking calls, awaits) plus a purity verdict and an unresolved-call frontier, use
effect_summary. It is the higher-level view overmutations: reach foreffect_summaryto answer "what does this touch, and is it pure?" before a change; drop tomutationsfor the raw access list. -
Use control-flow for complex logic — When a function is hard to understand, use
control_flowto get a linearized view of its branching structure. -
Use data_flow to trace values through a function — The dual of
control_flow:data_flowreturns variable definition sites, use sites, def→use edges, and the locals that flow into the return. Reach for it to answer "where does this value come from / where does it go" within one function. -
Batch symbol retrieval — When you need symbols from multiple files, use
symbols_batch --filesinstead of making separatesymbolscalls. When you need specific implementations, usesymbols_batch --idswith stable IDs. -
Use stable symbol IDs — After finding a symbol, use its stable ID (format:
file::QualifiedName#kind) for subsequent operations. This avoids ambiguity and eliminates the need to specify--file. -
Use definition for cross-file navigation — When you find a reference to an unknown symbol, use
definitionto jump to its source. -
Analyze before modifying — Before making changes, run
effect_summary(ormutations) on affected functions andgraphon affected files to understand the blast radius.
Token-Saving Hints
repo_outlinecosts ~7 tokens/file (vs reading files: ~250 tokens/file)skeletoncosts ~15 tokens/declaration (vs reading full file)interfacecosts ~25 tokens/member (vs reading implementation)- Always use compact mode (default) — ranges are strings, not objects
- Use
--depthlimits ongraphandrepo_outlineto control output size - Filter
symbols_batchwith--kindsto get only what you need