From bmad-skills
Researches software-engineering questions with a STORM-style pipeline: auto-selects mode, spawns expert lenses, maps contradictions, synthesizes HTML briefing and ADR, then adversarially verifies claims against primary sources.
How this skill is triggered — by the user, by Claude, or both
Slash command
/bmad-skills:software-research [software question / X vs Y / ADR topic / spike / migration][software question / X vs Y / ADR topic / spike / migration]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Turns one software-engineering question into a verified, multi-perspective
assets/adr-template.mdassets/briefing-template.htmlassets/widgets/README.mdassets/widgets/annotated-diagram.htmlassets/widgets/before-after-architecture.htmlassets/widgets/c4-container-view.htmlassets/widgets/callout.htmlassets/widgets/capacity-scaling-curve.htmlassets/widgets/code-compare.htmlassets/widgets/comparison-matrix.htmlassets/widgets/cost-projection-lines.htmlassets/widgets/cost-tco-breakdown.htmlassets/widgets/cost-treemap.htmlassets/widgets/decision-tree.htmlassets/widgets/deployment-pipeline.htmlassets/widgets/diff-block.htmlassets/widgets/donut-gauge.htmlassets/widgets/error-budget-gauge.htmlassets/widgets/escalation-ladder.htmlassets/widgets/evidence-confidence.htmlTurns one software-engineering question into a verified, multi-perspective deliverable. It picks a research mode, simulates that mode's expert lenses, maps where they contradict, synthesizes an HTML briefing plus a Markdown or ADR record, then adversarially verifies every claim against its primary source — version-aware — before delivering. Run the full pipeline; do not shortcut a phase.
Self-contained. Built-in tools only (Agent general-purpose, Write, web
search/fetch inside agents) plus the files in this folder. Drop the folder into
any .claude/skills/ directory and it works.
$ARGUMENTS has the question, use it; else ask what to research.data/modes.csv. Match the question against each row's signals
(semicolon-delimited cues). Pick the best-matching mode_id.
deep-research (the fallback).tech-lead.topic-slug for filenames.Mode: <mode_id> — <one-line why this mode>
Question: <your one-line interpretation>
Reader: <developer | tech-lead | architect>
Lenses: <the N lens names about to run in parallel>
Outputs: <primary + secondary format, e.g. HTML briefing + MD>
Then: adversarial verification against primary sources.
Proceed? (or correct the mode / scope)
This is the one place to catch a wrong mode or misread scope cheaply — before
spending ~9-12 agents. Once confirmed, run Phases 1–3 autonomously (no more
pauses until Gate 2).Open references/modes/{mode_id}.md — it contains the exact lens prompts for
this mode. Spawn that mode's lenses as general-purpose agents in a single
message so they run concurrently. Give every agent the SAME question frame plus:
references/source-hierarchy.md (paste the tier list + all 7 rules — including
Rule 7: load-bearing claims must resolve to Tier 1–3, never a blog/Q&A),As each lens returns, append its brief to a working scratch file
software-research-reports/{topic-slug}.work.md (create it now) under a
## Lens: <name> heading. Writing briefs as they land means a crash mid-run
loses nothing — the run is resumable from what's already on disk. Set the
run-state block at the top of that file: stepsCompleted: [0, 1].
When all return, post a 2-3 line note in chat: convergence + sharpest disagreement. Keep raw briefs out of chat.
❌ Common failures here:
From the briefs only, determine:
Append this map to the scratch file under ## Contradiction map and bump the
run-state to stepsCompleted: [0, 1, 2]. The map is the raw material for the
synthesis; not a separate deliverable.
Read the mode's primary_output and secondary_output from data/modes.csv.
Before writing any output, load references/report-structure.md. It defines the
concreteness contract (specific > generic: exact versions, real commands/config/
code, real numbers, tied to THE READER's stack — and a ban list of filler phrases) and
the 12-section deep spine. Detail is not optional padding: a report earns its length
by being practical and about the reader's situation, not a survey of the topic.
html: clone assets/briefing-template.html; do not rebuild the CSS.
Fill every {{TOKEN}}. It has two layers: (a) the fast-scan layer up top —
verdict scoreboard, key findings, and (for option-comparison modes) the Side-by-Side
table — so the answer lands in five seconds; then (b) the 12-section deep body
(sections 06–16) that carries the full spine. Fill the deep sections per the
concreteness contract; render comparisons/numbers/flows with widgets, not prose.md: the full 12-section spine from references/report-structure.md —
introduction/methodology, landscape, implementation how-to, stack, integration,
performance, security, recommendation, roadmap, risks, methodology, and a closing
References appendix. This is the detailed report; make each section concrete. In the
References appendix every source is a clickable [title — version/date](url) Markdown
link (never a bare URL in a table cell — those don't reliably render as links).adr: clone assets/adr-template.md; fill the MADR sections (Context,
Decision Drivers, Considered Options, Decision Outcome, Consequences, Pros/Cons
per option, More Information) and the closing References section. Document
rejected options + why. The ADR stays a lean decision record — no 12-section spine —
but the concreteness contract still applies (name versions, cite specifics).Write for a busy engineer, not a journal. Short sentences, plain words, lead with the answer. Define any unavoidable term inline. If a reader needs a dictionary to parse a finding, rewrite it.
Add a visualization when it earns its place. assets/widgets/ holds ~45 drop-in,
zero-dependency visual blocks (inline SVG / CSS / a little vanilla JS). Read
assets/widgets/README.md — it has the full catalog grouped by job (compare &
decide, numbers & evidence, explain how it works, sequence over time, org &
management, inline accents) plus a numbered "which visual to use" decision order.
Pick by what the content is, not by novelty; copy the file, replace its FILL:
markers. A few high-use anchors: comparison-matrix (options × criteria),
weighted-decision-matrix (ADR scoring), metric-bars (benchmark/cost/size),
evidence-confidence (per-finding trust), callout (gotchas/warnings),
verdict-card (the recommendation), and slider-metric (the one interactive
"drag it" widget — at most one per report).
Default to the zero-dependency widgets: they render instantly, work offline, print,
and can't be blanked by a CDN outage or a runtime handshake failing. For any
tree/graph/diagram the widgets use hand-placed coordinates — don't auto-layout.
Reach for a library only for what bespoke SVG is bad at: a standard flow/sequence/ER
diagram easier written as text → Mermaid (pinned, securityLevel:'strict'); real
quantitative data at scale → Chart.js; code snippets that need syntax coloring →
code-compare (it loads highlight.js pinned+SRI — include that block once per report,
set class="language-…" per snippet). Then pin the version + prefer SRI/inline over
a bare CDN <script>. If you let the model generate arbitrary widget JS rather than
filling a template, sandbox it (iframe sandbox="allow-scripts" without
allow-same-origin, CSP blocking connect-src) — generated markup is untrusted code
in the report's origin; SRI does not help there. Full rules in assets/widgets/README.md.
Write outputs to software-research-reports/ (create if needed):
{topic-slug}-briefing.html{topic-slug}.md; ADR → ADR-{topic-slug}.md❌ Common failures here:
Gate 2 — confirm findings before verifying (one pause). With the draft synthesized, post a tight list in chat: the recommendation, the 3–5 key findings, and which claims are load-bearing (the recommendation rests on them). Ask the user to confirm the finding set / flag anything to scrutinize harder. This is the last cheap moment to redirect before spending verifier agents. Then run 4a–4c.
verify_depth comes from data/modes.csv (full = every citation; load-bearing
= the claims the recommendation rests on — still mandatory).
4a. Self-review (inline). Score each finding 1-10 for reliability (by source tier, not confidence) and justify. Identify the weakest link + what would verify it. Bias check: which lens dominated, what got underweighted. Name the missing 6th lens. Assign an honest overall grade.
4b. Verify citations (parallel agents). Spawn general-purpose agents in one
message, one per citation cluster (~4-6). Each prompt: independently verify the
claim against its PRIMARY source, applying all 7 rules in
references/source-hierarchy.md (version-bind; check current-version validity;
climb to primary; date-stamp; security via OSV/GHSA + version range; benchmarks
need reproducible methodology; load-bearing claims must resolve to Tier 1–3).
Return VERDICT = CONFIRMED / PARTIALLY CONFIRMED (list corrections) / UNVERIFIED /
FALSE / VERSION-STALE / UNVERIFIED-LOWTIER (a load-bearing claim backed only by
Tier 5–6 — no primary found), the corrected one-line citation with version+date,
and 2-4 specifics with the primary URL. Under 280 words.
4c. Apply corrections. Fix wrong figures/titles/dates/versions. Downgrade
confidence where evidence is thin; demote contested/preprint/version-stale AND
UNVERIFIED-LOWTIER claims into the contested sidebar (a load-bearing claim with no
primary backing must not stand as a finding). Fill the verification banner
(N checked · X corrected · Y demoted · Z version-stale) and per-citation status
tags. Populate the claim-safety guide (assert / caveat / avoid), the version-currency
note, and confirm every source appears in the References section. Bump the run-state
to stepsCompleted: [0, 1, 2, 3, 4].
❌ Common failures here:
UNVERIFIED-LOWTIER).software-research-reports/.open <path>, Linux
xdg-open <path>, Windows start "" <path>. If unclear, print the path.references/report-structure.md.{topic-slug}.work.md holds lens briefs + the contradiction
map for resumability; it is a working artifact, not a deliverable. Leave it in
place (a resumed or re-run pass can reuse it); the deliverables are the HTML/MD/ADR.npx claudepluginhub bmad-labs/skills --plugin bmad-skillsProduces structured technology trade-off analysis documents with scored comparison matrices for architecture evaluation, build-vs-buy, migration, and consolidation decisions.
Conducts deep research with cross-verification and source tiering for investigating technologies, comparing tools, fact-checking claims, and evaluating architectures.
Provides structured framework with specialized agents for research, analysis, architecture decisions, validation, synthesis, reviews, investigations, and reporting. For complex problems needing systematic exploration and persistent artifacts.