Help us improve
Share bugs, ideas, or general feedback.
From bmad-pro-skills
Distills any intent input (ideas, brain dumps, PRDs, RFCs, transcripts) into a validated SPEC kernel with five fields and companion files for BMad downstream workflows.
npx claudepluginhub bmad-code-org/bmad-method --plugin bmad-pro-skillsHow this skill is triggered — by the user, by Claude, or both
Slash command
/bmad-pro-skills:bmad-specThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Canonical transformer for the BMad spec-kernel ecosystem. Takes any intent input — vague idea, brain dump, PRD, GDD, RFC, brief, Slack thread, customer email, meeting transcript, mockups, mixed multi-source — and produces **SPEC.md** carrying the five-field kernel (Why, Capabilities, Constraints, Non-goals, Success signal) plus companion files for load-bearing content that does not fit or would...
Creates or updates SPEC.md documents from requirements, notes, or interview output, structuring into sections for goals, design, edge cases, security, testing, and success criteria. Use for feature specs.
Generates very quick, implementation-ready specs for small changes or features. Auto-activates when users say 'create a quick spec' or 'generate a quick tech spec'.
Authors structured NLSpec specifications using multi-AI research and consensus across Codex, Gemini, and Claude. Use when you need a structured specification from multi-AI research.
Share bugs, ideas, or general feedback.
Canonical transformer for the BMad spec-kernel ecosystem. Takes any intent input — vague idea, brain dump, PRD, GDD, RFC, brief, Slack thread, customer email, meeting transcript, mockups, mixed multi-source — and produces SPEC.md carrying the five-field kernel (Why, Capabilities, Constraints, Non-goals, Success signal) plus companion files for load-bearing content that does not fit or would bloat the kernel with expansive line-item detail. Together they are the machine contract every downstream BMad skill consumes.
Multiple skills may call to update the same spec over time.
assets/spec-template.md) resolve from the skill root.{skill-root} is this skill's install dir; {project-root} is the working dir.{workflow.<name>} resolves to fields in customize.toml.python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow. On failure, read {skill-root}/customize.toml directly.{workflow.activation_steps_prepend}. Treat {workflow.persistent_facts} as foundational context (file: entries are loaded).{project-root}/_bmad/core/config.yaml (and config.user.yaml if present), root level and bmm section. Resolve {user_name}, {communication_language}, {document_output_language}, {planning_artifacts}, {project_name}, {date}.{user_name} in {communication_language}, stay in that language, and mention that bmad-party-mode and bmad-advanced-elicitation are available for deeper exploration on any field.{workflow.activation_steps_append}.The spec is always a folder named {workflow.spec_output_path}/{workflow.run_folder_pattern}, resolving by default to {output_folder}/specs/spec-{slug}/.
{slug} describes the thing being specced, not the input shape:
prd-foo-bar-2026-05-23/): inherit (foo-bar).error_code: "missing_slug".{slug} lands at the existing spec folder and updates in place, preserving capability IDs.No input. Interactive: ask the user to share a file path, paste content, explain the idea in detail, or point to a source. Headless: respond with JSON containing error_code: "insufficient_intent".
Inside the spec folder:
<spec-folder>/
SPEC.md ← uppercase, the kernel
<companion-1>.md ← optional, content-typed (e.g. glossary.md)
<companion-2>.md
.decision-log.md ← canonical memory for this spec
Read the input and its ancillary linked materials. If there is no input, follow the no-input branch in Workspace (ask or block). If a prior SPEC.md exists at the target folder, read it too — the operation becomes an update. Preserve capability IDs; new capabilities get the next unused CAP-N; never reuse retired IDs. Otherwise this is a create.
When the input is structured and pre-sorted (a PRD with an addendum, a GDD, a brief produced by an upstream BMad skill), trust the authored separation: lift kernel-fitting content into SPEC.md, lift overflow into appropriately-named companions. When the input is mixed (a brain dump, a transcript, an RFC, a customer email), do the sorting yourself: walk each claim, apply the three-lens load-bearing test (Spec Law rule 7), and route to the kernel field or a companion.
Distill the input into the five-field kernel using {workflow.spec_template} as the skeleton. When input is rich, extract directly — no elicitation. When input is sparse, choose: express (best-effort distill, every gap becomes an open_questions[] entry) or guided (walk the five fields with the user one at a time). Headless defaults to express and logs the choice. Interactive asks.
Write lean from the first pass: every sentence must earn its place. Decoration costs tokens and dilutes downstream readers.
If the input is genuinely too thin to distill (e.g. "an app for hikers" with no surrounding context), stop and suggest bmad-prd (or sibling ceremony skill). This skill distills; it does not coach.
A claim is load-bearing if any consumer (downstream skill, implementing agent, verification pass) would change a decision without it.
When load-bearing content does not fit the five-field kernel, it lives in a companion. The kernel cites it; the companion holds it. Companions are part of the contract; every consumer reads companions: in SPEC.md frontmatter to discover them. Companions follow the same lean discipline as SPEC.md (Spec Law rule 8).
Spawn a companion when the content needs more than one kernel-shape line: multi-item catalogs (per-entity matrices like archetypes, drinks, modes, routes), tables, diagrams (always), editorial voice rules, long-form reference material the kernel cites by name (glossary, brownfield notes, project conventions). Single-line decision-benders stay in Constraints; intent+success pairs stay in Capabilities. If a kernel field is starting to bullet into sub-bullets, the content has outgrown the kernel and wants a companion.
Companions are either:
glossary.md, patron-archetypes.md). bmad-spec owns them and may edit them on update operations.companions: by relative path but does NOT edit them (e.g., a DESIGN.md or EXPERIENCE.md from a UX run, an integration partner's API spec). The originating skill owns them.Two rules govern companions:
glossary.md, <entity-class>.md (e.g. patron-archetypes.md, medication-routes.md, flight-modes.md), stack.md, conventions.md, brownfield.md, architecture-diagrams.md, state-machines.md, failure-modes.md, compliance-references.md. The principle: "a reader should know what is inside before opening it." Adopted companions keep whatever name their originating skill gave them.architecture-diagrams.md), with sibling image files referenced from there.Pre-existing project-wide docs (e.g. project-context.md) that downstream needs are listed as adopted companions, never duplicated into SPEC.md or a spec-authored companion.
Every spec must satisfy these eight rules. The operation aims for them; the self-validate sweep enforces them.
intent and success. Missing either = not a capability..decision-log.md.After every create or update, sweep the resulting artifact in two passes before presenting.
Pass 1 — Coherence. Judge the spec against Spec Law rules 1–6 and 8. For anything that fails or feels weak, attempt to fix it without inventing content the input did not support. Calls made without direct confirmation become assumptions[]; gaps that could not be filled become open_questions[].
Pass 2 — Preservation. Walk the source claim by claim. Confirm each load-bearing claim landed in SPEC.md or a companion. Wrapper-ceremony drops are logged under "Wrapper-only content" so the drop is on the record, not silent.
Append a one-paragraph verdict to .decision-log.md covering both passes. In interactive mode, review the verdict with the user. In headless mode, .decision-log.md is one of the files returned, so the caller (or its downstream LLM) reads the verdict there.
When the user points the skill at an existing spec folder (or its SPEC.md) with no change signal, offer to review assumptions or open questions, or determine what they want to do.
Interactive — share the spec folder path conversationally. Name the capability count, the companions produced, and the verdict in one or two sentences. If assumptions[] or open_questions[] are non-empty, list them (short — one line each) and invite the user to walk through them. Make clear that addressing them can update the source input (if it was a file), the spec, or both — whichever combination the user prefers. Do not dump JSON or present a wall of output.
Headless — return JSON per assets/headless-schemas.md.
Run {workflow.on_complete} if set.
Any update to spec regarding assumptions, open questions, or other changes should be appended to that source's decision log also and offer to update the source.
companions: array of .md files downstream MUST read alongside SPEC.md to have the full contract. Paths may point inside the spec folder (spec-authored companions like glossary.md) or outside it (adopted companions like ../planning-artifacts/ux-designs/ux-foo-bar-2026-05-23/DESIGN.md). The split between spec-authored and adopted is implicit by path; downstream treats both the same.sources: array of paths to files that were fully absorbed into the SPEC, with no remaining downstream value (e.g., a PRD whose every load-bearing claim is now in the kernel). Listed for audit and for bmad-spec to re-read on update. Downstream does NOT read these. Files that downstream still needs to read belong in companions:, not here.