--- name: how description: "Use for runtime, ownership, layering, code-walkthrough, and placement questions." license: MIT metadata: author: jstack-maintainers source: michael-denyer/pstack-claude source-version: "0.9.30" source-commit: 45f768349a6d7d7e71509fee3f5bccfad54b3bad owner: software-factory risk: low capabilities: jstack,engineering-research --- # How On Codex, Cursor, or another non-Claude runtime, read the [runtime mapping](../poteto-mode/references/harness-tools.md), including its per-skill notes, before following this skill. 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. ## Step 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. One explainer explores and explains in a single pass. Go to Step 2b. - **Complex** (a subsystem spanning multiple files or services, a cross-cutting feature, a full architectural overview): spawn parallel explorers first, then hand off to the explainer. Go to Step 2a. When in doubt, take the simple path. ## Step 2a. Explore (complex questions only) Decompose the question into 2 to 4 exploration angles, each a distinct slice of the subsystem. Spawn all explorers in a single message: - `subagent_type`: `general-purpose` - `model`: your configured how-explorer model (default in [Models](#models)) - `readonly`: `true` Each explorer gets the prompt in `references/explorer-prompt.md` with its angle filled in. Then go to Step 3. ## Step 2b. Direct Explain (simple questions) Spawn one Task subagent that explores and explains in one pass: - `subagent_type`: `general-purpose` - `model`: your configured how-explainer model (default in [Models](#models)) - `readonly`: `true` Build its prompt from `references/explainer-prompt.md` without the explorer-findings section. Go to Step 4. ## Step 3. Synthesize (complex questions only) Once all explorers have returned, spawn one Task subagent to synthesize their findings into one explanation: - `subagent_type`: `general-purpose` - `model`: your configured how-explainer model (default in [Models](#models)) - `readonly`: `true` Build its prompt from `references/explainer-prompt.md` with every explorer's findings filled in. ## Step 4. Present Present the explainer's output to the user. 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. ## Models Role defaults originate from the upstream `plugins/pstack/models.json`. Refresh them through `scripts/vendor_jstack.py` after reviewing the upstream change. A matching role line in `~/.claude/jstack-models.md` overrides each at runtime; see `/setup-jstack`. - how explorer: `claude-opus-5` - how explainer: `claude-opus-5`