npx skills add ...
npx skills add michael-denyer/pstack-claude --skill how
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.
npx skills add michael-denyer/pstack-claude --skill how
On Codex, read the platform mapping, including its per-skill notes, before following this skill.
On GitHub Copilot, read the platform mapping, 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.
Each spawn below names a role line in pstack-models.md and a default in Models. Set model to that line's value, or to the default if the sheet or the line is missing. Leave model unset when the value is auto or inherit-parent. If the Agent 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.
If the scope is ambiguous, state your interpretation and explore. The user can redirect.
When in doubt, take the simple path.
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-purposemodel: the how explorer line, default in Modelsreadonly: trueEach explorer gets the prompt in references/explorer-prompt.md with its angle filled in. Then go to Step 3.
Spawn one Agent subagent that explores and explains in one pass:
subagent_type: general-purposemodel: the how explainer line, default in Modelsreadonly: trueBuild its prompt from references/explainer-prompt.md without the explorer-findings section. Go to Step 4.
Once all explorers have returned, spawn one Agent subagent to synthesize their findings into one explanation:
subagent_type: general-purposemodel: the how explainer line, default in Modelsreadonly: trueBuild its prompt from references/explainer-prompt.md with every explorer's findings filled in.
Present the explainer's output to the user. Light edits for clarity or context from the conversation are fine. Do not substantially rewrite it.
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.
Role defaults, stamped from plugins/pstack/models.json (edit there, rerun tools/generate.mjs). A matching role line in the pstack-models.md override sheet overrides each at runtime; /setup-pstack writes it and lists its path per runtime.
opusopusA role value in the override sheet may name a reasoning effort after its model, as in opus @xhigh. Levels on Claude Code: low, medium, high, xhigh, max. Which ones apply depends on the model. A value without @ takes the sheet's default effort line, a level or session, and session when the sheet has no such line. session sets no effort, so the dispatch is the usual one. Strip the suffix before reading the model: inherit-parent or auto still omits model at every level, and a model name is passed as model. On Claude Code, a level picks the effort agent from the subagent_type you would otherwise use. pstack:poteto-agent becomes subagent_type: "pstack:poteto-agent-<level>". general-purpose, or no subagent_type, becomes subagent_type: "pstack:effort-<level>". The effort agents set only effort, so the model you pass still decides the model. On Codex, pass the level as spawn_agent's reasoning_effort and keep the usual instructions.