Skip to content

Reference: agents

Agents are named subagents spawned programmatically during a research session. They run as background Claude instances with defined inputs, outputs, and tool allowlists. The five listed here are core (non-pack); they ship with the template.

The pipeline is: orchestrator → dimension-analyst (fan-out) → falsification-analyst → report-synthesizer. The source-chunker is spawned on-demand by dimension-analysts that encounter oversized documents.

See dependencies for tool installation requirements.


Owns the end-to-end research session lifecycle.

Role: Phase-owning coordinator. Acquires the topic-level run lock, fans out dimension-analyst subagents (one per config-declared dimension, up to MAX_CONCURRENCY in parallel), runs the falsification gate in bounded slices via falsification-analyst, spawns report-synthesizer, and owns research-progress.md (the session checkpoint file). Supports three modes: full (complete session), update (refresh stale findings for the current goal version), and augment (add one or more new dimensions).

Spawned by: /start, /resume.

Inputs:

VariableDescription
GOAL_FILEPath to reports/<topic>/goal.json
TOPICHuman-readable topic title
TOPIC_SLUGMachine-safe topic identifier
REPORTS_DIRPath to reports/<topic>/
MODEfull | update | augment
DIMENSIONSpecific dimension name when MODE=augment
MAX_CONCURRENCYMax parallel dimension-analyst subagents
QUERY_BUDGETMax web queries per dimension
CLAIM_BUDGETMax findings per dimension

Outputs: research-progress.md, per-dimension finding sets written by subagents, final report from report-synthesizer.

Dependencies: scripts/run-lock.sh, scripts/reconcile-session.sh, scripts/falsify.sh. Model: sonnet.


Researches one declared dimension to saturation.

Role: Focused web researcher. Receives a single config-declared dimension and researches it exhaustively (dozens to hundreds of findings). Writes each finding as an individual MIF JSON file under REPORTS_DIR/findings/ using harness_models.emit.write() for schema-validated authoring. Hands oversized source documents (> 50 K tokens) to source-chunker. Never runs the falsification gate.

Spawned by: orchestrator (one instance per dimension).

Inputs:

VariableDescription
DIMENSIONThe single dimension this analyst owns
GOAL_FILEPath to the session goal JSON
REPORTS_DIRPath to reports/<topic>/
QUERY_BUDGETMax web queries
CLAIM_BUDGETMax findings to emit

Outputs:

FieldDescription
finding_filesList of paths written under REPORTS_DIR/findings/
oversized_sourcesSources handed off to source-chunker
unresolved_gapsCoverage gaps the analyst could not close

Dependencies: harness_models.emit.write(), scripts/wrap-source.sh, scripts/write-finding.sh. Model: sonnet.


Adversarially tests findings and writes ordinal verdicts.

Role: Single-pass adversarial reviewer. For each finding in scope, fetches web-only evidence to challenge the claim, then writes the verdict block through scripts/falsify.sh — the only authorised write path. Verdicts are ordinal: falsified | weakened | survived | inconclusive. One-round rule: one pass per finding, no retry loops. Remediation: falsified findings are quarantined, weakened findings are downgraded one evidence level, survived and inconclusive findings are annotated. Enforces budget limits (fail-loud, not silent truncation).

Spawned by: orchestrator (falsification gate phase), /falsify command.

Inputs: Findings to test (paths or scope selector), QUERY_BUDGET, CLAIM_BUDGET.

Outputs: Verdict rollup; updated extensions.harness.verification blocks written through scripts/falsify.sh.

Dependencies: scripts/falsify.sh. Model: opus.


Produces publishable outputs from the verified finding set.

Role: Synthesis and rendering agent. Operates on two orthogonal axes: channel (report — first-class MIF L3; blog — first-class MIF-exempt; book and others via optional packs) and genre (exec-summary, academic, engineering, etc., from the optional reports pack). Steps: load goal and surviving findings → resolve genre → synthesize typed Artifact (scripts/synthesize-artifact.sh) → render output per channel (scripts/render-artifact.sh) → for report channel, validate at MIF L3 (scripts/mif-project.sh) → reconcile the topic README (readme skill). Citation-integrity gate (scripts/check-citation-integrity.sh) runs before any output ships.

Spawned by: orchestrator (final phase of a session).

Inputs: GOAL_FILE, surviving finding paths, channel selector, optional genre.

Outputs: Rendered output file(s) at reports/<topic>/<slug>.md; updated reports/<topic>/README.md.

Dependencies: scripts/synthesize-artifact.sh, scripts/render-artifact.sh, scripts/mif-project.sh, scripts/check-citation-integrity.sh, schemas/artifact.schema.json. Model: opus.


Handles oversized source documents for dimension-analysts.

Role: Content-type-aware chunker for documents that exceed the dimension-analyst’s token budget (> 50 K tokens). Detects content type, selects a chunking strategy, and processes chunks sequentially — writing per-chunk findings back to REPORTS_DIR/findings/ through the same validated write path as a dimension-analyst.

Spawned by: dimension-analyst (on-demand when a source exceeds the token threshold).

Inputs:

VariableDescription
SOURCEPath or URL of the oversized document
DIMENSIONThe parent dimension this source belongs to
GOAL_FILEPath to the session goal JSON
REPORTS_DIRPath to reports/<topic>/

Outputs:

FieldDescription
finding_filesPaths of findings written from this source
source_metadataDetected content type and chunk count
processing_notesAny content that could not be chunked

Dependencies: scripts/write-finding.sh, scripts/wrap-source.sh. Model: haiku.