From the-bulwark
Runs 5 parallel Sonnet sub-agents from distinct analytical viewpoints, then synthesizes results into a research document. Use before implementation planning on complex topics.
How this skill is triggered — by the user, by Claude, or both
Slash command
/the-bulwark:bulwark-research <topic, filepath, or directory><topic, filepath, or directory>The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Structured multi-viewpoint research on a given topic. Spawns 5 Sonnet sub-agents in parallel, each analyzing from a distinct analytical viewpoint, then synthesizes into a single research document.
Structured multi-viewpoint research on a given topic. Spawns 5 Sonnet sub-agents in parallel, each analyzing from a distinct analytical viewpoint, then synthesizes into a single research document.
Load this skill when the user request matches ANY of these patterns:
| Trigger Pattern | Example User Request |
|---|---|
| Deep research | "Research agent teams", "Investigate loop detection" |
| Topic exploration | "What do we know about X?", "Explore approaches to Y" |
| Pre-planning research | "Before we build X, research the landscape" |
| Multi-viewpoint analysis | "Analyze X from multiple angles" |
DO NOT use for:
bulwark-brainstorm)code-review)issue-debugging)| Category | Files | Requirement | When to Load |
|---|---|---|---|
| Viewpoint definitions | references/viewpoint-*.md | REQUIRED | Always load all 5 before spawning agents |
| Output templates | templates/viewpoint-output.md | REQUIRED | Include in every agent prompt |
| Synthesis template | templates/synthesis-output.md | REQUIRED | Use when writing synthesis |
| Subagent prompting | subagent-prompting skill | REQUIRED | Load at Stage 1 for 4-part prompt template |
Fallback behavior:
/bulwark-research <topic-or-prompt> [--context <file>]
/bulwark-research --doc <path-to-document>
Arguments:
<topic-or-prompt> - Free-text topic description or problem statement--context <file> - Additional context file to provide to all agents--doc <path> - Use a document as the topic source instead of free textExamples:
/bulwark-research "agent teams and multi-agent orchestration" - Research a topic/bulwark-research --doc plans/proposal.md - Research from a document/bulwark-research "loop detection" --context docs/architecture.md - Research with contextEvery item below is mandatory. No deviations. No substitutions. No skipping. Skipping items violates SC1-SC3 (Skill Compliance Rules in Rules.md).
This skill uses a 4-stage pipeline with 5 parallel Sonnet sub-agents. You are the orchestrator, NOT the analyst. Follow every item in order. Do NOT return to the user until all applicable items are checked.
run_in_background: true (SA5)$PROJECT_DIR/logs/research/{topic-slug}/templates/synthesis-output.md to $PROJECT_DIR/artifacts/research/{topic-slug}/synthesis.md (artifact, not log)$PROJECT_DIR/logs/diagnostics/Stage 1: Pre-Flight
├── Read problem statement / document
├── AskUserQuestion if ambiguous (iterative, 2-3 questions per round)
├── Slugify topic for output directory
├── Create output directories: $PROJECT_DIR/logs/research/{topic-slug}/ and $PROJECT_DIR/artifacts/research/{topic-slug}/
├── Load subagent-prompting skill
├── Load all 5 references/viewpoint-*.md
├── Load templates/viewpoint-output.md
└── Token budget check (warn if >30% consumed)
AskUserQuestion Protocol (Pre-Spawn):
If the problem statement is ambiguous, under-specified, or could benefit from scope boundaries:
pre_flight_interview: skipped (problem statement sufficient)Stage 2: Viewpoint Analysis
├── Construct 5 prompts using 4-part template (GOAL/CONSTRAINTS/CONTEXT/OUTPUT)
├── Each prompt includes:
│ ├── Viewpoint definition from references/viewpoint-{name}.md
│ ├── Output template from templates/viewpoint-output.md
│ ├── Topic description + any user-provided context
│ └── Output path: $PROJECT_DIR/logs/research/{topic-slug}/{NN}-{viewpoint-slug}.md
├── Spawn all 5 agents in parallel via Task tool
│ ├── subagent_type: general-purpose
│ ├── model: sonnet
│ └── All 5 in a single message (parallel)
└── Token budget check after all 5 complete (checkpoint if >55%)
CRITICAL: Spawn all 5 agents in a single message with 5 Task tool calls. Do NOT spawn sequentially.
Stage 3: Synthesis
├── Read ALL 5 agent output files (MANDATORY — do not skip any)
├── If any output is missing or empty → re-spawn that agent once (max 1 retry)
├── If retry fails → document gap in synthesis under "Incomplete Coverage"
├── Load templates/synthesis-output.md
├── Write synthesis to $PROJECT_DIR/artifacts/research/{topic-slug}/synthesis.md
├── AskUserQuestion for user on open questions (iterative, 2-3 per round)
├── Critical Evaluation Gate (see below)
└── Token budget check (must be <65% after synthesis)
Enforcement: Do NOT begin writing synthesis until ALL available agent outputs have been read. The orchestrator must reference every agent's output at least once in the synthesis.
After each AskUserQuestion round, do NOT blindly incorporate user responses. Instead:
Step 1 — Classify each user response:
| Classification | Definition | Action |
|---|---|---|
| Factual | Known, verifiable information (e.g., "We use PostgreSQL") | Incorporate directly into synthesis |
| Opinion | Preference or priority (e.g., "I'd prefer approach A") | Incorporate directly with attribution: "User preference: ..." |
| Speculative | Unvalidated claim or proposed solution (e.g., "I think library X can do this", "What if we used approach Y?") | Do NOT incorporate. Trigger Step 2. |
Step 2 — For Speculative responses, present to user:
"Your suggestion about [X] is unvalidated. I recommend a targeted follow-up research phase with 2 focused agents (Direct Investigation + Contrarian) to verify feasibility and surface risks before incorporating this into the synthesis.
This will spawn 2 Sonnet agents and consume additional token budget.
[Run follow-up research / Incorporate as-is with LOW confidence caveat]"
Step 3 — If follow-up research approved:
$PROJECT_DIR/logs/research/{topic-slug}/followup-{NN}-direct-investigation.md and followup-{NN}-contrarian.md[Follow-up: validated] or [Follow-up: refuted] or [Follow-up: mixed — see details]Step 4 — If user declines follow-up:
Incorporate the user's suggestion into synthesis with an explicit caveat:
[Unvalidated — user suggestion, not research-backed]: {suggestion}
Repeat: After updating synthesis, ask if user has additional questions or input. Apply the same classification gate to each round. There is no limit on follow-up rounds, but each round with Speculative input that triggers research consumes ~10-15% token budget — warn user if approaching 60%.
Stage 4: Diagnostics
├── Write diagnostic YAML to $PROJECT_DIR/logs/diagnostics/bulwark-research-{YYYYMMDD-HHMMSS}.yaml
└── Verify completion checklist
Each viewpoint is a distinct analytical lens. All 5 run in parallel — they do not see each other's output.
Core Question: What is this? How does it work? State of the art?
Focus Areas:
Reference: references/viewpoint-direct-investigation.md
Core Question: How do teams use this in production? What works?
Focus Areas:
Reference: references/viewpoint-practitioner.md
Core Question: What failure modes do most people overlook?
Focus Areas:
Reference: references/viewpoint-contrarian.md
Core Question: What core problem does this solve? Minimal viable version?
Focus Areas:
Reference: references/viewpoint-first-principles.md
Core Question: What similar patterns exist? Lessons from predecessors?
Focus Areas:
Reference: references/viewpoint-prior-art.md
| Checkpoint | Threshold | Action |
|---|---|---|
| After constructing all prompts | >30% consumed | Warn user: "5 agents will consume significant context" |
| After reading 3 of 5 outputs | Running tally | If approaching 55%, checkpoint with user |
| After synthesis | Must be <65% | Leave room for session closing |
| Synthesis complete at >65% | Immediate | Create handoff, do not start additional work |
If token budget is insufficient to complete all 5 agents + synthesis, inform the user and suggest splitting (e.g., "3 agents this session, 2 + synthesis next session").
| Scenario | Action |
|---|---|
| Agent returns empty output | Re-spawn once. If still empty, document gap in synthesis. |
| Agent returns truncated output | Accept as-is, note in diagnostics. |
| Agent fails to spawn | Re-spawn once. If still fails, reduce to 4 agents, document. |
| Token budget exceeded mid-session | Stop spawning, synthesize from available outputs, note incomplete. |
| User-provided document unreadable | AskUserQuestion for alternative source. |
MANDATORY: You MUST write diagnostic output after every invocation. This is Stage 4 and cannot be skipped.
Write to: $PROJECT_DIR/logs/diagnostics/bulwark-research-{YYYYMMDD-HHMMSS}.yaml
Template: Use templates/diagnostic-output.yaml for the schema. Fill in actual values from the session.
Provides a checklist for code reviews covering functionality, security, performance, maintainability, tests, and quality. Use for pull requests, audits, team standards, and developer training.
npx claudepluginhub qball-inc/plugins-market --plugin the-bulwark