Explore the codebase to answer "how does X work?" questions. Produce architectural explanations at the level of a senior engineer onboarding onto a subsystem, enough to build a working mental model, not so much that it reads like annotated source code.
Dispatch contract. Resolve every configured role through provider-dispatch.md. Values are provider-qualified descriptors; the parent chooses native versus external execution. Every lane runs in read-only mode. Explorers use the how explorer descriptor (default grok:grok-4.7@xhigh), and every explainer uses the how explainer descriptor (default claude:opus@max). A native lane uses the parent subagent primitive; an external lane uses the launcher directly. On Codex, resolve remaining Claude tool names via codex-tools.md.
1. Assess complexity
If the scope is ambiguous, state your interpretation and explore. The user can redirect.
- Simple (a single module, a small utility, a narrow question such as "how does function X work"): no explorers. Dispatch one explainer that explores and explains in one pass, built from
references/explainer-prompt.mdwithout the explorer-findings section. Go to step 4. - Complex (a subsystem spanning multiple files or services, a cross-cutting feature, a full architectural overview): go to step 2.
When in doubt, take the simple path.
2. Explore (complex only)
Decompose the question into 2 to 4 angles, each a distinct slice of the subsystem. Start all explorers in one fan-out phase, each with references/explorer-prompt.md and its angle filled in.
3. Synthesize (complex only)
Once all explorers have returned, dispatch one explainer with references/explainer-prompt.md and every explorer's findings filled in.
4. Present
Present the explainer's output. Light edits for clarity or context from the conversation are fine. Do not substantially rewrite it.
Output format
The explanation uses the sections defined in references/explainer-prompt.md, dropping any that do not apply: Overview, Key Concepts, How It Works, Where Things Live, Gotchas.