These are NOT suggestions — they are requirements.
- ALWAYS use LSP (
goToDefinition,findReferences,goToImplementation,hover,incomingCalls/outgoingCalls,documentSymbol,workspaceSymbol) for navigating code. NEVER usegrepfor finding definitions, references, implementations, or callers — LSP is precise,grepis a guess.- To find a symbol's definition when you have a call site: use
goToDefinition. - To find a symbol's definition without a call site: use
workspaceSymbol. If it returns no results, fall back togrep. - To understand a file's structure: use
documentSymbol. - To find interface implementations: use
goToImplementation. - To check types or godoc: use
hover.
- To find a symbol's definition when you have a call site: use
- ALWAYS use CodeAlive MCP (
codealive_codebase_search,codealive_codebase_consultant) for semantic/intent-based code search. Callcodealive_get_data_sourcesfirst. NEVER substitute withgrepwhen the query is about intent or behavior. - Only fall back to
grep/globfor simple literal pattern matching (specific strings, config keys, error messages). - Only use
tasksubagent (explore/general) for broad codebase exploration or multi-step investigation when the above tools are insufficient.
These are NOT suggestions — they are requirements.
- ALWAYS use LSP
hoverto look up type signatures and godoc for any symbol (including external dependencies). - Use Context7 MCP (
context7_resolve-library-id+context7_query-docs) for library documentation, guides, or examples. - Use codesearch (Exa) for finding code examples, API references, or documentation for libraries and tools.
- Use websearch for current information, recent changes, or topics beyond training data.
- Use webfetch to retrieve content from a specific URL (docs page, issue, PR).
- NEVER guess at APIs — look them up.
ALWAYS verify after making changes:
- ALWAYS run
task build— verify it compiles. - ALWAYS run
task test— verify tests pass.