research
A research question is rarely one direction. Split it into directions — independent sub-topics, each researched by its own subagent — then synthesize them into one summary. Each subagent's job stays small and coherent (separation of concerns); the cross-direction synthesis stays in one place.
Pipeline
- Grill. Run
/skill:grillingto align the research question, scope, audience, and success criteria with the user. Nothing is researched until these are settled. - Survey directions. Shallowly survey primary sources to enumerate candidate directions — the independent sub-topics worth deep research. Present the list to the user for confirmation (add / drop / merge).
- Lay out files. Decide the topic-slug, the numbering, and the output directory (default
~/research/<topic-slug>/). Each direction getsNN-slug.md; the synthesis gets00-summary.md. - Dispatch direction subagents. Before the first dispatch, load the
pi-subagentsskill once (read its SKILL.md andreferences/execution-controls.md) — it holds the verifiedruns.run(key, { agent, task })/runs.allsignatures and the workflowScript pitfalls (task text never inside nested template literals; write the workflow to a script file and passworkflowScriptPath). Do not write dispatch code from memory. Then: one subagent per direction, in parallel. Each writes its ownNN-slug.md— What + How + key findings only, every claim cited to its source. Direction subagents do not write So What or Now What: those layers need the commissioning context only the main session holds, and a subagent given just its sub-topic would hallucinate them. - Synthesize. Dispatch one synthesize subagent to read every
NN-slug.mdand write00-summary.md— the four-layer report, reconciling contradictions across directions and opening with a direction index.
Primary sources
Every claim traces back to a primary source — official docs, source code, specs, first-party APIs — not a secondary write-up of them. Follow each claim back to the source that owns it.
The synthesize subagent
The synthesizer is not the main session: it cannot spawn subagents, cannot grill, and does not decide directions. It only synthesizes. Launch it inheriting the main session's context (fork) so its So What / Now What layers are grounded in the real aligned context, and open its task with a strong role prompt: "You are the synthesize subagent, not the main session. You may not spawn subagents. Your only job is to synthesize the direction reports into the four-layer 00-summary.md."