# Subagent Driven Analysis

> Use when executing a pre-registered analysis plan with mostly independent steps in the current session

- Skill: `undermybelt/subagent-driven-analysis` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add undermybelt/subagent-driven-analysis`
- Raw SKILL.md: https://api.skillmd.com/api/skills/undermybelt/subagent-driven-analysis/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: undermybelt (https://skillmd.com/u/undermybelt)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/undermybelt/subagent-driven-analysis

---


# Subagent-Driven Analysis

Execute a pre-registered analysis plan by dispatching a fresh subagent per analysis step, with two-stage review after each: protocol-compliance review first (did it run exactly what was pre-registered, nothing more), then statistical-rigor review (assumptions, leakage, correctness, reproducibility).

**Why subagents:** You delegate steps to specialized agents with isolated context. By precisely crafting their instructions, you keep them focused and prevent them from improvising analyses you didn't pre-register. They never inherit your session's history — you construct exactly what they need. This also preserves your own context for coordination.

**Core principle:** Fresh subagent per step + two-stage review (protocol then rigor) = trustworthy, reproducible results.

**Continuous execution:** Do not pause to check in between steps. Execute the whole plan. The only reasons to stop: a BLOCKED status you cannot resolve, an anomaly that needs `science-superpowers:investigating-anomalous-results`, a genuine ambiguity, or all steps complete.

## Prerequisite

The analysis plan MUST be pre-registered and frozen (`science-superpowers:preregistering-analysis`) before any step runs. If it is not frozen, stop and pre-register first. Executing before freezing turns the whole thing exploratory.

## When to Use

```dot
digraph when_to_use {
    "Pre-registered plan?" [shape=diamond];
    "Steps mostly independent?" [shape=diamond];
    "Stay in this session?" [shape=diamond];
    "subagent-driven-analysis" [shape=box];
    "executing-analysis" [shape=box];
    "Pre-register first" [shape=box];

    "Pre-registered plan?" -> "Steps mostly independent?" [label="yes"];
    "Pre-registered plan?" -> "Pre-register first" [label="no"];
    "Steps mostly independent?" -> "Stay in this session?" [label="yes"];
    "Stay in this session?" -> "subagent-driven-analysis" [label="yes"];
    "Stay in this session?" -> "executing-analysis" [label="no - parallel session"];
}
```

## The Process

```dot
digraph process {
    rankdir=TB;

    "Set up reproducible workspace" [shape=box];
    "Read plan + frozen prereg, extract all steps, create TodoWrite" [shape=box];
    "Dispatch analyst subagent (./analyst-prompt.md)" [shape=box];
    "Analyst asks questions?" [shape=diamond];
    "Answer, provide context" [shape=box];
    "Analyst runs step, validates, commits, self-reviews" [shape=box];
    "Dispatch protocol-compliance reviewer (./protocol-compliance-reviewer-prompt.md)" [shape=box];
    "Ran exactly the pre-registered analysis?" [shape=diamond];
    "Analyst fixes deviations" [shape=box];
    "Dispatch rigor reviewer (./rigor-reviewer-prompt.md)" [shape=box];
    "Rigor reviewer approves?" [shape=diamond];
    "Analyst fixes rigor issues" [shape=box];
    "Mark step complete" [shape=box];
    "More steps?" [shape=diamond];
    "Use requesting-red-team-review on whole result" [shape=box style=filled fillcolor=lightgreen];
    "Use reporting-and-archiving-findings" [shape=box style=filled fillcolor=lightgreen];

    "Set up reproducible workspace" -> "Read plan + frozen prereg, extract all steps, create TodoWrite";
    "Read plan + frozen prereg, extract all steps, create TodoWrite" -> "Dispatch analyst subagent (./analyst-prompt.md)";
    "Dispatch analyst subagent (./analyst-prompt.md)" -> "Analyst asks questions?";
    "Analyst asks questions?" -> "Answer, provide context" [label="yes"];
    "Answer, provide context" -> "Dispatch analyst subagent (./analyst-prompt.md)";
    "Analyst asks questions?" -> "Analyst runs step, validates, commits, self-reviews" [label="no"];
    "Analyst runs step, validates, commits, self-reviews" -> "Dispatch protocol-compliance reviewer (./protocol-compliance-reviewer-prompt.md)";
    "Dispatch protocol-compliance reviewer (./protocol-compliance-reviewer-prompt.md)" -> "Ran exactly the pre-registered analysis?";
    "Ran exactly the pre-registered analysis?" -> "Analyst fixes deviations" [label="no"];
    "Analyst fixes deviations" -> "Dispatch protocol-compliance reviewer (./protocol-compliance-reviewer-prompt.md)" [label="re-review"];
    "Ran exactly the pre-registered analysis?" -> "Dispatch rigor reviewer (./rigor-reviewer-prompt.md)" [label="yes"];
    "Dispatch rigor reviewer (./rigor-reviewer-prompt.md)" -> "Rigor reviewer approves?";
    "Rigor reviewer approves?" -> "Analyst fixes rigor issues" [label="no"];
    "Analyst fixes rigor issues" -> "Dispatch rigor reviewer (./rigor-reviewer-prompt.md)" [label="re-review"];
    "Rigor reviewer approves?" -> "Mark step complete" [label="yes"];
    "Mark step complete" -> "More steps?";
    "More steps?" -> "Dispatch analyst subagent (./analyst-prompt.md)" [label="yes"];
    "More steps?" -> "Use requesting-red-team-review on whole result" [label="no"];
    "Use requesting-red-team-review on whole result" -> "Use reporting-and-archiving-findings";
}
```

## Model Selection

Use the least powerful model that can handle each role.

- **Mechanical steps** (load data, apply a fixed transform, produce a planned figure): fast, cheap model.
- **Integration/judgment steps** (fitting the primary model, handling missingness per plan): standard model.
- **Rigor review and anomaly judgment**: most capable model.

## Handling Analyst Status

**DONE:** Proceed to protocol-compliance review.

**DONE_WITH_CONCERNS:** Read the concerns. If about correctness or an unexpected data issue, address before review (may need `science-superpowers:investigating-anomalous-results`). If an observation ("this file is getting large"), note and proceed.

**NEEDS_CONTEXT:** Provide the missing information and re-dispatch.

**BLOCKED:** Assess. Context problem → provide more and re-dispatch. Needs more reasoning → more capable model. Step too large → split. Plan itself is wrong → escalate to your human partner. A wrong plan may require re-opening the pre-registration, which must be documented as a deviation.

**Never** silently let a subagent change the registered analysis to make a step "work." A deviation is documented and renders that analysis exploratory.

## Prompt Templates

- `./analyst-prompt.md` — dispatch the analyst subagent
- `./protocol-compliance-reviewer-prompt.md` — did it match the pre-registration?
- `./rigor-reviewer-prompt.md` — is the statistics correct, reproducible, leak-free?

## Red Flags

**Never:**
- Execute before the pre-registration is frozen
- Skip either review (protocol OR rigor)
- Let a subagent add an unregistered analysis and report it as confirmatory
- Run rigor review before protocol compliance is green (wrong order)
- Accept a silently dropped outlier or changed cutoff (route to anomaly investigation instead)
- Dispatch multiple analyst subagents on the same artifacts in parallel (conflicts)
- Make the subagent read the whole plan (provide the step's full text + the relevant pre-registration excerpt)

**If a reviewer finds issues:** the same analyst subagent fixes them, then the reviewer reviews again. Repeat until approved.

## Integration

**Required workflow skills:**
- **science-superpowers:setting-up-reproducible-analysis** — isolated, seeded, reproducible workspace (run first)
- **science-superpowers:preregistering-analysis** — must be frozen before execution
- **science-superpowers:investigating-anomalous-results** — when a step's output is surprising or impossible
- **science-superpowers:requesting-red-team-review** — adversarial review of the whole result
- **science-superpowers:reporting-and-archiving-findings** — after all steps complete

**Subagents should use:**
- **science-superpowers:verifying-results-before-claiming** — before any subagent reports a step as done

**Alternative:**
- **science-superpowers:executing-analysis** — inline execution for harnesses without subagents

