--- name: how description: "Use for \"how does X work\", code walkthroughs before changing something, and placement / ownership / layering questions (\"where should this live\", \"which package owns this\", \"is this the right layer\"). Explains subsystem architecture, runtime flow, onboarding mental models. Use why for motivation." disable-model-invocation: true --- # How 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. Every spawn is a Task subagent with `agent: generalPurpose` and read-only posture carried in the brief. Explorers use an exact discovered explorer agent in `~/.omp/agent/config.yml` in the `task.agentModelOverrides` entries in `~/.omp/agent/config.yml` (default your fast code model), and every explainer uses an exact discovered explainer agent in `~/.omp/agent/config.yml` (default your strongest judgment model). Each discovered agent's frontmatter or `task.agentModelOverrides[]` selects its model; the item has no `model` field. An `auto` or `inherit-parent` entry means the parent chat model, so omit that role from the map. If the Task tool rejects a slug, use the default and say so. If it rejects the default, use the closest valid slug of the same family from its error message. Pick each subagent's reasoning level and fast or standard speed for the job, per the Subagents section of the **poteto-mode** skill. ## 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. Spawn one explainer in one `task` call with one item in `tasks[]` and the required shared `context` that explores and explains in one pass, built from `references/explainer-prompt.md` without 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. Spawn all explorers in a single message, each with `references/explorer-prompt.md` and its angle filled in. ## 3. Synthesize (complex only) Once all explorers have returned, spawn one explainer in one `task` call with one item in `tasks[]` and the required shared `context` 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.