From c52c9b5b0ec8d9daa5666bd5b4bb4675cd5a764c Mon Sep 17 00:00:00 2001 From: Brian Date: Wed, 13 May 2026 16:45:17 -0500 Subject: [PATCH 01/26] feat(bmad-prd): new PRD skill + product-brief updates (#2378) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(bmm): add bmad-prd skill and extend product-brief with external integrations Consolidates the legacy create-prd/edit-prd/validate-prd trio into a single lean facilitator with create/update/validate intent modes, following the bmad-product-brief pattern. Both skills gain external_sources and external_handoffs customize.toml fields for routing through corporate MCP tools (Confluence, Jira, etc.) with graceful degradation, plus a File roles constraint clarifying decision-log (audit trail) vs addendum (preserved depth for downstream docs). * refactor(bmad-prd): tighten SKILL.md and operationalize source-extractor pattern - Compress Overview to remove coaching prose duplicated in Discovery - Operationalize "Extract, don't ingest" with explicit subagent return contract; reference from Update, Validate, and Finalize input reconciliation instead of inline "read N documents" - Fix Overview H1 -> H2 (was breaking pre-pass tooling) - Move full headless JSON schemas to assets/headless-schemas.md; keep minimal example inline - Compress File roles bullet; tighten Finalize step 1 SKILL.md: 124 -> 105 lines, ~4729 -> ~4467 tokens * feat(bmad-prd): open-items gate, drop distillate, persona discipline, decision-log metadata - Add Finalize "Open-items review" step (new step 4): counts OQs / [ASSUMPTION] / [NOTE FOR PM], walks them with user, flags high density as red flag against agreed stakes - Validate now treats open-items density as a first-class finding category - Resume / continuity surfaces open items deterministically as the first orientation step - Drop the PRD's own distillate output and the bmad-distillator finalize step. Downstream workflows (UX, architecture, story creation) source-extract from prd.md directly via the canonical source-extractor pattern. Headless schemas, customize.toml comments, and template updated accordingly. - Drop "status: draft" from PRD frontmatter and template; version/state transitions logged to decision-log.md instead. Finalize step 7 records the version transition entry. - Add PRD Discipline bullet: personas must be research-grounded or marked [ILLUSTRATIVE]; must drive decisions; 2-4 personas max. Discipline pass enforces. - Expand File roles bullet: competitive-analysis detail beyond a one-line landscape and operational/cost mechanics (rate-limiting, compression) belong in addendum * feat(bmad-prd): outcome-driven trim, swappable validation checklist, HTML report SKILL.md trim (4.7K -> ~3.2K tokens, 124 -> 93 lines): - Cut anchor enumerations (HIPAA/PCI/NIST list, API/Mobile/Web list, hobby->regulated list, "fast/easy/scalable/intuitive", input enumerations, etc.) the LLM already knows - Cut derivable reasoning (synonyms-cause-drift explanation, hobby-vs-enterprise examples, etc.) - Cut good/bad examples that anchor LLM attention (password/SendGrid example, persona quote, "let me also add this nearby thing") - Drop SMART-ceremony language from Measurable bullet (keep judgment-not-ritual; SMART principles fine) Progressive disclosure to references/: - Headless mode rules + JSON minimal example moved to references/headless.md (loaded only when invoked headless) - On Activation step 6 gates mode detection: headless -> read references/headless.md and follow Swappable validation checklist: - New assets/prd-validation-checklist.md (15 items: Quality / Discipline / Structural / Stakes-gated, each one line) - New customize.toml field validation_checklist (override per org) - Used by Validate intent AND Finalize Step 3 -- same subagent, same checklist, two moments - Replaces bmad-validate-prd's 13-step micro-file architecture; kept the valuable check dimensions (density, measurability, traceability, implementation leakage, etc.) and dropped the ceremony HTML validation report: - New scripts/render-validation-html.py (PEP 723, stdlib only, ~175 lines) renders structured findings JSON into a styled HTML report with pass/warn/fail grade, inline SVG score bar, category grouping - New assets/validation-report-template.html (inline CSS, native
, no JS, no external deps) -- swappable via customize.toml validation_report_template - New references/validation-render.md documents the subagent output contract and renderer invocation; loaded only when validate flow runs - Auto-opens browser on interactive runs; headless skips the open Mode flow consistency: - Create and Update both now explicitly "proceed to ## Finalize" - Validate / analyze is standalone -- explicit "does NOT enter ## Finalize"; renderer auto-opens the HTML - analyze is a synonym for validate; intent detection routes both - Update mode no longer has its own light-close validation step (Finalize Step 3 covers it) * refactor(product-brief,bmad-prd): remove distillation from brief and PRD workflows Drop bmad-distillator integration from bmad-product-brief (finalize step, update mode, headless JSON, constraints) and clean up customize.toml comments. Distillation is the wrong layer — story self-containment via epic solution design docs is the right answer for downstream context. Also commit pending bmad-prd changes: working mode selector (Express vs Facilitative), open-items triage into phase-blocking/resolvable/deferred buckets, persistence wording fix, and facilitation-guide reference. * refactor(bmad-prd): aggressive SKILL.md compression, remove LLM-obvious content * feat(bmad-prd,bmad-product-brief): surface party-mode and advanced-elicitation at opening * refactor(bmm): retire bmad-create-prd/edit/validate, point docs and PM agent at bmad-prd Removes the three separate PRD skills (create, edit, validate) in favor of the unified bmad-prd skill. Updates module-help.csv, PM agent menu, workflow map, getting-started tutorial, commands reference, customize/help SKILL.md examples, and the website workflow-map diagram. Adds Recipe 6 (Advanced Integration Patterns) to expand-bmad-for-your-org.md covering external_sources, external_handoffs, doc_standards, and swappable templates. * test(bmad-product-brief): drop distillate from evals Distillate was removed from the product-brief workflow in 1a88f001 but the eval suite still checked for distillate.md artifacts, the bmad-distillator subagent invocation, and the polish→distillate phase ordering. Strip all distillate references from A1/A5/B1/B2/B3/B5/B6, remove B4 (phase-ordering eval centered on distillate) and B8 (pure distillate eval), update _design_notes, and delete the orphan distillate.md fixture from the forkbird-brief input set. IDs preserved (gaps at B4, B8) so existing references stay stable. * fix(bmad-prd): validation report only on explicit analysis request Reconciles a contradiction across SKILL.md, validation-render.md, headless.md, and headless-schemas.md about when validation-report.{html,md} gets written. Rule: a report file is only written when the user has specifically asked for analysis — Validate intent, or a mid-session "produce a report" request. The Finalize discipline pass during Create/Update keeps findings in-conversation: autofix obvious issues, ask on ambiguous ones, never write a file. - SKILL.md: Finalize step 3 no longer renders a report; Validate intent wording softened from "HTML report" to "validation report". - references/validation-render.md: drops the severity-based conditional for markdown emission. Script now always writes both HTML and MD side-by-side when invoked; trigger gating happens upstream. - assets/headless-schemas.md: drops the "may be omitted in interactive mode" caveat; validation_report is required for Validate intent. - scripts/render-validation-html.py: adds render_markdown_report() emitting a severity-grouped markdown companion at output_path.with_suffix('.md'). Returns markdown path in the stdout JSON summary alongside HTML path. * fix(bmm-skills): address remaining PR review nits - headless-schemas.md: Update schema gains `external_handoffs` to match SKILL.md which routes Update through Finalize (handoffs execute there). - bmad-product-brief/SKILL.md: "Use the bmad-help skill" → "Invoke bmad-help" to align with REF-03 and the bmad-prd phrasing. - bmad-product-brief/SKILL.md: hyphenate "high-quality draft". * feat(bmm): add deprecation shims for retired PRD skills Re-adds bmad-create-prd, bmad-edit-prd, bmad-validate-prd as thin compatibility shims so existing invocations by name and _bmad/custom/bmad-{create,edit,validate}-prd.toml override files keep working post-consolidation. Each shim contains only SKILL.md and customize.toml — no steps, data, or templates. On activation, each shim: 1. Resolves customization via resolve_customization.py, picking up any legacy override files for the four legacy fields (activation_steps_*, persistent_facts, on_complete). 2. Emits a one-time deprecation notice in {communication_language}, pointing at bmad-prd and the migration path for override files. 3. Invokes bmad-prd with the appropriate intent (create / update / validate), passes through the resolved legacy customization with instruction to use these values instead of re-resolving from bmad-prd's own customize.toml, and forwards the original user input verbatim. bmad-prd continues to read its own customize.toml + bmad-prd.toml overrides for the new-only fields (prd_template, validation_checklist, doc_standards, output_dir, output_folder_name, external_sources, external_handoffs, validation_report_template). Users wanting those fields must migrate to invoking bmad-prd directly. * polish(bmm): refine PRD deprecation shim wording Three small revisions applied uniformly to all three shims (bmad-create-prd, bmad-edit-prd, bmad-validate-prd): - Tighten the frontmatter description to a single sentence naming the intent and signaling v7 removal. - Drop the redundant "On failure, surface the diagnostic and halt." trailer from the resolve-customization step; resolve_customization.py surfaces errors itself. - Extend the user-facing deprecation notice to clarify that legacy override fields still resolve under bmad-prd, so migration is for unlocking new fields rather than restoring lost functionality. * fix(bmad-prd): normalize status casing and add friendly file errors - compute_stats: lower-case `status` before bucketing so findings with any casing (e.g. "Pass") feed the stat buckets and the score bar fills correctly. Matches the .lower() pattern already used in render_finding and render_finding_md. - main: wrap findings/template read_text calls; emit a one-line error to stderr and return 1 on FileNotFoundError or JSONDecodeError instead of dumping a raw traceback. Script is LLM-invoked, so a clean diagnostic is the contract. Addresses augmentcode review comments 3235100013 and 3235100018. Co-Authored-By: Claude Opus 4.7 (1M context) * docs(expand): refresh "five recipes" copy to reflect Recipe 6 Recipe 6 (Advanced Integration Patterns) was added but three earlier mentions still said "five": the frontmatter description, the intro sentence at line 8, and the "Combining Recipes" paragraph. Update all three to "six" and extend the Combining-Recipes example to call out Recipe 6 (external_sources / external_handoffs) alongside the others. Addresses coderabbitai review comment 3235107194 and the two outside-diff observations on lines 3 and 8. Co-Authored-By: Claude Opus 4.7 (1M context) * fix(bmad-prd): utf-8 encoding on render script, correct workflow-map outputs - render-validation-html.py reads findings/template and writes HTML/MD with explicit utf-8 encoding so non-ASCII content (smart quotes, em-dashes, non-English text under {document_output_language}) does not break on platforms whose default encoding is not utf-8. - workflow-map.md 'Produces' column for bmad-prd now distinguishes Create/Update outputs from the Validate intent's validation-report artifacts. --------- Co-authored-by: Claude Opus 4.7 (1M context) --- docs/how-to/expand-bmad-for-your-org.md | 76 ++++- docs/reference/commands.md | 8 +- docs/reference/workflow-map.md | 20 +- docs/tutorials/getting-started.md | 15 +- .../bmm-skills/bmad-product-brief/evals.json | 79 ++--- .../files/forkbird-brief/distillate.md | 28 -- .../1-analysis/bmad-product-brief/SKILL.md | 35 ++- .../bmad-product-brief/customize.toml | 32 +- .../bmad-agent-pm/customize.toml | 16 +- .../2-plan-workflows/bmad-create-prd/SKILL.md | 106 +------ .../data/domain-complexity.csv | 15 - .../bmad-create-prd/data/prd-purpose.md | 197 ------------ .../bmad-create-prd/data/project-types.csv | 11 - .../bmad-create-prd/steps-c/step-01-init.md | 186 ----------- .../steps-c/step-01b-continue.md | 161 ---------- .../steps-c/step-02-discovery.md | 210 ------------- .../steps-c/step-02b-vision.md | 142 --------- .../steps-c/step-02c-executive-summary.md | 158 ---------- .../steps-c/step-03-success.md | 214 ------------- .../steps-c/step-04-journeys.md | 201 ------------ .../bmad-create-prd/steps-c/step-05-domain.md | 194 ------------ .../steps-c/step-06-innovation.md | 211 ------------- .../steps-c/step-07-project-type.md | 222 -------------- .../steps-c/step-08-scoping.md | 263 ---------------- .../steps-c/step-09-functional.md | 219 ------------- .../steps-c/step-10-nonfunctional.md | 230 -------------- .../bmad-create-prd/steps-c/step-11-polish.md | 221 ------------- .../steps-c/step-12-complete.md | 121 -------- .../bmad-create-prd/templates/prd-template.md | 10 - .../2-plan-workflows/bmad-edit-prd/SKILL.md | 104 +------ .../bmad-edit-prd/data/prd-purpose.md | 197 ------------ .../steps-e/step-e-01-discovery.md | 242 --------------- .../steps-e/step-e-01b-legacy-conversion.md | 204 ------------ .../bmad-edit-prd/steps-e/step-e-02-review.md | 245 --------------- .../bmad-edit-prd/steps-e/step-e-03-edit.md | 250 --------------- .../steps-e/step-e-04-complete.md | 165 ---------- .../2-plan-workflows/bmad-prd/SKILL.md | 90 ++++++ .../bmad-prd/assets/headless-schemas.md | 76 +++++ .../bmad-prd/assets/prd-template.md | 158 ++++++++++ .../assets/prd-validation-checklist.md | 30 ++ .../assets/validation-report-template.html | 190 ++++++++++++ .../2-plan-workflows/bmad-prd/customize.toml | 113 +++++++ .../bmad-prd/references/facilitation-guide.md | 79 +++++ .../bmad-prd/references/headless.md | 24 ++ .../bmad-prd/references/validation-render.md | 58 ++++ .../scripts/render-validation-html.py | 290 ++++++++++++++++++ .../bmad-validate-prd/SKILL.md | 106 +------ .../data/domain-complexity.csv | 15 - .../bmad-validate-prd/data/prd-purpose.md | 197 ------------ .../bmad-validate-prd/data/project-types.csv | 11 - .../steps-v/step-v-01-discovery.md | 221 ------------- .../steps-v/step-v-02-format-detection.md | 188 ------------ .../steps-v/step-v-02b-parity-check.md | 206 ------------- .../steps-v/step-v-03-density-validation.md | 171 ----------- .../step-v-04-brief-coverage-validation.md | 211 ------------- .../step-v-05-measurability-validation.md | 225 -------------- .../step-v-06-traceability-validation.md | 214 ------------- ...-v-07-implementation-leakage-validation.md | 202 ------------ .../step-v-08-domain-compliance-validation.md | 240 --------------- .../step-v-09-project-type-validation.md | 260 ---------------- .../steps-v/step-v-10-smart-validation.md | 206 ------------- .../step-v-11-holistic-quality-validation.md | 261 ---------------- .../step-v-12-completeness-validation.md | 239 --------------- .../steps-v/step-v-13-report-complete.md | 230 -------------- src/bmm-skills/module-help.csv | 6 +- src/core-skills/bmad-customize/SKILL.md | 2 +- src/core-skills/bmad-help/SKILL.md | 4 +- website/public/workflow-map-diagram.html | 6 +- 68 files changed, 1342 insertions(+), 8195 deletions(-) delete mode 100644 evals/bmm-skills/bmad-product-brief/files/forkbird-brief/distillate.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-create-prd/data/domain-complexity.csv delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-create-prd/data/prd-purpose.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-create-prd/data/project-types.csv delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-01-init.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-01b-continue.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-02-discovery.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-02b-vision.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-02c-executive-summary.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-03-success.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-04-journeys.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-05-domain.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-06-innovation.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-07-project-type.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-08-scoping.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-09-functional.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-10-nonfunctional.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-11-polish.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-12-complete.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-create-prd/templates/prd-template.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-edit-prd/data/prd-purpose.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01-discovery.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-02-review.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-03-edit.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-04-complete.md create mode 100644 src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md create mode 100644 src/bmm-skills/2-plan-workflows/bmad-prd/assets/headless-schemas.md create mode 100644 src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-template.md create mode 100644 src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-validation-checklist.md create mode 100644 src/bmm-skills/2-plan-workflows/bmad-prd/assets/validation-report-template.html create mode 100644 src/bmm-skills/2-plan-workflows/bmad-prd/customize.toml create mode 100644 src/bmm-skills/2-plan-workflows/bmad-prd/references/facilitation-guide.md create mode 100644 src/bmm-skills/2-plan-workflows/bmad-prd/references/headless.md create mode 100644 src/bmm-skills/2-plan-workflows/bmad-prd/references/validation-render.md create mode 100644 src/bmm-skills/2-plan-workflows/bmad-prd/scripts/render-validation-html.py delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-validate-prd/data/domain-complexity.csv delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-validate-prd/data/prd-purpose.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-validate-prd/data/project-types.csv delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-01-discovery.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02-format-detection.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02b-parity-check.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-03-density-validation.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-10-smart-validation.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-13-report-complete.md diff --git a/docs/how-to/expand-bmad-for-your-org.md b/docs/how-to/expand-bmad-for-your-org.md index 14485c97a..44bb38744 100644 --- a/docs/how-to/expand-bmad-for-your-org.md +++ b/docs/how-to/expand-bmad-for-your-org.md @@ -1,11 +1,11 @@ --- title: 'How to Expand BMad for Your Organization' -description: Five customization patterns that reshape BMad without forking — agent-wide rules, workflow conventions, external publishing, template swaps, and agent roster changes +description: Six customization patterns that reshape BMad without forking — agent-wide rules, workflow conventions, external publishing, template swaps, agent roster changes, and advanced integration patterns sidebar: order: 9 --- -BMad's customization surface lets an organization reshape behavior without editing installed files or forking skills. This guide walks through five recipes that cover most enterprise needs. +BMad's customization surface lets an organization reshape behavior without editing installed files or forking skills. This guide walks through six recipes that cover most enterprise needs. :::note[Prerequisites] @@ -227,9 +227,79 @@ One sentence, loaded every session. It pairs with the `bmad-agent-dev.toml` cust Keep the IDE file **succinct**. A dozen well-chosen lines are more effective than a sprawling list. Models read it every turn, and noise crowds out signal. +## Recipe 6: Advanced Integration Patterns + +Several BMad workflows expose a richer configuration surface beyond the basics covered in Recipes 1–5. These patterns — on-demand knowledge sources, automatic output publishing, finalize-time doc standards, and swappable templates — appear across multiple workflows. Check a workflow's `customize.toml` to see which fields it exposes; the examples below use `bmad-prd` because it exposes all of them, but the same patterns apply wherever the field appears. + +### On-demand knowledge sources (`external_sources`) + +Connect the workflow to internal knowledge bases, competitive databases, or compliance references. The agent consults these on demand when the conversation surfaces a matching need — never preemptively. + +```toml +# _bmad/custom/bmad-prd.toml (same pattern works in any workflow that exposes external_sources) + +[workflow] +external_sources = [ + "When the user mentions a competitor or market segment, query corp:competitive_db (category={project_name}) before drafting the differentiation section.", + "For regulatory domains (healthcare, fintech, education), consult corp:compliance_reference before drafting domain-specific sections.", +] +``` + +Each entry is a natural-language directive naming the MCP tool, the trigger condition, and any fields the tool needs. If the tool is unavailable at runtime, the workflow falls back to standard behavior and notes the gap. + +### Automatic output publishing (`external_handoffs`) + +Route completed artifacts to external systems of record after the workflow finalizes. Unlike `on_complete` (Recipe 3), `external_handoffs` is a dedicated append array — team entries stack, and each handoff fires independently with graceful degradation if a tool is unavailable. + +```toml +# _bmad/custom/bmad-prd.toml (same pattern works in any workflow that exposes external_handoffs) + +[workflow] +external_handoffs = [ + "After finalize, upload prd.md and addendum.md to Confluence via corp:confluence_upload (space_key='PROD', parent_page='PRDs', label='prd', author={user_name}). Capture and surface the returned page URL.", + "Mirror to Notion via notion:create_page (database_id='abc123', title='PRD: ' + {project_name}).", +] +``` + +If a named tool is unavailable, the handoff is skipped and flagged — local files always exist regardless. + +### Finalize-time doc standards (`doc_standards`) + +Apply org writing standards to human-consumed documents at finalize, after content is complete but before the user sees the output. Each entry is a `skill:`, `file:`, or plain-text directive; passes run as parallel subagents. + +```toml +# _bmad/custom/bmad-prd.toml (same pattern works in any workflow that exposes doc_standards) + +[workflow] +doc_standards = [ + "file:{project-root}/docs/enterprise/voice-and-tone.md", + "All dates must use ISO 8601 format (YYYY-MM-DD).", + "Replace any use of 'leverage' with 'use'.", +] +``` + +`doc_standards` is an append array — team entries stack on top of whatever defaults the workflow ships with. Broader structural passes should come before narrower prose passes. + +### Swappable templates and checklists + +Workflows that produce structured documents typically expose template and checklist paths as overridable scalars. Point them at org-owned files under `{project-root}` to enforce a different structure without editing any source. + +```toml +# _bmad/custom/bmad-prd.toml + +[workflow] +# Regulated-industry PRD structure +prd_template = "{project-root}/docs/enterprise/prd-template-hipaa.md" + +# Org-specific validation criteria +validation_checklist = "{project-root}/docs/enterprise/prd-checklist-regulated.md" +``` + +The agent adapts to whatever structure the template defines. Keep templates under `{project-root}/docs/` or `{project-root}/_bmad/custom/templates/` so they version alongside the override file. For multi-org repos, use `.user.toml` to let teams point at their own templates without touching the committed team file. + ## Combining Recipes -All five recipes compose. A realistic enterprise override for `bmad-product-brief` might set `persistent_facts` (Recipe 2), `on_complete` (Recipe 3), and `brief_template` (Recipe 4) in one file. The agent-level rule (Recipe 1) lives in a separate file under the agent's name, central config (Recipe 5) pins the shared roster and team settings, and all four apply in parallel. +All six recipes compose. A realistic enterprise override for `bmad-product-brief` might set `persistent_facts` (Recipe 2), `on_complete` (Recipe 3), and `brief_template` (Recipe 4) in one file. The agent-level rule (Recipe 1) lives in a separate file under the agent's name, central config (Recipe 5) pins the shared roster and team settings, advanced integration patterns (Recipe 6) configure external sources and handoffs, and all layers apply in parallel. ```toml # _bmad/custom/bmad-product-brief.toml (workflow-level) diff --git a/docs/reference/commands.md b/docs/reference/commands.md index 7776f94b6..9e20384ac 100644 --- a/docs/reference/commands.md +++ b/docs/reference/commands.md @@ -52,7 +52,7 @@ Each skill is a directory containing a `SKILL.md` file. For example, a Claude Co .claude/skills/ ├── bmad-help/ │ └── SKILL.md -├── bmad-create-prd/ +├── bmad-prd/ │ └── SKILL.md ├── bmad-agent-dev/ │ └── SKILL.md @@ -91,9 +91,9 @@ Workflow skills run a structured, multi-step process without loading an agent pe | Example skill | Purpose | | --- | --- | -| `bmad-product-brief` | Create a product brief — guided discovery when your concept is clear | +| `bmad-product-brief` | Create or update a product brief — guided discovery when your concept is clear | | `bmad-prfaq` | [Working Backwards PRFAQ](../explanation/analysis-phase.md#prfaq-working-backwards) challenge to stress-test your product concept | -| `bmad-create-prd` | Create a Product Requirements Document | +| `bmad-prd` | Create, update, or validate a Product Requirements Document | | `bmad-create-architecture` | Design system architecture | | `bmad-create-epics-and-stories` | Create epics and stories | | `bmad-dev-story` | Implement a story | @@ -124,7 +124,7 @@ The core module includes 11 built-in tools — reviews, compression, brainstormi ## Naming Convention -All skills use the `bmad-` prefix followed by a descriptive name (e.g., `bmad-agent-dev`, `bmad-create-prd`, `bmad-help`). See [Modules](./modules.md) for available modules. +All skills use the `bmad-` prefix followed by a descriptive name (e.g., `bmad-agent-dev`, `bmad-prd`, `bmad-help`). See [Modules](./modules.md) for available modules. ## Troubleshooting diff --git a/docs/reference/workflow-map.md b/docs/reference/workflow-map.md index e84854440..e3368c7d4 100644 --- a/docs/reference/workflow-map.md +++ b/docs/reference/workflow-map.md @@ -44,10 +44,22 @@ it**](../explanation/analysis-phase.md). Define what to build and for whom. -| Workflow | Purpose | Produces | -|-------------------------|------------------------------------------|--------------| -| `bmad-create-prd` | Define requirements (FRs/NFRs) | `PRD.md` | -| `bmad-create-ux-design` | Design user experience (when UX matters) | `ux-spec.md` | +| Workflow | Purpose | Produces | +|-------------------------|-------------------------------------------------------------------------------------|---------------------------------------------------| +| `bmad-prd` | Create, update, or validate a PRD — facilitated discovery, three intents in one skill | Create/Update: `prd.md`, `addendum.md`, `decision-log.md`; Validate: `validation-report.html` + `.md` | +| `bmad-create-ux-design` | Design user experience (when UX matters) | `ux-spec.md` | + +:::tip[Three intents in one skill] +`bmad-prd` handles the full PRD lifecycle. State your intent when invoking or the skill will ask: + +- **Create** — new PRD from scratch via coached discovery; produces `prd.md`, `addendum.md`, and `decision-log.md` +- **Update** — reconcile an existing PRD with a change signal, surfacing conflicts before applying changes +- **Validate** — critique a PRD against a configurable checklist and produce a structured HTML findings report +::: + +:::tip[Upstream: `bmad-product-brief`] +`bmad-product-brief` (Phase 1) produces a `product-brief.md` that `bmad-prd` can source-extract during Discovery, reducing re-explanation and keeping the two documents aligned. Neither skill requires the other — start with `bmad-prd` directly if you already know what you're building. +::: ## Phase 3: Solutioning diff --git a/docs/tutorials/getting-started.md b/docs/tutorials/getting-started.md index 94aaa521a..b6b5c6fca 100644 --- a/docs/tutorials/getting-started.md +++ b/docs/tutorials/getting-started.md @@ -114,7 +114,7 @@ BMad-Help will detect what you've completed and recommend exactly what to do nex ::: :::note[How to Load Agents and Run Workflows] -Each workflow has a **skill** you invoke by name in your IDE (e.g., `bmad-create-prd`). Your AI tool will recognize the `bmad-*` name and run it — you don't need to load agents separately. You can also invoke an agent skill directly for general conversation (e.g., `bmad-agent-pm` for the PM agent). +Each workflow has a **skill** you invoke by name in your IDE (e.g., `bmad-prd`). Your AI tool will recognize the `bmad-*` name and run it — you don't need to load agents separately. You can also invoke an agent skill directly for general conversation (e.g., `bmad-agent-pm` for the PM agent). ::: :::caution[Fresh Chats] @@ -142,9 +142,14 @@ All workflows in this phase are optional. [**Not sure which to use?**](../explan ### Phase 2: Planning (Required) **For BMad Method and Enterprise tracks:** -1. Invoke the **PM agent** (`bmad-agent-pm`) in a new chat -2. Run the `bmad-create-prd` workflow (`bmad-create-prd`) -3. Output: `PRD.md` +1. Run `bmad-prd` in a new chat — state your intent (Create / Update / Validate) or let the skill ask +2. Output: `prd.md`, `addendum.md`, `decision-log.md` + +:::note[`bmad-prd` intents] +- **Create** — coached discovery from scratch; the skill names the workspace folder and guides you to a PRD you're proud of +- **Update** — point it at an existing PRD and a change signal; it surfaces conflicts before applying changes +- **Validate** — critique a finished PRD against a checklist and produce an HTML findings report +::: **For Quick Flow track:** - Run `bmad-quick-dev` — it handles planning and implementation in a single workflow, skip to implementation @@ -225,7 +230,7 @@ your-project/ | Workflow | Command | Agent | Purpose | | ------------------------------------- | ------------------------------------------ | --------- | ----------------------------------------------- | | **`bmad-help`** ⭐ | `bmad-help` | Any | **Your intelligent guide — ask anything!** | -| `bmad-create-prd` | `bmad-create-prd` | PM | Create Product Requirements Document | +| `bmad-prd` | `bmad-prd` | Any | Create, update, or validate a PRD | | `bmad-create-architecture` | `bmad-create-architecture` | Architect | Create architecture document | | `bmad-generate-project-context` | `bmad-generate-project-context` | Analyst | Create project context file | | `bmad-create-epics-and-stories` | `bmad-create-epics-and-stories` | PM | Break down PRD into epics | diff --git a/evals/bmm-skills/bmad-product-brief/evals.json b/evals/bmm-skills/bmad-product-brief/evals.json index 424a64341..2c70b3376 100644 --- a/evals/bmm-skills/bmad-product-brief/evals.json +++ b/evals/bmm-skills/bmad-product-brief/evals.json @@ -1,12 +1,12 @@ { "skill_name": "bmad-product-brief", - "_design_notes": "16 single-shot evals across two patterns. Pattern A (A1-A8) tests artifact correctness given complete inputs in headless mode. Pattern B (B1-B8) tests process discipline (decision log fidelity, polish execution, phase ordering, intent boundaries, distillate generation) by inspecting transcript and side-artifacts. Facilitation/conversation-quality evals are deferred to a future multi-turn simulator.", + "_design_notes": "Single-shot evals across two patterns. Pattern A (A1-A8) tests artifact correctness given complete inputs in headless mode. Pattern B tests process discipline (decision log fidelity, polish execution, intent boundaries) by inspecting transcript and side-artifacts. Facilitation/conversation-quality evals are deferred to a future multi-turn simulator.", "evals": [ { "id": "A1", "_pattern": "artifact-correctness", - "prompt": "Run headless. Create a product brief for InsuLens.\n\nContext (use exactly this \u2014 do not invent):\n- Product: a smartphone app that pairs with off-the-shelf $200 thermal imaging accessories (FLIR ONE Pro and Seek Compact Pro). The app guides homeowners through a structured walkthrough and produces a professional-grade insulation audit in under 20 minutes.\n- Target: suburban homeowners aged 35-65 with houses built before 2000 (poor original insulation, rising energy bills).\n- Validation evidence: 50 user interviews completed in Q4 2025; 78% expressed willingness to pay $49 for a one-time audit if results were credible.\n- Stakes: this brief is the primary input investors will read before our first Series A pitch call.\n- Hardware dependency: requires a thermal imaging accessory (we do not manufacture hardware).\n- Known unknowns: insurance/warranty implications of homeowner-driven audits; whether the 78% intent translates to paid conversion at scale.\n- Distillate: yes, generate one \u2014 the brief will feed downstream PRD work.\n\nRight-size for investor-stage rigor. Output a JSON status block at the end with status, intent, and artifact paths.", - "expected_output": "A run folder containing brief.md (with valid YAML frontmatter), decision-log.md, and distillate.md. Brief is 1-2 pages, addresses target audience, hardware dependency, validation evidence, and surfaces unknowns alongside knowns. Final assistant message includes JSON with status='complete', intent='create', and artifact paths.", + "prompt": "Run headless. Create a product brief for InsuLens.\n\nContext (use exactly this — do not invent):\n- Product: a smartphone app that pairs with off-the-shelf $200 thermal imaging accessories (FLIR ONE Pro and Seek Compact Pro). The app guides homeowners through a structured walkthrough and produces a professional-grade insulation audit in under 20 minutes.\n- Target: suburban homeowners aged 35-65 with houses built before 2000 (poor original insulation, rising energy bills).\n- Validation evidence: 50 user interviews completed in Q4 2025; 78% expressed willingness to pay $49 for a one-time audit if results were credible.\n- Stakes: this brief is the primary input investors will read before our first Series A pitch call.\n- Hardware dependency: requires a thermal imaging accessory (we do not manufacture hardware).\n- Known unknowns: insurance/warranty implications of homeowner-driven audits; whether the 78% intent translates to paid conversion at scale.\nRight-size for investor-stage rigor. Output a JSON status block at the end with status, intent, and artifact paths.", + "expected_output": "A run folder containing brief.md (with valid YAML frontmatter) and decision-log.md. Brief is 1-2 pages, addresses target audience, hardware dependency, validation evidence, and surfaces unknowns alongside knowns. Final assistant message includes JSON with status='complete', intent='create', and artifact paths.", "files": [], "expectations": [ "A run folder is created with brief.md and decision-log.md", @@ -18,7 +18,6 @@ "brief.md references the 50-user interview validation OR the 78% willingness-to-pay finding", "brief.md surfaces at least one explicit unknown or unvalidated assumption", "brief.md does not introduce facts absent from the input prompt (no invented competitors, fabricated metrics, or unstated partnerships)", - "distillate.md exists in the run folder", "The final assistant message contains a JSON object with keys 'status', 'intent', and at least one artifact path", "The JSON 'intent' value is 'create'" ] @@ -32,14 +31,14 @@ "expectations": [ "The final assistant message contains a JSON object with key 'status' set to 'blocked'", "The JSON output includes a 'reason' field explaining what context is missing", - "If brief.md exists at all, its body content (excluding frontmatter) is fewer than 100 words OR is a placeholder skeleton \u2014 the skill did not invent a product", + "If brief.md exists at all, its body content (excluding frontmatter) is fewer than 100 words OR is a placeholder skeleton — the skill did not invent a product", "The transcript contains no clarifying questions sent back to the user (headless mode honored)" ] }, { "id": "A3", "_pattern": "artifact-correctness", - "prompt": "Run headless. Create a brief for our neighborhood compost coordinator app idea \u2014 we are moving forward with it. Q2 brainstorming session notes are at evals/bmm-skills/bmad-product-brief/files/q2-brainstorm.md; pull only what is relevant to the compost concept.", + "prompt": "Run headless. Create a brief for our neighborhood compost coordinator app idea — we are moving forward with it. Q2 brainstorming session notes are at evals/bmm-skills/bmad-product-brief/files/q2-brainstorm.md; pull only what is relevant to the compost concept.", "expected_output": "Brief focuses tightly on the compost coordinator concept. Source brainstorm is filtered, not ingested wholesale. Decision-log records that filtering occurred.", "files": ["evals/bmm-skills/bmad-product-brief/files/q2-brainstorm.md"], "expectations": [ @@ -53,7 +52,7 @@ { "id": "A4", "_pattern": "artifact-correctness", - "prompt": "Run headless. Validate the brief at evals/bmm-skills/bmad-product-brief/files/mossridge-brief/brief.md \u2014 the Mossridge Public Library board meets Monday and we need this to land. Read the addendum and decision-log in the same folder first. Cite specific sections, identify weaknesses, caveat what cannot be evaluated. Return inline only \u2014 no separate validation file.", + "prompt": "Run headless. Validate the brief at evals/bmm-skills/bmad-product-brief/files/mossridge-brief/brief.md — the Mossridge Public Library board meets Monday and we need this to land. Read the addendum and decision-log in the same folder first. Cite specific sections, identify weaknesses, caveat what cannot be evaluated. Return inline only — no separate validation file.", "expected_output": "Inline critique citing specific sections from the input brief. No new files. Caveats at least one claim that cannot be evaluated from the brief alone. Offers to roll findings into an Update.", "files": [ "evals/bmm-skills/bmad-product-brief/files/mossridge-brief/brief.md", @@ -72,7 +71,7 @@ "id": "A5", "_pattern": "artifact-correctness", "prompt": "Run headless. Create a brief for: a weekend-project iOS app called Sproutkeeper that reminds houseplant owners when to water their plants based on plant type and indoor humidity sensor data. Target is hobbyist plant owners. MVP scope only, single-developer side project, no investors, no team, just personal evening project.", - "expected_output": "Lightweight brief right-sized to a side project. Low rigor. No investor-grade framing. Probably no distillate unless the side-project user explicitly asked.", + "expected_output": "Lightweight brief right-sized to a side project. Low rigor. No investor-grade framing.", "files": [], "expectations": [ "The final assistant message contains a JSON object with intent='create'", @@ -99,7 +98,7 @@ { "id": "A7", "_pattern": "artifact-correctness", - "prompt": "Run headless. Create a brief for Brightway \u2014 our smart bike helmet with crash detection, turn signals, and braking lights. Meridian Insights produced a market research report on e-mobility at evals/bmm-skills/bmad-product-brief/files/meridian-mobility-report.md. Use only what is relevant to the safety helmet category \u2014 do not let the e-scooter, charging-infrastructure, or bike-share segments bleed into the brief.", + "prompt": "Run headless. Create a brief for Brightway — our smart bike helmet with crash detection, turn signals, and braking lights. Meridian Insights produced a market research report on e-mobility at evals/bmm-skills/bmad-product-brief/files/meridian-mobility-report.md. Use only what is relevant to the safety helmet category — do not let the e-scooter, charging-infrastructure, or bike-share segments bleed into the brief.", "expected_output": "Brief focuses on the smart bike helmet concept. Pulls relevant findings from the helmet section. Other mobility segments do not appear.", "files": ["evals/bmm-skills/bmad-product-brief/files/meridian-mobility-report.md"], "expectations": [ @@ -113,7 +112,7 @@ { "id": "A8", "_pattern": "artifact-correctness", - "prompt": "Run headless. Create a brief for Pantry Bridge \u2014 a meal-kit subscription targeted at adults 65+ who live alone and want fresh meals without grocery shopping. Customer research transcripts are at evals/bmm-skills/bmad-product-brief/files/pantry-bridge-interviews.md. Pull what is relevant from the older-adult interviews; do not conflate insights from the working-parent, student, or corporate-buyer personas.", + "prompt": "Run headless. Create a brief for Pantry Bridge — a meal-kit subscription targeted at adults 65+ who live alone and want fresh meals without grocery shopping. Customer research transcripts are at evals/bmm-skills/bmad-product-brief/files/pantry-bridge-interviews.md. Pull what is relevant from the older-adult interviews; do not conflate insights from the working-parent, student, or corporate-buyer personas.", "expected_output": "Brief focuses on the older-adult target persona. Eleanor's interview drives the insights. Other personas do not pollute the brief.", "files": ["evals/bmm-skills/bmad-product-brief/files/pantry-bridge-interviews.md"], "expectations": [ @@ -127,7 +126,7 @@ { "id": "B1", "_pattern": "process-discipline", - "prompt": "Run headless. Create a brief for HelmStack \u2014 an open-source observability platform for distributed systems.\n\nWe have made these specific decisions and want each captured in the decision log with rationale:\n\n1. Pricing: Free open-source core; paid SaaS at $29/seat/month. Rejected paid-one-shot-license model because it would limit network effects in the OSS community.\n2. Launch: Invite-only beta for 6 weeks before public launch. Rejected open public launch \u2014 operational risk too high before stability is proven on real workloads.\n3. Stack: TypeScript + Postgres for the backend. Rejected Go + MongoDB \u2014 TypeScript aligned better with our team's existing skills and the frontend codebase.\n4. ICP: 5-50 person engineering teams for MVP. Rejected enterprise-first focus because the sales cycle is too long for our capital runway.\n5. Self-host: SaaS-only at launch; self-host arrives in v2. Rejected concurrent self-host because it would slow shipping velocity past our funding window.\n\nProduce brief.md, decision-log.md, and a distillate.", + "prompt": "Run headless. Create a brief for HelmStack — an open-source observability platform for distributed systems.\n\nWe have made these specific decisions and want each captured in the decision log with rationale:\n\n1. Pricing: Free open-source core; paid SaaS at $29/seat/month. Rejected paid-one-shot-license model because it would limit network effects in the OSS community.\n2. Launch: Invite-only beta for 6 weeks before public launch. Rejected open public launch — operational risk too high before stability is proven on real workloads.\n3. Stack: TypeScript + Postgres for the backend. Rejected Go + MongoDB — TypeScript aligned better with our team's existing skills and the frontend codebase.\n4. ICP: 5-50 person engineering teams for MVP. Rejected enterprise-first focus because the sales cycle is too long for our capital runway.\n5. Self-host: SaaS-only at launch; self-host arrives in v2. Rejected concurrent self-host because it would slow shipping velocity past our funding window.\n\nProduce brief.md and decision-log.md.", "expected_output": "Decision log contains all five named decisions with rationale captured. Brief reflects the decisions but the decision log is the canonical record.", "files": [], "expectations": [ @@ -142,14 +141,14 @@ { "id": "B2", "_pattern": "process-discipline", - "prompt": "Run headless. Create a brief for HelmStack \u2014 an open-source observability platform for distributed systems.\n\nWe have made these specific decisions and want each captured in the decision log with rationale:\n\n1. Pricing: Free open-source core; paid SaaS at $29/seat/month. Rejected paid-one-shot-license model because it would limit network effects in the OSS community.\n2. Launch: Invite-only beta for 6 weeks before public launch. Rejected open public launch \u2014 operational risk too high before stability is proven on real workloads.\n3. Stack: TypeScript + Postgres for the backend. Rejected Go + MongoDB \u2014 TypeScript aligned better with our team's existing skills and the frontend codebase.\n4. ICP: 5-50 person engineering teams for MVP. Rejected enterprise-first focus because the sales cycle is too long for our capital runway.\n5. Self-host: SaaS-only at launch; self-host arrives in v2. Rejected concurrent self-host because it would slow shipping velocity past our funding window.\n\nProduce brief.md, decision-log.md, and a distillate.", + "prompt": "Run headless. Create a brief for HelmStack — an open-source observability platform for distributed systems.\n\nWe have made these specific decisions and want each captured in the decision log with rationale:\n\n1. Pricing: Free open-source core; paid SaaS at $29/seat/month. Rejected paid-one-shot-license model because it would limit network effects in the OSS community.\n2. Launch: Invite-only beta for 6 weeks before public launch. Rejected open public launch — operational risk too high before stability is proven on real workloads.\n3. Stack: TypeScript + Postgres for the backend. Rejected Go + MongoDB — TypeScript aligned better with our team's existing skills and the frontend codebase.\n4. ICP: 5-50 person engineering teams for MVP. Rejected enterprise-first focus because the sales cycle is too long for our capital runway.\n5. Self-host: SaaS-only at launch; self-host arrives in v2. Rejected concurrent self-host because it would slow shipping velocity past our funding window.\n\nProduce brief.md and decision-log.md.", "expected_output": "Brief is consistent with the decision log: every decision in the log is reflected in the brief, and no claim in the brief is absent from the input prompt or the log. Tests bidirectional fidelity.", "files": [], "expectations": [ "brief.md mentions the OSS-core + paid-SaaS pricing structure", "brief.md references the invite-only-beta launch sequencing OR identifies the launch model consistent with the decision log", - "brief.md references the platform-stack choice (TypeScript + Postgres) OR is silent on stack \u2014 but does not contradict it (no mention of Go, MongoDB, etc.)", - "brief.md identifies 5-50 person eng teams as the ICP (or equivalent \u2014 small-to-mid-size eng teams)", + "brief.md references the platform-stack choice (TypeScript + Postgres) OR is silent on stack — but does not contradict it (no mention of Go, MongoDB, etc.)", + "brief.md identifies 5-50 person eng teams as the ICP (or equivalent — small-to-mid-size eng teams)", "brief.md does not introduce decisions, competitors, partnerships, metrics, or product features absent from both the input prompt and decision-log.md (no invented facts)", "Each substantive decision in decision-log.md has a corresponding reflection in brief.md (no log-to-brief drops)" ] @@ -157,8 +156,8 @@ { "id": "B3", "_pattern": "process-discipline", - "prompt": "Run headless. Create a product brief for InsuLens.\n\nContext (use exactly this \u2014 do not invent):\n- Product: a smartphone app that pairs with off-the-shelf $200 thermal imaging accessories (FLIR ONE Pro and Seek Compact Pro). The app guides homeowners through a structured walkthrough and produces a professional-grade insulation audit in under 20 minutes.\n- Target: suburban homeowners aged 35-65 with houses built before 2000.\n- Validation: 50 user interviews completed in Q4 2025; 78% willingness to pay $49 for a one-time audit.\n- Stakes: Series A pitch input.\n- Hardware: requires a thermal accessory (we do not manufacture hardware).\n\nProduce brief.md, decision-log.md, and a distillate. Run the polish phase before presenting.", - "expected_output": "The transcript shows the polish phase executing \u2014 the skill invokes bmad-editorial-review-structure and bmad-editorial-review-prose, either via the Skill tool directly or via Agent tool calls whose description or prompt targets those editorial skills. Both passes must occur after the initial draft is written and before the final JSON status block.", + "prompt": "Run headless. Create a product brief for InsuLens.\n\nContext (use exactly this — do not invent):\n- Product: a smartphone app that pairs with off-the-shelf $200 thermal imaging accessories (FLIR ONE Pro and Seek Compact Pro). The app guides homeowners through a structured walkthrough and produces a professional-grade insulation audit in under 20 minutes.\n- Target: suburban homeowners aged 35-65 with houses built before 2000.\n- Validation: 50 user interviews completed in Q4 2025; 78% willingness to pay $49 for a one-time audit.\n- Stakes: Series A pitch input.\n- Hardware: requires a thermal accessory (we do not manufacture hardware).\n\nProduce brief.md and decision-log.md. Run the polish phase before presenting.", + "expected_output": "The transcript shows the polish phase executing — the skill invokes bmad-editorial-review-structure and bmad-editorial-review-prose, either via the Skill tool directly or via Agent tool calls whose description or prompt targets those editorial skills. Both passes must occur after the initial draft is written and before the final JSON status block.", "files": [], "expectations": [ "The transcript contains either a Skill tool call invoking bmad-editorial-review-structure, OR an Agent tool call whose description or prompt references structural review or bmad-editorial-review-structure", @@ -167,29 +166,15 @@ "Both editorial-pass dispatches (Skill or Agent) occur before the final assistant message containing the JSON status block" ] }, - { - "id": "B4", - "_pattern": "process-discipline", - "prompt": "Run headless. Create a product brief for InsuLens.\n\nContext (use exactly this \u2014 do not invent):\n- Product: a smartphone app that pairs with off-the-shelf $200 thermal imaging accessories (FLIR ONE Pro and Seek Compact Pro). Walkthrough produces a professional-grade insulation audit in under 20 minutes.\n- Target: suburban homeowners aged 35-65 with houses built before 2000.\n- Validation: 50 user interviews; 78% willingness to pay $49.\n- Stakes: Series A pitch input.\n- Hardware: requires a thermal accessory.\n\nProduce brief.md, decision-log.md, and a distillate. Follow the standard Create flow: workspace setup, draft, finalize (decision log audit, polish, distillate, close-out).", - "expected_output": "Workspace setup happens before drafting. Draft happens before polish. Polish happens before distillate generation. Distillate generation happens before the final close-out JSON block. Each phase boundary is observable in the transcript.", - "files": [], - "expectations": [ - "The first Write tool call to decision-log.md OR brief.md (skeleton) occurs before the substantive Write that produces the full brief body", - "The polish-phase Skill tool calls (bmad-editorial-review-structure and/or bmad-editorial-review-prose) occur after the brief body is written", - "The bmad-distillator Skill tool call (or distillate.md write) occurs after the polish-phase Skill tool calls", - "The final JSON status block in the assistant message occurs after distillate.md is written or skipped with explanation" - ] - }, { "id": "B5", "_pattern": "process-discipline", - "prompt": "Run headless. Update the brief at evals/bmm-skills/bmad-product-brief/files/forkbird-brief/brief.md \u2014 we have decided to add B2B catering services for corporate events, in addition to the direct-to-consumer delivery model. Read the existing decision-log.md and addendum.md in the same folder first.", + "prompt": "Run headless. Update the brief at evals/bmm-skills/bmad-product-brief/files/forkbird-brief/brief.md — we have decided to add B2B catering services for corporate events, in addition to the direct-to-consumer delivery model. Read the existing decision-log.md and addendum.md in the same folder first.", "expected_output": "The skill MUST detect the contradiction with the prior 'rejected B2B catering for MVP' decision (in decision-log.md) before applying the change. Acceptable resolutions: (a) halt with blocked status surfacing the conflict, or (b) apply the change with addendum.md capturing the override and rationale. Brief must not silently flip without acknowledging the prior decision.", "files": [ "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/brief.md", "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/addendum.md", - "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/decision-log.md", - "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/distillate.md" + "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/decision-log.md" ], "expectations": [ "The transcript or output explicitly references the prior 'rejected B2B catering for MVP' decision from decision-log.md", @@ -202,26 +187,24 @@ { "id": "B6", "_pattern": "process-discipline", - "prompt": "Run headless. Update the brief at evals/bmm-skills/bmad-product-brief/files/forkbird-brief/brief.md \u2014 we have signed our fifth chef partner (Chicago metro). Add this to the existing operating-model and what's-known sections. Read the existing decision-log.md first.", - "expected_output": "Clean update \u2014 does not contradict any prior decision. Brief gets updated, decision-log gains a new entry, distillate is regenerated, YAML 'updated' bumps but 'created' stays the same. No spurious addendum since this is a status update, not an override.", + "prompt": "Run headless. Update the brief at evals/bmm-skills/bmad-product-brief/files/forkbird-brief/brief.md — we have signed our fifth chef partner (Chicago metro). Add this to the existing operating-model and what's-known sections. Read the existing decision-log.md first.", + "expected_output": "Clean update — does not contradict any prior decision. Brief gets updated, decision-log gains a new entry, YAML 'updated' bumps but 'created' stays the same. No spurious addendum since this is a status update, not an override.", "files": [ "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/brief.md", "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/addendum.md", - "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/decision-log.md", - "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/distillate.md" + "evals/bmm-skills/bmad-product-brief/files/forkbird-brief/decision-log.md" ], "expectations": [ "brief.md is updated to reflect the signed fifth chef partner in Chicago", "brief.md frontmatter 'updated' field is later than the original 'created' timestamp; 'created' is unchanged", "decision-log.md contains a new entry referencing the fifth chef signing", - "distillate.md is regenerated (modification timestamp newer than the input fixture)", - "The transcript does not surface a fictional contradiction \u2014 this is a clean update, not an override of a prior decision" + "The transcript does not surface a fictional contradiction — this is a clean update, not an override of a prior decision" ] }, { "id": "B7", "_pattern": "process-discipline", - "prompt": "Run headless. Validate the brief at evals/bmm-skills/bmad-product-brief/files/mossridge-brief/brief.md \u2014 we are presenting to the library board Monday. Read the addendum and decision-log in the same folder. Cite specific sections. Return inline only.", + "prompt": "Run headless. Validate the brief at evals/bmm-skills/bmad-product-brief/files/mossridge-brief/brief.md — we are presenting to the library board Monday. Read the addendum and decision-log in the same folder. Cite specific sections. Return inline only.", "expected_output": "Validate is read-only. No new files created. No existing files modified. Critique returned inline in the assistant output.", "files": [ "evals/bmm-skills/bmad-product-brief/files/mossridge-brief/brief.md", @@ -235,30 +218,16 @@ "The final assistant message contains a JSON object with intent='validate'" ] }, - { - "id": "B8", - "_pattern": "process-discipline", - "timeout": 900, - "prompt": "Run headless. Create a product brief for InsuLens (smartphone app that pairs with thermal imaging accessories for homeowner insulation audits, target suburban homeowners 35-65 with houses pre-2000, 50 user interviews with 78% willingness to pay $49, Series A pitch input). Generate a distillate \u2014 this brief will feed downstream PRD work.", - "expected_output": "distillate.md exists alongside brief.md and decision-log.md. The distillate is a meaningful condensation of the brief. Content of the distillate matches the brief without introducing new facts. The transcript shows the bmad-distillator subagent invoked.", - "files": [], - "expectations": [ - "distillate.md exists in the run folder alongside brief.md and decision-log.md", - "distillate.md is a meaningful condensation of brief.md \u2014 substantially more concise and capturing only the key decisions, target audience, validation evidence, and known unknowns needed for downstream PRD work, not a near-verbatim copy", - "distillate.md does not introduce facts or claims not present in brief.md (no inventions on compression)", - "The transcript contains a Skill tool call invoking bmad-distillator" - ] - }, { "id": "C1", "_pattern": "config-compliance", - "prompt": "Run headless. Create a product brief for TaskFlow \u2014 a lightweight daily planning app for freelancers who juggle multiple clients. Core idea: a single daily view that pulls together tasks, time blocks, and client context so the freelancer always knows what to work on next. Target is independent freelancers, 1-3 clients at a time, who currently manage their day across sticky notes, calendar apps, and spreadsheets. MVP is mobile-first. No investors \u2014 the founder is bootstrapping.", + "prompt": "Run headless. Create a product brief for TaskFlow — a lightweight daily planning app for freelancers who juggle multiple clients. Core idea: a single daily view that pulls together tasks, time blocks, and client context so the freelancer always knows what to work on next. Target is independent freelancers, 1-3 clients at a time, who currently manage their day across sticky notes, calendar apps, and spreadsheets. MVP is mobile-first. No investors — the founder is bootstrapping.", "expected_output": "Brief written in Spanish (document_output_language=Spanish). Assistant's conversational output reflects the configured British-accent communication style. Brief lands at the custom output path (test-output/artifacts/briefs/...) rather than the default _bmad-output path. Brief is right-sized for a bootstrapped solo project.", "files": [], "expectations": [ "brief.md exists under test-output/artifacts/briefs/ (the custom planning_artifacts path), not under _bmad-output/", "The final JSON status block artifact paths reference test-output/ rather than _bmad-output/", - "brief.md body is written in Spanish \u2014 the majority of prose content (headings, section bodies) is in Spanish, not English", + "brief.md body is written in Spanish — the majority of prose content (headings, section bodies) is in Spanish, not English", "brief.md covers the TaskFlow concept: freelancer daily planning, multi-client context, the sticky-notes-plus-calendar-plus-spreadsheet problem", "brief.md is right-sized for a bootstrapped side project — appropriate depth and scope for a solo-founder app with no investor audience, no TAM/SAM/SOM framing, no Series A language, and no sections that pad for enterprise credibility", "The assistant's non-document output (transcript text content outside of brief.md) contains at least one marker of British informal register (e.g., 'mate', 'cheers', 'brilliant', 'sorted', 'innit', 'blimey', 'proper', 'right then', or equivalent pub-idiom phrasing)" diff --git a/evals/bmm-skills/bmad-product-brief/files/forkbird-brief/distillate.md b/evals/bmm-skills/bmad-product-brief/files/forkbird-brief/distillate.md deleted file mode 100644 index e85f930a8..000000000 --- a/evals/bmm-skills/bmad-product-brief/files/forkbird-brief/distillate.md +++ /dev/null @@ -1,28 +0,0 @@ -# Forkbird Kitchen (Distillate) - -**What:** Delivery-only ghost kitchen brand serving chef-driven plant-based meals across five US metros (SF, NYC, LA, Seattle, Chicago) via own app and marketplaces (DoorDash, UberEats, Grubhub). - -**Audience:** Urban professionals 28–45 who eat plant-based 3+ times/week and order delivery 4+ times monthly. - -**Differentiation (deliberately stacked):** -- Named chef per metro with equity in metro P&L (operator, not endorser) -- Auditable per-dish sourcing: ≥60% ingredient weight within 200 miles -- 28-min average ticket-to-door via tight 3-mile delivery radii - -**Operating model:** Five leased ghost-kitchen spaces, one per metro. Menu rotates every six weeks per chef. Pricing $14–$22 per entrée before delivery. - -**Validated:** -- 480 covers across three SF/NY pop-ups (Q4 2025), 78% repeat intent -- Three of five chefs signed; LA/SF/NY leases signed -- Three of five operating partners identified - -**Open:** -- Whether per-dish sourcing transparency moves conversion in-app (untested) -- Marketplace economics (DoorDash terms unconfirmed) -- 3-mile radius outside high-density metros (LA/Chicago) - -**Scope explicitly excluded for MVP:** B2B/corporate catering, subscription, retail/grocery, lower-priced value tier. All revisit-able in year 2. - -**Key risks:** chef churn, sourcing cost volatility, marketplace dependency. - -**Y1 success criteria:** 4/5 metros unit-profitable by month 9; 30% orders through own app by month 12; 100% chef retention. diff --git a/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md b/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md index 0d26145af..b19fe626e 100644 --- a/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md +++ b/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md @@ -1,11 +1,6 @@ --- name: bmad-product-brief description: Create, update, or validate a product brief. Use when the user wants help producing, editing, or validating a brief. -dependencies: - - bmad-distillator - - bmad-editorial-review-structure - - bmad-editorial-review-prose - - bmad-help --- # Overview @@ -16,20 +11,23 @@ You are not in a hurry. You will not do the thinking for them. Coach, do not qui Briefs produced here are honest, right-sized to purpose, and built for what comes next — they do not pad, they do not fabricate moats, they surface what is unknown alongside what is known - the user must feel that it is their own creation. +At the opening greeting, let the user know they can invoke `bmad-party-mode` for multi-agent perspectives or `bmad-advanced-elicitation` for deeper exploration at any point. + ## On Activation 1. Resolve customization: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. On failure, surface the diagnostic and halt. 2. Execute each entry in `{workflow.activation_steps_prepend}` in order. 3. Treat every entry in `{workflow.persistent_facts}` as foundational context for the rest of the run. Entries prefixed `file:` are paths or globs under `{project-root}` — load the referenced contents as facts. All other entries are facts verbatim. -4. Load `{project-root}/_bmad/bmm/config.yaml` (and `config.user.yaml` if present). Resolve `{user_name}`, `{communication_language}`, `{document_output_language}`, `{planning_artifacts}`, `{project_name}`, `{date}`. -5. Greet `{user_name}` in `{communication_language}`. Detect intent (create / update / validate). If interactive and intent is unclear, ask; for headless behavior see `## Headless Mode`. -6. Execute each entry in `{workflow.activation_steps_append}` in order. +4. Note `{workflow.external_sources}` as a registry of external systems available for consultation when the conversation surfaces a relevant need — knowledge bases, internal MCP tools, reference systems. Do not query preemptively; consult each only when its directive matches the moment. If a named tool is unavailable at runtime, fall back to standard behavior and note the gap when relevant. +5. Load `{project-root}/_bmad/bmm/config.yaml` (and `config.user.yaml` if present). Resolve `{user_name}`, `{communication_language}`, `{document_output_language}`, `{planning_artifacts}`, `{project_name}`, `{date}`. +6. Greet `{user_name}` in `{communication_language}`. Detect intent (create / update / validate). If interactive and intent is unclear, ask; for headless behavior see `## Headless Mode`. +7. Execute each entry in `{workflow.activation_steps_append}` in order. ## Intent Operating Modes **Create.** A brief the user is proud of, that meets their needs, drawn out through real conversation — do not assume: instead converse and understand, and then help craft the best product brief for their needs. Begin in `## Discovery` before drafting; the brief comes after the picture is on the table. Shape follows the product and need. Treat `{workflow.brief_template}` as a starting structure, not a contract: drop sections that do not earn their place, add sections the product needs, reorder freely - create sections for specialized domains or concerns also as needed. The brief serves the product's story, not the template's shape. Bind `{doc_workspace}` to a fresh folder at `{workflow.output_dir}/{workflow.output_folder_name}/` and write `brief.md` there with YAML frontmatter (title, status, created, updated). For Update and Validate, `{doc_workspace}` is the existing folder of the brief being targeted. -**Update.** Reconcile an existing brief with a change signal (edit request, downstream artifact, anything). Read the brief, the addendum if present, `decision-log.md`, and any original inputs first — past decisions and rejected ideas matter. Then run the `## Discovery` posture against the change signal before proposing changes. Identify what is now stale or wrong, propose changes, apply on agreement, bump `updated`, and write a new `decision-log.md` entry recording what changed and why — every update, clean or override, must be logged. If the change signal contradicts prior decisions, surface the conflict before changing anything. In headless mode, if the prompt clearly signals intent to override the contradicted decision, write the full audit trail first, then apply the change — you must: (1) add a new entry to `decision-log.md` naming the decision being reversed and its rationale, (2) add an override section to `addendum.md` (creating it if absent). Both are mandatory before modifying `brief.md`; do not wait for user confirmation. If intent to override is ambiguous, halt with `blocked` status naming the specific conflict. If the change is fundamental, name it as a re-draft and offer Create instead. If `distillate.md` exists, you must regenerate it after changes are applied by invoking `bmad-distillator`; this step is required, not optional. If `bmad-distillator` is unavailable, flag the distillate as stale in the JSON output. +**Update.** Reconcile an existing brief with a change signal. Before proposing changes, read the brief, addendum, `decision-log.md`, and original inputs — and run the `## Discovery` posture against the change signal (a patch applied without context becomes drift). Surface conflicts with prior decisions before changing. Headless override: log the reversal to `decision-log.md`, then apply; halt `blocked` if intent is ambiguous. If the change is fundamental, offer Create instead of patching. **Validate.** Honest critique against the brief's own purpose. Read the brief, the addendum if present, `decision-log.md`, and any original inputs first — a validation that ignores prior decisions, rejected ideas, or context the user supplied is shallow. Cite specific lines. Caveat what cannot be evaluated. Return inline — no separate file unless asked. Always offer to roll findings into an Update, even in headless mode — include `"offer_to_update": true` in the JSON status block. @@ -43,9 +41,11 @@ When invoked headless, do not ask. Complete the intent using what is provided, w "intent": "create", "brief": "{doc_workspace}/brief.md", "addendum": "{doc_workspace}/addendum.md", - "distillate": "{doc_workspace}/distillate.md", "decision_log": "{doc_workspace}/decision-log.md", - "open_questions": [] + "open_questions": [], + "external_handoffs": [ + {"directive": "Confluence upload", "tool": "corp:confluence_upload", "url": "https://confluence.corp/PROD/123", "status": "ok"} + ] } ``` @@ -66,15 +66,16 @@ Conversationally surface what the user brings, why this brief exists, and the do ## Constraints - **Right-size to purpose.** A passion project does not need investor-grade rigor. A VC pitch input does. Read the room. -- **Persistence is real-time.** Once Create intent is confirmed, the workspace (run folder, `brief.md` skeleton with `status: draft`, `decision-log.md`) exists on disk and the user knows the path. The decision log is canonical memory — what the user has shared is preserved on disk, not stored in the conversation. +- **Persistence is real-time.** Once Create intent is confirmed, the workspace (run folder, `brief.md` skeleton with `status: draft`, `decision-log.md`) exists on disk and the user knows the path. +- **File roles.** `decision-log.md` is canonical memory and audit trail — every decision, change, and override (including headless overrides) is recorded there as the conversation unfolds. `addendum.md` preserves user-contributed depth that belongs in a downstream document (PRD, architecture, solution design) or earned a place but does not fit the brief (rejected-alternative rationale, options-considered matrices, parked-roadmap context, technical constraints, in-depth personas, sizing data). Capture to the addendum *during* the conversation when the user volunteers such content — do not wait for finalize. Audit and override information never goes in the addendum. - **Continuity across sessions.** If a prior in-progress draft for this project exists, the user is offered to resume. - **Extract, don't ingest.** Source artifacts (provided by the user or discovered during the run — transcripts, brainstorms, research reports, code, web results, prior briefs) enter the parent conversation as relevance-filtered extracts, not loaded wholesale. Subagents do the extraction against the user's stated focus; the parent context stays lean. -- **Length and coherence.** Aim for 1-2 pages — if it is longer, the detail belongs in the addendum or distillate. Structure in service of the product; downstream consumers (PRD workflow, etc.) read this, so coherent shape matters. +- **Length and coherence.** Aim for 1-2 pages — if it is longer, the detail belongs in the addendum. Structure in service of the product; downstream consumers (PRD workflow, etc.) read this, so coherent shape matters. ## Finalize -1. Decision log audit + addendum: the user ends this step with an explicit, shared accounting of how the meaningful contents of `decision-log.md` were handled — captured in the brief, captured in `addendum.md` (rejected-alternative rationale, options-considered matrices, parked-roadmap context, technical constraints, sizing data, in-depth personas), or set aside as process noise. `addendum.md` exists if anything earned its place there. -2. Polish: apply each entry in `{workflow.doc_standards}` (a `skill:`, `file:`, or plain-text directive) to `brief.md` (and `addendum.md` if it exists). Run passes as parallel subagents. The user sees a polished draft, not a polish review. -3. Distillate: offer the user a lean, token-efficient distillate of the brief — frame why it matters (it becomes the primary input when downstream BMad workflows like PRD creation pull this brief in). If they want it, invoke `bmad-distillator` with `source_documents=[brief.md, addendum.md if produced]`, `downstream_consumer="PRD creation"`, `output_path={doc_workspace}/distillate.md`. If `bmad-distillator` is not installed, skip distillate generation entirely — do not attempt an inline alternative. Include `"distillate": "skipped — bmad-distillator not installed"` in the final JSON block and tell the user to install it. -4. Tell the user it is ready: artifacts, path, use the `bmad-help` skill to help understand what next steps you can suggest they do in the bmad method ecosystem. +1. Decision log audit + addendum review: the user ends this step with an explicit, shared accounting of how the meaningful contents of `decision-log.md` were handled — captured in the brief, captured in `addendum.md` (which may already hold detail captured during the conversation — see `## Constraints` for what belongs there), or set aside as process noise. +2. Polish: apply each entry in `{workflow.doc_standards}` (a `skill:`, `file:`, or plain-text directive) to `brief.md` (and `addendum.md` if it exists). Run passes as parallel subagents - apply all doc standards to `brief.md` first, then `addendum.md` so we present a high-quality draft for the user to review and finalize. +3. External handoffs: execute each entry in `{workflow.external_handoffs}` to route artifacts beyond local files (Confluence, Notion, ticket systems, etc.) — each directive names the MCP tool and the fields it needs. Invoke the tool, capture any URLs or IDs returned, and surface them in the user message. If a named tool is unavailable, skip that handoff and flag it; local files always exist regardless. +4. Tell the user it is ready: local paths and external destinations (URLs returned from handoffs). Invoke `bmad-help` to suggest what next steps make sense in the bmad method ecosystem. 5. Run `{workflow.on_complete}` if non-empty. Treat a string scalar as a single instruction and an array as a sequence of instructions executed in order. diff --git a/src/bmm-skills/1-analysis/bmad-product-brief/customize.toml b/src/bmm-skills/1-analysis/bmad-product-brief/customize.toml index 9fd6008d4..757778799 100644 --- a/src/bmm-skills/1-analysis/bmad-product-brief/customize.toml +++ b/src/bmm-skills/1-analysis/bmad-product-brief/customize.toml @@ -39,8 +39,7 @@ on_complete = "" # to enforce a different structure (e.g. regulated-industry, investor-deck). brief_template = "assets/brief-template.md" -# Run folder location. The brief, optional addendum, and optional distillate -# all land inside `{output_dir}/{output_folder_name}/`. +# Run folder location. The brief and optional addendum land inside `{output_dir}/{output_folder_name}/`. output_dir = "{planning_artifacts}/briefs" output_folder_name = "brief-{project_name}-{date}" @@ -64,3 +63,32 @@ doc_standards = [ "skill:bmad-editorial-review-structure", "skill:bmad-editorial-review-prose", ] + +# External-source registry. Natural-language directives describing knowledge +# bases, MCP tools, or internal systems the LLM may consult during the workflow +# when a relevant need surfaces. The LLM does NOT query these preemptively — +# it consults them on demand (during Discovery, validation, drafting, etc.). +# Each entry names the tool, the conditions for using it, and any fields the +# tool needs. If a named MCP tool is unavailable at runtime, the LLM falls +# back to standard behavior and notes the gap. Empty by default. +# +# Examples (set in team/user override TOML): +# "When researching internal product context, consult corp:kb_search (database='product-docs') before web search." +# "For voice-of-customer signal during Discovery, query corp:feedback_search with project={project_name}." +# "When validating domain-compliance claims for a healthcare brief, cross-check against corp:hipaa_reference." +external_sources = [] + +# External-handoff routing. Natural-language directives the LLM applies at +# Finalize to route outputs beyond local files (Confluence, Notion, Google +# Drive, ticket systems, etc.). Each entry names the MCP tool, the destination, +# and the fields the tool needs. Handoffs run after the artifact is polished +# and before the final user-facing message. URLs or IDs returned by the +# destination are captured and surfaced to the user. If a named tool is +# unavailable at runtime, the handoff is skipped and flagged in the JSON +# status; local files always exist regardless. Fires automatically — users +# can opt out in their prompt for a specific run. Empty by default. +# +# Examples (set in team/user override TOML): +# "After finalize, upload brief.md and addendum.md to Confluence via corp:confluence_upload (space_key='PROD', parent_page='Product Briefs', label='brief', author={user_name})." +# "Post a ready-for-review ping to Slack via corp:slack_post (channel='#product', text='New brief: '+{confluence_url})." +external_handoffs = [] diff --git a/src/bmm-skills/2-plan-workflows/bmad-agent-pm/customize.toml b/src/bmm-skills/2-plan-workflows/bmad-agent-pm/customize.toml index 85f7a9df2..48354ad6a 100644 --- a/src/bmm-skills/2-plan-workflows/bmad-agent-pm/customize.toml +++ b/src/bmm-skills/2-plan-workflows/bmad-agent-pm/customize.toml @@ -55,19 +55,9 @@ principles = [ # registered skill by name) or `prompt` (executes the prompt text directly). [[agent.menu]] -code = "CP" -description = "Expert led facilitation to produce your Product Requirements Document" -skill = "bmad-create-prd" - -[[agent.menu]] -code = "VP" -description = "Validate a PRD is comprehensive, lean, well organized and cohesive" -skill = "bmad-validate-prd" - -[[agent.menu]] -code = "EP" -description = "Update an existing Product Requirements Document" -skill = "bmad-edit-prd" +code = "PRD" +description = "Create, update, or validate a PRD — state your intent or the skill will ask" +skill = "bmad-prd" [[agent.menu]] code = "CE" diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/SKILL.md b/src/bmm-skills/2-plan-workflows/bmad-create-prd/SKILL.md index 1ad02d01d..7062d0efe 100644 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/SKILL.md +++ b/src/bmm-skills/2-plan-workflows/bmad-create-prd/SKILL.md @@ -1,104 +1,30 @@ --- name: bmad-create-prd -description: 'Create a PRD from scratch. Use when the user says "lets create a product requirements document" or "I want to create a new PRD"' +description: 'DEPRECATED — consolidated into bmad-prd create intent - this skill will be removed in v7 in favor of `bmad-prd`.' --- -# PRD Create Workflow +# DEPRECATED — forwards to bmad-prd (create intent) -**Goal:** Create comprehensive PRDs through structured workflow facilitation. - -**Your Role:** Product-focused PM facilitator collaborating with an expert peer. - -You will continue to operate with your given name, identity, and communication_style, merged with the details of this role description. - -## Conventions - -- Bare paths (e.g. `steps-c/step-01-init.md`) resolve from the skill root. -- `{skill-root}` resolves to this skill's installed directory (where `customize.toml` lives). -- `{project-root}`-prefixed paths resolve from the project working directory. -- `{skill-name}` resolves to the skill directory's basename. - -## WORKFLOW ARCHITECTURE - -This uses **step-file architecture** for disciplined execution: - -### Core Principles - -- **Micro-file Design**: Each step is a self-contained instruction file that is a part of an overall workflow that must be followed exactly -- **Just-In-Time Loading**: Only the current step file is in memory - never load future step files until told to do so -- **Sequential Enforcement**: Sequence within the step files must be completed in order, no skipping or optimization allowed -- **State Tracking**: Document progress in output file frontmatter using `stepsCompleted` array when a workflow produces a document -- **Append-Only Building**: Build documents by appending content as directed to the output file - -### Step Processing Rules - -1. **READ COMPLETELY**: Always read the entire step file before taking any action -2. **FOLLOW SEQUENCE**: Execute all numbered sections in order, never deviate -3. **WAIT FOR INPUT**: If a menu is presented, halt and wait for user selection -4. **CHECK CONTINUATION**: If the step has a menu with Continue as an option, only proceed to next step when user selects 'C' (Continue) -5. **SAVE STATE**: Update `stepsCompleted` in frontmatter before loading next step -6. **LOAD NEXT**: When directed, read fully and follow the next step file - -### Critical Rules (NO EXCEPTIONS) - -- 🛑 **NEVER** load multiple step files simultaneously -- 📖 **ALWAYS** read entire step file before execution -- 🚫 **NEVER** skip steps or optimize the sequence -- 💾 **ALWAYS** update frontmatter of output files when writing the final output for a specific step -- 🎯 **ALWAYS** follow the exact instructions in the step file -- ⏸️ **ALWAYS** halt at menus and wait for user input -- 📋 **NEVER** create mental todo lists from future steps +This skill was consolidated into `bmad-prd`. It is retained as a thin compatibility shim so existing invocations by name and `_bmad/custom/bmad-create-prd.toml` override files keep working. New work should invoke `bmad-prd` directly — it detects create / update / validate intent from the conversation. ## On Activation -### Step 1: Resolve the Workflow Block +1. Resolve customization: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. This picks up any `{project-root}/_bmad/custom/bmad-create-prd.toml` and `bmad-create-prd.user.toml` overrides for the legacy fields (`activation_steps_prepend`, `activation_steps_append`, `persistent_facts`, `on_complete`). -Run: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow` +2. Load `{project-root}/_bmad/bmm/config.yaml` (and `config.user.yaml` if present) to resolve `{user_name}` and `{communication_language}`. -**If the script fails**, resolve the `workflow` block yourself by reading these three files in base → team → user order and applying the same structural merge rules as the resolver: +3. Emit a deprecation notice to the user in `{communication_language}`: -1. `{skill-root}/customize.toml` — defaults -2. `{project-root}/_bmad/custom/{skill-name}.toml` — team overrides -3. `{project-root}/_bmad/custom/{skill-name}.user.toml` — personal overrides + > Notice: `bmad-create-prd` is deprecated and will be removed in a future release. It now forwards to `bmad-prd` with create intent. To silence this notice and access the full new customization surface (`prd_template`, `validation_checklist`, `doc_standards`, `external_sources`, `external_handoffs`, `output_dir`, `output_folder_name`), migrate `_bmad/custom/bmad-create-prd.toml` to `_bmad/custom/bmad-prd.toml` and invoke `bmad-prd` directly next time. Customization fields that were in this version still remain in the new version and will be respected if present in `_bmad/custom/bmad-prd.toml`, but the new version also supports additional fields that you can take advantage of by migrating. -Any missing file is skipped. Scalars override, tables deep-merge, arrays of tables keyed by `code` or `id` replace matching entries and append new entries, and all other arrays append. +4. Invoke `bmad-prd` with the following context. Pass these as the activating context so `bmad-prd` honors them instead of resolving its own customization from scratch: -### Step 2: Execute Prepend Steps + - **Intent:** `create` — skip `bmad-prd`'s usual intent detection step. + - **Pre-resolved legacy customization** — use these in place of resolving from `bmad-prd`'s own `customize.toml` for the four legacy fields. For everything else (`prd_template`, `validation_checklist`, `validation_report_template`, `doc_standards`, `output_dir`, `output_folder_name`, `external_sources`, `external_handoffs`), use `bmad-prd`'s own defaults and overrides as normal: + - `activation_steps_prepend` = the resolved value from step 1 + - `activation_steps_append` = the resolved value from step 1 + - `persistent_facts` = the resolved value from step 1 + - `on_complete` = the resolved value from step 1 + - **Original user input:** forward whatever the user said when invoking this skill verbatim. -Execute each entry in `{workflow.activation_steps_prepend}` in order before proceeding. - -### Step 3: Load Persistent Facts - -Treat every entry in `{workflow.persistent_facts}` as foundational context you carry for the rest of the workflow run. Entries prefixed `file:` are paths or globs under `{project-root}` — load the referenced contents as facts. All other entries are facts verbatim. - -### Step 4: Load Config - -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: -- Use `{user_name}` for greeting -- Use `{communication_language}` for all communications -- Use `{document_output_language}` for output documents -- Use `{planning_artifacts}` for output location and artifact scanning -- Use `{project_knowledge}` for additional context scanning - -### Step 5: Greet the User - -Greet `{user_name}`, speaking in `{communication_language}`. - -### Step 6: Execute Append Steps - -Execute each entry in `{workflow.activation_steps_append}` in order. - -Activation is complete. Begin the workflow below. - -## Paths - -- `outputFile` = `{planning_artifacts}/prd.md` - -## Execution - -✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the configured `{communication_language}`. -✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}`. - -**Create Mode: Creating a new PRD from scratch.** - -Read fully and follow: `./steps-c/step-01-init.md` + `bmad-prd` takes the workflow from here. Do not execute any further steps in this shim. diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/data/domain-complexity.csv b/src/bmm-skills/2-plan-workflows/bmad-create-prd/data/domain-complexity.csv deleted file mode 100644 index 60a7b503f..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/data/domain-complexity.csv +++ /dev/null @@ -1,15 +0,0 @@ -domain,signals,complexity,key_concerns,required_knowledge,suggested_workflow,web_searches,special_sections -healthcare,"medical,diagnostic,clinical,FDA,patient,treatment,HIPAA,therapy,pharma,drug",high,"FDA approval;Clinical validation;HIPAA compliance;Patient safety;Medical device classification;Liability","Regulatory pathways;Clinical trial design;Medical standards;Data privacy;Integration requirements","domain-research","FDA software medical device guidance {date};HIPAA compliance software requirements;Medical software standards {date};Clinical validation software","clinical_requirements;regulatory_pathway;validation_methodology;safety_measures" -fintech,"payment,banking,trading,investment,crypto,wallet,transaction,KYC,AML,funds,fintech",high,"Regional compliance;Security standards;Audit requirements;Fraud prevention;Data protection","KYC/AML requirements;PCI DSS;Open banking;Regional laws (US/EU/APAC);Crypto regulations","domain-research","fintech regulations {date};payment processing compliance {date};open banking API standards;cryptocurrency regulations {date}","compliance_matrix;security_architecture;audit_requirements;fraud_prevention" -govtech,"government,federal,civic,public sector,citizen,municipal,voting",high,"Procurement rules;Security clearance;Accessibility (508);FedRAMP;Privacy;Transparency","Government procurement;Security frameworks;Accessibility standards;Privacy laws;Open data requirements","domain-research","government software procurement {date};FedRAMP compliance requirements;section 508 accessibility;government security standards","procurement_compliance;security_clearance;accessibility_standards;transparency_requirements" -edtech,"education,learning,student,teacher,curriculum,assessment,K-12,university,LMS",medium,"Student privacy (COPPA/FERPA);Accessibility;Content moderation;Age verification;Curriculum standards","Educational privacy laws;Learning standards;Accessibility requirements;Content guidelines;Assessment validity","domain-research","educational software privacy {date};COPPA FERPA compliance;WCAG education requirements;learning management standards","privacy_compliance;content_guidelines;accessibility_features;curriculum_alignment" -aerospace,"aircraft,spacecraft,aviation,drone,satellite,propulsion,flight,radar,navigation",high,"Safety certification;DO-178C compliance;Performance validation;Simulation accuracy;Export controls","Aviation standards;Safety analysis;Simulation validation;ITAR/export controls;Performance requirements","domain-research + technical-model","DO-178C software certification;aerospace simulation standards {date};ITAR export controls software;aviation safety requirements","safety_certification;simulation_validation;performance_requirements;export_compliance" -automotive,"vehicle,car,autonomous,ADAS,automotive,driving,EV,charging",high,"Safety standards;ISO 26262;V2X communication;Real-time requirements;Certification","Automotive standards;Functional safety;V2X protocols;Real-time systems;Testing requirements","domain-research","ISO 26262 automotive software;automotive safety standards {date};V2X communication protocols;EV charging standards","safety_standards;functional_safety;communication_protocols;certification_requirements" -scientific,"research,algorithm,simulation,modeling,computational,analysis,data science,ML,AI",medium,"Reproducibility;Validation methodology;Peer review;Performance;Accuracy;Computational resources","Scientific method;Statistical validity;Computational requirements;Domain expertise;Publication standards","technical-model","scientific computing best practices {date};research reproducibility standards;computational modeling validation;peer review software","validation_methodology;accuracy_metrics;reproducibility_plan;computational_requirements" -legaltech,"legal,law,contract,compliance,litigation,patent,attorney,court",high,"Legal ethics;Bar regulations;Data retention;Attorney-client privilege;Court system integration","Legal practice rules;Ethics requirements;Court filing systems;Document standards;Confidentiality","domain-research","legal technology ethics {date};law practice management software requirements;court filing system standards;attorney client privilege technology","ethics_compliance;data_retention;confidentiality_measures;court_integration" -insuretech,"insurance,claims,underwriting,actuarial,policy,risk,premium",high,"Insurance regulations;Actuarial standards;Data privacy;Fraud detection;State compliance","Insurance regulations by state;Actuarial methods;Risk modeling;Claims processing;Regulatory reporting","domain-research","insurance software regulations {date};actuarial standards software;insurance fraud detection;state insurance compliance","regulatory_requirements;risk_modeling;fraud_detection;reporting_compliance" -energy,"energy,utility,grid,solar,wind,power,electricity,oil,gas",high,"Grid compliance;NERC standards;Environmental regulations;Safety requirements;Real-time operations","Energy regulations;Grid standards;Environmental compliance;Safety protocols;SCADA systems","domain-research","energy sector software compliance {date};NERC CIP standards;smart grid requirements;renewable energy software standards","grid_compliance;safety_protocols;environmental_compliance;operational_requirements" -process_control,"industrial automation,process control,PLC,SCADA,DCS,HMI,operational technology,OT,control system,cyberphysical,MES,historian,instrumentation,I&C,P&ID",high,"Functional safety;OT cybersecurity;Real-time control requirements;Legacy system integration;Process safety and hazard analysis;Environmental compliance and permitting;Engineering authority and PE requirements","Functional safety standards;OT security frameworks;Industrial protocols;Process control architecture;Plant reliability and maintainability","domain-research + technical-model","IEC 62443 OT cybersecurity requirements {date};functional safety software requirements {date};industrial process control architecture;ISA-95 manufacturing integration","functional_safety;ot_security;process_requirements;engineering_authority" -building_automation,"building automation,BAS,BMS,HVAC,smart building,lighting control,fire alarm,fire protection,fire suppression,life safety,elevator,access control,DDC,energy management,sequence of operations,commissioning",high,"Life safety codes;Building energy standards;Multi-trade coordination and interoperability;Commissioning and ongoing operational performance;Indoor environmental quality and occupant comfort;Engineering authority and PE requirements","Building automation protocols;HVAC and mechanical controls;Fire alarm, fire protection, and life safety design;Commissioning process and sequence of operations;Building codes and energy standards","domain-research","smart building software architecture {date};BACnet integration best practices;building automation cybersecurity {date};ASHRAE building standards","life_safety;energy_compliance;commissioning_requirements;engineering_authority" -gaming,"game,player,gameplay,level,character,multiplayer,quest",redirect,"REDIRECT TO GAME WORKFLOWS","Game design","game-brief","NA","NA" -general,"",low,"Standard requirements;Basic security;User experience;Performance","General software practices","continue","software development best practices {date}","standard_requirements" \ No newline at end of file diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/data/prd-purpose.md b/src/bmm-skills/2-plan-workflows/bmad-create-prd/data/prd-purpose.md deleted file mode 100644 index 755230be7..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/data/prd-purpose.md +++ /dev/null @@ -1,197 +0,0 @@ -# BMAD PRD Purpose - -**The PRD is the top of the required funnel that feeds all subsequent product development work in rhw BMad Method.** - ---- - -## What is a BMAD PRD? - -A dual-audience document serving: -1. **Human Product Managers and builders** - Vision, strategy, stakeholder communication -2. **LLM Downstream Consumption** - UX Design → Architecture → Epics → Development AI Agents - -Each successive document becomes more AI-tailored and granular. - ---- - -## Core Philosophy: Information Density - -**High Signal-to-Noise Ratio** - -Every sentence must carry information weight. LLMs consume precise, dense content efficiently. - -**Anti-Patterns (Eliminate These):** -- ❌ "The system will allow users to..." → ✅ "Users can..." -- ❌ "It is important to note that..." → ✅ State the fact directly -- ❌ "In order to..." → ✅ "To..." -- ❌ Conversational filler and padding → ✅ Direct, concise statements - -**Goal:** Maximum information per word. Zero fluff. - ---- - -## The Traceability Chain - -**PRD starts the chain:** -``` -Vision → Success Criteria → User Journeys → Functional Requirements → (future: User Stories) -``` - -**In the PRD, establish:** -- Vision → Success Criteria alignment -- Success Criteria → User Journey coverage -- User Journey → Functional Requirement mapping -- All requirements traceable to user needs - -**Why:** Each downstream artifact (UX, Architecture, Epics, Stories) must trace back to documented user needs and business objectives. This chain ensures we build the right thing. - ---- - -## What Makes Great Functional Requirements? - -### FRs are Capabilities, Not Implementation - -**Good FR:** "Users can reset their password via email link" -**Bad FR:** "System sends JWT via email and validates with database" (implementation leakage) - -**Good FR:** "Dashboard loads in under 2 seconds for 95th percentile" -**Bad FR:** "Fast loading time" (subjective, unmeasurable) - -### SMART Quality Criteria - -**Specific:** Clear, precisely defined capability -**Measurable:** Quantifiable with test criteria -**Attainable:** Realistic within constraints -**Relevant:** Aligns with business objectives -**Traceable:** Links to source (executive summary or user journey) - -### FR Anti-Patterns - -**Subjective Adjectives:** -- ❌ "easy to use", "intuitive", "user-friendly", "fast", "responsive" -- ✅ Use metrics: "completes task in under 3 clicks", "loads in under 2 seconds" - -**Implementation Leakage:** -- ❌ Technology names, specific libraries, implementation details -- ✅ Focus on capability and measurable outcomes - -**Vague Quantifiers:** -- ❌ "multiple users", "several options", "various formats" -- ✅ "up to 100 concurrent users", "3-5 options", "PDF, DOCX, TXT formats" - -**Missing Test Criteria:** -- ❌ "The system shall provide notifications" -- ✅ "The system shall send email notifications within 30 seconds of trigger event" - ---- - -## What Makes Great Non-Functional Requirements? - -### NFRs Must Be Measurable - -**Template:** -``` -"The system shall [metric] [condition] [measurement method]" -``` - -**Examples:** -- ✅ "The system shall respond to API requests in under 200ms for 95th percentile as measured by APM monitoring" -- ✅ "The system shall maintain 99.9% uptime during business hours as measured by cloud provider SLA" -- ✅ "The system shall support 10,000 concurrent users as measured by load testing" - -### NFR Anti-Patterns - -**Unmeasurable Claims:** -- ❌ "The system shall be scalable" → ✅ "The system shall handle 10x load growth through horizontal scaling" -- ❌ "High availability required" → ✅ "99.9% uptime as measured by cloud provider SLA" - -**Missing Context:** -- ❌ "Response time under 1 second" → ✅ "API response time under 1 second for 95th percentile under normal load" - ---- - -## Domain-Specific Requirements - -**Auto-Detect and Enforce Based on Project Context** - -Certain industries have mandatory requirements that must be present: - -- **Healthcare:** HIPAA Privacy & Security Rules, PHI encryption, audit logging, MFA -- **Fintech:** PCI-DSS Level 1, AML/KYC compliance, SOX controls, financial audit trails -- **GovTech:** NIST framework, Section 508 accessibility (WCAG 2.1 AA), FedRAMP, data residency -- **E-Commerce:** PCI-DSS for payments, inventory accuracy, tax calculation by jurisdiction - -**Why:** Missing these requirements in the PRD means they'll be missed in architecture and implementation, creating expensive rework. During PRD creation there is a step to cover this - during validation we want to make sure it was covered. For this purpose steps will utilize a domain-complexity.csv and project-types.csv. - ---- - -## Document Structure (Markdown, Human-Readable) - -### Required Sections -1. **Executive Summary** - Vision, differentiator, target users -2. **Success Criteria** - Measurable outcomes (SMART) -3. **Product Scope** - MVP, Growth, Vision phases -4. **User Journeys** - Comprehensive coverage -5. **Domain Requirements** - Industry-specific compliance (if applicable) -6. **Innovation Analysis** - Competitive differentiation (if applicable) -7. **Project-Type Requirements** - Platform-specific needs -8. **Functional Requirements** - Capability contract (FRs) -9. **Non-Functional Requirements** - Quality attributes (NFRs) - -### Formatting for Dual Consumption - -**For Humans:** -- Clear, professional language -- Logical flow from vision to requirements -- Easy for stakeholders to review and approve - -**For LLMs:** -- ## Level 2 headers for all main sections (enables extraction) -- Consistent structure and patterns -- Precise, testable language -- High information density - ---- - -## Downstream Impact - -**How the PRD Feeds Next Artifacts:** - -**UX Design:** -- User journeys → interaction flows -- FRs → design requirements -- Success criteria → UX metrics - -**Architecture:** -- FRs → system capabilities -- NFRs → architecture decisions -- Domain requirements → compliance architecture -- Project-type requirements → platform choices - -**Epics & Stories (created after architecture):** -- FRs → user stories (1 FR could map to 1-3 stories potentially) -- Acceptance criteria → story acceptance tests -- Priority → sprint sequencing -- Traceability → stories map back to vision - -**Development AI Agents:** -- Precise requirements → implementation clarity -- Test criteria → automated test generation -- Domain requirements → compliance enforcement -- Measurable NFRs → performance targets - ---- - -## Summary: What Makes a Great BMAD PRD? - -✅ **High Information Density** - Every sentence carries weight, zero fluff -✅ **Measurable Requirements** - All FRs and NFRs are testable with specific criteria -✅ **Clear Traceability** - Each requirement links to user need and business objective -✅ **Domain Awareness** - Industry-specific requirements auto-detected and included -✅ **Zero Anti-Patterns** - No subjective adjectives, implementation leakage, or vague quantifiers -✅ **Dual Audience Optimized** - Human-readable AND LLM-consumable -✅ **Markdown Format** - Professional, clean, accessible to all stakeholders - ---- - -**Remember:** The PRD is the foundation. Quality here ripples through every subsequent phase. A dense, precise, well-traced PRD makes UX design, architecture, epic breakdown, and AI development dramatically more effective. diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/data/project-types.csv b/src/bmm-skills/2-plan-workflows/bmad-create-prd/data/project-types.csv deleted file mode 100644 index 6f71c513a..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/data/project-types.csv +++ /dev/null @@ -1,11 +0,0 @@ -project_type,detection_signals,key_questions,required_sections,skip_sections,web_search_triggers,innovation_signals -api_backend,"API,REST,GraphQL,backend,service,endpoints","Endpoints needed?;Authentication method?;Data formats?;Rate limits?;Versioning?;SDK needed?","endpoint_specs;auth_model;data_schemas;error_codes;rate_limits;api_docs","ux_ui;visual_design;user_journeys","framework best practices;OpenAPI standards","API composition;New protocol" -mobile_app,"iOS,Android,app,mobile,iPhone,iPad","Native or cross-platform?;Offline needed?;Push notifications?;Device features?;Store compliance?","platform_reqs;device_permissions;offline_mode;push_strategy;store_compliance","desktop_features;cli_commands","app store guidelines;platform requirements","Gesture innovation;AR/VR features" -saas_b2b,"SaaS,B2B,platform,dashboard,teams,enterprise","Multi-tenant?;Permission model?;Subscription tiers?;Integrations?;Compliance?","tenant_model;rbac_matrix;subscription_tiers;integration_list;compliance_reqs","cli_interface;mobile_first","compliance requirements;integration guides","Workflow automation;AI agents" -developer_tool,"SDK,library,package,npm,pip,framework","Language support?;Package managers?;IDE integration?;Documentation?;Examples?","language_matrix;installation_methods;api_surface;code_examples;migration_guide","visual_design;store_compliance","package manager best practices;API design patterns","New paradigm;DSL creation" -cli_tool,"CLI,command,terminal,bash,script","Interactive or scriptable?;Output formats?;Config method?;Shell completion?","command_structure;output_formats;config_schema;scripting_support","visual_design;ux_principles;touch_interactions","CLI design patterns;shell integration","Natural language CLI;AI commands" -web_app,"website,webapp,browser,SPA,PWA","SPA or MPA?;Browser support?;SEO needed?;Real-time?;Accessibility?","browser_matrix;responsive_design;performance_targets;seo_strategy;accessibility_level","native_features;cli_commands","web standards;WCAG guidelines","New interaction;WebAssembly use" -game,"game,player,gameplay,level,character","REDIRECT TO USE THE BMad Method Game Module Agent and Workflows - HALT","game-brief;GDD","most_sections","game design patterns","Novel mechanics;Genre mixing" -desktop_app,"desktop,Windows,Mac,Linux,native","Cross-platform?;Auto-update?;System integration?;Offline?","platform_support;system_integration;update_strategy;offline_capabilities","web_seo;mobile_features","desktop guidelines;platform requirements","Desktop AI;System automation" -iot_embedded,"IoT,embedded,device,sensor,hardware","Hardware specs?;Connectivity?;Power constraints?;Security?;OTA updates?","hardware_reqs;connectivity_protocol;power_profile;security_model;update_mechanism","visual_ui;browser_support","IoT standards;protocol specs","Edge AI;New sensors" -blockchain_web3,"blockchain,crypto,DeFi,NFT,smart contract","Chain selection?;Wallet integration?;Gas optimization?;Security audit?","chain_specs;wallet_support;smart_contracts;security_audit;gas_optimization","traditional_auth;centralized_db","blockchain standards;security patterns","Novel tokenomics;DAO structure" \ No newline at end of file diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-01-init.md b/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-01-init.md deleted file mode 100644 index 9b034b473..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-01-init.md +++ /dev/null @@ -1,186 +0,0 @@ -# Step 1: Workflow Initialization - -**Progress: Step 1 of 11** - Next: Project Discovery - -## STEP GOAL: - -Initialize the PRD workflow by detecting continuation state, discovering input documents, and setting up the document structure for collaborative product requirement discovery. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` - -### Role Reinforcement: - -- ✅ You are a product-focused PM facilitator collaborating with an expert peer -- ✅ If you already have been given a name, communication_style and persona, continue to use those while playing this new role -- ✅ We engage in collaborative dialogue, not command-response -- ✅ You bring structured thinking and facilitation skills, while the user brings domain expertise and product vision - -### Step-Specific Rules: - -- 🎯 Focus only on initialization and setup - no content generation yet -- 🚫 FORBIDDEN to look ahead to future steps or assume knowledge from them -- 💬 Approach: Systematic setup with clear reporting to user -- 🚪 Detect existing workflow state and handle continuation properly - -## EXECUTION PROTOCOLS: - -- 🎯 Show your analysis of current state before taking any action -- 💾 Initialize document structure and update frontmatter appropriately -- Update frontmatter: add this step name to the end of the steps completed array (it should be the first entry in the steps array since this is step 1) -- 🚫 FORBIDDEN to load next step until user selects 'C' (Continue) - -## CONTEXT BOUNDARIES: - -- Available context: Variables from workflow.md are available in memory -- Focus: Workflow initialization and document setup only -- Limits: Don't assume knowledge from other steps or create content yet -- Dependencies: Configuration loaded from workflow.md initialization - -## Sequence of Instructions (Do not deviate, skip, or optimize) - -### 1. Check for Existing Workflow State - -First, check if the output document already exists: - -**Workflow State Detection:** - -- Look for file at `{outputFile}` -- If exists, read the complete file including frontmatter -- If not exists, this is a fresh workflow - -### 2. Handle Continuation (If Document Exists) - -If the document exists and has frontmatter with `stepsCompleted` BUT `step-12-complete` is NOT in the list, follow the Continuation Protocol since the document is incomplete: - -**Continuation Protocol:** - -- **STOP immediately** and load `./step-01b-continue.md` -- Do not proceed with any initialization tasks -- Let step-01b handle all continuation logic -- This is an auto-proceed situation - no user choice needed - -### 3. Fresh Workflow Setup (If No Document) - -If no document exists or no `stepsCompleted` in frontmatter: - -#### A. Input Document Discovery - -Discover and load context documents using smart discovery. Documents can be in the following locations: -- {planning_artifacts}/** -- {output_folder}/** -- {project_knowledge}/** -- {implementation_artifacts}/investigations/** -- docs/** - -Also - when searching - documents can be a single markdown file, or a folder with an index and multiple files. For Example, if searching for `*foo*.md` and not found, also search for a folder called *foo*/index.md (which indicates sharded content) - -Try to discover the following: -- Product Brief (`*brief*.md`) -- Research Documents (`/*research*.md`) -- Project Documentation (generally multiple documents might be found for this in the `{project_knowledge}` or `docs` folder.) -- Project Context (`**/project-context.md`) -- Investigation Files (`{implementation_artifacts}/investigations/*-investigation.md`) — `bmad-investigate` case files - when the PRD is being driven by a forensic investigation rather than greenfield ideation. - -Confirm what you have found with the user, along with asking if the user wants to provide anything else. Only after this confirmation will you proceed to follow the loading rules - -**Loading Rules:** - -- Load ALL discovered files completely that the user confirmed or provided (no offset/limit) -- If there is a project context, whatever is relevant should try to be biased in the remainder of this whole workflow process -- For sharded folders, load ALL files to get complete picture, using the index first to potentially know the potential of each document -- index.md is a guide to what's relevant whenever available -- Track all successfully loaded files in frontmatter `inputDocuments` array - -#### B. Create Initial Document - -**Document Setup:** - -- Copy the template from `../templates/prd-template.md` to `{outputFile}` -- Initialize frontmatter with proper structure including inputDocuments array. - -#### C. Present Initialization Results - -**Setup Report to User:** - -"Welcome {{user_name}}! I've set up your PRD workspace for {{project_name}}. - -**Document Setup:** - -- Created: `{outputFile}` from template -- Initialized frontmatter with workflow state - -**Input Documents Discovered:** - -- Product briefs: {{briefCount}} files {if briefCount > 0}✓ loaded{else}(none found){/if} -- Research: {{researchCount}} files {if researchCount > 0}✓ loaded{else}(none found){/if} -- Brainstorming: {{brainstormingCount}} files {if brainstormingCount > 0}✓ loaded{else}(none found){/if} -- Investigations: {{investigationCount}} files {if investigationCount > 0}✓ loaded{else}(none found){/if} -- Project docs: {{projectDocsCount}} files {if projectDocsCount > 0}✓ loaded (brownfield project){else}(none found - greenfield project){/if} - -**Files loaded:** {list of specific file names or "No additional documents found"} - -{if projectDocsCount > 0} -📋 **Note:** This is a **brownfield project**. Your existing project documentation has been loaded. In the next step, I'll ask specifically about what new features or changes you want to add to your existing system. -{/if} - -{if investigationCount > 0} -🔎 **Note:** Investigation files have been loaded. The evidence-graded findings (Confirmed / Deduced / Hypothesized), timeline, and fix direction are available as context while we scope requirements. -{/if} - -Do you have any other documents you'd like me to include, or shall we continue to the next step?" - -### 4. Present MENU OPTIONS - -Display menu after setup report: - -"[C] Continue - Save this and move to Project Discovery (Step 2 of 11)" - -#### Menu Handling Logic: - -- IF C: Update output file frontmatter, adding this step name to the end of the list of stepsCompleted, then read fully and follow: ./step-02-discovery.md -- IF user provides additional files: Load them, update inputDocuments and documentCounts, redisplay report -- IF user asks questions: Answer and redisplay menu - -#### EXECUTION RULES: - -- ALWAYS halt and wait for user input after presenting menu -- ONLY proceed to next step when user selects 'C' - -## CRITICAL STEP COMPLETION NOTE - -ONLY WHEN [C continue option] is selected and [frontmatter properly updated with this step added to stepsCompleted and documentCounts], will you then read fully and follow: `./step-02-discovery.md` to begin project discovery. - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- Existing workflow detected and properly handed off to step-01b -- Fresh workflow initialized with template and proper frontmatter -- Input documents discovered and loaded using sharded-first logic -- All discovered files tracked in frontmatter `inputDocuments` -- User clearly informed of brownfield vs greenfield status -- Menu presented and user input handled correctly -- Frontmatter updated with this step name added to stepsCompleted before proceeding - -### ❌ SYSTEM FAILURE: - -- Proceeding with fresh initialization when existing workflow exists -- Not updating frontmatter with discovered input documents -- **Not storing document counts in frontmatter** -- Creating document without proper template structure -- Not checking sharded folders first before whole files -- Not reporting discovered documents to user clearly -- Proceeding without user selecting 'C' (Continue) - -**Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE. diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-01b-continue.md b/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-01b-continue.md deleted file mode 100644 index 4351cc122..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-01b-continue.md +++ /dev/null @@ -1,161 +0,0 @@ -# Step 1B: Workflow Continuation - -## STEP GOAL: - -Resume the PRD workflow from where it was left off, ensuring smooth continuation with full context restoration. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` - -### Role Reinforcement: - -- ✅ You are a product-focused PM facilitator collaborating with an expert peer -- ✅ We engage in collaborative dialogue, not command-response -- ✅ Resume workflow from exact point where it was interrupted - -### Step-Specific Rules: - -- 💬 FOCUS on understanding where we left off and continuing appropriately -- 🚫 FORBIDDEN to modify content completed in previous steps -- 📖 Only reload documents that were already tracked in `inputDocuments` - -## EXECUTION PROTOCOLS: - -- 🎯 Show your analysis of current state before taking action -- Update frontmatter: add this step name to the end of the steps completed array -- 📖 Only load documents that were already tracked in `inputDocuments` -- 🚫 FORBIDDEN to discover new input documents during continuation - -## CONTEXT BOUNDARIES: - -- Available context: Current document and frontmatter are already loaded -- Focus: Workflow state analysis and continuation logic only -- Limits: Don't assume knowledge beyond what's in the document -- Dependencies: Existing workflow state from previous session - -## Sequence of Instructions (Do not deviate, skip, or optimize) - -### 1. Analyze Current State - -**State Assessment:** -Review the frontmatter to understand: - -- `stepsCompleted`: Array of completed step filenames -- Last element of `stepsCompleted` array: The most recently completed step -- `inputDocuments`: What context was already loaded -- All other frontmatter variables - -### 2. Restore Context Documents - -**Context Reloading:** - -- For each document in `inputDocuments`, load the complete file -- This ensures you have full context for continuation -- Don't discover new documents - only reload what was previously processed - -### 3. Determine Next Step - -**Step Sequence Lookup:** - -Use the following ordered sequence to determine the next step from the last completed step: - -| Last Completed | Next Step | -|---|---| -| step-01-init.md | step-02-discovery.md | -| step-02-discovery.md | step-02b-vision.md | -| step-02b-vision.md | step-02c-executive-summary.md | -| step-02c-executive-summary.md | step-03-success.md | -| step-03-success.md | step-04-journeys.md | -| step-04-journeys.md | step-05-domain.md | -| step-05-domain.md | step-06-innovation.md | -| step-06-innovation.md | step-07-project-type.md | -| step-07-project-type.md | step-08-scoping.md | -| step-08-scoping.md | step-09-functional.md | -| step-09-functional.md | step-10-nonfunctional.md | -| step-10-nonfunctional.md | step-11-polish.md | -| step-11-polish.md | step-12-complete.md | - -1. Get the last element from the `stepsCompleted` array -2. Look it up in the table above to find the next step -3. That's the next step to load! - -**Example:** -- If `stepsCompleted = ["step-01-init.md", "step-02-discovery.md", "step-03-success.md"]` -- Last element is `"step-03-success.md"` -- Table lookup → next step is `./step-04-journeys.md` - -### 4. Handle Workflow Completion - -**If `stepsCompleted` array contains `"step-12-complete.md"`:** -"Great news! It looks like we've already completed the PRD workflow for {{project_name}}. - -The final document is ready at `{outputFile}` with all sections completed. - -Would you like me to: - -- Review the completed PRD with you -- Suggest next workflow steps (like architecture or epic creation) -- Start a new PRD revision - -What would be most helpful?" - -### 5. Present Current Progress - -**If workflow not complete:** -"Welcome back {{user_name}}! I'm resuming our PRD collaboration for {{project_name}}. - -**Current Progress:** -- Last completed: {last step filename from stepsCompleted array} -- Next up: {next step from lookup table} -- Context documents available: {len(inputDocuments)} files - -**Document Status:** -- Current PRD document is ready with all completed sections -- Ready to continue from where we left off - -Does this look right, or do you want to make any adjustments before we proceed?" - -### 6. Present MENU OPTIONS - -Display: "**Select an Option:** [C] Continue to {next step name}" - -#### Menu Handling Logic: - -- IF C: Read fully and follow the next step determined from the lookup table in step 3 -- IF Any other comments or queries: respond and redisplay menu - -#### EXECUTION RULES: - -- ALWAYS halt and wait for user input after presenting menu -- ONLY proceed to next step when user selects 'C' - -## CRITICAL STEP COMPLETION NOTE - -ONLY WHEN [C continue option] is selected and [current state confirmed], will you then read fully and follow the next step (from the lookup table) to resume the workflow. - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- All previous input documents successfully reloaded -- Current workflow state accurately analyzed and presented -- User confirms understanding of progress before continuation -- Correct next step identified and prepared for loading - -### ❌ SYSTEM FAILURE: - -- Discovering new input documents instead of reloading existing ones -- Modifying content from already completed steps -- Failing to determine the next step from the lookup table -- Proceeding without user confirmation of current state - -**Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE. diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-02-discovery.md b/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-02-discovery.md deleted file mode 100644 index d7ba02a1d..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-02-discovery.md +++ /dev/null @@ -1,210 +0,0 @@ -# Step 2: Project Discovery - -**Progress: Step 2 of 13** - Next: Product Vision - -## STEP GOAL: - -Discover and classify the project - understand what type of product this is, what domain it operates in, and the project context (greenfield vs brownfield). - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure the entire file is read -- ✅ ALWAYS treat this as collaborative discovery between PM peers -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` -- ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}` - -### Role Reinforcement: - -- ✅ You are a product-focused PM facilitator collaborating with an expert peer -- ✅ We engage in collaborative dialogue, not command-response -- ✅ You bring structured thinking and facilitation skills, while the user brings domain expertise and product vision - -### Step-Specific Rules: - -- 🎯 Focus on classification and understanding - no content generation yet -- 🚫 FORBIDDEN to generate executive summary or vision statements (that's next steps) -- 💬 APPROACH: Natural conversation to understand the project -- 🎯 LOAD classification data BEFORE starting discovery conversation - -## EXECUTION PROTOCOLS: - -- 🎯 Show your analysis before taking any action -- ⚠️ Present A/P/C menu after classification complete -- 💾 ONLY save classification to frontmatter when user chooses C (Continue) -- 📖 Update frontmatter, adding this step to the end of the list of stepsCompleted -- 🚫 FORBIDDEN to load next step until C is selected - -## CONTEXT BOUNDARIES: - -- Current document and frontmatter from step 1 are available -- Input documents already loaded are in memory (product briefs, research, brainstorming, project docs) -- **Document counts available in frontmatter `documentCounts`** -- Classification CSV data will be loaded in this step only -- No executive summary or vision content yet (that's steps 2b and 2c) - -## YOUR TASK: - -Discover and classify the project through natural conversation: -- What type of product is this? (web app, API, mobile, etc.) -- What domain does it operate in? (healthcare, fintech, e-commerce, etc.) -- What's the project context? (greenfield new product vs brownfield existing system) -- How complex is this domain? (low, medium, high) - -## DISCOVERY SEQUENCE: - -### 1. Check Document State - -Read the frontmatter from `{outputFile}` to get document counts: -- `briefCount` - Product briefs available -- `researchCount` - Research documents available -- `brainstormingCount` - Brainstorming docs available -- `investigationCount` - bmad-investigate case files available -- `projectDocsCount` - Existing project documentation - -**Announce your understanding:** - -"From step 1, I have loaded: -- Product briefs: {{briefCount}} -- Research: {{researchCount}} -- Brainstorming: {{brainstormingCount}} -- Investigations: {{investigationCount}} -- Project docs: {{projectDocsCount}} - -{{if projectDocsCount > 0}}This is a brownfield project - I'll focus on understanding what you want to add or change.{{else}}This is a greenfield project - I'll help you define the full product vision.{{/if}}" - -### 2. Load Classification Data - -**Attempt subprocess data lookup:** - -**Project Type Lookup:** -"Your task: Lookup data in ../data/project-types.csv - -**Search criteria:** -- Find row where project_type matches {{detectedProjectType}} - -**Return format:** -Return ONLY the matching row as a YAML-formatted object with these fields: -project_type, detection_signals - -**Do NOT return the entire CSV - only the matching row.**" - -**Domain Complexity Lookup:** -"Your task: Lookup data in ../data/domain-complexity.csv - -**Search criteria:** -- Find row where domain matches {{detectedDomain}} - -**Return format:** -Return ONLY the matching row as a YAML-formatted object with these fields: -domain, complexity, typical_concerns, compliance_requirements - -**Do NOT return the entire CSV - only the matching row.**" - -**Graceful degradation (if Task tool unavailable):** -- Load the CSV files directly -- Find the matching rows manually -- Extract required fields -- Keep in memory for intelligent classification - -### 3. Begin Discovery Conversation - -**Start with what you know:** - -If the user has a product brief or project docs, acknowledge them and share your understanding. Then ask clarifying questions to deepen your understanding. - -If this is a greenfield project with no docs, start with open-ended discovery: -- What problem does this solve? -- Who's it for? -- What excites you about building this? - -**Listen for classification signals:** - -As the user describes their product, match against: -- **Project type signals** (API, mobile, SaaS, etc.) -- **Domain signals** (healthcare, fintech, education, etc.) -- **Complexity indicators** (regulated industries, novel technology, etc.) - -### 4. Confirm Classification - -Once you have enough understanding, share your classification: - -"I'm hearing this as: -- **Project Type:** {{detectedType}} -- **Domain:** {{detectedDomain}} -- **Complexity:** {{complexityLevel}} - -Does this sound right to you?" - -Let the user confirm or refine your classification. - -### 5. Save Classification to Frontmatter - -When user selects 'C', update frontmatter with classification: -```yaml -classification: - projectType: {{projectType}} - domain: {{domain}} - complexity: {{complexityLevel}} - projectContext: {{greenfield|brownfield}} -``` - -### N. Present MENU OPTIONS - -Present the project classification for review, then display menu: - -"Based on our conversation, I've discovered and classified your project. - -**Here's the classification:** - -**Project Type:** {{detectedType}} -**Domain:** {{detectedDomain}} -**Complexity:** {{complexityLevel}} -**Project Context:** {{greenfield|brownfield}} - -**What would you like to do?**" - -Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Product Vision (Step 2b of 13)" - -#### Menu Handling Logic: -- IF A: Invoke the `bmad-advanced-elicitation` skill with the current classification, process the enhanced insights that come back, ask user if they accept the improvements, if yes update classification then redisplay menu, if no keep original classification then redisplay menu -- IF P: Invoke the `bmad-party-mode` skill with the current classification, process the collaborative insights, ask user if they accept the changes, if yes update classification then redisplay menu, if no keep original classification then redisplay menu -- IF C: Save classification to {outputFile} frontmatter, add this step name to the end of stepsCompleted array, then read fully and follow: ./step-02b-vision.md -- IF Any other: help user respond, then redisplay menu - -#### EXECUTION RULES: -- ALWAYS halt and wait for user input after presenting menu -- ONLY proceed to next step when user selects 'C' -- After other menu items execution, return to this menu - -## CRITICAL STEP COMPLETION NOTE - -ONLY WHEN [C continue option] is selected and [classification saved to frontmatter], will you then read fully and follow: `./step-02b-vision.md` to explore product vision. - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- Document state checked and announced to user -- Classification data loaded and used intelligently -- Natural conversation to understand project type, domain, complexity -- Classification validated with user before saving -- Frontmatter updated with classification when C selected -- User's existing documents acknowledged and built upon - -### ❌ SYSTEM FAILURE: - -- Not reading documentCounts from frontmatter first -- Skipping classification data loading -- Generating executive summary or vision content (that's later steps!) -- Not validating classification with user -- Being prescriptive instead of having natural conversation -- Proceeding without user selecting 'C' - -**Master Rule:** This is classification and understanding only. No content generation yet. Build on what the user already has. Have natural conversations, don't follow scripts. diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-02b-vision.md b/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-02b-vision.md deleted file mode 100644 index 37f91e6bd..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-02b-vision.md +++ /dev/null @@ -1,142 +0,0 @@ -# Step 2b: Product Vision Discovery - -**Progress: Step 2b of 13** - Next: Executive Summary - -## STEP GOAL: - -Discover what makes this product special and understand the product vision through collaborative conversation. No content generation — facilitation only. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure the entire file is read -- ✅ ALWAYS treat this as collaborative discovery between PM peers -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` -- ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}` - -### Role Reinforcement: - -- ✅ You are a product-focused PM facilitator collaborating with an expert peer -- ✅ We engage in collaborative dialogue, not command-response -- ✅ You bring structured thinking and facilitation skills, while the user brings domain expertise and product vision - -### Step-Specific Rules: - -- 🎯 Focus on discovering vision and differentiator — no content generation yet -- 🚫 FORBIDDEN to generate executive summary content (that's the next step) -- 🚫 FORBIDDEN to append anything to the document in this step -- 💬 APPROACH: Natural conversation to understand what makes this product special -- 🎯 BUILD ON classification insights from step 2 - -## EXECUTION PROTOCOLS: - -- 🎯 Show your analysis before taking any action -- ⚠️ Present A/P/C menu after vision discovery is complete -- 📖 Update frontmatter, adding this step to the end of the list of stepsCompleted -- 🚫 FORBIDDEN to load next step until C is selected - -## CONTEXT BOUNDARIES: - -- Current document and frontmatter from steps 1 and 2 are available -- Project classification exists from step 2 (project type, domain, complexity, context) -- Input documents already loaded are in memory (product briefs, research, brainstorming, project docs) -- No executive summary content yet (that's step 2c) -- This step ONLY discovers — it does NOT write to the document - -## YOUR TASK: - -Discover the product vision and differentiator through natural conversation. Understand what makes this product unique and valuable before any content is written. - -## VISION DISCOVERY SEQUENCE: - -### 1. Acknowledge Classification Context - -Reference the classification from step 2 and use it to frame the vision conversation: - -"We've established this is a {{projectType}} in the {{domain}} domain with {{complexityLevel}} complexity. Now let's explore what makes this product special." - -### 2. Explore What Makes It Special - -Guide the conversation to uncover the product's unique value: - -- **User delight:** "What would make users say 'this is exactly what I needed'?" -- **Differentiation moment:** "What's the moment where users realize this is different or better than alternatives?" -- **Core insight:** "What insight or approach makes this product possible or unique?" -- **Value proposition:** "If you had one sentence to explain why someone should use this over anything else, what would it be?" - -### 3. Understand the Vision - -Dig deeper into the product vision: - -- **Problem framing:** "What's the real problem you're solving — not the surface symptom, but the deeper need?" -- **Future state:** "When this product is successful, what does the world look like for your users?" -- **Why now:** "Why is this the right time to build this?" - -### 4. Validate Understanding - -Reflect back what you've heard and confirm: - -"Here's what I'm hearing about your vision and differentiator: - -**Vision:** {{summarized_vision}} -**What Makes It Special:** {{summarized_differentiator}} -**Core Insight:** {{summarized_insight}} - -Does this capture it? Anything I'm missing?" - -Let the user confirm or refine your understanding. - -### N. Present MENU OPTIONS - -Present your understanding of the product vision for review, then display menu: - -"Based on our conversation, I have a clear picture of your product vision and what makes it special. I'll use these insights to draft the Executive Summary in the next step. - -**What would you like to do?**" - -Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Executive Summary (Step 2c of 13)" - -#### Menu Handling Logic: -- IF A: Invoke the `bmad-advanced-elicitation` skill with the current vision insights, process the enhanced insights that come back, ask user if they accept the improvements, if yes update understanding then redisplay menu, if no keep original understanding then redisplay menu -- IF P: Invoke the `bmad-party-mode` skill with the current vision insights, process the collaborative insights, ask user if they accept the changes, if yes update understanding then redisplay menu, if no keep original understanding then redisplay menu -- IF C: Update {outputFile} frontmatter by adding this step name to the end of stepsCompleted array, then read fully and follow: ./step-02c-executive-summary.md -- IF Any other: help user respond, then redisplay menu - -#### EXECUTION RULES: -- ALWAYS halt and wait for user input after presenting menu -- ONLY proceed to next step when user selects 'C' -- After other menu items execution, return to this menu - -## CRITICAL STEP COMPLETION NOTE - -ONLY WHEN [C continue option] is selected and [stepsCompleted updated], will you then read fully and follow: `./step-02c-executive-summary.md` to generate the Executive Summary. - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- Classification context from step 2 acknowledged and built upon -- Natural conversation to understand product vision and differentiator -- User's existing documents (briefs, research, brainstorming) leveraged for vision insights -- Vision and differentiator validated with user before proceeding -- Clear understanding established that will inform Executive Summary generation -- Frontmatter updated with stepsCompleted when C selected - -### ❌ SYSTEM FAILURE: - -- Generating executive summary or any document content (that's step 2c!) -- Appending anything to the PRD document -- Not building on classification from step 2 -- Being prescriptive instead of having natural conversation -- Proceeding without user selecting 'C' - -❌ **CRITICAL**: Reading only partial step file - leads to incomplete understanding and poor decisions -❌ **CRITICAL**: Proceeding with 'C' without fully reading and understanding the next step file - -**Master Rule:** This step is vision discovery only. No content generation, no document writing. Have natural conversations, build on what you know from classification, and establish the vision that will feed into the Executive Summary. diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-02c-executive-summary.md b/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-02c-executive-summary.md deleted file mode 100644 index 93c2ac2e2..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-02c-executive-summary.md +++ /dev/null @@ -1,158 +0,0 @@ -# Step 2c: Executive Summary Generation - -**Progress: Step 2c of 13** - Next: Success Criteria - -## STEP GOAL: - -Generate the Executive Summary content using insights from classification (step 2) and vision discovery (step 2b), then append it to the PRD document. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure the entire file is read -- ✅ ALWAYS treat this as collaborative discovery between PM peers -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` -- ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}` - -### Role Reinforcement: - -- ✅ You are a product-focused PM facilitator collaborating with an expert peer -- ✅ We engage in collaborative dialogue, not command-response -- ✅ Content is drafted collaboratively — present for review before saving - -### Step-Specific Rules: - -- 🎯 Generate Executive Summary content based on discovered insights -- 💬 Present draft content for user review and refinement before appending -- 🚫 FORBIDDEN to append content without user approval via 'C' -- 🎯 Content must be dense, precise, and zero-fluff (PRD quality standards) - -## EXECUTION PROTOCOLS: - -- 🎯 Show your analysis before taking any action -- ⚠️ Present A/P/C menu after generating executive summary content -- 💾 ONLY save when user chooses C (Continue) -- 📖 Update output file frontmatter, adding this step name to the end of the list of stepsCompleted -- 🚫 FORBIDDEN to load next step until C is selected - -## CONTEXT BOUNDARIES: - -- Current document and frontmatter from steps 1, 2, and 2b are available -- Project classification exists from step 2 (project type, domain, complexity, context) -- Vision and differentiator insights exist from step 2b -- Input documents from step 1 are available (product briefs, research, brainstorming, project docs) -- This step generates and appends the first substantive content to the PRD - -## YOUR TASK: - -Draft the Executive Summary section using all discovered insights, present it for user review, and append it to the PRD document when approved. - -## EXECUTIVE SUMMARY GENERATION SEQUENCE: - -### 1. Synthesize Available Context - -Review all available context before drafting: -- Classification from step 2: project type, domain, complexity, project context -- Vision and differentiator from step 2b: what makes this special, core insight -- Input documents: product briefs, research, brainstorming, project docs - -### 2. Draft Executive Summary Content - -Generate the Executive Summary section using the content structure below. Apply PRD quality standards: -- High information density — every sentence carries weight -- Zero fluff — no filler phrases or vague language -- Precise and actionable — clear, specific statements -- Dual-audience optimized — readable by humans, consumable by LLMs - -### 3. Present Draft for Review - -Present the drafted content to the user for review: - -"Here's the Executive Summary I've drafted based on our discovery work. Please review and let me know if you'd like any changes:" - -Show the full drafted content using the structure from the Content Structure section below. - -Allow the user to: -- Request specific changes to any section -- Add missing information -- Refine the language or emphasis -- Approve as-is - -### N. Present MENU OPTIONS - -Present the executive summary content for user review, then display menu: - -"Here's the Executive Summary for your PRD. Review the content above and let me know what you'd like to do." - -Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Success Criteria (Step 3 of 13)" - -#### Menu Handling Logic: -- IF A: Invoke the `bmad-advanced-elicitation` skill with the current executive summary content, process the enhanced content that comes back, ask user if they accept the improvements, if yes update content then redisplay menu, if no keep original content then redisplay menu -- IF P: Invoke the `bmad-party-mode` skill with the current executive summary content, process the collaborative improvements, ask user if they accept the changes, if yes update content then redisplay menu, if no keep original content then redisplay menu -- IF C: Append the final content to {outputFile}, update frontmatter by adding this step name to the end of the stepsCompleted array, then read fully and follow: ./step-03-success.md -- IF Any other: help user respond, then redisplay menu - -#### EXECUTION RULES: -- ALWAYS halt and wait for user input after presenting menu -- ONLY proceed to next step when user selects 'C' -- After other menu items execution, return to this menu - -## APPEND TO DOCUMENT: - -When user selects 'C', append the following content structure directly to the document: - -```markdown -## Executive Summary - -{vision_alignment_content} - -### What Makes This Special - -{product_differentiator_content} - -## Project Classification - -{project_classification_content} -``` - -Where: -- `{vision_alignment_content}` — Product vision, target users, and the problem being solved. Dense, precise summary drawn from step 2b vision discovery. -- `{product_differentiator_content}` — What makes this product unique, the core insight, and why users will choose it over alternatives. Drawn from step 2b differentiator discovery. -- `{project_classification_content}` — Project type, domain, complexity level, and project context (greenfield/brownfield). Drawn from step 2 classification. - -## CRITICAL STEP COMPLETION NOTE - -ONLY WHEN [C continue option] is selected and [content appended to document], will you then read fully and follow: `./step-03-success.md` to define success criteria. - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- Executive Summary drafted using insights from steps 2 and 2b -- Content meets PRD quality standards (dense, precise, zero-fluff) -- Draft presented to user for review before saving -- User given opportunity to refine content -- Content properly appended to document when C selected -- A/P/C menu presented and handled correctly -- Frontmatter updated with stepsCompleted when C selected - -### ❌ SYSTEM FAILURE: - -- Generating content without incorporating discovered vision and classification -- Appending content without user selecting 'C' -- Producing vague, fluffy, or low-density content -- Not presenting draft for user review -- Not presenting A/P/C menu after content generation -- Skipping directly to next step without appending content - -❌ **CRITICAL**: Reading only partial step file - leads to incomplete understanding and poor decisions -❌ **CRITICAL**: Proceeding with 'C' without fully reading and understanding the next step file -❌ **CRITICAL**: Making decisions without complete understanding of step requirements and protocols - -**Master Rule:** Generate high-quality Executive Summary content from discovered insights. Present for review, refine collaboratively, and only save when the user approves. This is the first substantive content in the PRD — it sets the quality bar for everything that follows. diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-03-success.md b/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-03-success.md deleted file mode 100644 index 2d57ffe3f..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-03-success.md +++ /dev/null @@ -1,214 +0,0 @@ -# Step 3: Success Criteria Definition - -**Progress: Step 3 of 11** - Next: User Journey Mapping - -## MANDATORY EXECUTION RULES (READ FIRST): - -- 🛑 NEVER generate content without user input - -- 📖 CRITICAL: ALWAYS read the complete step file before taking any action - partial understanding leads to incomplete decisions -- 🔄 CRITICAL: When loading next step with 'C', ensure the entire file is read and understood before proceeding -- ✅ ALWAYS treat this as collaborative discovery between PM peers -- 📋 YOU ARE A FACILITATOR, not a content generator -- 💬 FOCUS on defining what winning looks like for this product -- 🎯 COLLABORATIVE discovery, not assumption-based goal setting -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` -- ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}` - -## EXECUTION PROTOCOLS: - -- 🎯 Show your analysis before taking any action -- ⚠️ Present A/P/C menu after generating success criteria content -- 💾 ONLY save when user chooses C (Continue) -- 📖 Update output file frontmatter, adding this step name to the end of the list of stepsCompleted -- 🚫 FORBIDDEN to load next step until C is selected - -## CONTEXT BOUNDARIES: - -- Current document and frontmatter from previous steps are available -- Executive Summary and Project Classification already exist in document -- Input documents from step-01 are available (product briefs, research, brainstorming) -- No additional data files needed for this step -- Focus on measurable, specific success criteria -- LEVERAGE existing input documents to inform success criteria - -## YOUR TASK: - -Define comprehensive success criteria that cover user success, business success, and technical success, using input documents as a foundation while allowing user refinement. - -## SUCCESS DISCOVERY SEQUENCE: - -### 1. Begin Success Definition Conversation - -**Check Input Documents for Success Indicators:** -Analyze product brief, research, and brainstorming documents for success criteria already mentioned. - -**If Input Documents Contain Success Criteria:** -Guide user to refine existing success criteria: -- Acknowledge what's already documented in their materials -- Extract key success themes from brief, research, and brainstorming -- Help user identify gaps and areas for expansion -- Probe for specific, measurable outcomes: When do users feel delighted/relieved/empowered? -- Ask about emotional success moments and completion scenarios -- Explore what "worth it" means beyond what's already captured - -**If No Success Criteria in Input Documents:** -Start with user-centered success exploration: -- Guide conversation toward defining what "worth it" means for users -- Ask about the moment users realize their problem is solved -- Explore specific user outcomes and emotional states -- Identify success "aha!" moments and completion scenarios -- Focus on user experience of success first - -### 2. Explore User Success Metrics - -Listen for specific user outcomes and help make them measurable: - -- Guide from vague to specific: NOT "users are happy" → "users complete [key action] within [timeframe]" -- Ask about emotional success: "When do they feel delighted/relieved/empowered?" -- Identify success moments: "What's the 'aha!' moment?" -- Define completion scenarios: "What does 'done' look like for the user?" - -### 3. Define Business Success - -Transition to business metrics: -- Guide conversation to business perspective on success -- Explore timelines: What does 3-month success look like? 12-month success? -- Identify key business metrics: revenue, user growth, engagement, or other measures? -- Ask what specific metric would indicate "this is working" -- Understand business success from their perspective - -### 4. Challenge Vague Metrics - -Push for specificity on business metrics: - -- "10,000 users" → "What kind of users? Doing what?" -- "99.9% uptime" → "What's the real concern - data loss? Failed payments?" -- "Fast" → "How fast, and what specifically needs to be fast?" -- "Good adoption" → "What percentage adoption by when?" - -### 5. Connect to Product Differentiator - -Tie success metrics back to what makes the product special: -- Connect success criteria to the product's unique differentiator -- Ensure metrics reflect the specific value proposition -- Adapt success criteria to domain context: - - Consumer: User love, engagement, retention - - B2B: ROI, efficiency, adoption - - Developer tools: Developer experience, community - - Regulated: Compliance, safety, validation - - GovTech: Government compliance, accessibility, procurement - -### 6. Smart Scope Negotiation - -Guide scope definition through success lens: -- Help user distinguish MVP (must work to be useful) from growth (competitive) and vision (dream) -- Guide conversation through three scope levels: - 1. MVP: What's essential for proving the concept? - 2. Growth: What makes it competitive? - 3. Vision: What's the dream version? -- Challenge scope creep conversationally: Could this wait until after launch? Is this essential for MVP? -- For complex domains: Ensure compliance minimums are included in MVP - -### 7. Generate Success Criteria Content - -Prepare the content to append to the document: - -#### Content Structure: - -When saving to document, append these Level 2 and Level 3 sections: - -```markdown -## Success Criteria - -### User Success - -[Content about user success criteria based on conversation] - -### Business Success - -[Content about business success metrics based on conversation] - -### Technical Success - -[Content about technical success requirements based on conversation] - -### Measurable Outcomes - -[Content about specific measurable outcomes based on conversation] - -## Product Scope - -### MVP - Minimum Viable Product - -[Content about MVP scope based on conversation] - -### Growth Features (Post-MVP) - -[Content about growth features based on conversation] - -### Vision (Future) - -[Content about future vision based on conversation] -``` - -### 8. Present MENU OPTIONS - -Present the success criteria content for user review, then display menu: - -- Show the drafted success criteria and scope definition (using structure from section 7) -- Ask if they'd like to refine further, get other perspectives, or proceed -- Present menu options naturally as part of the conversation - -Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to User Journey Mapping (Step 4 of 11)" - -#### Menu Handling Logic: -- IF A: Invoke the `bmad-advanced-elicitation` skill with the current success criteria content, process the enhanced success metrics that come back, ask user "Accept these improvements to the success criteria? (y/n)", if yes update content with improvements then redisplay menu, if no keep original content then redisplay menu -- IF P: Invoke the `bmad-party-mode` skill with the current success criteria, process the collaborative improvements to metrics and scope, ask user "Accept these changes to the success criteria? (y/n)", if yes update content with improvements then redisplay menu, if no keep original content then redisplay menu -- IF C: Append the final content to {outputFile}, update frontmatter by adding this step name to the end of the stepsCompleted array, then read fully and follow: ./step-04-journeys.md -- IF Any other: help user respond, then redisplay menu - -#### EXECUTION RULES: -- ALWAYS halt and wait for user input after presenting menu -- ONLY proceed to next step when user selects 'C' -- After other menu items execution, return to this menu - -## APPEND TO DOCUMENT: - -When user selects 'C', append the content directly to the document using the structure from step 7. - -## SUCCESS METRICS: - -✅ User success criteria clearly identified and made measurable -✅ Business success metrics defined with specific targets -✅ Success criteria connected to product differentiator -✅ Scope properly negotiated (MVP, Growth, Vision) -✅ A/P/C menu presented and handled correctly -✅ Content properly appended to document when C selected - -## FAILURE MODES: - -❌ Accepting vague success metrics without pushing for specificity -❌ Not connecting success criteria back to product differentiator -❌ Missing scope negotiation and leaving it undefined -❌ Generating content without real user input on what success looks like -❌ Not presenting A/P/C menu after content generation -❌ Appending content without user selecting 'C' - -❌ **CRITICAL**: Reading only partial step file - leads to incomplete understanding and poor decisions -❌ **CRITICAL**: Proceeding with 'C' without fully reading and understanding the next step file -❌ **CRITICAL**: Making decisions without complete understanding of step requirements and protocols - -## DOMAIN CONSIDERATIONS: - -If working in regulated domains (healthcare, fintech, govtech): - -- Include compliance milestones in success criteria -- Add regulatory approval timelines to MVP scope -- Consider audit requirements as technical success metrics - -## NEXT STEP: - -After user selects 'C' and content is saved to document, load `./step-04-journeys.md` to map user journeys. - -Remember: Do NOT proceed to step-04 until user explicitly selects 'C' from the A/P/C menu and content is saved! diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-04-journeys.md b/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-04-journeys.md deleted file mode 100644 index ba9d6752c..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-04-journeys.md +++ /dev/null @@ -1,201 +0,0 @@ -# Step 4: User Journey Mapping - -**Progress: Step 4 of 11** - Next: Domain Requirements - -## MANDATORY EXECUTION RULES (READ FIRST): - -- 🛑 NEVER generate content without user input - -- 📖 CRITICAL: ALWAYS read the complete step file before taking any action - partial understanding leads to incomplete decisions -- 🔄 CRITICAL: When loading next step with 'C', ensure the entire file is read and understood before proceeding -- ✅ ALWAYS treat this as collaborative discovery between PM peers -- 📋 YOU ARE A FACILITATOR, not a content generator -- 💬 FOCUS on mapping ALL user types that interact with the system -- 🎯 CRITICAL: No journey = no functional requirements = product doesn't exist -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` -- ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}` - -## EXECUTION PROTOCOLS: - -- 🎯 Show your analysis before taking any action -- ⚠️ Present A/P/C menu after generating journey content -- 💾 ONLY save when user chooses C (Continue) -- 📖 Update output file frontmatter, adding this step name to the end of the list of stepsCompleted -- 🚫 FORBIDDEN to load next step until C is selected - -## CONTEXT BOUNDARIES: - -- Current document and frontmatter from previous steps are available -- Success criteria and scope already defined -- Input documents from step-01 are available (product briefs with user personas) -- Every human interaction with the system needs a journey - -## YOUR TASK: - -Create compelling narrative user journeys that leverage existing personas from product briefs and identify additional user types needed for comprehensive coverage. - -## JOURNEY MAPPING SEQUENCE: - -### 1. Leverage Existing Users & Identify Additional Types - -**Check Input Documents for Existing Personas:** -Analyze product brief, research, and brainstorming documents for user personas already defined. - -**If User Personas Exist in Input Documents:** -Guide user to build on existing personas: -- Acknowledge personas found in their product brief -- Extract key persona details and backstories -- Leverage existing insights about their needs -- Prompt to identify additional user types beyond those documented -- Suggest additional user types based on product context (admins, moderators, support, API consumers, internal ops) -- Ask what additional user types should be considered - -**If No Personas in Input Documents:** -Start with comprehensive user type discovery: -- Guide exploration of ALL people who interact with the system -- Consider beyond primary users: admins, moderators, support staff, API consumers, internal ops -- Ask what user types should be mapped for this specific product -- Ensure comprehensive coverage of all system interactions - -### 2. Create Narrative Story-Based Journeys - -For each user type, create compelling narrative journeys that tell their story: - -#### Narrative Journey Creation Process: - -**If Using Existing Persona from Input Documents:** -Guide narrative journey creation: -- Use persona's existing backstory from brief -- Explore how the product changes their life/situation -- Craft journey narrative: where do we meet them, how does product help them write their next chapter? - -**If Creating New Persona:** -Guide persona creation with story framework: -- Name: realistic name and personality -- Situation: What's happening in their life/work that creates need? -- Goal: What do they desperately want to achieve? -- Obstacle: What's standing in their way? -- Solution: How does the product solve their story? - -**Story-Based Journey Mapping:** - -Guide narrative journey creation using story structure: -- **Opening Scene**: Where/how do we meet them? What's their current pain? -- **Rising Action**: What steps do they take? What do they discover? -- **Climax**: Critical moment where product delivers real value -- **Resolution**: How does their situation improve? What's their new reality? - -Encourage narrative format with specific user details, emotional journey, and clear before/after contrast - -### 3. Guide Journey Exploration - -For each journey, facilitate detailed exploration: -- What happens at each step specifically? -- What could go wrong? What's the recovery path? -- What information do they need to see/hear? -- What's their emotional state at each point? -- Where does this journey succeed or fail? - -### 4. Connect Journeys to Requirements - -After each journey, explicitly state: -- This journey reveals requirements for specific capability areas -- Help user see how different journeys create different feature sets -- Connect journey needs to concrete capabilities (onboarding, dashboards, notifications, etc.) - -### 5. Aim for Comprehensive Coverage - -Guide toward complete journey set: - -- **Primary user** - happy path (core experience) -- **Primary user** - edge case (different goal, error recovery) -- **Secondary user** (admin, moderator, support, etc.) -- **API consumer** (if applicable) - -Ask if additional journeys are needed to cover uncovered user types - -### 6. Generate User Journey Content - -Prepare the content to append to the document: - -#### Content Structure: - -When saving to document, append these Level 2 and Level 3 sections: - -```markdown -## User Journeys - -[All journey narratives based on conversation] - -### Journey Requirements Summary - -[Summary of capabilities revealed by journeys based on conversation] -``` - -### 7. Present MENU OPTIONS - -Present the user journey content for review, then display menu: -- Show the mapped user journeys (using structure from section 6) -- Highlight how each journey reveals different capabilities -- Ask if they'd like to refine further, get other perspectives, or proceed -- Present menu options naturally as part of conversation - -Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Domain Requirements (Step 5 of 11)" - -#### Menu Handling Logic: -- IF A: Invoke the `bmad-advanced-elicitation` skill with the current journey content, process the enhanced journey insights that come back, ask user "Accept these improvements to the user journeys? (y/n)", if yes update content with improvements then redisplay menu, if no keep original content then redisplay menu -- IF P: Invoke the `bmad-party-mode` skill with the current journeys, process the collaborative journey improvements and additions, ask user "Accept these changes to the user journeys? (y/n)", if yes update content with improvements then redisplay menu, if no keep original content then redisplay menu -- IF C: Append the final content to {outputFile}, update frontmatter by adding this step name to the end of the stepsCompleted array, then read fully and follow: ./step-05-domain.md -- IF Any other: help user respond, then redisplay menu - -#### EXECUTION RULES: -- ALWAYS halt and wait for user input after presenting menu -- ONLY proceed to next step when user selects 'C' -- After other menu items execution, return to this menu - -## APPEND TO DOCUMENT: - -When user selects 'C', append the content directly to the document using the structure from step 6. - -## SUCCESS METRICS: - -✅ Existing personas from product briefs leveraged when available -✅ All user types identified (not just primary users) -✅ Rich narrative storytelling for each persona and journey -✅ Complete story-based journey mapping with emotional arc -✅ Journey requirements clearly connected to capabilities needed -✅ Minimum 3-4 compelling narrative journeys covering different user types -✅ A/P/C menu presented and handled correctly -✅ Content properly appended to document when C selected - -## FAILURE MODES: - -❌ Ignoring existing personas from product briefs -❌ Only mapping primary user journeys and missing secondary users -❌ Creating generic journeys without rich persona details and narrative -❌ Missing emotional storytelling elements that make journeys compelling -❌ Missing critical decision points and failure scenarios -❌ Not connecting journeys to required capabilities -❌ Not having enough journey diversity (admin, support, API, etc.) -❌ Not presenting A/P/C menu after content generation -❌ Appending content without user selecting 'C' - -❌ **CRITICAL**: Reading only partial step file - leads to incomplete understanding and poor decisions -❌ **CRITICAL**: Proceeding with 'C' without fully reading and understanding the next step file -❌ **CRITICAL**: Making decisions without complete understanding of step requirements and protocols - -## JOURNEY TYPES TO ENSURE: - -**Minimum Coverage:** - -1. **Primary User - Success Path**: Core experience journey -2. **Primary User - Edge Case**: Error recovery, alternative goals -3. **Admin/Operations User**: Management, configuration, monitoring -4. **Support/Troubleshooting**: Help, investigation, issue resolution -5. **API/Integration** (if applicable): Developer/technical user journey - -## NEXT STEP: - -After user selects 'C' and content is saved to document, load `./step-05-domain.md`. - -Remember: Do NOT proceed to step-05 until user explicitly selects 'C' from the A/P/C menu and content is saved! diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-05-domain.md b/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-05-domain.md deleted file mode 100644 index 07fe2a624..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-05-domain.md +++ /dev/null @@ -1,194 +0,0 @@ -# Step 5: Domain-Specific Requirements (Optional) - -**Progress: Step 5 of 13** - Next: Innovation Focus - -## STEP GOAL: - -For complex domains only that have a mapping in ../data/domain-complexity.csv, explore domain-specific constraints, compliance requirements, and technical considerations that shape the product. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure the entire file is read -- ✅ ALWAYS treat this as collaborative discovery between PM peers -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` -- ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}` - -### Role Reinforcement: - -- ✅ You are a product-focused PM facilitator collaborating with an expert peer -- ✅ We engage in collaborative dialogue, not command-response -- ✅ You bring structured thinking and facilitation skills, while the user brings domain expertise - -### Step-Specific Rules: - -- 🎯 This step is OPTIONAL - only needed for complex domains -- 🚫 SKIP if domain complexity is "low" from step-02 -- 💬 APPROACH: Natural conversation to discover domain-specific needs -- 🎯 Focus on constraints, compliance, and domain patterns - -## EXECUTION PROTOCOLS: - -- 🎯 Check domain complexity from step-02 classification first -- ⚠️ If complexity is "low", offer to skip this step -- ⚠️ Present A/P/C menu after domain requirements defined (or skipped) -- 💾 ONLY save when user chooses C (Continue) -- 📖 Update output file frontmatter, adding this step name to the end of the list of stepsCompleted -- 🚫 FORBIDDEN to load next step until C is selected - -## CONTEXT BOUNDARIES: - -- Domain classification from step-02 is available -- If complexity is low, this step may be skipped -- Domain CSV data provides complexity reference -- Focus on domain-specific constraints, not general requirements - -## YOUR TASK: - -For complex domains, explore what makes this domain special: -- **Compliance requirements** - regulations, standards, certifications -- **Technical constraints** - security, privacy, integration requirements -- **Domain patterns** - common patterns, best practices, anti-patterns -- **Risks and mitigations** - what could go wrong, how to prevent it - -## DOMAIN DISCOVERY SEQUENCE: - -### 1. Check Domain Complexity - -**Review classification from step-02:** - -- What's the domain complexity level? (low/medium/high) -- What's the specific domain? (healthcare, fintech, education, etc.) - -**If complexity is LOW:** - -Offer to skip: -"The domain complexity from our discovery is low. We may not need deep domain-specific requirements. Would you like to: -- [C] Skip this step and move to Innovation -- [D] Do domain exploration anyway" - -**If complexity is MEDIUM or HIGH:** - -Proceed with domain exploration. - -### 2. Load Domain Reference Data - -**Attempt subprocess data lookup:** - -"Your task: Lookup data in ../data/domain-complexity.csv - -**Search criteria:** -- Find row where domain matches {{domainFromStep02}} - -**Return format:** -Return ONLY the matching row as a YAML-formatted object with these fields: -domain, complexity, typical_concerns, compliance_requirements - -**Do NOT return the entire CSV - only the matching row.**" - -**Graceful degradation (if Task tool unavailable):** -- Load the CSV file directly -- Find the matching row manually -- Extract required fields -- Understand typical concerns and compliance requirements - -### 3. Explore Domain-Specific Concerns - -**Start with what you know:** - -Acknowledge the domain and explore what makes it complex: -- What regulations apply? (HIPAA, PCI-DSS, GDPR, SOX, etc.) -- What standards matter? (ISO, NIST, domain-specific standards) -- What certifications are needed? (security, privacy, domain-specific) -- What integrations are required? (EMR systems, payment processors, etc.) - -**Explore technical constraints:** -- Security requirements (encryption, audit logs, access control) -- Privacy requirements (data handling, consent, retention) -- Performance requirements (real-time, batch, latency) -- Availability requirements (uptime, disaster recovery) - -### 4. Document Domain Requirements - -**Structure the requirements around key concerns:** - -```markdown -### Compliance & Regulatory -- [Specific requirements] - -### Technical Constraints -- [Security, privacy, performance needs] - -### Integration Requirements -- [Required systems and data flows] - -### Risk Mitigations -- [Domain-specific risks and how to address them] -``` - -### 5. Validate Completeness - -**Check with the user:** - -"Are there other domain-specific concerns we should consider? For [this domain], what typically gets overlooked?" - -### N. Present MENU OPTIONS - -Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue - Save and Proceed to Innovation (Step 6 of 13)" - -#### Menu Handling Logic: -- IF A: Invoke the `bmad-advanced-elicitation` skill, and when finished redisplay the menu -- IF P: Invoke the `bmad-party-mode` skill, and when finished redisplay the menu -- IF C: Save content to {outputFile}, update frontmatter, then read fully and follow: ./step-06-innovation.md -- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#n-present-menu-options) - -#### EXECUTION RULES: -- ALWAYS halt and wait for user input after presenting menu -- ONLY proceed to next step when user selects 'C' -- After other menu items execution, return to this menu - -## APPEND TO DOCUMENT - -When user selects 'C', append to `{outputFile}`: - -```markdown -## Domain-Specific Requirements - -{{discovered domain requirements}} -``` - -If step was skipped, append nothing and proceed. - -## CRITICAL STEP COMPLETION NOTE - -ONLY WHEN [C continue option] is selected and [content saved or skipped], will you then read fully and follow: `./step-06-innovation.md` to explore innovation. - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- Domain complexity checked before proceeding -- Offered to skip if complexity is low -- Natural conversation exploring domain concerns -- Compliance, technical, and integration requirements identified -- Domain-specific risks documented with mitigations -- User validated completeness -- Content properly saved (or step skipped) when C selected - -### ❌ SYSTEM FAILURE: - -- Not checking domain complexity first -- Not offering to skip for low-complexity domains -- Missing critical compliance requirements -- Not exploring technical constraints -- Not asking about domain-specific risks -- Being generic instead of domain-specific -- Proceeding without user validation - -**Master Rule:** This step is OPTIONAL for simple domains. For complex domains, focus on compliance, constraints, and domain patterns. Natural conversation, not checklists. diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-06-innovation.md b/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-06-innovation.md deleted file mode 100644 index b12d68bd3..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-06-innovation.md +++ /dev/null @@ -1,211 +0,0 @@ -# Step 6: Innovation Discovery - -**Progress: Step 6 of 11** - Next: Project Type Analysis - -## MANDATORY EXECUTION RULES (READ FIRST): - -- 🛑 NEVER generate content without user input - -- 📖 CRITICAL: ALWAYS read the complete step file before taking any action - partial understanding leads to incomplete decisions -- 🔄 CRITICAL: When loading next step with 'C', ensure the entire file is read and understood before proceeding -- ✅ ALWAYS treat this as collaborative discovery between PM peers -- 📋 YOU ARE A FACILITATOR, not a content generator -- 💬 FOCUS on detecting and exploring innovative aspects of the product -- 🎯 OPTIONAL STEP: Only proceed if innovation signals are detected -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` -- ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}` - -## EXECUTION PROTOCOLS: - -- 🎯 Show your analysis before taking any action -- ⚠️ Present A/P/C menu after generating innovation content -- 💾 ONLY save when user chooses C (Continue) -- 📖 Update output file frontmatter, adding this step name to the end of the list of stepsCompleted -- 🚫 FORBIDDEN to load next step until C is selected - -## CONTEXT BOUNDARIES: - -- Current document and frontmatter from previous steps are available -- Project type from step-02 is available for innovation signal matching -- Project-type CSV data will be loaded in this step -- Focus on detecting genuine innovation, not forced creativity - -## OPTIONAL STEP CHECK: - -Before proceeding with this step, scan for innovation signals: - -- Listen for language like "nothing like this exists", "rethinking how X works" -- Check for project-type innovation signals from CSV -- Look for novel approaches or unique combinations -- If no innovation detected, skip this step - -## YOUR TASK: - -Detect and explore innovation patterns in the product, focusing on what makes it truly novel and how to validate the innovative aspects. - -## INNOVATION DISCOVERY SEQUENCE: - -### 1. Load Project-Type Innovation Data - -Load innovation signals specific to this project type: - -- Load `../data/project-types.csv` completely -- Find the row where `project_type` matches detected type from step-02 -- Extract `innovation_signals` (semicolon-separated list) -- Extract `web_search_triggers` for potential innovation research - -### 2. Listen for Innovation Indicators - -Monitor conversation for both general and project-type-specific innovation signals: - -#### General Innovation Language: - -- "Nothing like this exists" -- "We're rethinking how [X] works" -- "Combining [A] with [B] for the first time" -- "Novel approach to [problem]" -- "No one has done [concept] before" - -#### Project-Type-Specific Signals (from CSV): - -Match user descriptions against innovation_signals for their project_type: - -- **api_backend**: "API composition;New protocol" -- **mobile_app**: "Gesture innovation;AR/VR features" -- **saas_b2b**: "Workflow automation;AI agents" -- **developer_tool**: "New paradigm;DSL creation" - -### 3. Initial Innovation Screening - -Ask targeted innovation discovery questions: -- Guide exploration of what makes the product innovative -- Explore if they're challenging existing assumptions -- Ask about novel combinations of technologies/approaches -- Identify what hasn't been done before -- Understand which aspects feel most innovative - -### 4. Deep Innovation Exploration (If Detected) - -If innovation signals are found, explore deeply: - -#### Innovation Discovery Questions: -- What makes it unique compared to existing solutions? -- What assumption are you challenging? -- How do we validate it works? -- What's the fallback if it doesn't? -- Has anyone tried this before? - -#### Market Context Research: - -If relevant innovation detected, consider web search for context: -Use `web_search_triggers` from project-type CSV: -`[web_search_triggers] {concept} innovations {date}` - -### 5. Generate Innovation Content (If Innovation Detected) - -Prepare the content to append to the document: - -#### Content Structure: - -When saving to document, append these Level 2 and Level 3 sections: - -```markdown -## Innovation & Novel Patterns - -### Detected Innovation Areas - -[Innovation patterns identified based on conversation] - -### Market Context & Competitive Landscape - -[Market context and research based on conversation] - -### Validation Approach - -[Validation methodology based on conversation] - -### Risk Mitigation - -[Innovation risks and fallbacks based on conversation] -``` - -### 6. Present MENU OPTIONS (Only if Innovation Detected) - -Present the innovation content for review, then display menu: -- Show identified innovative aspects (using structure from section 5) -- Highlight differentiation from existing solutions -- Ask if they'd like to refine further, get other perspectives, or proceed -- Present menu options naturally as part of conversation - -Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Project Type Analysis (Step 7 of 11)" - -#### Menu Handling Logic: -- IF A: Invoke the `bmad-advanced-elicitation` skill with the current innovation content, process the enhanced innovation insights that come back, ask user "Accept these improvements to the innovation analysis? (y/n)", if yes update content with improvements then redisplay menu, if no keep original content then redisplay menu -- IF P: Invoke the `bmad-party-mode` skill with the current innovation content, process the collaborative innovation exploration and ideation, ask user "Accept these changes to the innovation analysis? (y/n)", if yes update content with improvements then redisplay menu, if no keep original content then redisplay menu -- IF C: Append the final content to {outputFile}, update frontmatter by adding this step name to the end of the stepsCompleted array, then read fully and follow: ./step-07-project-type.md -- IF Any other: help user respond, then redisplay menu - -#### EXECUTION RULES: -- ALWAYS halt and wait for user input after presenting menu -- ONLY proceed to next step when user selects 'C' -- After other menu items execution, return to this menu - -## NO INNOVATION DETECTED: - -If no genuine innovation signals are found after exploration: -- Acknowledge that no clear innovation signals were found -- Note this is fine - many successful products are excellent executions of existing concepts -- Ask if they'd like to try finding innovative angles or proceed - -Display: "**Select:** [A] Advanced Elicitation - Let's try to find innovative angles [C] Continue - Skip innovation section and move to Project Type Analysis (Step 7 of 11)" - -### Menu Handling Logic: -- IF A: Proceed with content generation anyway, then return to menu -- IF C: Skip this step, then read fully and follow: ./step-07-project-type.md - -### EXECUTION RULES: -- ALWAYS halt and wait for user input after presenting menu -- ONLY proceed to next step when user selects 'C' - -## APPEND TO DOCUMENT: - -When user selects 'C', append the content directly to the document using the structure from step 5. - -## SUCCESS METRICS: - -✅ Innovation signals properly detected from user conversation -✅ Project-type innovation signals used to guide discovery -✅ Genuine innovation explored (not forced creativity) -✅ Validation approach clearly defined for innovative aspects -✅ Risk mitigation strategies identified -✅ A/P/C menu presented and handled correctly -✅ Content properly appended to document when C selected - -## FAILURE MODES: - -❌ Forced innovation when none genuinely exists -❌ Not using project-type innovation signals from CSV -❌ Missing market context research for novel concepts -❌ Not addressing validation approach for innovative features -❌ Creating innovation theater without real innovative aspects -❌ Not presenting A/P/C menu after content generation -❌ Appending content without user selecting 'C' - -❌ **CRITICAL**: Reading only partial step file - leads to incomplete understanding and poor decisions -❌ **CRITICAL**: Proceeding with 'C' without fully reading and understanding the next step file -❌ **CRITICAL**: Making decisions without complete understanding of step requirements and protocols - -## SKIP CONDITIONS: - -Skip this step and load `./step-07-project-type.md` if: - -- No innovation signals detected in conversation -- Product is incremental improvement rather than breakthrough -- User confirms innovation exploration is not needed -- Project-type CSV has no innovation signals for this type - -## NEXT STEP: - -After user selects 'C' and content is saved to document (or step is skipped), load `./step-07-project-type.md`. - -Remember: Do NOT proceed to step-07 until user explicitly selects 'C' from the A/P/C menu (or confirms step skip)! diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-07-project-type.md b/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-07-project-type.md deleted file mode 100644 index ea2b9b37d..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-07-project-type.md +++ /dev/null @@ -1,222 +0,0 @@ -# Step 7: Project-Type Deep Dive - -**Progress: Step 7 of 11** - Next: Scoping - -## MANDATORY EXECUTION RULES (READ FIRST): - -- 🛑 NEVER generate content without user input - -- 📖 CRITICAL: ALWAYS read the complete step file before taking any action - partial understanding leads to incomplete decisions -- 🔄 CRITICAL: When loading next step with 'C', ensure the entire file is read and understood before proceeding -- ✅ ALWAYS treat this as collaborative discovery between PM peers -- 📋 YOU ARE A FACILITATOR, not a content generator -- 💬 FOCUS on project-type specific requirements and technical considerations -- 🎯 DATA-DRIVEN: Use CSV configuration to guide discovery -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` -- ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}` - -## EXECUTION PROTOCOLS: - -- 🎯 Show your analysis before taking any action -- ⚠️ Present A/P/C menu after generating project-type content -- 💾 ONLY save when user chooses C (Continue) -- 📖 Update output file frontmatter, adding this step name to the end of the list of stepsCompleted -- 🚫 FORBIDDEN to load next step until C is selected - -## CONTEXT BOUNDARIES: - -- Current document and frontmatter from previous steps are available -- Project type from step-02 is available for configuration loading -- Project-type CSV data will be loaded in this step -- Focus on technical and functional requirements specific to this project type - -## YOUR TASK: - -Conduct project-type specific discovery using CSV-driven guidance to define technical requirements. - -## PROJECT-TYPE DISCOVERY SEQUENCE: - -### 1. Load Project-Type Configuration Data - -**Attempt subprocess data lookup:** - -"Your task: Lookup data in ../data/project-types.csv - -**Search criteria:** -- Find row where project_type matches {{projectTypeFromStep02}} - -**Return format:** -Return ONLY the matching row as a YAML-formatted object with these fields: -project_type, key_questions, required_sections, skip_sections, innovation_signals - -**Do NOT return the entire CSV - only the matching row.**" - -**Graceful degradation (if Task tool unavailable):** -- Load the CSV file directly -- Find the matching row manually -- Extract required fields: - - `key_questions` (semicolon-separated list of discovery questions) - - `required_sections` (semicolon-separated list of sections to document) - - `skip_sections` (semicolon-separated list of sections to skip) - - `innovation_signals` (already explored in step-6) - -### 2. Conduct Guided Discovery Using Key Questions - -Parse `key_questions` from CSV and explore each: - -#### Question-Based Discovery: - -For each question in `key_questions` from CSV: - -- Ask the user naturally in conversational style -- Listen for their response and ask clarifying follow-ups -- Connect answers to product value proposition - -**Example Flow:** -If key_questions = "Endpoints needed?;Authentication method?;Data formats?;Rate limits?;Versioning?;SDK needed?" - -Ask naturally: - -- "What are the main endpoints your API needs to expose?" -- "How will you handle authentication and authorization?" -- "What data formats will you support for requests and responses?" - -### 3. Document Project-Type Specific Requirements - -Based on user answers to key_questions, synthesize comprehensive requirements: - -#### Requirement Categories: - -Cover the areas indicated by `required_sections` from CSV: - -- Synthesize what was discovered for each required section -- Document specific requirements, constraints, and decisions -- Connect to product differentiator when relevant - -#### Skip Irrelevant Sections: - -Skip areas indicated by `skip_sections` from CSV to avoid wasting time on irrelevant aspects. - -### 4. Generate Dynamic Content Sections - -Parse `required_sections` list from the matched CSV row. For each section name, generate corresponding content: - -#### Common CSV Section Mappings: - -- "endpoint_specs" or "endpoint_specification" → API endpoints documentation -- "auth_model" or "authentication_model" → Authentication approach -- "platform_reqs" or "platform_requirements" → Platform support needs -- "device_permissions" or "device_features" → Device capabilities -- "tenant_model" → Multi-tenancy approach -- "rbac_matrix" or "permission_matrix" → Permission structure - -#### Template Variable Strategy: - -- For sections matching common template variables: generate specific content -- For sections without template matches: include in main project_type_requirements -- Hybrid approach balances template structure with CSV-driven flexibility - -### 5. Generate Project-Type Content - -Prepare the content to append to the document: - -#### Content Structure: - -When saving to document, append these Level 2 and Level 3 sections: - -```markdown -## [Project Type] Specific Requirements - -### Project-Type Overview - -[Project type summary based on conversation] - -### Technical Architecture Considerations - -[Technical architecture requirements based on conversation] - -[Dynamic sections based on CSV and conversation] - -### Implementation Considerations - -[Implementation specific requirements based on conversation] -``` - -### 6. Present MENU OPTIONS - -Present the project-type content for review, then display menu: - -"Based on our conversation and best practices for this product type, I've documented the {project_type}-specific requirements for {{project_name}}. - -**Here's what I'll add to the document:** - -[Show the complete markdown content from section 5] - -**What would you like to do?**" - -Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Scoping (Step 8 of 11)" - -#### Menu Handling Logic: -- IF A: Invoke the `bmad-advanced-elicitation` skill with the current project-type content, process the enhanced technical insights that come back, ask user "Accept these improvements to the technical requirements? (y/n)", if yes update content with improvements then redisplay menu, if no keep original content then redisplay menu -- IF P: Invoke the `bmad-party-mode` skill with the current project-type requirements, process the collaborative technical expertise and validation, ask user "Accept these changes to the technical requirements? (y/n)", if yes update content with improvements then redisplay menu, if no keep original content then redisplay menu -- IF C: Append the final content to {outputFile}, update frontmatter by adding this step name to the end of the stepsCompleted array, then read fully and follow: ./step-08-scoping.md -- IF Any other: help user respond, then redisplay menu - -#### EXECUTION RULES: -- ALWAYS halt and wait for user input after presenting menu -- ONLY proceed to next step when user selects 'C' -- After other menu items execution, return to this menu - -## APPEND TO DOCUMENT: - -When user selects 'C', append the content directly to the document using the structure from previous steps. - -## SUCCESS METRICS: - -✅ Project-type configuration loaded and used effectively -✅ All key questions from CSV explored with user input -✅ Required sections generated per CSV configuration -✅ Skip sections properly avoided to save time -✅ Technical requirements connected to product value -✅ A/P/C menu presented and handled correctly -✅ Content properly appended to document when C selected - -## FAILURE MODES: - -❌ Not loading or using project-type CSV configuration -❌ Missing key questions from CSV in discovery process -❌ Not generating required sections per CSV configuration -❌ Documenting sections that should be skipped per CSV -❌ Creating generic content without project-type specificity -❌ Not presenting A/P/C menu after content generation -❌ Appending content without user selecting 'C' - -❌ **CRITICAL**: Reading only partial step file - leads to incomplete understanding and poor decisions -❌ **CRITICAL**: Proceeding with 'C' without fully reading and understanding the next step file -❌ **CRITICAL**: Making decisions without complete understanding of step requirements and protocols - -## PROJECT-TYPE EXAMPLES: - -**For api_backend:** - -- Focus on endpoints, authentication, data schemas, rate limiting -- Skip visual design and user journey sections -- Generate API specification documentation - -**For mobile_app:** - -- Focus on platform requirements, device permissions, offline mode -- Skip API endpoint documentation unless needed -- Generate mobile-specific technical requirements - -**For saas_b2b:** - -- Focus on multi-tenancy, permissions, integrations -- Skip mobile-first considerations unless relevant -- Generate enterprise-specific requirements - -## NEXT STEP: - -After user selects 'C' and content is saved to document, load `./step-08-scoping.md` to define project scope. - -Remember: Do NOT proceed to step-08 (Scoping) until user explicitly selects 'C' from the A/P/C menu and content is saved! diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-08-scoping.md b/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-08-scoping.md deleted file mode 100644 index c35289145..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-08-scoping.md +++ /dev/null @@ -1,263 +0,0 @@ -# Step 8: Scoping Exercise - Scope Definition (Phased or Single-Release) - -**Progress: Step 8 of 11** - Next: Functional Requirements - -## MANDATORY EXECUTION RULES (READ FIRST): - -- 🛑 NEVER generate content without user input - -- 📖 CRITICAL: ALWAYS read the complete step file before taking any action - partial understanding leads to incomplete decisions -- 🔄 CRITICAL: When loading next step with 'C', ensure the entire file is read and understood before proceeding -- ✅ ALWAYS treat this as collaborative discovery between PM peers -- 📋 YOU ARE A FACILITATOR, not a content generator -- 💬 FOCUS on strategic scope decisions that keep projects viable -- 🎯 EMPHASIZE lean MVP thinking while preserving long-term vision -- ⚠️ NEVER de-scope, defer, or phase out requirements that the user explicitly included in their input documents without asking first -- ⚠️ NEVER invent phasing (MVP/Growth/Vision) unless the user requests phased delivery — if input documents define all components as core requirements, they are ALL in scope -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` -- ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}` - -## EXECUTION PROTOCOLS: - -- 🎯 Show your analysis before taking any action -- 📚 Review the complete PRD document built so far -- ⚠️ Present A/P/C menu after generating scoping decisions -- 💾 ONLY save when user chooses C (Continue) -- 📖 Update output file frontmatter, adding this step name to the end of the list of stepsCompleted -- 🚫 FORBIDDEN to load next step until C is selected - - -## CONTEXT BOUNDARIES: - -- Complete PRD document built so far is available for review -- User journeys, success criteria, and domain requirements are documented -- Focus on strategic scope decisions, not feature details -- Balance between user value and implementation feasibility - -## YOUR TASK: - -Conduct comprehensive scoping exercise to define release boundaries and prioritize features based on the user's chosen delivery mode (phased or single-release). - -## SCOPING SEQUENCE: - -### 1. Review Current PRD State - -Analyze everything documented so far: -- Present synthesis of established vision, success criteria, journeys -- Assess domain and innovation focus -- Evaluate scope implications: simple MVP, medium, or complex project -- Ask if initial assessment feels right or if they see it differently - -### 2. Define MVP Strategy - -Facilitate strategic MVP decisions: -- Explore MVP philosophy options: problem-solving, experience, platform, or revenue MVP -- Ask critical questions: - - What's the minimum that would make users say 'this is useful'? - - What would make investors/partners say 'this has potential'? - - What's the fastest path to validated learning? -- Guide toward appropriate MVP approach for their product - -### 3. Scoping Decision Framework - -Use structured decision-making for scope: - -**Must-Have Analysis:** -- Guide identification of absolute MVP necessities -- For each journey and success criterion, ask: - - Without this, does the product fail? - - Can this be manual initially? - - Is this a deal-breaker for early adopters? -- Analyze journeys for MVP essentials - -**Nice-to-Have Analysis:** -- Identify what could be added later: - - Features that enhance but aren't essential - - User types that can be added later - - Advanced functionality that builds on MVP -- Ask what features could be added in versions 2, 3, etc. - -**⚠️ SCOPE CHANGE CONFIRMATION GATE:** -- If you believe any user-specified requirement should be deferred or de-scoped, you MUST present this to the user and get explicit confirmation BEFORE removing it from scope -- Frame it as a recommendation, not a decision: "I'd recommend deferring X because [reason]. Do you agree, or should it stay in scope?" -- NEVER silently move user requirements to a later phase or exclude them from MVP -- Before creating any consequential phase-based artifacts (e.g., phase tags, labels, or follow-on prompts), present artifact creation as a recommendation and proceed only after explicit user approval - -### 4. Progressive Feature Roadmap - -**CRITICAL: Phasing is NOT automatic. Check the user's input first.** - -Before proposing any phased approach, review the user's input documents: - -- **If the input documents define all components as core requirements with no mention of phases:** Present all requirements as a single release scope. Do NOT invent phases or move requirements to fabricated future phases. -- **If the input documents explicitly request phased delivery:** Guide mapping of features across the phases the user defined. -- **If scope is unclear:** ASK the user whether they want phased delivery or a single release before proceeding. - -**When the user requests phased delivery**, guide mapping of features across the phases the user defines: - -- Use user-provided phase labels and count; if none are provided, propose a default (e.g., MVP/Growth/Vision) and ask for confirmation -- Ensure clear progression and dependencies between phases - -**Each phase should address:** - -- Core user value delivery and essential journeys for that phase -- Clear boundaries on what ships in each phase -- Dependencies on prior phases - -**When the user chooses a single release**, define the complete scope: - -- All user-specified requirements are in scope -- Focus must-have vs nice-to-have analysis on what ships in this release -- Do NOT create phases — use must-have/nice-to-have priority within the single release - -**If phased delivery:** "Where does your current vision fit in this development sequence?" -**If single release:** "How does your current vision map to this upcoming release?" - -### 5. Risk-Based Scoping - -Identify and mitigate scoping risks: - -**Technical Risks:** -"Looking at your innovation and domain requirements: - -- What's the most technically challenging aspect? -- Could we simplify the initial implementation? -- What's the riskiest assumption about technology feasibility?" - -**Market Risks:** - -- What's the biggest market risk? -- How does the MVP address this? -- What learning do we need to de-risk this?" - -**Resource Risks:** - -- What if we have fewer resources than planned? -- What's the absolute minimum team size needed? -- Can we launch with a smaller feature set?" - -### 6. Generate Scoping Content - -Prepare comprehensive scoping section: - -#### Content Structure: - -**If user chose phased delivery:** - -```markdown -## Project Scoping & Phased Development - -### MVP Strategy & Philosophy - -**MVP Approach:** {{chosen_mvp_approach}} -**Resource Requirements:** {{mvp_team_size_and_skills}} - -### MVP Feature Set (Phase 1) - -**Core User Journeys Supported:** -{{essential_journeys_for_mvp}} - -**Must-Have Capabilities:** -{{list_of_essential_mvp_features}} - -### Post-MVP Features - -**Phase 2 (Post-MVP):** -{{planned_growth_features}} - -**Phase 3 (Expansion):** -{{planned_expansion_features}} - -### Risk Mitigation Strategy - -**Technical Risks:** {{mitigation_approach}} -**Market Risks:** {{validation_approach}} -**Resource Risks:** {{contingency_approach}} -``` - -**If user chose single release (no phasing):** - -```markdown -## Project Scoping - -### Strategy & Philosophy - -**Approach:** {{chosen_approach}} -**Resource Requirements:** {{team_size_and_skills}} - -### Complete Feature Set - -**Core User Journeys Supported:** -{{all_journeys}} - -**Must-Have Capabilities:** -{{list_of_must_have_features}} - -**Nice-to-Have Capabilities:** -{{list_of_nice_to_have_features}} - -### Risk Mitigation Strategy - -**Technical Risks:** {{mitigation_approach}} -**Market Risks:** {{validation_approach}} -**Resource Risks:** {{contingency_approach}} -``` - -### 7. Present MENU OPTIONS - -Present the scoping decisions for review, then display menu: -- Show strategic scoping plan (using structure from step 6) -- Highlight release boundaries and prioritization (phased roadmap only if phased delivery was selected) -- Ask if they'd like to refine further, get other perspectives, or proceed -- Present menu options naturally as part of conversation - -Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Functional Requirements (Step 9 of 11)" - -#### Menu Handling Logic: -- IF A: Invoke the `bmad-advanced-elicitation` skill with the current scoping analysis, process the enhanced insights that come back, ask user if they accept the improvements, if yes update content then redisplay menu, if no keep original content then redisplay menu -- IF P: Invoke the `bmad-party-mode` skill with the scoping context, process the collaborative insights on MVP and roadmap decisions, ask user if they accept the changes, if yes update content then redisplay menu, if no keep original content then redisplay menu -- IF C: Append the final content to {outputFile}, update frontmatter by adding this step name to the end of the stepsCompleted array (also add `releaseMode: phased` or `releaseMode: single-release` to frontmatter based on user's choice), then read fully and follow: ./step-09-functional.md -- IF Any other: help user respond, then redisplay menu - -#### EXECUTION RULES: -- ALWAYS halt and wait for user input after presenting menu -- ONLY proceed to next step when user selects 'C' -- After other menu items execution, return to this menu - -## APPEND TO DOCUMENT: - -When user selects 'C', append the content directly to the document using the structure from step 6. - -## SUCCESS METRICS: - -✅ Complete PRD document analyzed for scope implications -✅ Strategic MVP approach defined and justified -✅ Clear feature boundaries established (phased or single-release, per user preference) -✅ All user-specified requirements accounted for — none silently removed or deferred -✅ Any scope reduction recommendations presented to user with rationale and explicit confirmation obtained -✅ Key risks identified and mitigation strategies defined -✅ User explicitly agrees to scope decisions -✅ A/P/C menu presented and handled correctly -✅ Content properly appended to document when C selected - -## FAILURE MODES: - -❌ Not analyzing the complete PRD before making scoping decisions -❌ Making scope decisions without strategic rationale -❌ Not getting explicit user agreement on MVP boundaries -❌ Missing critical risk analysis -❌ Not presenting A/P/C menu after content generation -❌ **CRITICAL**: Silently de-scoping or deferring requirements that the user explicitly included in their input documents -❌ **CRITICAL**: Inventing phasing (MVP/Growth/Vision) when the user did not request phased delivery -❌ **CRITICAL**: Making consequential scoping decisions (what is in/out of scope) without explicit user confirmation -❌ **CRITICAL**: Creating phase-based artifacts (tags, labels, follow-on prompts) without explicit user approval - -❌ **CRITICAL**: Reading only partial step file - leads to incomplete understanding and poor decisions -❌ **CRITICAL**: Proceeding with 'C' without fully reading and understanding the next step file -❌ **CRITICAL**: Making decisions without complete understanding of step requirements and protocols - -## NEXT STEP: - -After user selects 'C' and content is saved to document, load ./step-09-functional.md. - -Remember: Do NOT proceed to step-09 until user explicitly selects 'C' from the A/P/C menu and content is saved! diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-09-functional.md b/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-09-functional.md deleted file mode 100644 index 46f7a4a1e..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-09-functional.md +++ /dev/null @@ -1,219 +0,0 @@ -# Step 9: Functional Requirements Synthesis - -**Progress: Step 9 of 11** - Next: Non-Functional Requirements - -## MANDATORY EXECUTION RULES (READ FIRST): - -- 🛑 NEVER generate content without user input - -- 📖 CRITICAL: ALWAYS read the complete step file before taking any action - partial understanding leads to incomplete decisions -- 🔄 CRITICAL: When loading next step with 'C', ensure the entire file is read and understood before proceeding -- ✅ ALWAYS treat this as collaborative discovery between PM peers -- 📋 YOU ARE A FACILITATOR, not a content generator -- 💬 FOCUS on creating comprehensive capability inventory for the product -- 🎯 CRITICAL: This is THE CAPABILITY CONTRACT for all downstream work -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` -- ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}` - -## EXECUTION PROTOCOLS: - -- 🎯 Show your analysis before taking any action -- ⚠️ Present A/P/C menu after generating functional requirements -- 💾 ONLY save when user chooses C (Continue) -- 📖 Update output file frontmatter, adding this step name to the end of the list of stepsCompleted -- 🚫 FORBIDDEN to load next step until C is selected - - -## CONTEXT BOUNDARIES: - -- Current document and frontmatter from previous steps are available -- ALL previous content (executive summary, success criteria, journeys, domain, innovation, project-type) must be referenced -- No additional data files needed for this step -- Focus on capabilities, not implementation details - -## CRITICAL IMPORTANCE: - -**This section defines THE CAPABILITY CONTRACT for the entire product:** - -- UX designers will ONLY design what's listed here -- Architects will ONLY support what's listed here -- Epic breakdown will ONLY implement what's listed here -- If a capability is missing from FRs, it will NOT exist in the final product - -## FUNCTIONAL REQUIREMENTS SYNTHESIS SEQUENCE: - -### 1. Understand FR Purpose and Usage - -Start by explaining the critical role of functional requirements: - -**Purpose:** -FRs define WHAT capabilities the product must have. They are the complete inventory of user-facing and system capabilities that deliver the product vision. - -**Critical Properties:** -✅ Each FR is a testable capability -✅ Each FR is implementation-agnostic (could be built many ways) -✅ Each FR specifies WHO and WHAT, not HOW -✅ No UI details, no performance numbers, no technology choices -✅ Comprehensive coverage of capability areas - -**How They Will Be Used:** - -1. UX Designer reads FRs → designs interactions for each capability -2. Architect reads FRs → designs systems to support each capability -3. PM reads FRs → creates epics and stories to implement each capability - -### 2. Review Existing Content for Capability Extraction - -Systematically review all previous sections to extract capabilities: - -**Extract From:** - -- Executive Summary → Core product differentiator capabilities -- Success Criteria → Success-enabling capabilities -- User Journeys → Journey-revealed capabilities -- Domain Requirements → Compliance and regulatory capabilities -- Innovation Patterns → Innovative feature capabilities -- Project-Type Requirements → Technical capability needs - -### 3. Organize Requirements by Capability Area - -Group FRs by logical capability areas (NOT by technology or layer): - -**Good Grouping Examples:** - -- ✅ "User Management" (not "Authentication System") -- ✅ "Content Discovery" (not "Search Algorithm") -- ✅ "Team Collaboration" (not "WebSocket Infrastructure") - -**Target 5-8 Capability Areas** for typical projects. - -### 4. Generate Comprehensive FR List - -Create complete functional requirements using this format: - -**Format:** - -- FR#: [Actor] can [capability] [context/constraint if needed] -- Number sequentially (FR1, FR2, FR3...) -- Aim for 20-50 FRs for typical projects - -**Altitude Check:** -Each FR should answer "WHAT capability exists?" NOT "HOW it's implemented?" - -**Examples:** - -- ✅ "Users can customize appearance settings" -- ❌ "Users can toggle light/dark theme with 3 font size options stored in LocalStorage" - -### 5. Self-Validation Process - -Before presenting to user, validate the FR list: - -**Completeness Check:** - -1. "Did I cover EVERY capability mentioned in the MVP scope section?" -2. "Did I include domain-specific requirements as FRs?" -3. "Did I cover the project-type specific needs?" -4. "Could a UX designer read ONLY the FRs and know what to design?" -5. "Could an Architect read ONLY the FRs and know what to support?" -6. "Are there any user actions or system behaviors we discussed that have no FR?" - -**Altitude Check:** - -1. "Am I stating capabilities (WHAT) or implementation (HOW)?" -2. "Am I listing acceptance criteria or UI specifics?" (Remove if yes) -3. "Could this FR be implemented 5 different ways?" (Good - means it's not prescriptive) - -**Quality Check:** - -1. "Is each FR clear enough that someone could test whether it exists?" -2. "Is each FR independent (not dependent on reading other FRs to understand)?" -3. "Did I avoid vague terms like 'good', 'fast', 'easy'?" (Use NFRs for quality attributes) - -### 6. Generate Functional Requirements Content - -Prepare the content to append to the document: - -#### Content Structure: - -When saving to document, append these Level 2 and Level 3 sections: - -```markdown -## Functional Requirements - -### [Capability Area Name] - -- FR1: [Specific Actor] can [specific capability] -- FR2: [Specific Actor] can [specific capability] -- FR3: [Specific Actor] can [specific capability] - -### [Another Capability Area] - -- FR4: [Specific Actor] can [specific capability] -- FR5: [Specific Actor] can [specific capability] - -[Continue for all capability areas discovered in conversation] -``` - -### 7. Present MENU OPTIONS - -Present the functional requirements for review, then display menu: -- Show synthesized functional requirements (using structure from step 6) -- Emphasize this is the capability contract for all downstream work -- Highlight that every feature must trace back to these requirements -- Ask if they'd like to refine further, get other perspectives, or proceed -- Present menu options naturally as part of conversation - -**What would you like to do?**" - -Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Non-Functional Requirements (Step 10 of 11)" - -#### Menu Handling Logic: -- IF A: Invoke the `bmad-advanced-elicitation` skill with the current FR list, process the enhanced capability coverage that comes back, ask user if they accept the additions, if yes update content then redisplay menu, if no keep original content then redisplay menu -- IF P: Invoke the `bmad-party-mode` skill with the current FR list, process the collaborative capability validation and additions, ask user if they accept the changes, if yes update content then redisplay menu, if no keep original content then redisplay menu -- IF C: Append the final content to {outputFile}, update frontmatter by adding this step name to the end of the stepsCompleted array, then read fully and follow: ./step-10-nonfunctional.md -- IF Any other: help user respond, then redisplay menu - -#### EXECUTION RULES: -- ALWAYS halt and wait for user input after presenting menu -- ONLY proceed to next step when user selects 'C' -- After other menu items execution, return to this menu - -## APPEND TO DOCUMENT: - -When user selects 'C', append the content directly to the document using the structure from step 6. - -## SUCCESS METRICS: - -✅ All previous discovery content synthesized into FRs -✅ FRs organized by capability areas (not technology) -✅ Each FR states WHAT capability exists, not HOW to implement -✅ Comprehensive coverage with 20-50 FRs typical -✅ Altitude validation ensures implementation-agnostic requirements -✅ Completeness check validates coverage of all discussed capabilities -✅ A/P/C menu presented and handled correctly -✅ Content properly appended to document when C selected - -## FAILURE MODES: - -❌ Missing capabilities from previous discovery sections -❌ Organizing FRs by technology instead of capability areas -❌ Including implementation details or UI specifics in FRs -❌ Not achieving comprehensive coverage of discussed capabilities -❌ Using vague terms instead of testable capabilities -❌ Not presenting A/P/C menu after content generation -❌ Appending content without user selecting 'C' - -❌ **CRITICAL**: Reading only partial step file - leads to incomplete understanding and poor decisions -❌ **CRITICAL**: Proceeding with 'C' without fully reading and understanding the next step file -❌ **CRITICAL**: Making decisions without complete understanding of step requirements and protocols - -## CAPABILITY CONTRACT REMINDER: - -Emphasize to user: "This FR list is now binding. Any feature not listed here will not exist in the final product unless we explicitly add it. This is why it's critical to ensure completeness now." - -## NEXT STEP: - -After user selects 'C' and content is saved to document, load ./step-10-nonfunctional.md to define non-functional requirements. - -Remember: Do NOT proceed to step-10 until user explicitly selects 'C' from the A/P/C menu and content is saved! diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-10-nonfunctional.md b/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-10-nonfunctional.md deleted file mode 100644 index b00730a0c..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-10-nonfunctional.md +++ /dev/null @@ -1,230 +0,0 @@ -# Step 10: Non-Functional Requirements - -**Progress: Step 10 of 12** - Next: Polish Document - -## MANDATORY EXECUTION RULES (READ FIRST): - -- 🛑 NEVER generate content without user input - -- 📖 CRITICAL: ALWAYS read the complete step file before taking any action - partial understanding leads to incomplete decisions -- 🔄 CRITICAL: When loading next step with 'C', ensure the entire file is read and understood before proceeding -- ✅ ALWAYS treat this as collaborative discovery between PM peers -- 📋 YOU ARE A FACILITATOR, not a content generator -- 💬 FOCUS on quality attributes that matter for THIS specific product -- 🎯 SELECTIVE: Only document NFRs that actually apply to the product -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` -- ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}` - -## EXECUTION PROTOCOLS: - -- 🎯 Show your analysis before taking any action -- ⚠️ Present A/P/C menu after generating NFR content -- 💾 ONLY save when user chooses C (Continue) -- 📖 Update output file frontmatter, adding this step name to the end of the list of stepsCompleted -- 🚫 FORBIDDEN to load next step until C is selected - - -## CONTEXT BOUNDARIES: - -- Current document and frontmatter from previous steps are available -- Functional requirements already defined and will inform NFRs -- Domain and project-type context will guide which NFRs matter -- Focus on specific, measurable quality criteria - -## YOUR TASK: - -Define non-functional requirements that specify quality attributes for the product, focusing only on what matters for THIS specific product. - -## NON-FUNCTIONAL REQUIREMENTS SEQUENCE: - -### 1. Explain NFR Purpose and Scope - -Start by clarifying what NFRs are and why we're selective: - -**NFR Purpose:** -NFRs define HOW WELL the system must perform, not WHAT it must do. They specify quality attributes like performance, security, scalability, etc. - -**Selective Approach:** -We only document NFRs that matter for THIS product. If a category doesn't apply, we skip it entirely. This prevents requirement bloat and focuses on what's actually important. - -### 2. Assess Product Context for NFR Relevance - -Evaluate which NFR categories matter based on product context: - -**Quick Assessment Questions:** - -- **Performance**: Is there user-facing impact of speed? -- **Security**: Are we handling sensitive data or payments? -- **Scalability**: Do we expect rapid user growth? -- **Accessibility**: Are we serving broad public audiences? -- **Integration**: Do we need to connect with other systems? -- **Reliability**: Would downtime cause significant problems? - -### 3. Explore Relevant NFR Categories - -For each relevant category, conduct targeted discovery: - -#### Performance NFRs (If relevant): - -Explore performance requirements: -- What parts of the system need to be fast for users to be successful? -- Are there specific response time expectations? -- What happens if performance is slower than expected? -- Are there concurrent user scenarios we need to support? - -#### Security NFRs (If relevant): - -Explore security requirements: -- What data needs to be protected? -- Who should have access to what? -- What are the security risks we need to mitigate? -- Are there compliance requirements (GDPR, HIPAA, PCI-DSS)? - -#### Scalability NFRs (If relevant): - -Explore scalability requirements: -- How many users do we expect initially? Long-term? -- Are there seasonal or event-based traffic spikes? -- What happens if we exceed our capacity? -- What growth scenarios should we plan for? - -#### Accessibility NFRs (If relevant): - -Explore accessibility requirements: -- Are we serving users with visual, hearing, or motor impairments? -- Are there legal accessibility requirements (WCAG, Section 508)? -- What accessibility features are most important for our users? - -#### Integration NFRs (If relevant): - -Explore integration requirements: -- What external systems do we need to connect with? -- Are there APIs or data formats we must support? -- How reliable do these integrations need to be? - -### 4. Make NFRs Specific and Measurable - -For each relevant NFR category, ensure criteria are testable: - -**From Vague to Specific:** - -- NOT: "The system should be fast" → "User actions complete within 2 seconds" -- NOT: "The system should be secure" → "All data is encrypted at rest and in transit" -- NOT: "The system should scale" → "System supports 10x user growth with <10% performance degradation" - -### 5. Generate NFR Content (Only Relevant Categories) - -Prepare the content to append to the document: - -#### Content Structure (Dynamic based on relevance): - -When saving to document, append these Level 2 and Level 3 sections (only include sections that are relevant): - -```markdown -## Non-Functional Requirements - -### Performance - -[Performance requirements based on conversation - only include if relevant] - -### Security - -[Security requirements based on conversation - only include if relevant] - -### Scalability - -[Scalability requirements based on conversation - only include if relevant] - -### Accessibility - -[Accessibility requirements based on conversation - only include if relevant] - -### Integration - -[Integration requirements based on conversation - only include if relevant] -``` - -### 6. Present MENU OPTIONS - -Present the non-functional requirements for review, then display menu: -- Show defined NFRs (using structure from step 5) -- Note that only relevant categories were included -- Emphasize NFRs specify how well the system needs to perform -- Ask if they'd like to refine further, get other perspectives, or proceed -- Present menu options naturally as part of conversation - -Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Polish Document (Step 11 of 12)" - -#### Menu Handling Logic: -- IF A: Invoke the `bmad-advanced-elicitation` skill with the current NFR content, process the enhanced quality attribute insights that come back, ask user if they accept the improvements, if yes update content then redisplay menu, if no keep original content then redisplay menu -- IF P: Invoke the `bmad-party-mode` skill with the current NFR list, process the collaborative technical validation and additions, ask user if they accept the changes, if yes update content then redisplay menu, if no keep original content then redisplay menu -- IF C: Append the final content to {outputFile}, update frontmatter by adding this step name to the end of the stepsCompleted array, then read fully and follow: ./step-11-polish.md -- IF Any other: help user respond, then redisplay menu - -#### EXECUTION RULES: -- ALWAYS halt and wait for user input after presenting menu -- ONLY proceed to next step when user selects 'C' -- After other menu items execution, return to this menu - -## APPEND TO DOCUMENT: - -When user selects 'C', append the content directly to the document using the structure from step 5. - -## SUCCESS METRICS: - -✅ Only relevant NFR categories documented (no requirement bloat) -✅ Each NFR is specific and measurable -✅ NFRs connected to actual user needs and business context -✅ Vague requirements converted to testable criteria -✅ Domain-specific compliance requirements included if relevant -✅ A/P/C menu presented and handled correctly -✅ Content properly appended to document when C selected - -## FAILURE MODES: - -❌ Documenting NFR categories that don't apply to the product -❌ Leaving requirements vague and unmeasurable -❌ Not connecting NFRs to actual user or business needs -❌ Missing domain-specific compliance requirements -❌ Creating overly prescriptive technical requirements -❌ Not presenting A/P/C menu after content generation -❌ Appending content without user selecting 'C' - -❌ **CRITICAL**: Reading only partial step file - leads to incomplete understanding and poor decisions -❌ **CRITICAL**: Proceeding with 'C' without fully reading and understanding the next step file -❌ **CRITICAL**: Making decisions without complete understanding of step requirements and protocols - -## NFR CATEGORY GUIDANCE: - -**Include Performance When:** - -- User-facing response times impact success -- Real-time interactions are critical -- Performance is a competitive differentiator - -**Include Security When:** - -- Handling sensitive user data -- Processing payments or financial information -- Subject to compliance regulations -- Protecting intellectual property - -**Include Scalability When:** - -- Expecting rapid user growth -- Handling variable traffic patterns -- Supporting enterprise-scale usage -- Planning for market expansion - -**Include Accessibility When:** - -- Serving broad public audiences -- Subject to accessibility regulations -- Targeting users with disabilities -- B2B customers with accessibility requirements - -## NEXT STEP: - -After user selects 'C' and content is saved to document, load ./step-11-polish.md to finalize the PRD and complete the workflow. - -Remember: Do NOT proceed to step-11 until user explicitly selects 'C' from the A/P/C menu and content is saved! diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-11-polish.md b/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-11-polish.md deleted file mode 100644 index 6d33abd5c..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-11-polish.md +++ /dev/null @@ -1,221 +0,0 @@ -# Step 11: Document Polish - -**Progress: Step 11 of 12** - Next: Complete PRD - -## MANDATORY EXECUTION RULES (READ FIRST): - -- 🛑 CRITICAL: Load the ENTIRE document before making changes -- 📖 CRITICAL: Read complete step file before taking action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- ✅ This is a POLISH step - optimize existing content -- 📋 IMPROVE flow, coherence, and readability -- 💬 PRESERVE user's voice and intent -- 🎯 MAINTAIN all essential information while improving presentation -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` -- ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}` - -## EXECUTION PROTOCOLS: - -- 🎯 Load complete document first -- 📝 Review for flow and coherence issues -- ✂️ Reduce duplication while preserving essential info -- 📖 Ensure proper ## Level 2 headers throughout -- 💾 Save optimized document -- ⚠️ Present A/P/C menu after polish -- 🚫 DO NOT skip review steps - -## CONTEXT BOUNDARIES: - -- Complete PRD document exists from all previous steps -- Document may have duplication from progressive append -- Sections may not flow smoothly together -- Level 2 headers ensure document can be split if needed -- Focus on readability and coherence - -## YOUR TASK: - -Optimize the complete PRD document for flow, coherence, and professional presentation while preserving all essential information. - -## DOCUMENT POLISH SEQUENCE: - -### 1. Load Context and Document - -**CRITICAL:** Load the PRD purpose document first: - -- Read `../data/prd-purpose.md` to understand what makes a great BMAD PRD -- Internalize the philosophy: information density, traceability, measurable requirements -- Keep the dual-audience nature (humans + LLMs) in mind - -**Then Load the PRD Document:** - -- Read `{outputFile}` completely from start to finish -- Understand the full document structure and content -- Identify all sections and their relationships -- Note areas that need attention - -### 2. Document Quality Review - -Review the entire document with PRD purpose principles in mind: - -**Information Density:** -- Are there wordy phrases that can be condensed? -- Is conversational padding present? -- Can sentences be more direct and concise? - -**Flow and Coherence:** -- Do sections transition smoothly? -- Are there jarring topic shifts? -- Does the document tell a cohesive story? -- Is the progression logical for readers? - -**Duplication Detection:** -- Are ideas repeated across sections? -- Is the same information stated multiple times? -- Can redundant content be consolidated? -- Are there contradictory statements? - -**Header Structure:** -- Are all main sections using ## Level 2 headers? -- Is the hierarchy consistent (##, ###, ####)? -- Can sections be easily extracted or referenced? -- Are headers descriptive and clear? - -**Readability:** -- Are sentences clear and concise? -- Is the language consistent throughout? -- Are technical terms used appropriately? -- Would stakeholders find this easy to understand? - -### 2b. Brainstorming Reconciliation (if brainstorming input exists) - -**Check the PRD frontmatter `inputDocuments` for any brainstorming document** (e.g., `brainstorming-session*.md`, `brainstorming-report.md`). If a brainstorming document was used as input: - -1. **Load the brainstorming document** and extract all distinct ideas, themes, and recommendations -2. **Cross-reference against the PRD** — for each brainstorming idea, check if it landed in any PRD section (requirements, success criteria, user journeys, scope, etc.) -3. **Identify dropped ideas** — ideas from brainstorming that do not appear anywhere in the PRD. Pay special attention to: - - Tone, personality, and interaction design ideas (these are most commonly lost) - - Design philosophy and coaching approach ideas - - "What should this feel like" ideas (UX feel, not just UX function) - - Qualitative/soft ideas that don't map cleanly to functional requirements -4. **Present findings to user**: "These brainstorming ideas did not make it into the PRD: [list]. Should any be incorporated?" -5. **If user wants to incorporate dropped ideas**: Add them to the most appropriate PRD section (success criteria, non-functional requirements, or a new section if needed) - -**Why this matters**: Brainstorming documents are often long, and the PRD's structured template has an implicit bias toward concrete/structural ideas. Soft ideas (tone, philosophy, interaction feel) frequently get silently dropped because they don't map cleanly to FR/NFR format. - -### 3. Optimization Actions - -Make targeted improvements: - -**Improve Flow:** -- Add transition sentences between sections -- Smooth out jarring topic shifts -- Ensure logical progression -- Connect related concepts across sections - -**Reduce Duplication:** -- Consolidate repeated information -- Keep content in the most appropriate section -- Use cross-references instead of repetition -- Remove redundant explanations - -**Enhance Coherence:** -- Ensure consistent terminology throughout -- Align all sections with product differentiator -- Maintain consistent voice and tone -- Verify scope consistency across sections - -**Optimize Headers:** -- Ensure all main sections use ## Level 2 -- Make headers descriptive and action-oriented -- Check that headers follow consistent patterns -- Verify headers support document navigation - -### 4. Preserve Critical Information - -**While optimizing, ensure NOTHING essential is lost:** - -**Must Preserve:** -- All user success criteria -- All functional requirements (capability contract) -- All user journey narratives -- All scope decisions (whether phased or single-release), including consent-critical evidence (explicit user confirmations and rationales for any scope changes from step 8) -- All non-functional requirements -- Product differentiator and vision -- Domain-specific requirements -- Innovation analysis (if present) - -**Can Consolidate:** -- Repeated explanations of the same concept -- Redundant background information -- Multiple versions of similar content -- Overlapping examples - -### 5. Generate Optimized Document - -Create the polished version: - -**Polishing Process:** -1. Start with original document -2. Apply all optimization actions -3. Review to ensure nothing essential was lost -4. Verify improvements enhance readability -5. Prepare optimized version for review - -### 6. Present MENU OPTIONS - -Present the polished document for review, then display menu: -- Show what changed in the polish -- Highlight improvements made (flow, duplication, headers) -- Ask if they'd like to refine further, get other perspectives, or proceed -- Present menu options naturally as part of conversation - -Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Complete PRD (Step 12 of 12)" - -#### Menu Handling Logic: -- IF A: Invoke the `bmad-advanced-elicitation` skill with the polished document, process the enhanced refinements that come back, ask user "Accept these polish improvements? (y/n)", if yes update content with improvements then redisplay menu, if no keep original polish then redisplay menu -- IF P: Invoke the `bmad-party-mode` skill with the polished document, process the collaborative refinements to flow and coherence, ask user "Accept these polish changes? (y/n)", if yes update content with improvements then redisplay menu, if no keep original polish then redisplay menu -- IF C: Save the polished document to {outputFile}, update frontmatter by adding this step name to the end of the stepsCompleted array, then read fully and follow: ./step-12-complete.md -- IF Any other: help user respond, then redisplay menu - -#### EXECUTION RULES: -- ALWAYS halt and wait for user input after presenting menu -- ONLY proceed to next step when user selects 'C' -- After other menu items execution, return to this menu - -## APPEND TO DOCUMENT: - -When user selects 'C', replace the entire document content with the polished version. - -## SUCCESS METRICS: - -✅ Complete document loaded and reviewed -✅ Flow and coherence improved -✅ Duplication reduced while preserving essential information -✅ All main sections use ## Level 2 headers -✅ Transitions between sections are smooth -✅ User's voice and intent preserved -✅ Document is more readable and professional -✅ A/P/C menu presented and handled correctly -✅ Brainstorming reconciliation completed (if brainstorming input exists) -✅ Polished document saved when C selected - -## FAILURE MODES: - -❌ Loading only partial document (leads to incomplete polish) -❌ Removing essential information while reducing duplication -❌ Not preserving user's voice and intent -❌ Changing content instead of improving presentation -❌ Not ensuring ## Level 2 headers for main sections -❌ Making arbitrary style changes instead of coherence improvements -❌ Not presenting A/P/C menu for user approval -❌ Saving polished document without user selecting 'C' - -❌ **CRITICAL**: Reading only partial step file - leads to incomplete understanding and poor decisions -❌ **CRITICAL**: Proceeding with 'C' without fully reading and understanding the next step file -❌ **CRITICAL**: Making changes without complete understanding of document requirements - -## NEXT STEP: - -After user selects 'C' and polished document is saved, load `./step-12-complete.md` to complete the workflow. - -Remember: Do NOT proceed to step-12 until user explicitly selects 'C' from the A/P/C menu and polished document is saved! diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-12-complete.md b/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-12-complete.md deleted file mode 100644 index d34597bb4..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/steps-c/step-12-complete.md +++ /dev/null @@ -1,121 +0,0 @@ -# Step 12: Workflow Completion - -**Final Step - Complete the PRD** - -## MANDATORY EXECUTION RULES (READ FIRST): - -- ✅ THIS IS A FINAL STEP - Workflow completion required -- 📖 CRITICAL: ALWAYS read the complete step file before taking any action -- 🛑 NO content generation - this is a wrap-up step -- 📋 FINALIZE document and update workflow status -- 💬 FOCUS on completion, validation options, and next steps -- 🎯 UPDATE workflow status files with completion information -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` - -## EXECUTION PROTOCOLS: - -- 🎯 Show your analysis before taking any action -- 💾 Update the main workflow status file with completion information (if exists) -- 📖 Offer validation workflow options to user -- 🚫 DO NOT load additional steps after this one - -## TERMINATION STEP PROTOCOLS: - -- This is a FINAL step - workflow completion required -- Update workflow status file with finalized document -- Suggest validation and next workflow steps -- Mark workflow as complete in status tracking - -## CONTEXT BOUNDARIES: - -- Complete and polished PRD document is available from all previous steps -- Workflow frontmatter shows all completed steps including polish -- All collaborative content has been generated, saved, and optimized -- Focus on completion, validation options, and next steps - -## YOUR TASK: - -Complete the PRD workflow, update status files, offer validation options, and suggest next steps for the project. - -## WORKFLOW COMPLETION SEQUENCE: - -### 1. Announce Workflow Completion - -Inform user that the PRD is complete and polished: -- Celebrate successful completion of comprehensive PRD -- Summarize all sections that were created -- Highlight that document has been polished for flow and coherence -- Emphasize document is ready for downstream work - -### 2. Workflow Status Update - -Update the main workflow status file if there is one: - -- Check workflow configuration for a status file (if one exists) -- Update workflow_status["prd"] = "{outputFile}" -- Save file, preserving all comments and structure -- Mark current timestamp as completion time - -### 3. Validation Workflow Options - -Offer validation workflows to ensure PRD is ready for implementation: - -**Available Validation Workflows:** - -**Option 1: Check Implementation Readiness** (`skill:bmad-check-implementation-readiness`) -- Validates PRD has all information needed for development -- Checks epic coverage completeness -- Reviews UX alignment with requirements -- Assesses epic quality and readiness -- Identifies gaps before architecture/design work begins - -**When to use:** Before starting technical architecture or epic breakdown - -**Option 2: Skip for Now** -- Proceed directly to next workflows (architecture, UX, epics) -- Validation can be done later if needed -- Some teams prefer to validate during architecture reviews - -### 4. Suggest Next Workflows - -PRD complete. Invoke the `bmad-help` skill. - -### 5. Final Completion Confirmation - -- Confirm completion with user and summarize what has been accomplished -- Document now contains: Executive Summary, Success Criteria, User Journeys, Domain Requirements (if applicable), Innovation Analysis (if applicable), Project-Type Requirements, Functional Requirements (capability contract), Non-Functional Requirements, and has been polished for flow and coherence -- Ask if they'd like to run validation workflow or proceed to next workflows - -## SUCCESS METRICS: - -✅ PRD document contains all required sections and has been polished -✅ All collaborative content properly saved and optimized -✅ Workflow status file updated with completion information (if exists) -✅ Validation workflow options clearly presented -✅ Clear next step guidance provided to user -✅ Document quality validation completed -✅ User acknowledges completion and understands next options - -## FAILURE MODES: - -❌ Not updating workflow status file with completion information (if exists) -❌ Not offering validation workflow options -❌ Missing clear next step guidance for user -❌ Not confirming document completeness with user -❌ Workflow not properly marked as complete in status tracking (if applicable) -❌ User unclear about what happens next or what validation options exist - -❌ **CRITICAL**: Reading only partial step file - leads to incomplete understanding and poor decisions -❌ **CRITICAL**: Making decisions without complete understanding of step requirements and protocols - -## FINAL REMINDER to give the user: - -The polished PRD serves as the foundation for all subsequent product development activities. All design, architecture, and development work should trace back to the requirements and vision documented in this PRD - update it also as needed as you continue planning. - -**Congratulations on completing the Product Requirements Document for {{project_name}}!** 🎉 - -## On Complete - -Run: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow.on_complete` - -If the resolved `workflow.on_complete` is non-empty, follow it as the final terminal instruction before exiting. diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/templates/prd-template.md b/src/bmm-skills/2-plan-workflows/bmad-create-prd/templates/prd-template.md deleted file mode 100644 index d82219d2f..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/templates/prd-template.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -stepsCompleted: [] -inputDocuments: [] -workflowType: 'prd' ---- - -# Product Requirements Document - {{project_name}} - -**Author:** {{user_name}} -**Date:** {{date}} diff --git a/src/bmm-skills/2-plan-workflows/bmad-edit-prd/SKILL.md b/src/bmm-skills/2-plan-workflows/bmad-edit-prd/SKILL.md index e209df340..ee952e692 100644 --- a/src/bmm-skills/2-plan-workflows/bmad-edit-prd/SKILL.md +++ b/src/bmm-skills/2-plan-workflows/bmad-edit-prd/SKILL.md @@ -1,102 +1,30 @@ --- name: bmad-edit-prd -description: 'Edit an existing PRD. Use when the user says "edit this PRD".' +description: 'DEPRECATED — consolidated into bmad-prd update intent - this skill will be removed in v7 in favor of `bmad-prd`.' --- -# PRD Edit Workflow +# DEPRECATED — forwards to bmad-prd (update intent) -**Goal:** Edit and improve existing PRDs through structured enhancement workflow. - -**Your Role:** PRD improvement specialist. - -You will continue to operate with your given name, identity, and communication_style, merged with the details of this role description. - -## Conventions - -- Bare paths (e.g. `steps-e/step-e-01-discovery.md`) resolve from the skill root. -- `{skill-root}` resolves to this skill's installed directory (where `customize.toml` lives). -- `{project-root}`-prefixed paths resolve from the project working directory. -- `{skill-name}` resolves to the skill directory's basename. - -## WORKFLOW ARCHITECTURE - -This uses **step-file architecture** for disciplined execution: - -### Core Principles - -- **Micro-file Design**: Each step is a self-contained instruction file that is a part of an overall workflow that must be followed exactly -- **Just-In-Time Loading**: Only the current step file is in memory - never load future step files until told to do so -- **Sequential Enforcement**: Sequence within the step files must be completed in order, no skipping or optimization allowed -- **State Tracking**: Document progress in output file frontmatter using `stepsCompleted` array when a workflow produces a document -- **Append-Only Building**: Build documents by appending content as directed to the output file - -### Step Processing Rules - -1. **READ COMPLETELY**: Always read the entire step file before taking any action -2. **FOLLOW SEQUENCE**: Execute all numbered sections in order, never deviate -3. **WAIT FOR INPUT**: If a menu is presented, halt and wait for user selection -4. **CHECK CONTINUATION**: If the step has a menu with Continue as an option, only proceed to next step when user selects 'C' (Continue) -5. **SAVE STATE**: Update `stepsCompleted` in frontmatter before loading next step -6. **LOAD NEXT**: When directed, read fully and follow the next step file - -### Critical Rules (NO EXCEPTIONS) - -- 🛑 **NEVER** load multiple step files simultaneously -- 📖 **ALWAYS** read entire step file before execution -- 🚫 **NEVER** skip steps or optimize the sequence -- 💾 **ALWAYS** update frontmatter of output files when writing the final output for a specific step -- 🎯 **ALWAYS** follow the exact instructions in the step file -- ⏸️ **ALWAYS** halt at menus and wait for user input -- 📋 **NEVER** create mental todo lists from future steps +This skill was consolidated into `bmad-prd`. It is retained as a thin compatibility shim so existing invocations by name and `_bmad/custom/bmad-edit-prd.toml` override files keep working. New work should invoke `bmad-prd` directly — it detects create / update / validate intent from the conversation. ## On Activation -### Step 1: Resolve the Workflow Block +1. Resolve customization: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. This picks up any `{project-root}/_bmad/custom/bmad-edit-prd.toml` and `bmad-edit-prd.user.toml` overrides for the legacy fields (`activation_steps_prepend`, `activation_steps_append`, `persistent_facts`, `on_complete`). -Run: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow` +2. Load `{project-root}/_bmad/bmm/config.yaml` (and `config.user.yaml` if present) to resolve `{user_name}` and `{communication_language}`. -**If the script fails**, resolve the `workflow` block yourself by reading these three files in base → team → user order and applying the same structural merge rules as the resolver: +3. Emit a deprecation notice to the user in `{communication_language}`: -1. `{skill-root}/customize.toml` — defaults -2. `{project-root}/_bmad/custom/{skill-name}.toml` — team overrides -3. `{project-root}/_bmad/custom/{skill-name}.user.toml` — personal overrides + > Notice: `bmad-edit-prd` is deprecated and will be removed in a future release. It now forwards to `bmad-prd` with update intent. To silence this notice and access the full new customization surface (`prd_template`, `validation_checklist`, `doc_standards`, `external_sources`, `external_handoffs`, `output_dir`, `output_folder_name`), migrate `_bmad/custom/bmad-edit-prd.toml` to `_bmad/custom/bmad-prd.toml` and invoke `bmad-prd` directly next time. Customization fields that were in this version still remain in the new version and will be respected if present in `_bmad/custom/bmad-prd.toml`, but the new version also supports additional fields that you can take advantage of by migrating. -Any missing file is skipped. Scalars override, tables deep-merge, arrays of tables keyed by `code` or `id` replace matching entries and append new entries, and all other arrays append. +4. Invoke `bmad-prd` with the following context. Pass these as the activating context so `bmad-prd` honors them instead of resolving its own customization from scratch: -### Step 2: Execute Prepend Steps + - **Intent:** `update` — skip `bmad-prd`'s usual intent detection step. + - **Pre-resolved legacy customization** — use these in place of resolving from `bmad-prd`'s own `customize.toml` for the four legacy fields. For everything else (`prd_template`, `validation_checklist`, `validation_report_template`, `doc_standards`, `output_dir`, `output_folder_name`, `external_sources`, `external_handoffs`), use `bmad-prd`'s own defaults and overrides as normal: + - `activation_steps_prepend` = the resolved value from step 1 + - `activation_steps_append` = the resolved value from step 1 + - `persistent_facts` = the resolved value from step 1 + - `on_complete` = the resolved value from step 1 + - **Original user input:** forward whatever the user said when invoking this skill verbatim (the target PRD path, the change signal, etc.). -Execute each entry in `{workflow.activation_steps_prepend}` in order before proceeding. - -### Step 3: Load Persistent Facts - -Treat every entry in `{workflow.persistent_facts}` as foundational context you carry for the rest of the workflow run. Entries prefixed `file:` are paths or globs under `{project-root}` — load the referenced contents as facts. All other entries are facts verbatim. - -### Step 4: Load Config - -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: -- Use `{user_name}` for greeting -- Use `{communication_language}` for all communications -- Use `{document_output_language}` for output documents -- Use `{planning_artifacts}` for output location and artifact scanning -- Use `{project_knowledge}` for additional context scanning - -### Step 5: Greet the User - -Greet `{user_name}`, speaking in `{communication_language}`. - -### Step 6: Execute Append Steps - -Execute each entry in `{workflow.activation_steps_append}` in order. - -Activation is complete. Begin the workflow below. - -## Execution - -✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the configured `{communication_language}`. -✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}`. - -**Edit Mode: Improving an existing PRD.** - -Prompt for PRD path: "Which PRD would you like to edit? Please provide the path to the PRD.md file." - -Then read fully and follow: `./steps-e/step-e-01-discovery.md` + `bmad-prd` takes the workflow from here. Do not execute any further steps in this shim. diff --git a/src/bmm-skills/2-plan-workflows/bmad-edit-prd/data/prd-purpose.md b/src/bmm-skills/2-plan-workflows/bmad-edit-prd/data/prd-purpose.md deleted file mode 100644 index 755230be7..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-edit-prd/data/prd-purpose.md +++ /dev/null @@ -1,197 +0,0 @@ -# BMAD PRD Purpose - -**The PRD is the top of the required funnel that feeds all subsequent product development work in rhw BMad Method.** - ---- - -## What is a BMAD PRD? - -A dual-audience document serving: -1. **Human Product Managers and builders** - Vision, strategy, stakeholder communication -2. **LLM Downstream Consumption** - UX Design → Architecture → Epics → Development AI Agents - -Each successive document becomes more AI-tailored and granular. - ---- - -## Core Philosophy: Information Density - -**High Signal-to-Noise Ratio** - -Every sentence must carry information weight. LLMs consume precise, dense content efficiently. - -**Anti-Patterns (Eliminate These):** -- ❌ "The system will allow users to..." → ✅ "Users can..." -- ❌ "It is important to note that..." → ✅ State the fact directly -- ❌ "In order to..." → ✅ "To..." -- ❌ Conversational filler and padding → ✅ Direct, concise statements - -**Goal:** Maximum information per word. Zero fluff. - ---- - -## The Traceability Chain - -**PRD starts the chain:** -``` -Vision → Success Criteria → User Journeys → Functional Requirements → (future: User Stories) -``` - -**In the PRD, establish:** -- Vision → Success Criteria alignment -- Success Criteria → User Journey coverage -- User Journey → Functional Requirement mapping -- All requirements traceable to user needs - -**Why:** Each downstream artifact (UX, Architecture, Epics, Stories) must trace back to documented user needs and business objectives. This chain ensures we build the right thing. - ---- - -## What Makes Great Functional Requirements? - -### FRs are Capabilities, Not Implementation - -**Good FR:** "Users can reset their password via email link" -**Bad FR:** "System sends JWT via email and validates with database" (implementation leakage) - -**Good FR:** "Dashboard loads in under 2 seconds for 95th percentile" -**Bad FR:** "Fast loading time" (subjective, unmeasurable) - -### SMART Quality Criteria - -**Specific:** Clear, precisely defined capability -**Measurable:** Quantifiable with test criteria -**Attainable:** Realistic within constraints -**Relevant:** Aligns with business objectives -**Traceable:** Links to source (executive summary or user journey) - -### FR Anti-Patterns - -**Subjective Adjectives:** -- ❌ "easy to use", "intuitive", "user-friendly", "fast", "responsive" -- ✅ Use metrics: "completes task in under 3 clicks", "loads in under 2 seconds" - -**Implementation Leakage:** -- ❌ Technology names, specific libraries, implementation details -- ✅ Focus on capability and measurable outcomes - -**Vague Quantifiers:** -- ❌ "multiple users", "several options", "various formats" -- ✅ "up to 100 concurrent users", "3-5 options", "PDF, DOCX, TXT formats" - -**Missing Test Criteria:** -- ❌ "The system shall provide notifications" -- ✅ "The system shall send email notifications within 30 seconds of trigger event" - ---- - -## What Makes Great Non-Functional Requirements? - -### NFRs Must Be Measurable - -**Template:** -``` -"The system shall [metric] [condition] [measurement method]" -``` - -**Examples:** -- ✅ "The system shall respond to API requests in under 200ms for 95th percentile as measured by APM monitoring" -- ✅ "The system shall maintain 99.9% uptime during business hours as measured by cloud provider SLA" -- ✅ "The system shall support 10,000 concurrent users as measured by load testing" - -### NFR Anti-Patterns - -**Unmeasurable Claims:** -- ❌ "The system shall be scalable" → ✅ "The system shall handle 10x load growth through horizontal scaling" -- ❌ "High availability required" → ✅ "99.9% uptime as measured by cloud provider SLA" - -**Missing Context:** -- ❌ "Response time under 1 second" → ✅ "API response time under 1 second for 95th percentile under normal load" - ---- - -## Domain-Specific Requirements - -**Auto-Detect and Enforce Based on Project Context** - -Certain industries have mandatory requirements that must be present: - -- **Healthcare:** HIPAA Privacy & Security Rules, PHI encryption, audit logging, MFA -- **Fintech:** PCI-DSS Level 1, AML/KYC compliance, SOX controls, financial audit trails -- **GovTech:** NIST framework, Section 508 accessibility (WCAG 2.1 AA), FedRAMP, data residency -- **E-Commerce:** PCI-DSS for payments, inventory accuracy, tax calculation by jurisdiction - -**Why:** Missing these requirements in the PRD means they'll be missed in architecture and implementation, creating expensive rework. During PRD creation there is a step to cover this - during validation we want to make sure it was covered. For this purpose steps will utilize a domain-complexity.csv and project-types.csv. - ---- - -## Document Structure (Markdown, Human-Readable) - -### Required Sections -1. **Executive Summary** - Vision, differentiator, target users -2. **Success Criteria** - Measurable outcomes (SMART) -3. **Product Scope** - MVP, Growth, Vision phases -4. **User Journeys** - Comprehensive coverage -5. **Domain Requirements** - Industry-specific compliance (if applicable) -6. **Innovation Analysis** - Competitive differentiation (if applicable) -7. **Project-Type Requirements** - Platform-specific needs -8. **Functional Requirements** - Capability contract (FRs) -9. **Non-Functional Requirements** - Quality attributes (NFRs) - -### Formatting for Dual Consumption - -**For Humans:** -- Clear, professional language -- Logical flow from vision to requirements -- Easy for stakeholders to review and approve - -**For LLMs:** -- ## Level 2 headers for all main sections (enables extraction) -- Consistent structure and patterns -- Precise, testable language -- High information density - ---- - -## Downstream Impact - -**How the PRD Feeds Next Artifacts:** - -**UX Design:** -- User journeys → interaction flows -- FRs → design requirements -- Success criteria → UX metrics - -**Architecture:** -- FRs → system capabilities -- NFRs → architecture decisions -- Domain requirements → compliance architecture -- Project-type requirements → platform choices - -**Epics & Stories (created after architecture):** -- FRs → user stories (1 FR could map to 1-3 stories potentially) -- Acceptance criteria → story acceptance tests -- Priority → sprint sequencing -- Traceability → stories map back to vision - -**Development AI Agents:** -- Precise requirements → implementation clarity -- Test criteria → automated test generation -- Domain requirements → compliance enforcement -- Measurable NFRs → performance targets - ---- - -## Summary: What Makes a Great BMAD PRD? - -✅ **High Information Density** - Every sentence carries weight, zero fluff -✅ **Measurable Requirements** - All FRs and NFRs are testable with specific criteria -✅ **Clear Traceability** - Each requirement links to user need and business objective -✅ **Domain Awareness** - Industry-specific requirements auto-detected and included -✅ **Zero Anti-Patterns** - No subjective adjectives, implementation leakage, or vague quantifiers -✅ **Dual Audience Optimized** - Human-readable AND LLM-consumable -✅ **Markdown Format** - Professional, clean, accessible to all stakeholders - ---- - -**Remember:** The PRD is the foundation. Quality here ripples through every subsequent phase. A dense, precise, well-traced PRD makes UX design, architecture, epic breakdown, and AI development dramatically more effective. diff --git a/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01-discovery.md b/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01-discovery.md deleted file mode 100644 index 39e344946..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01-discovery.md +++ /dev/null @@ -1,242 +0,0 @@ ---- -# File references (ONLY variables used in this step) -prdPurpose: '../data/prd-purpose.md' ---- - -# Step E-1: Discovery & Understanding - -## STEP GOAL: - -Understand what the user wants to edit in the PRD, detect PRD format/type, check for validation report guidance, and route appropriately. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` -- ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}` - -### Role Reinforcement: - -- ✅ You are a Validation Architect and PRD Improvement Specialist -- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role -- ✅ We engage in collaborative dialogue, not command-response -- ✅ You bring analytical expertise and improvement guidance -- ✅ User brings domain knowledge and edit requirements - -### Step-Specific Rules: - -- 🎯 Focus ONLY on discovering user intent and PRD format -- 🚫 FORBIDDEN to make any edits yet -- 💬 Approach: Inquisitive and analytical, understanding before acting -- 🚪 This is a branch step - may route to legacy conversion - -## EXECUTION PROTOCOLS: - -- 🎯 Discover user's edit requirements -- 🎯 Auto-detect validation reports in PRD folder (use as guide) -- 🎯 Load validation report if provided (use as guide) -- 🎯 Detect PRD format (BMAD/legacy) -- 🎯 Route appropriately based on format -- 💾 Document discoveries for next step -- 🚫 FORBIDDEN to proceed without understanding requirements - -## CONTEXT BOUNDARIES: - -- Available context: PRD file to edit, optional validation report, auto-detected validation reports -- Focus: User intent discovery and format detection only -- Limits: Don't edit yet, don't validate yet -- Dependencies: None - this is first edit step - -## MANDATORY SEQUENCE - -**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise unless user explicitly requests a change. - -### 1. Load PRD Purpose Standards - -Load and read the complete file at: -`{prdPurpose}` (data/prd-purpose.md) - -This file defines what makes a great BMAD PRD. Internalize this understanding - it will guide improvement recommendations. - -### 2. Discover PRD to Edit - -"**PRD Edit Workflow** - -Which PRD would you like to edit? - -Please provide the path to the PRD file you want to edit." - -**Wait for user to provide PRD path.** - -### 3. Validate PRD Exists and Load - -Once PRD path is provided: -- Check if PRD file exists at specified path -- If not found: "I cannot find a PRD at that path. Please check the path and try again." -- If found: Load the complete PRD file including frontmatter - -### 4. Check for Existing Validation Report - -**Check if validation report exists in the PRD folder:** - -```bash -# Look for most recent validation report in the PRD folder -ls -t {prd_folder_path}/validation-report-*.md 2>/dev/null | head -1 -``` - -**If validation report found:** - -Display: -"**📋 Found Validation Report** - -I found a validation report from {validation_date} in the PRD folder. - -This report contains findings from previous validation checks and can help guide our edits to fix known issues. - -**Would you like to:** -- **[U] Use validation report** - Load it to guide and prioritize edits -- **[S] Skip** - Proceed with manual edit discovery" - -**Wait for user input.** - -**IF U (Use validation report):** -- Load the validation report file -- Extract findings, issues, and improvement suggestions -- Note: "Validation report loaded - will use it to guide prioritized improvements" -- Continue to step 5 - -**IF S (Skip) or no validation report found:** -- Note: "Proceeding with manual edit discovery" -- Continue to step 5 - -**If no validation report found:** -- Note: "No validation report found in PRD folder" -- Continue to step 5 without asking user - -### 5. Ask About Validation Report - -"**Do you have a validation report to guide edits?** - -If you've run the validation workflow on this PRD, I can use that report to guide improvements and prioritize changes. - -Validation report path (or type 'none'):" - -**Wait for user input.** - -**If validation report path provided:** -- Load the validation report -- Extract findings, severity, improvement suggestions -- Note: "Validation report loaded - will use it to guide prioritized improvements" - -**If no validation report:** -- Note: "Proceeding with manual edit discovery" -- Continue to step 6 - -### 6. Discover Edit Requirements - -"**What would you like to edit in this PRD?** - -Please describe the changes you want to make. For example: -- Fix specific issues (information density, implementation leakage, etc.) -- Add missing sections or content -- Improve structure and flow -- Convert to BMAD format (if legacy PRD) -- General improvements -- Other changes - -**Describe your edit goals:**" - -**Wait for user to describe their requirements.** - -### 7. Detect PRD Format - -Analyze the loaded PRD: - -**Extract all ## Level 2 headers** from PRD - -**Check for BMAD PRD core sections:** -1. Executive Summary -2. Success Criteria -3. Product Scope -4. User Journeys -5. Functional Requirements -6. Non-Functional Requirements - -**Classify format:** -- **BMAD Standard:** 5-6 core sections present -- **BMAD Variant:** 3-4 core sections present, generally follows BMAD patterns -- **Legacy (Non-Standard):** Fewer than 3 core sections, does not follow BMAD structure - -### 8. Route Based on Format and Context - -**IF validation report provided OR PRD is BMAD Standard/Variant:** - -Display: "**Edit Requirements Understood** - -**PRD Format:** {classification} -{If validation report: "**Validation Guide:** Yes - will use validation report findings"} -**Edit Goals:** {summary of user's requirements} - -**Proceeding to deep review and analysis...**" - -Read fully and follow: `./step-e-02-review.md` - -**IF PRD is Legacy (Non-Standard) AND no validation report:** - -Display: "**Format Detected:** Legacy PRD - -This PRD does not follow BMAD standard structure (only {count}/6 core sections present). - -**Your edit goals:** {user's requirements} - -**How would you like to proceed?**" - -Present MENU OPTIONS below for user selection - -### 9. Present MENU OPTIONS (Legacy PRDs Only) - -**[C] Convert to BMAD Format** - Convert PRD to BMAD standard structure, then apply your edits -**[E] Edit As-Is** - Apply your edits without converting the format -**[X] Exit** - Exit and review conversion options - -#### EXECUTION RULES: - -- ALWAYS halt and wait for user input -- Only proceed based on user selection - -#### Menu Handling Logic: - -- IF C (Convert): Read fully and follow: `./step-e-01b-legacy-conversion.md` -- IF E (Edit As-Is): Display "Proceeding with edits..." then load next step -- IF X (Exit): Display summary and exit -- IF Any other: help user, then redisplay menu - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- User's edit requirements clearly understood -- Auto-detected validation reports loaded and analyzed (when found) -- Manual validation report loaded and analyzed (if provided) -- PRD format detected correctly -- BMAD PRDs proceed directly to review step -- Legacy PRDs pause and present conversion options -- User can choose conversion path or edit as-is - -### ❌ SYSTEM FAILURE: - -- Not discovering user's edit requirements -- Not auto-detecting validation reports in PRD folder -- Not loading validation report when provided (auto or manual) -- Missing format detection -- Not pausing for legacy PRDs without guidance -- Auto-proceeding without understanding intent - -**Master Rule:** Understand before editing. Detect format early so we can guide users appropriately. Auto-detect and use validation reports for prioritized improvements. diff --git a/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md b/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md deleted file mode 100644 index 54f82525b..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md +++ /dev/null @@ -1,204 +0,0 @@ ---- -# File references (ONLY variables used in this step) -prdFile: '{prd_file_path}' -prdPurpose: '../data/prd-purpose.md' ---- - -# Step E-1B: Legacy PRD Conversion Assessment - -## STEP GOAL: - -Analyze legacy PRD against BMAD standards, identify gaps, propose conversion strategy, and let user choose how to proceed. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` - -### Role Reinforcement: - -- ✅ You are a Validation Architect and PRD Improvement Specialist -- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role -- ✅ We engage in collaborative dialogue, not command-response -- ✅ You bring BMAD standards expertise and conversion guidance -- ✅ User brings domain knowledge and edit requirements - -### Step-Specific Rules: - -- 🎯 Focus ONLY on conversion assessment and proposal -- 🚫 FORBIDDEN to perform conversion yet (that comes in edit step) -- 💬 Approach: Analytical gap analysis with clear recommendations -- 🚪 This is a branch step - user chooses conversion path - -## EXECUTION PROTOCOLS: - -- 🎯 Analyze legacy PRD against BMAD standard -- 💾 Identify gaps and estimate conversion effort -- 📖 Present conversion options with effort estimates -- 🚫 FORBIDDEN to proceed without user selection - -## CONTEXT BOUNDARIES: - -- Available context: Legacy PRD, user's edit requirements, prd-purpose standards -- Focus: Conversion assessment only (not actual conversion) -- Limits: Don't convert yet, don't validate yet -- Dependencies: Step e-01 detected legacy format and routed here - -## MANDATORY SEQUENCE - -**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise unless user explicitly requests a change. - -### 1. Attempt Sub-Process Assessment - -**Try to use Task tool with sub-agent:** - -"Perform legacy PRD conversion assessment: - -**Load the PRD and prd-purpose.md** - -**For each BMAD PRD section, analyze:** -1. Does PRD have this section? (Executive Summary, Success Criteria, Product Scope, User Journeys, Functional Requirements, Non-Functional Requirements) -2. If present: Is it complete and well-structured? -3. If missing: What content exists that could migrate to this section? -4. Effort to create/complete: Minimal / Moderate / Significant - -**Identify:** -- Core sections present: {count}/6 -- Content gaps in each section -- Overall conversion effort: Quick / Moderate / Substantial -- Recommended approach: Full restructuring vs targeted improvements - -Return conversion assessment with gap analysis and effort estimate." - -**Graceful degradation (if no Task tool):** -- Manually check PRD for each BMAD section -- Note what's present and what's missing -- Estimate conversion effort -- Identify best conversion approach - -### 2. Build Gap Analysis - -**For each BMAD core section:** - -**Executive Summary:** -- Present: [Yes/No/Partial] -- Gap: [what's missing or incomplete] -- Effort to Complete: [Minimal/Moderate/Significant] - -**Success Criteria:** -- Present: [Yes/No/Partial] -- Gap: [what's missing or incomplete] -- Effort to Complete: [Minimal/Moderate/Significant] - -**Product Scope:** -- Present: [Yes/No/Partial] -- Gap: [what's missing or incomplete] -- Effort to Complete: [Minimal/Moderate/Significant] - -**User Journeys:** -- Present: [Yes/No/Partial] -- Gap: [what's missing or incomplete] -- Effort to Complete: [Minimal/Moderate/Significant] - -**Functional Requirements:** -- Present: [Yes/No/Partial] -- Gap: [what's missing or incomplete] -- Effort to Complete: [Minimal/Moderate/Significant] - -**Non-Functional Requirements:** -- Present: [Yes/No/Partial] -- Gap: [what's missing or incomplete] -- Effort to Complete: [Minimal/Moderate/Significant] - -**Overall Assessment:** -- Sections Present: {count}/6 -- Total Conversion Effort: [Quick/Moderate/Substantial] -- Recommended: [Full restructuring / Targeted improvements] - -### 3. Present Conversion Assessment - -Display: - -"**Legacy PRD Conversion Assessment** - -**Current PRD Structure:** -- Core sections present: {count}/6 -{List which sections are present/missing} - -**Gap Analysis:** - -{Present gap analysis table showing each section's status and effort} - -**Overall Conversion Effort:** {effort level} - -**Your Edit Goals:** -{Reiterate user's stated edit requirements} - -**Recommendation:** -{Based on effort and user goals, recommend best approach} - -**How would you like to proceed?**" - -### 4. Present MENU OPTIONS - -**[R] Restructure to BMAD** - Full conversion to BMAD format, then apply your edits -**[I] Targeted Improvements** - Apply your edits to existing structure without restructuring -**[E] Edit & Restructure** - Do both: convert format AND apply your edits -**[X] Exit** - Review assessment and decide - -#### EXECUTION RULES: - -- ALWAYS halt and wait for user input -- Only proceed based on user selection - -#### Menu Handling Logic: - -- IF R (Restructure): Note conversion mode, then load next step -- IF I (Targeted): Note targeted mode, then load next step -- IF E (Edit & Restructure): Note both mode, then load next step -- IF X (Exit): Display summary, exit - -### 5. Document Conversion Strategy - -Store conversion decision for next step: - -- **Conversion mode:** [Full restructuring / Targeted improvements / Both] -- **Edit requirements:** [user's requirements from step e-01] -- **Gap analysis:** [summary of gaps identified] - -Display: "**Conversion Strategy Documented** - -Mode: {conversion mode} -Edit goals: {summary} - -**Proceeding to deep review...**" - -Read fully and follow: `./step-e-02-review.md` - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- All 6 BMAD core sections analyzed for gaps -- Effort estimates provided for each section -- Overall conversion effort assessed correctly -- Clear recommendation provided based on effort and user goals -- User chooses conversion strategy (restructure/targeted/both) -- Conversion strategy documented for next step - -### ❌ SYSTEM FAILURE: - -- Not analyzing all 6 core sections -- Missing effort estimates -- Not providing clear recommendation -- Auto-proceeding without user selection -- Not documenting conversion strategy - -**Master Rule:** Legacy PRDs need conversion assessment so users understand the work involved and can choose the best approach. diff --git a/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-02-review.md b/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-02-review.md deleted file mode 100644 index c01a0adb9..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-02-review.md +++ /dev/null @@ -1,245 +0,0 @@ ---- -# File references (ONLY variables used in this step) -prdFile: '{prd_file_path}' -validationReport: '{validation_report_path}' # If provided -prdPurpose: '../data/prd-purpose.md' ---- - -# Step E-2: Deep Review & Analysis - -## STEP GOAL: - -Thoroughly review the existing PRD, analyze validation report findings (if provided), and prepare a detailed change plan before editing. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` -- ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}` - -### Role Reinforcement: - -- ✅ You are a Validation Architect and PRD Improvement Specialist -- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role -- ✅ We engage in collaborative dialogue, not command-response -- ✅ You bring analytical expertise and improvement planning -- ✅ User brings domain knowledge and approval authority - -### Step-Specific Rules: - -- 🎯 Focus ONLY on review and analysis, not editing yet -- 🚫 FORBIDDEN to make changes to PRD in this step -- 💬 Approach: Thorough analysis with user confirmation on plan -- 🚪 This is a middle step - user confirms plan before proceeding - -## EXECUTION PROTOCOLS: - -- 🎯 Load and analyze validation report (if provided) -- 🎯 Deep review of entire PRD -- 🎯 Map validation findings to specific sections -- 🎯 Prepare detailed change plan -- 💬 Get user confirmation on plan -- 🚫 FORBIDDEN to proceed to edit without user approval - -## CONTEXT BOUNDARIES: - -- Available context: PRD file, validation report (if provided), user requirements from step e-01 -- Focus: Analysis and planning only (no editing) -- Limits: Don't change PRD yet, don't validate yet -- Dependencies: Step e-01 completed - requirements and format known - -## MANDATORY SEQUENCE - -**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise unless user explicitly requests a change. - -### 1. Attempt Sub-Process Deep Review - -**Try to use Task tool with sub-agent:** - -"Perform deep PRD review and change planning: - -**Context from step e-01:** -- User's edit requirements: {user_requirements} -- PRD format: {BMAD/legacy} -- Validation report provided: {yes/no} -- Conversion mode: {restructure/targeted/both} (if legacy) - -**IF validation report provided:** -1. Extract all findings from validation report -2. Map findings to specific PRD sections -3. Prioritize by severity: Critical > Warning > Informational -4. For each critical issue: identify specific fix needed -5. For user's manual edit goals: identify where in PRD to apply - -**IF no validation report:** -1. Read entire PRD thoroughly -2. Analyze against BMAD standards (from prd-purpose.md) -3. Identify issues in: - - Information density (anti-patterns) - - Structure and flow - - Completeness (missing sections/content) - - Measurability (unmeasurable requirements) - - Traceability (broken chains) - - Implementation leakage -4. Map user's edit goals to specific sections - -**Output:** -- Section-by-section analysis -- Specific changes needed for each section -- Prioritized action list -- Recommended order for applying changes - -Return detailed change plan with section breakdown." - -**Graceful degradation (if no Task tool):** -- Manually read PRD sections -- Manually analyze validation report findings (if provided) -- Build section-by-section change plan -- Prioritize changes by severity/user goals - -### 2. Build Change Plan - -**Organize by PRD section:** - -**For each section (in order):** -- **Current State:** Brief description of what exists -- **Issues Identified:** [List from validation report or manual analysis] -- **Changes Needed:** [Specific changes required] -- **Priority:** [Critical/High/Medium/Low] -- **User Requirements Met:** [Which user edit goals address this section] - -**Include:** -- Sections to add (if missing) -- Sections to update (if present but needs work) -- Content to remove (if incorrect/leakage) -- Structure changes (if reformatting needed) - -### 3. Prepare Change Plan Summary - -**Summary sections:** - -**Changes by Type:** -- **Additions:** {count} sections to add -- **Updates:** {count} sections to update -- **Removals:** {count} items to remove -- **Restructuring:** {yes/no} if format conversion needed - -**Priority Distribution:** -- **Critical:** {count} changes (must fix) -- **High:** {count} changes (important) -- **Medium:** {count} changes (nice to have) -- **Low:** {count} changes (optional) - -**Estimated Effort:** -[Quick/Moderate/Substantial] based on scope and complexity - -### 4. Present Change Plan to User - -Display: - -"**Deep Review Complete - Change Plan** - -**PRD Analysis:** -{Brief summary of PRD current state} - -{If validation report provided:} -**Validation Findings:** -{count} issues identified: {critical} critical, {warning} warnings - -**Your Edit Requirements:** -{summary of what user wants to edit} - -**Proposed Change Plan:** - -**By Section:** -{Present section-by-section breakdown} - -**By Priority:** -- Critical: {count} items -- High: {count} items -- Medium: {count} items - -**Estimated Effort:** {effort level} - -**Questions:** -1. Does this change plan align with what you had in mind? -2. Any sections I should add/remove/reprioritize? -3. Any concerns before I proceed with edits? - -**Review the plan and let me know if you'd like any adjustments.**" - -### 5. Get User Confirmation - -Wait for user to review and provide feedback. - -**If user wants adjustments:** -- Discuss requested changes -- Revise change plan accordingly -- Represent for confirmation - -**If user approves:** -- Note: "Change plan approved. Proceeding to edit step." -- Continue to step 6 - -### 6. Document Approved Plan - -Store approved change plan for next step: - -- **Approved changes:** Section-by-section list -- **Priority order:** Sequence to apply changes -- **User confirmed:** Yes - -Display: "**Change Plan Approved** - -{Brief summary of approved plan} - -**Proceeding to edit step...**" - -Read fully and follow: `./step-e-03-edit.md` - -### 7. Present MENU OPTIONS (If User Wants Discussion) - -**[A] Advanced Elicitation** - Get additional perspectives on change plan -**[P] Party Mode** - Discuss with team for more ideas -**[C] Continue to Edit** - Proceed with approved plan - -#### EXECUTION RULES: - -- ALWAYS halt and wait for user input -- Only proceed to edit when user selects 'C' - -#### Menu Handling Logic: - -- IF A: Invoke the `bmad-advanced-elicitation` skill, then return to discussion -- IF P: Invoke the `bmad-party-mode` skill, then return to discussion -- IF C: Document approval, then load step-e-03-edit.md -- IF Any other: discuss, then redisplay menu - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- Validation report findings fully analyzed (if provided) -- Deep PRD review completed systematically -- Change plan built section-by-section -- Changes prioritized by severity/user goals -- User presented with clear plan -- User confirms or adjusts plan -- Approved plan documented for next step - -### ❌ SYSTEM FAILURE: - -- Not analyzing validation report findings (if provided) -- Superficial review instead of deep analysis -- Missing section-by-section breakdown -- Not prioritizing changes -- Proceeding without user approval - -**Master Rule:** Plan before editing. Thorough analysis ensures we make the right changes in the right order. User approval prevents misalignment. diff --git a/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-03-edit.md b/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-03-edit.md deleted file mode 100644 index 5b5e66902..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-03-edit.md +++ /dev/null @@ -1,250 +0,0 @@ ---- -# File references (ONLY variables used in this step) -prdFile: '{prd_file_path}' -prdPurpose: '../data/prd-purpose.md' ---- - -# Step E-3: Edit & Update - -## STEP GOAL: - -Apply changes to the PRD following the approved change plan from step e-02, including content updates, structure improvements, and format conversion if needed. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 ALWAYS generate content WITH user input/approval -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` -- ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}` - -### Role Reinforcement: - -- ✅ You are a Validation Architect and PRD Improvement Specialist -- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role -- ✅ We engage in collaborative dialogue, not command-response -- ✅ You bring analytical expertise and precise editing skills -- ✅ User brings domain knowledge and approval authority - -### Step-Specific Rules: - -- 🎯 Focus ONLY on implementing approved changes from step e-02 -- 🚫 FORBIDDEN to make changes beyond the approved plan -- 💬 Approach: Methodical, section-by-section execution -- 🚪 This is a middle step - user can request adjustments - -## EXECUTION PROTOCOLS: - -- 🎯 Follow approved change plan systematically -- 💾 Edit PRD content according to plan -- 📖 Update frontmatter as needed -- 🚫 FORBIDDEN to proceed without completion - -## CONTEXT BOUNDARIES: - -- Available context: PRD file, approved change plan from step e-02, prd-purpose standards -- Focus: Implementing changes from approved plan only -- Limits: Don't add changes beyond plan, don't validate yet -- Dependencies: Step e-02 completed - plan approved by user - -## MANDATORY SEQUENCE - -**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise unless user explicitly requests a change. - -### 1. Retrieve Approved Change Plan - -From step e-02, retrieve: -- **Approved changes:** Section-by-section list -- **Priority order:** Sequence to apply changes -- **User requirements:** Edit goals from step e-01 - -Display: "**Starting PRD Edits** - -**Change Plan:** {summary} -**Total Changes:** {count} -**Estimated Effort:** {effort level} - -**Proceeding with edits section by section...**" - -### 2. Attempt Sub-Process Edits (For Complex Changes) - -**Try to use Task tool with sub-agent for major sections:** - -"Execute PRD edits for {section_name}: - -**Context:** -- Section to edit: {section_name} -- Current content: {existing content} -- Changes needed: {specific changes from plan} -- BMAD PRD standards: Load from prd-purpose.md - -**Tasks:** -1. Read current PRD section -2. Apply specified changes -3. Ensure BMAD PRD principles compliance: - - High information density (no filler) - - Measurable requirements - - Clear structure - - Proper markdown formatting -4. Return updated section content - -Apply changes and return updated section." - -**Graceful degradation (if no Task tool):** -- Perform edits directly in current context -- Load PRD section, apply changes, save - -### 3. Execute Changes Section-by-Section - -**For each section in approved plan (in priority order):** - -**a) Load current section** -- Read the current PRD section content -- Note what exists - -**b) Apply changes per plan** -- Additions: Create new sections with proper content -- Updates: Modify existing content per plan -- Removals: Remove specified content -- Restructuring: Reformat content to BMAD standard - -**c) Update PRD file** -- Apply changes to PRD -- Save updated PRD -- Verify changes applied correctly - -**Display progress after each section:** -"**Section Updated:** {section_name} -Changes: {brief summary} -{More sections remaining...}" - -### 4. Handle Restructuring (If Needed) - -**If conversion mode is "Full restructuring" or "Both":** - -**For restructuring:** -- Reorganize PRD to BMAD standard structure -- Ensure proper ## Level 2 headers -- Reorder sections logically -- Update PRD frontmatter to match BMAD format - -**Follow BMAD PRD structure:** -1. Executive Summary -2. Success Criteria -3. Product Scope -4. User Journeys -5. Domain Requirements (if applicable) -6. Innovation Analysis (if applicable) -7. Project-Type Requirements -8. Functional Requirements -9. Non-Functional Requirements - -Display: "**PRD Restructured** -BMAD standard structure applied. -{Sections added/reordered}" - -### 5. Update PRD Frontmatter - -**Ensure frontmatter is complete and accurate:** - -```yaml ---- -workflowType: 'prd' -workflow: 'create' # or 'validate' or 'edit' -classification: - domain: '{domain}' - projectType: '{project_type}' - complexity: '{complexity}' -inputDocuments: [list of input documents] -stepsCompleted: ['step-e-01-discovery', 'step-e-02-review', 'step-e-03-edit'] -lastEdited: '{current_date}' -editHistory: - - date: '{current_date}' - changes: '{summary of changes}' ---- -``` - -**Update frontmatter accordingly.** - -### 6. Final Review of Changes - -**Load complete updated PRD** - -**Verify:** -- All approved changes applied correctly -- PRD structure is sound -- No unintended modifications -- Frontmatter is accurate - -**If issues found:** -- Fix them now -- Note corrections made - -**If user wants adjustments:** -- Accept feedback and make adjustments -- Re-verify after adjustments - -### 7. Confirm Completion - -Display: - -"**PRD Edits Complete** - -**Changes Applied:** {count} sections modified -**PRD Updated:** {prd_file_path} - -**Summary of Changes:** -{Brief bullet list of major changes} - -**PRD is ready for:** -- Use in downstream workflows (UX, Architecture) -- Validation (if not yet validated) - -**What would you like to do next?**" - -### 8. Present MENU OPTIONS - -**[V] Run Validation** - Execute full validation workflow (./steps-v/step-v-01-discovery.md) -**[S] Summary Only** - End with summary of changes (no validation) -**[A] Adjust** - Make additional edits -**[X] Exit** - Exit edit workflow - -#### EXECUTION RULES: - -- ALWAYS halt and wait for user input -- Only proceed based on user selection - -#### Menu Handling Logic: - -- IF V (Validate): Display "Starting validation workflow..." then read fully and follow: `./steps-v/step-v-01-discovery.md` -- IF S (Summary): Present edit summary and exit -- IF A (Adjust): Accept additional requirements, loop back to editing -- IF X (Exit): Display summary and exit - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- All approved changes from step e-02 applied correctly -- Changes executed in planned priority order -- Restructuring completed (if needed) -- Frontmatter updated accurately -- Final verification confirms changes -- User can proceed to validation or exit with summary -- Option to run validation seamlessly integrates edit and validate modes - -### ❌ SYSTEM FAILURE: - -- Making changes beyond approved plan -- Not following priority order -- Missing restructuring (if conversion mode) -- Not updating frontmatter -- No final verification -- Not saving updated PRD - -**Master Rule:** Execute the plan exactly as approved. PRD is now ready for validation or downstream use. Validation integration ensures quality. diff --git a/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-04-complete.md b/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-04-complete.md deleted file mode 100644 index 961a2704d..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-04-complete.md +++ /dev/null @@ -1,165 +0,0 @@ ---- -# File references (ONLY variables used in this step) -prdFile: '{prd_file_path}' ---- - -# Step E-4: Complete & Validate - -## STEP GOAL: - -Present summary of completed edits and offer next steps including seamless integration with validation workflow. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 ALWAYS generate content WITH user input/approval -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` - -### Role Reinforcement: - -- ✅ You are a Validation Architect and PRD Improvement Specialist -- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role -- ✅ We engage in collaborative dialogue, not command-response -- ✅ You bring synthesis and summary expertise -- ✅ User chooses next actions - -### Step-Specific Rules: - -- 🎯 Focus ONLY on presenting summary and options -- 🚫 FORBIDDEN to make additional changes -- 💬 Approach: Clear, concise summary with actionable options -- 🚪 This is the final edit step - no more edits - -## EXECUTION PROTOCOLS: - -- 🎯 Compile summary of all changes made -- 🎯 Present options clearly with expected outcomes -- 📖 Route to validation if user chooses -- 🚫 FORBIDDEN to proceed without user selection - -## CONTEXT BOUNDARIES: - -- Available context: Updated PRD file, edit history from step e-03 -- Focus: Summary and options only (no more editing) -- Limits: Don't make changes, just present options -- Dependencies: Step e-03 completed - all edits applied - -## MANDATORY SEQUENCE - -**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise unless user explicitly requests a change. - -### 1. Compile Edit Summary - -From step e-03 change execution, compile: - -**Changes Made:** -- Sections added: {list with names} -- Sections updated: {list with names} -- Content removed: {list} -- Structure changes: {description} - -**Edit Details:** -- Total sections affected: {count} -- Mode: {restructure/targeted/both} -- Priority addressed: {Critical/High/Medium/Low} - -**PRD Status:** -- Format: {BMAD Standard / BMAD Variant / Legacy (converted)} -- Completeness: {assessment} -- Ready for: {downstream use cases} - -### 2. Present Completion Summary - -Display: - -"**✓ PRD Edit Complete** - -**Updated PRD:** {prd_file_path} - -**Changes Summary:** -{Present bulleted list of major changes} - -**Edit Mode:** {mode} -**Sections Modified:** {count} - -**PRD Format:** {format} - -**PRD is now ready for:** -- Downstream workflows (UX Design, Architecture) -- Validation to ensure quality -- Production use - -**What would you like to do next?**" - -### 3. Present MENU OPTIONS - -Display: - -**[V] Run Full Validation** - Execute complete validation workflow (steps-v) to verify PRD quality -**[E] Edit More** - Make additional edits to the PRD -**[S] Summary** - End with detailed summary of changes -**[X] Exit** - Exit edit workflow - -#### EXECUTION RULES: - -- ALWAYS halt and wait for user input -- Only proceed based on user selection - -#### Menu Handling Logic: - -- **IF V (Run Full Validation):** - - Display: "**Starting Validation Workflow**" - - Display: "This will run all 13 validation checks on the updated PRD." - - Display: "Preparing to validate: {prd_file_path}" - - Display: "**Proceeding to validation...**" - - Invoke the `bmad-validate-prd` skill to run the complete validation workflow - -- **IF E (Edit More):** - - Display: "**Additional Edits**" - - Ask: "What additional edits would you like to make?" - - Accept input, then display: "**Returning to edit step...**" - - Read fully and follow: `./step-e-03-edit.md` again - -- **IF S (Summary):** - - Display detailed summary including: - - Complete list of all changes made - - Before/after comparison (key improvements) - - Recommendations for next steps - - Display: "**Edit Workflow Complete**" - - Run: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow.on_complete` — if the resolved value is non-empty, follow it as the final terminal instruction before exiting. - - Exit - -- **IF X (Exit):** - - Display summary - - Display: "**Edit Workflow Complete**" - - Run: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow.on_complete` — if the resolved value is non-empty, follow it as the final terminal instruction before exiting. - - Exit - -- **IF Any other:** Help user, then redisplay menu - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- Complete edit summary compiled accurately -- All changes clearly documented -- Options presented with clear expectations -- Validation option seamlessly integrates with steps-v workflow -- User can validate, edit more, or exit -- Clean handoff to validation workflow (if chosen) -- Edit workflow completes properly - -### ❌ SYSTEM FAILURE: - -- Missing changes in summary -- Not offering validation option -- Not documenting completion properly -- No clear handoff to validation workflow - -**Master Rule:** Edit workflow seamlessly integrates with validation. User can edit → validate → edit again → validate again in iterative improvement cycle. diff --git a/src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md b/src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md new file mode 100644 index 000000000..fdcebf66c --- /dev/null +++ b/src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md @@ -0,0 +1,90 @@ +--- +name: bmad-prd +description: Create, update, validate, or analyze a PRD. Use when the user wants help producing, editing, validating, or analyzing a PRD. +--- +# BMad PRD + +## Overview + +You are an expert PM facilitator. The user has an idea that needs to be captured in a PRD; your job is to coach them to a PRD they are proud of — guide, do not do the thinking for them. Discovery posture, the patterns that hold a PRD together, and the rules that keep parent context lean live in `## Discovery`, `## PRD Discipline`, and `## Constraints`. + +At the opening greeting, let the user know they can invoke the skills `bmad-party-mode` for multi-agent perspectives or `bmad-advanced-elicitation` for deeper exploration at any point. + +## On Activation + +1. Resolve customization: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. On failure, surface the diagnostic and halt. +2. Execute each entry in `{workflow.activation_steps_prepend}` in order. +3. Treat every entry in `{workflow.persistent_facts}` as foundational context. Entries prefixed `file:` are paths or globs under `{project-root}` — load their contents as facts. All others are facts verbatim. +4. Note `{workflow.external_sources}` as a registry to consult on demand when the conversation surfaces a relevant need. Do not query preemptively. If a named tool is unavailable at runtime, fall back to standard behavior and note the gap. +5. Load `{project-root}/_bmad/bmm/config.yaml` (and `config.user.yaml` if present). Resolve `{user_name}`, `{communication_language}`, `{document_output_language}`, `{planning_artifacts}`, `{project_name}`, `{date}`. +6. Detect mode and intent. If headless (no interactive user), read `references/headless.md` and follow it for the whole run with matched intent. If interactive, greet `{user_name}` in `{communication_language}` and detect intent (create / update / validate); ask if intent is unclear. +7. Execute each entry in `{workflow.activation_steps_append}` in order. + +## Intent Operating Modes + +**Create.** A PRD the user is proud of, drawn out through real conversation. Discovery first, drafting second. Bind `{doc_workspace}` to a fresh folder at `{workflow.output_dir}/{workflow.output_folder_name}/` and write `prd.md` there with YAML frontmatter (title, created, updated). Version and state transitions live in `decision-log.md`. For Update and Validate, `{doc_workspace}` is the existing folder of the PRD being targeted. When drafting is complete, proceed to `## Finalize`. + +**Update.** Reconcile an existing PRD with a change signal. Orient via source extractors (see `## Constraints` → Extract, don't ingest) against the PRD, addendum, `decision-log.md`, and original inputs — then run the `## Discovery` posture against the change signal. Surface conflicts with prior decisions before changing. If the change is fundamental, offer Create instead of patching. When changes are applied, proceed to `## Finalize`. + +**Validate** (or *analyze*). Critique an existing PRD against `{workflow.validation_checklist}`. Standalone — does NOT enter `## Finalize`. Orient via source extractors against `decision-log.md` and any original inputs to give the validator context. Spawn the validator subagent against `prd.md` (and `addendum.md` if present); produce findings and a validation report per `references/validation-render.md`. Always offer to roll findings into an Update. + +## Discovery + +Open with space for the full picture: invite a brain dump, inputs, ideas, WHY they are doing this. Read what exists first; ask only what is missing. After the dump, a simple "anything else?" often surfaces what they almost forgot. + +Before drafting, read the situation across four dimensions — they determine the PRD's shape: + +- **Stakes.** Calibrates rigor, section depth, and which adapt-in clusters apply. +- **Audience.** Drives tone, evidence requirements, and approval sections. +- **Existing inputs.** Existing artifacts mean those parts of the PRD reference, not relitigate. When project-context, prior PRDs, or existing UX/architecture are present, this is brownfield — frame Discovery around what is new or changing. +- **Downstream depth.** Whole spec for a small build, or top of a chain through UX → architecture → epics → stories? Affects how much the PRD encodes vs. defers. + +**Right-skill check.** Once the situation is read, sanity-check that PRD is the best tool. Three cases where it isn't: + +- **Games** → suggest `bmad-gds` for the Game Design Document. +- **Small scope + wants a captured artifact** (small tweak to an existing codebase, single doc to point at) → stay here and produce an *all-inclusive document*: lean spine plus inline Stories via the adapt-in Stories cluster. +- **Express implementation** (wants to build now, no planning chain or captured artifact needed) → suggest `bmad-quick-dev`. + +Surface these honestly and let the user choose; if they prefer this skill anyway, proceed with the right-sized version. + +Coach, do not quiz. Push hardest on PRD Discipline risks — unexamined assumptions, capability-vs-implementation confusion, term drift, scope creep, ambiguity for downstream readers. Suggest research if needed and have subagents use web search tools as needed. + +**Working mode.** Once the situational read is complete, offer the user a choice before proceeding — one sentence per option: + +- **Express:** resolve any remaining critical gaps in a short batch, then draft the full PRD at once. +- **Facilitative:** work through the sections that require PM thinking before drafting, using the techniques in `references/facilitation-guide.md`. Capture all decisions in the log, section to section. Draft after the key sections are walked. The goal is that the user has authored the thinking — not just answered intake questions. + +In both modes, resolve decisions conversationally rather than silently deferring them into `[ASSUMPTION]` tags. Only use `[ASSUMPTION]` when the answer requires research or external input the PM cannot provide in the moment. + +## PRD Discipline + +- **Features grouped, FRs nested.** Features open with behavioral description; FRs nested and numbered globally for stable IDs. Cross-cutting NFRs in their own section; skip traceability matrices. +- **Capabilities, not implementation.** FRs describe what users or systems can do, not how. Tech choices go in addendum. +- **No innovation theater.** Don't fabricate novelty; add a differentiation section only when Discovery surfaced something genuinely novel. +- **Personas, when used, are research-grounded or marked `[ILLUSTRATIVE]`.** Invented detail is *persona theater* — false specificity the team builds for. Personas must drive decisions; two to four max. +- **Domain awareness.** Regulatory or compliance constraints surface in the PRD, not deferred to architecture. +- **Right-size to purpose.** Section depth and adapt-in clusters follow project type and stakes — the template's adapt-in menu names the standard clusters. +- **Non-Goals explicit.** Pair with inline `[NON-GOAL for MVP]` and `[v2 — out of MVP]` callouts so omissions aren't silently assumed. +- **Never silently de-scope.** Nothing the user explicitly included drops without asking. Propose phasing; never impose it. +- **Counter-metrics named.** When Success Metrics is present, name what NOT to optimize. +- **Assumptions visible.** Inferences without direct user confirmation are tagged `[ASSUMPTION: ...]` inline and indexed at the end. +- **`[NOTE FOR PM]` callouts** at decision points the user deferred or left tension on. + +## Constraints + +- **Persistence is near real-time.** Create the workspace (`prd.md` skeleton, `decision-log.md`) on disk the moment Create intent is confirmed; tell the user the path. +- **File roles.** `decision-log.md` — every decision, change, and version transition, in real time. `addendum.md` — depth that doesn't fit PRD shape: rejected alternatives, technical detail, ops/cost, competitive analysis. Capture technical-how detail to addendum immediately when the user volunteers it. +- **Continuity across sessions.** If a prior draft exists in `{workflow.output_dir}`, offer to resume; surface open items first. +- **Extract, don't ingest.** Never load source documents into the parent context wholesale. Delegate to subagents to extract what's relevant; the parent assembles from extracts. +- **Downstream workflows run in fresh context.** This skill's output is `prd.md` (and optional `addendum.md`). Never invoke downstream workflows or produce separate handoff artifacts. + +## Finalize + +1. Decision log audit: walk `decision-log.md` with the user — each entry captured in PRD, in addendum, or set aside. +2. Input reconciliation: subagent per user-supplied input against `prd.md` + `addendum.md`; surface gaps, especially qualitative ideas (tone, voice, feel) the FR structure silently drops. Must happen before polish. +3. Discipline pass: validator subagent against `prd.md` with `{workflow.validation_checklist}`. Findings stay in-conversation — autofix obvious issues, ask on ambiguous ones. No report file is written. Resolve before polish. +4. Open-items review: triage all Open Questions, `[ASSUMPTION]` tags, and `[NOTE FOR PM]` callouts. Surface only phase-blockers one at a time; resolve before calling the PRD ready. Log deferred items to `decision-log.md`. If phase-blocking count is high, flag it. +5. Polish: apply `{workflow.doc_standards}` to `prd.md` and `addendum.md` via parallel subagents. +6. External handoffs: execute `{workflow.external_handoffs}` entries; surface returned URLs/IDs. Skip and flag unavailable tools. +7. Record finalization to `decision-log.md`. Share all artifact paths. Invoke `bmad-help` to share possible steps. +8. Run `{workflow.on_complete}` if non-empty. diff --git a/src/bmm-skills/2-plan-workflows/bmad-prd/assets/headless-schemas.md b/src/bmm-skills/2-plan-workflows/bmad-prd/assets/headless-schemas.md new file mode 100644 index 000000000..c70a02666 --- /dev/null +++ b/src/bmm-skills/2-plan-workflows/bmad-prd/assets/headless-schemas.md @@ -0,0 +1,76 @@ +# Headless Mode JSON Schemas + +Every headless run ends with one of these payloads. Omit keys for artifacts not produced. + +## Common fields + +- `status` — `"complete"`, `"blocked"`, or `"partial"` +- `intent` — `"create"`, `"update"`, or `"validate"` (matches the detected intent) +- `reason` — required when `status` is `"blocked"`; one-sentence explanation +- `assumptions` — array of inferred values that were not directly confirmed by inputs +- `open_questions` — array of items that need a human decision before the artifact can be considered final + +## Create + +```json +{ + "status": "complete", + "intent": "create", + "prd": "{doc_workspace}/prd.md", + "addendum": "{doc_workspace}/addendum.md", + "decision_log": "{doc_workspace}/decision-log.md", + "open_questions": [], + "assumptions": [], + "external_handoffs": [ + {"directive": "Confluence upload", "tool": "corp:confluence_upload", "url": "https://confluence.corp/PROD/123", "status": "ok"} + ] +} +``` + +## Update + +```json +{ + "status": "complete", + "intent": "update", + "prd": "{doc_workspace}/prd.md", + "decision_log": "{doc_workspace}/decision-log.md", + "changes_summary": "1-3 sentences describing what changed and why", + "conflicts_with_prior_decisions": [], + "open_questions": [], + "external_handoffs": [ + {"directive": "Confluence upload", "tool": "corp:confluence_upload", "url": "https://confluence.corp/PROD/123", "status": "ok"} + ] +} +``` + +## Validate + +```json +{ + "status": "complete", + "intent": "validate", + "validation_report": "{doc_workspace}/validation-report.md", + "findings_summary": { + "critical": 0, + "high": 0, + "medium": 0, + "low": 0 + }, + "offer_to_update": true +} +``` + +`validation_report` is always written for Validate intent — the path here is required, not optional. + +## Blocked + +```json +{ + "status": "blocked", + "intent": "update", + "reason": "Change signal ambiguous — could be a scope expansion or a clarification; no inferred direction" +} +``` + +Always include the intent (best-guess if not certain) and a one-sentence `reason`. diff --git a/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-template.md b/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-template.md new file mode 100644 index 000000000..6efa2944b --- /dev/null +++ b/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-template.md @@ -0,0 +1,158 @@ +# PRD Template — A Menu, Not a Skeleton + +This is a menu of sections the facilitator picks from based on what the product, the stakes, the audience, and the existing inputs actually need. Hobby projects use the essential spine and stop. Enterprise initiatives, regulated submissions, and consumer launches add clusters from the adapt-in menu below. **Never include a section just because it appears here.** Drop, reorder, rename, combine — whatever the PRD needs. + +--- + +## Essential Spine *(almost always present)* + +```markdown +--- +title: {Product Name} +created: {YYYY-MM-DD} +updated: {YYYY-MM-DD} +--- + +# PRD: {Product Name} +*Working title — confirm.* + +## 0. Document Purpose +[1 paragraph: who this PRD is for (PM, stakeholders, downstream workflow owners), how it's structured (Glossary-anchored vocabulary, features grouped with FRs nested, assumptions tagged inline and indexed). If UX work or other inputs already exist, name them here and reference where they live — this PRD builds on them, it does not duplicate.] + +## 1. Vision +[2-3 paragraphs: what this is, what it does for the user, why it matters. Compelling enough to stand alone.] + +## 2. Target User + +### 2.1 Primary Persona +[Vivid but tight. Who they are, how this product fits their context.] + +### 2.2 Jobs To Be Done +[Bulleted. Emotional, social, functional, contextual — whichever apply. Even "this is for me as the builder" is a valid persona for a hobby project.] + +### 2.3 Non-Users (v1) *(add when the audience boundary is non-obvious)* +[Who this is explicitly not for in v1.] + +### 2.4 Key User Journeys +*Named flows the product enables — one line each, numbered globally as UJ-1 through UJ-N for downstream traceability. Detailed flow design (steps, screens, edge flows) is the job of the UX workflow, not this PRD. Features in §4 may reference journeys by ID inline ("realizes UJ-3").* + +- **UJ-1** — [Named flow, one line: who does what, to what end.] +- **UJ-2** — ... + +[For hobby/utility projects, 1-3 journeys may be enough. For complex multi-feature products (onboarding, checkout, multi-step approvals), expand. For libraries/CLIs with minimal flow, reduce to a single line or collapse into §2.2 JTBD.] + +## 3. Glossary +*Downstream workflows and readers must use these terms exactly.* + +- **Term** — Definition. Relationships to other Glossary terms. Cardinality where relevant. +- **Term** — ... + +[Every domain noun the rest of the document uses. Defined once. No synonyms anywhere else in the PRD.] + +## 4. Features +*Each subsection is a coherent feature: behavioral description first, FRs nested under it, optional feature-specific NFRs and notes. FRs are numbered globally (FR-1 through FR-N) so downstream artifacts have stable references even if features get reorganized. Reference user journeys by ID inline ("realizes UJ-2") where the chain matters.* + +### 4.1 {Feature Name} +**Description:** [Behavioral narrative — how this feature works, who uses it, the user experience, edge cases. Use Glossary terms exactly. Embed inline `[ASSUMPTION: ...]` tags where you inferred without confirmation.] + +**Functional Requirements:** +- **FR-1** — [Actor] can [capability] [under conditions / with measurement]. +- **FR-2** — ... + +**Feature-specific NFRs:** *(only if any apply uniquely to this feature)* +- Performance / security / accessibility / etc. specific to this feature. + +**Notes:** *(optional — open questions specific to this feature, `[NOTE FOR PM]` callouts)* + +### 4.2 {Feature Name} +... + +## 5. Non-Goals (Explicit) +[Bulleted. What this product is *not* and what it will *not* do in v1. Does outsized work for downstream readers and workflows — prevents the "let me also add this nearby thing" failure mode at every level (epic, ticket, code). Inline `[NON-GOAL for MVP]` callouts within §4 Features cover deferred items within features; this section captures the broader "we are not building X / we are not becoming Y" statements.] + +## 6. MVP Scope + +### 6.1 In Scope +[Bulleted, crisp.] + +### 6.2 Out of Scope for MVP +[Bulleted. Each item with a one-line reason if the reason matters. Mark items deferred to v2/v3 explicitly. Add `[NOTE FOR PM]` callouts where a deferred item is emotionally load-bearing — flags it for revisit if timeline permits.] + +## 7. Success Metrics + +**Primary** +- Metric — definition, target. + +**Secondary** +- Metric — definition, target. + +**Counter-metrics (do not optimize)** +- Metric — why this should *not* be optimized. + +[Length scales with stakes. Hobby/utility PRD: a single sentence may be enough ("Success: I use this weekly and don't abandon it after a month"). Public launch / enterprise: full quantitative breakdown with measurement methods. Counter-metrics are as load-bearing as primary metrics — they prevent the architect from optimizing the wrong thing and the dev from gaming the wrong target.] + +## 8. Open Questions +[Numbered. Things still unknown — they become future tickets or follow-up research, not silent gaps.] + +## 9. Assumptions Index +*Every `[ASSUMPTION]` from the document, surfaced for explicit confirmation:* +- Inline assumption from §X.Y — short description. +- ... +``` + +--- + +## Adapt-In Menu *(add the clusters the product calls for)* + +### Cross-cutting quality and shape *(most non-trivial PRDs)* +- **Cross-Cutting NFRs** — system-wide non-functional requirements not tied to a single feature (performance, security, reliability, observability). Add when system-wide quality attributes are meaningful. +- **Constraints and Guardrails** — Safety, Privacy, Cost. Subsection per cluster. Add when any of these are real concerns. +- **Why Now** — add when timing is load-bearing (a market shift, a technology enabler, a regulatory deadline). Drop when timing is incidental. + +### Consumer / branded products +- **Aesthetic and Tone** — visual references, anti-references, voice/tone for any product-generated text. +- **Information Architecture** — top-level surfaces, navigation, screens. +- **Monetization** — free vs. paid, pricing assumptions, ads policy. +- **Platform** — web, mobile, PWA, native, v1 vs. v2+. + +### Enterprise initiatives +- **Stakeholders and Approvals** — who must sign off, at what stage. +- **Risk and Mitigations** — operational, security, business, reputational risk register. +- **ROI / Business Case** — quantified benefit, cost, payback period. +- **Operational Requirements** — SLAs, RTO/RPO, support tier, on-call expectations. +- **Integration and Dependencies** — SSO, existing enterprise systems, data sources, downstream consumers. +- **Rollout and Change Management** — phased rollout plan, training, internal communication. +- **Data Governance** — residency, sovereignty, classification, retention. +- **Audit Trail / Decision Provenance** — formal documentation requirements for regulated environments. + +### Regulated domains +- **Compliance and Regulatory** — HIPAA, PCI-DSS, GDPR, SOX, SOC 2, Section 508 / WCAG 2.1 AA, FedRAMP, etc. — whichever apply. If any item needs depth, add a `[NOTE FOR PM]` callout to revisit or move to an addendum. + +### Developer products (libraries, APIs, CLIs, SDKs) +- **API Contracts / Public Surface** — endpoint shapes, breaking change policy. +- **Versioning and Deprecation Policy**. +- **Performance Budgets** — latency, throughput, resource use. +- **Language / Runtime Targets and Dependency Policy**. + +### Embedded / hardware +- **Hardware Constraints** — memory, power, form factor. +- **Deployment and Update Mechanism** — OTA, manual, image-based. +- **Environmental and Reliability Requirements**. + +### Small-scope all-inclusive *(use when scope is 1-2 stories' worth and the user wants a single captured artifact — chosen during the Right-skill check in Discovery)* +- **Stories** — story-level specs listed inline at the end of the doc. Each story: *"As a [persona], I can [action] [under conditions]. Acceptance: [testable criteria]."* Numbered Story-1, Story-2, ... for reference. Pair with very lean §1 Vision, §2 Target User (often just JTBD + one UJ), §3 Glossary (handful of terms), §4 Features (often a single feature), §6 MVP Scope (in/out very tight). The whole doc fits on a page or two and captures intent + implementable stories in one place. If the user doesn't want the captured artifact at all, `bmad-quick-dev` is the better path — this cluster is only for "I want a doc *and* the stories." + +--- + +## Notes for the facilitator + +- **The essential spine is the floor, not the ceiling.** A hobby PRD might keep all ten sections short. An enterprise PRD layers many clusters from the adapt-in menu. +- **§3 Glossary before §4 Features.** Mechanics never introduce a new domain noun without adding it to the Glossary in the same pass. Persona, JTBD, and Journeys may use Glossary terms before §3 formally defines them — context is inferable; the Glossary is for downstream anchoring. +- **§2.4 Key User Journeys are brief.** One line each. Numbered globally (UJ-1 through UJ-N) so architecture, epics, stories, and tickets can reference them by stable ID. Detailed flow design happens in the UX workflow — not here. +- **§4 Features pattern at every scale.** Description → FRs nested → optional NFRs → optional notes. Hobby PRD: one short paragraph and three FRs per feature. Enterprise feature: multi-paragraph description, fifteen FRs, several feature-specific NFRs, open questions. Same shape, different depth. +- **`[ASSUMPTION]`, `[NON-GOAL]`, `[v2 — out of MVP]`, `[NOTE FOR PM]` callouts are first-class.** They signal to downstream readers and the next session of work. Every `[ASSUMPTION]` lands in §9 Assumptions Index. +- **When UX is *input* to the PRD** (journeys already designed elsewhere): §2.4 names the journeys by ID and points to the existing UX doc. Reference, do not duplicate. +- **When UX is *output* of the PRD** (no UX work yet — downstream `bmad-create-ux-design` will produce it): §2.4 captures the PM's intent on which journeys exist; UX elaborates them into detailed flows downstream. +- **§7 Success Metrics scales with stakes** but is always present. Counter-metrics matter as much as primary metrics — they shape what NOT to optimize. +- **Small-scope all-inclusive option.** When scope is genuinely 1-2 stories and the user wants a single artifact instead of running a separate `bmad-create-story` workflow, add the adapt-in *Stories* cluster: lean §1-§6 plus inline §Stories at the end. The whole doc fits on a page or two. This is a valid PRD shape for tiny work — don't apologize for it. +- **Adapt the section numbering.** The spine uses 0-9; adapt-in additions slot in wherever they read best (e.g., Aesthetic & Tone before §3 if branding is foundational, Compliance after §5 Non-Goals, Constraints & Guardrails between Features and Non-Goals, Stories at the very end after Assumptions Index). diff --git a/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-validation-checklist.md b/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-validation-checklist.md new file mode 100644 index 000000000..a6b3cbef9 --- /dev/null +++ b/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-validation-checklist.md @@ -0,0 +1,30 @@ +# PRD Validation Checklist + +Loaded by the PRD validator subagent. For each item, return `{id, status: pass|fail|warn|n/a, severity: low|medium|high|critical, location, note}`. Skip items not applicable to the agreed stakes. Cite specific PRD locations — never abstract criticism. + +## Quality + +- **Q-1. Information density.** Sentences carry weight. Flag filler, hedging, and conversational padding. +- **Q-2. Measurability.** Where measurement matters, FRs and Success Metrics are measurable; subjective adjectives flagged. Counter-metrics named when Success Metrics exist. +- **Q-3. Traceability.** Where the chain matters, FRs name their link to a user journey or success criterion inline. +- **Q-4. Vision and JTBDs concrete.** Vision is specific and stands alone — not a generic feature list. JTBDs are audience-grounded, not abstract. +- **Q-5. Non-Goals explicit.** A Non-Goals section is present where it would do real work; inline `[NON-GOAL]` and `[v2]` callouts where omissions would otherwise be silently assumed. +- **Q-6. Dual-audience and self-contained.** Each section makes sense pulled out alone (cross-references via Glossary terms, not "see above"); the PRD is readable by humans and structured cleanly for downstream source-extraction by UX, architecture, and story-creation workflows. + +## Discipline + +- **D-1. Capabilities, not implementation.** FRs describe what users/systems can do, not how. Flag technology names, library choices, architecture decisions. +- **D-2. Input fidelity.** Requirements from input documents (brief, research, prior PRD) are still in scope or explicitly handled via Non-Goals or `[ASSUMPTION]`. +- **D-3. Personas grounded.** If personas exist, they are research-grounded or marked `[ILLUSTRATIVE]`. Each persona drives at least one decision. +- **D-4. No innovation theater.** Novelty claims are real, not invented. + +## Structural integrity + +- **S-1. Glossary integrity.** Every domain noun is defined in the Glossary and used identically throughout. Flag drift (case, plural, synonyms) and candidate missing-term entries. +- **S-2. ID continuity.** FR / UJ / Story IDs are contiguous, unique, and cross-references resolve. +- **S-3. Assumptions Index.** Every inline `[ASSUMPTION: ...]` appears in the Assumptions Index and vice versa. +- **S-4. Open-items density.** Count Open Questions + `[ASSUMPTION]` + `[NOTE FOR PM]`. Red flag if density is high relative to the agreed stakes. + +## Stakes-gated + +- **STK-1. Required sections.** The PRD includes the sections the agreed stakes and product type warrant. diff --git a/src/bmm-skills/2-plan-workflows/bmad-prd/assets/validation-report-template.html b/src/bmm-skills/2-plan-workflows/bmad-prd/assets/validation-report-template.html new file mode 100644 index 000000000..1e3136607 --- /dev/null +++ b/src/bmm-skills/2-plan-workflows/bmad-prd/assets/validation-report-template.html @@ -0,0 +1,190 @@ + + + + +PRD Validation: $prd_name + + + +
+
+
+

$prd_name — Validation Report

+
$prd_path
+
+
$grade
+
+ +
$overall_synthesis
+ +
+
$score_svg
+
+ $passed pass + $warned warn + $failed fail + $na n/a + $total items checked +
+
+ + $categories_html + +
+
+ Checklist: $checklist_path + Generated: $timestamp +
+
+
+ + diff --git a/src/bmm-skills/2-plan-workflows/bmad-prd/customize.toml b/src/bmm-skills/2-plan-workflows/bmad-prd/customize.toml new file mode 100644 index 000000000..534bf7de4 --- /dev/null +++ b/src/bmm-skills/2-plan-workflows/bmad-prd/customize.toml @@ -0,0 +1,113 @@ +# DO NOT EDIT -- overwritten on every update. +# +# Workflow customization surface for bmad-prd. +# +# Override files (not edited here): +# {project-root}/_bmad/custom/bmad-prd.toml (team) +# {project-root}/_bmad/custom/bmad-prd.user.toml (personal) + +[workflow] + +# --- Configurable below. Overrides merge per BMad structural rules: --- +# scalars: override wins • arrays: append + +# Steps to run before the standard activation (config load, greet). +# Use for pre-flight loads, compliance checks, etc. +activation_steps_prepend = [] + +# Steps to run after greet but before the workflow begins. +# Use for context-heavy setup that should happen once the user has been acknowledged. +activation_steps_append = [] + +# Persistent facts the workflow keeps in mind for the whole run +# (standards, compliance constraints, stylistic guardrails). +# Each entry is either a literal sentence, a skill prefixed with `skill:`, or a `file:`-prefixed path/glob +# whose contents are loaded as facts. +# +# Default loads project-context.md if bmad-generate-project-context has produced one — this gives +# the facilitator persistent awareness of the project's tech, domain, and constraints without +# re-asking. Common opt-ins (set in team/user override TOML): +# "skill:acme-co:terms-and-conditions" # a skill that contains some relevant info +# "Investor PRDs must include a market sizing section." # generic agent instruction +persistent_facts = [ + "file:{project-root}/**/project-context.md", +] + +# Executed when the workflow completes (after the user has been told the +# PRD is ready). Accepts either a string scalar (single instruction) +# or an array of instructions executed in order. Empty for none. +on_complete = "" + +# Default PRD structure. Treated as a starting point — the LLM adapts it +# to the product, project type, and domain. Override the path in team/user TOML +# to enforce a different structure (e.g. regulated-industry, internal-tool, investor-input). +prd_template = "assets/prd-template.md" + +# Validation checklist used at the Validate intent and at Finalize step 3. +# A subagent walks the checklist against prd.md and returns structured findings. +# Override the path in team/user TOML to enforce an org-specific checklist +# (regulated-industry compliance, investor-pitch standards, etc.). +validation_checklist = "assets/prd-validation-checklist.md" + +# HTML template used to render validation findings into a styled, scannable +# report. The renderer (scripts/render-validation-html.py) substitutes +# structured findings + summary stats into this template; the template is +# fully overridable to match org branding. The default uses inline CSS, no +# external dependencies, and native HTML
for collapse — no JS. +validation_report_template = "assets/validation-report-template.html" + +# Run folder location. The PRD, optional addendum, decision log, and optional +# validation report all land inside `{output_dir}/{output_folder_name}/`. +output_dir = "{planning_artifacts}/prds" +output_folder_name = "prd-{project_name}-{date}" + +# Document standards applied to human-consumed docs at finalize. Each entry is +# a `skill:`, `file:`, or plain-text directive; the parent LLM applies the +# findings before the user sees the draft. Encodes standards, not options. +# +# Examples: +# "skill:bmad-editorial-review-prose" +# "file:{project-root}/_bmad/style-guides/company-voice.md" +# "Convert all dates to ISO 8601 format." +# +# Suggested order (broader passes first, narrower last): +# 1. Structural (cuts, reorganization, section sizing) +# 2. Content/voice/conventions (org standards, tone, terminology, compliance) +# 3. Prose mechanics (grammar, clarity, typos) +# +# Override the array in team/user TOML to add additional standards. Append-only: +# base entries cannot be removed or replaced (resolver has no removal mechanism). +doc_standards = [ + "skill:bmad-editorial-review-structure", + "skill:bmad-editorial-review-prose", +] + +# External-source registry. Natural-language directives describing knowledge +# bases, MCP tools, or internal systems the LLM may consult during the workflow +# when a relevant need surfaces. The LLM does NOT query these preemptively — +# it consults them on demand (during Discovery, validation, drafting, etc.). +# Each entry names the tool, the conditions for using it, and any fields the +# tool needs. If a named MCP tool is unavailable at runtime, the LLM falls +# back to standard behavior and notes the gap. Empty by default. +# +# Examples (set in team/user override TOML): +# "When researching internal product context, consult corp:kb_search (database='product-docs') before web search." +# "For competitive landscape during Discovery, query corp:competitive_db with category={project_name}." +# "When validating domain-compliance claims, cross-check against corp:hipaa_reference for healthcare or corp:pci_reference for fintech." +external_sources = [] + +# External-handoff routing. Natural-language directives the LLM applies at +# Finalize to route outputs beyond local files (Confluence, Notion, Google +# Drive, ticket systems, etc.). Each entry names the MCP tool, the destination, +# and the fields the tool needs. Handoffs run after the artifact is polished +# and before the final user-facing message. URLs or IDs returned by the +# destination are captured and surfaced to the user. If a named tool is +# unavailable at runtime, the handoff is skipped and flagged in the JSON +# status; local files always exist regardless. Fires automatically — users +# can opt out in their prompt for a specific run. Empty by default. +# +# Examples (set in team/user override TOML): +# "After finalize, upload prd.md and addendum.md to Confluence via corp:confluence_upload (space_key='PROD', parent_page='PRDs', label='prd', author={user_name})." +# "Mirror the PRD to Notion via notion:create_page (database_id='abc123', title='PRD: '+{project_name})." +# "When the PRD references a parent initiative, link via corp:jira_link on the epic key in frontmatter." +external_handoffs = [] diff --git a/src/bmm-skills/2-plan-workflows/bmad-prd/references/facilitation-guide.md b/src/bmm-skills/2-plan-workflows/bmad-prd/references/facilitation-guide.md new file mode 100644 index 000000000..e5cbb706b --- /dev/null +++ b/src/bmm-skills/2-plan-workflows/bmad-prd/references/facilitation-guide.md @@ -0,0 +1,79 @@ +# PRD Facilitation Guide + +Per-section conversation techniques for facilitative mode. Each entry names the coaching move that makes the section's conversation productive — not a checklist, a posture. Skip sections the PM has already resolved; spend more time where thinking is thin. + +--- + +## Users and Personas + +**The move:** Ground personas in real people, not archetypes. + +Ask the PM to describe a specific person they have observed or talked to — not a type, an actual human. "Who is the clerk at your store? Tell me about them." Invented detail (name, age, backstory from nowhere) is persona theater — the team builds for a fiction. If the PM says "someone like..." push gently: "Is there a real person you're thinking of?" + +Once grounded: what does that person want to accomplish in the time they interact with this product? What would make them say this is easier than what they do today? What would make them abandon it? + +For the remote user or secondary persona: same grounding, different question — what question do they need answered in under ten seconds, and what do they do if they can't get it? + +Mark anything the PM could not ground in observation as `[ILLUSTRATIVE]` — and note it's a hypothesis to validate, not a spec to build for. + +--- + +## Core User Journeys + +**The move:** Story structure, not use-case list. + +For each primary journey, walk through four beats: + +- **Opening scene** — where do we meet this person, what is their situation right now, what pain or need is present? +- **Rising action** — what steps do they take, what do they discover or decide along the way? +- **Climax** — the moment the product delivers real value; the thing they could not do before +- **Resolution** — what is their new reality; how is their situation different? + +After each journey: what could go wrong at the climax? What is the recovery path? This is where edge cases that matter surface — not invented error states, but real failure modes for this person. + +Explicitly name what capability each journey reveals. "This journey requires the operator to log an entry with no internet — which means we need a decision on whether that's in or out of MVP." Journeys produce capability requirements; make the link visible. + +--- + +## Key Feature Decisions + +**The move:** Surface the assumptions that would otherwise be silent. + +Before the draft exists, there are decisions the agent would silently make and the PM would never know were made. These are the ones worth a thirty-second conversation: + +- Decisions that drive the core UX model (e.g., one record per day vs. many; who can edit vs. view; what happens when the expected input doesn't exist) +- Decisions where the "obvious" choice has real consequences the PM may not have considered +- Decisions that, if wrong, require structural changes to fix later + +For each: state what you inferred, name the alternative, ask which is right. Do not present options as a quiz — present your inference and invite correction. "I'm assuming one sales tally per day replaces rather than adds. Is that right, or should the operator be able to log multiple?" Resolve and move on. Only tag as `[ASSUMPTION]` when the answer requires external input or research the PM cannot provide now. + +--- + +## Scope Boundary + +**The move:** Establish MVP philosophy before listing features. + +Before asking what is in or out, ask what kind of MVP this is: + +- **Problem-solving MVP** — the minimum that proves the core problem is solved; rough edges acceptable +- **Experience MVP** — the minimum that proves the interaction model works; quality matters +- **Platform MVP** — the minimum infrastructure other things can build on; completeness of the base matters +- **Revenue MVP** — the minimum someone will pay for; business viability is the test + +The answer changes what "minimum" means. A problem-solving MVP for a personal-use tool has different scope logic than an experience MVP aimed at non-tech-savvy users who will bounce at the first confusion. + +Once the philosophy is named, non-goals do as much work as in-scope items. Probe for the things the PM is tempted to add. "What keeps almost making it onto the list?" For each: is it truly out of MVP, or does it need to be in because the MVP fails without it? + +--- + +## Success Metrics + +**The move:** Push every adjective to a measurement. + +"Users will love it" — what does that mean in behavior? "It'll be fast" — fast at what, for whom, measured how? "Good adoption" — what percentage, by when, doing what? Every quality claim needs a measurement or it is not a success criterion, it is a wish. + +For each metric surfaced: connect it back to the product's differentiator. If the differentiator is simplicity for non-tech users, the primary metric should measure whether non-tech users successfully complete the core action without help — not session count or feature usage breadth. + +Name counter-metrics explicitly — what this product should *not* optimize for. These prevent the wrong thing being built: more entries per day is not better if the goal is accurate daily records; longer dashboard sessions may indicate a broken IA, not high engagement. Counter-metrics are as load-bearing as primary metrics for downstream readers. + +For low-stakes or personal-use products: one sentence is enough. "Success: I use this daily and it replaces the notebook within a month." Do not impose metric rigor where the stakes do not warrant it. diff --git a/src/bmm-skills/2-plan-workflows/bmad-prd/references/headless.md b/src/bmm-skills/2-plan-workflows/bmad-prd/references/headless.md new file mode 100644 index 000000000..761730efc --- /dev/null +++ b/src/bmm-skills/2-plan-workflows/bmad-prd/references/headless.md @@ -0,0 +1,24 @@ +# Headless Mode + +Load this file when bmad-prd is invoked headless (no interactive user). Follow it for the whole run. + +## General + +Do not ask. Complete the intent using what is provided, what exists in `{doc_workspace}`, or what you can discover yourself. If intent remains ambiguous after inference, halt with a `blocked` JSON status and a `reason` field — do not prompt. Do not greet. + +End with a JSON response listing status, intent, and artifact paths. The `intent` field must match the detected intent: `"create"`, `"update"`, or `"validate"`. Omit keys for artifacts not produced. Full schemas with examples for each intent are in `assets/headless-schemas.md`. Minimal shape: + +```json +{ + "status": "complete", + "intent": "validate", + "validation_report": "{doc_workspace}/validation-report.md", + "offer_to_update": true +} +``` + +## Mode-specific overrides + +**Update.** Log the reversal to `decision-log.md`, then apply. Halt `blocked` if intent is ambiguous. + +**Validate.** Always write `validation-report.md` to `{doc_workspace}` regardless of finding count. Always include `"offer_to_update": true` in the JSON status block. diff --git a/src/bmm-skills/2-plan-workflows/bmad-prd/references/validation-render.md b/src/bmm-skills/2-plan-workflows/bmad-prd/references/validation-render.md new file mode 100644 index 000000000..5942dbe39 --- /dev/null +++ b/src/bmm-skills/2-plan-workflows/bmad-prd/references/validation-render.md @@ -0,0 +1,58 @@ +# Validation Rendering + +How the validator subagent's findings become a validation report. Loaded only when the user has explicitly asked for analysis — either Validate intent or a mid-session report request. The Finalize discipline pass during Create/Update does NOT render a report; its findings stay in-conversation. + +## Validator subagent output contract + +The subagent walks `{workflow.validation_checklist}` against `prd.md` (and `addendum.md` if present) and writes `{doc_workspace}/validation-findings.json`: + +```json +{ + "prd_name": "Plantsona", + "prd_path": "{doc_workspace}/prd.md", + "checklist_path": "{workflow.validation_checklist}", + "timestamp": "2026-05-11T09:14:00", + "overall_synthesis": "2-3 sentences of judgment about the PRD's overall state — what holds up, what's at risk. Written by the subagent, not the parent.", + "findings": [ + { + "id": "Q-2", + "category": "Quality", + "title": "Measurability", + "status": "warn", + "severity": "medium", + "location": "§16 Success Metrics, lines 408-422", + "note": "Success Metrics list is measurable but counter-metrics are named only for premium conversion. Other metrics lack paired counter-metrics.", + "suggested_fix": "Add counter-metrics for engagement (e.g., DAU/MAU) and seasonal cadence." + } + ] +} +``` + +Per-finding fields: + +- `id` (required) — checklist item ID (e.g., `Q-1`, `D-2`, `STK-1`, or org-custom prefixes). +- `category` (optional) — explicit category name; if omitted, the renderer maps from the ID prefix. +- `title` (optional but recommended) — the checklist item's short name. +- `status` — `pass` | `warn` | `fail` | `n/a`. +- `severity` — `low` | `medium` | `high` | `critical`. +- `location` (optional) — section/line/range in the PRD where the finding lives. Cite specifics, never abstract criticism. +- `note` (optional) — the finding itself, in one or two sentences. +- `suggested_fix` (optional) — concrete next action. + +## Rendering invocation + +After the subagent writes findings: + +```bash +python3 {skill-root}/scripts/render-validation-html.py \ + --findings {doc_workspace}/validation-findings.json \ + --template {workflow.validation_report_template} \ + --output {doc_workspace}/validation-report.html \ + --open +``` + +Include `--open` for interactive runs (auto-opens in default browser). Omit `--open` in headless runs. + +The script writes two artifacts side-by-side: the HTML report at `--output`, and a markdown companion at the same path with `.md` extension (e.g. `validation-report.md`). Both are always produced when the script runs — trigger gating happens upstream (the script is only invoked when the user has asked for analysis). It computes pass/warn/fail/na counts, derives a grade (Excellent / Good / Fair / Poor) from critical-fail and total-fail counts, renders an inline SVG score bar in the HTML, groups findings by category, and returns a one-line JSON summary on stdout: `{"output": "...", "markdown": "...", "grade": "...", "stats": {...}}`. + +Re-running validation overwrites the existing report files in place. Markdown form is what Update mode reads when rolling findings into a revision. diff --git a/src/bmm-skills/2-plan-workflows/bmad-prd/scripts/render-validation-html.py b/src/bmm-skills/2-plan-workflows/bmad-prd/scripts/render-validation-html.py new file mode 100644 index 000000000..802f9b511 --- /dev/null +++ b/src/bmm-skills/2-plan-workflows/bmad-prd/scripts/render-validation-html.py @@ -0,0 +1,290 @@ +#!/usr/bin/env python3 +# /// script +# requires-python = ">=3.10" +# /// +"""Render a PRD validation findings JSON into HTML + markdown reports. + +Reads structured findings produced by the validator subagent, groups them by +category (explicit `category` field, else derived from ID prefix), computes a +pass/warn/fail summary and grade, substitutes into the configured HTML +template, writes a markdown companion at the same path with `.md` extension, +and optionally opens the HTML in the default browser. +""" + +import argparse +import html +import json +import string +import sys +import webbrowser +from datetime import datetime +from pathlib import Path + +CATEGORY_FROM_PREFIX = { + "Q": "Quality", + "D": "Discipline", + "S": "Structural integrity", + "STK": "Stakes-gated", + "M": "Mechanical", +} + +CATEGORY_ORDER = ["Quality", "Discipline", "Structural integrity", "Stakes-gated", "Mechanical"] + + +def category_for(finding: dict) -> str: + explicit = finding.get("category") + if explicit: + return explicit + fid = finding.get("id", "") + prefix = fid.split("-", 1)[0] if "-" in fid else fid + return CATEGORY_FROM_PREFIX.get(prefix, prefix or "Other") + + +def compute_stats(findings: list[dict]) -> dict: + total = len(findings) + by_status = {"pass": 0, "warn": 0, "fail": 0, "n/a": 0} + failed_critical = 0 + failed_high = 0 + for f in findings: + status = (f.get("status") or "n/a").lower() + if status in by_status: + by_status[status] += 1 + if status == "fail": + sev = (f.get("severity") or "low").lower() + if sev == "critical": + failed_critical += 1 + elif sev == "high": + failed_high += 1 + return { + "total": total, + "passed": by_status["pass"], + "warned": by_status["warn"], + "failed": by_status["fail"], + "na": by_status["n/a"], + "failed_critical": failed_critical, + "failed_high": failed_high, + } + + +def grade_from(stats: dict) -> tuple[str, str]: + if stats["failed_critical"] > 0: + return "Poor", "grade-poor" + if stats["failed_high"] >= 1 or stats["failed"] >= 4: + return "Fair", "grade-fair" + if stats["failed"] > 0 or stats["warned"] > 2: + return "Good", "grade-good" + return "Excellent", "grade-excellent" + + +def render_score_bar(stats: dict, width: int = 480, height: int = 22) -> str: + total = max(stats["total"], 1) + p = stats["passed"] / total * width + w = stats["warned"] / total * width + f = stats["failed"] / total * width + n = stats["na"] / total * width + return ( + f'' + f'' + f'' + f'' + f'' + f"" + ) + + +def render_finding(f: dict) -> str: + status = (f.get("status") or "n/a").lower() + severity = (f.get("severity") or "low").lower() + fid = html.escape(f.get("id") or "") + title = html.escape(f.get("title") or fid) + location = html.escape(f.get("location") or "") + note = html.escape(f.get("note") or "") + fix = html.escape(f.get("suggested_fix") or "") + + status_class = "na" if status == "n/a" else status + parts = [ + f'
', + '
', + f'{status.upper()}', + f'{severity}', + f'{fid}', + f'

{title}

', + '
', + ] + if location: + parts.append(f'
Location: {location}
') + if note: + parts.append(f'
{note}
') + if fix: + parts.append(f'
Suggested fix: {fix}
') + parts.append("
") + return "\n".join(parts) + + +def render_category(name: str, findings: list[dict]) -> str: + items = "\n".join(render_finding(f) for f in findings) + name_e = html.escape(name) + return ( + f'
' + f"
" + f'

{name_e} ({len(findings)})

' + f"{items}" + f"
" + f"
" + ) + + +SEVERITY_ORDER = ["critical", "high", "medium", "low"] + + +def render_finding_md(f: dict) -> str: + status = (f.get("status") or "n/a").upper() + severity = (f.get("severity") or "low").lower() + fid = f.get("id") or "" + title = f.get("title") or fid + location = f.get("location") or "" + note = f.get("note") or "" + fix = f.get("suggested_fix") or "" + + lines = [f"### [{status}] {fid} — {title} _(severity: {severity})_"] + if location: + lines.append(f"- **Location:** {location}") + if note: + lines.append(f"- **Finding:** {note}") + if fix: + lines.append(f"- **Suggested fix:** {fix}") + return "\n".join(lines) + + +def render_markdown_report(data: dict, findings: list[dict], stats: dict, grade: str) -> str: + prd_name = data.get("prd_name") or "PRD" + prd_path = data.get("prd_path") or "" + checklist_path = data.get("checklist_path") or "" + timestamp = data.get("timestamp") or datetime.now().isoformat(timespec="seconds") + synthesis = data.get("overall_synthesis") or "" + + out = [ + f"# Validation Report — {prd_name}", + "", + f"- **PRD:** `{prd_path}`", + f"- **Checklist:** `{checklist_path}`", + f"- **Run at:** {timestamp}", + f"- **Grade:** {grade}", + "", + f"**Summary:** {stats['passed']} pass · {stats['warned']} warn · {stats['failed']} fail · {stats['na']} n/a " + f"(total {stats['total']}; critical fails: {stats['failed_critical']}, high fails: {stats['failed_high']})", + ] + if synthesis: + out += ["", "## Overall synthesis", "", synthesis] + + # Group by severity then status: failed criticals first, then highs, etc. + by_sev: dict[str, list[dict]] = {s: [] for s in SEVERITY_ORDER} + other: list[dict] = [] + for f in findings: + sev = (f.get("severity") or "low").lower() + if sev in by_sev: + by_sev[sev].append(f) + else: + other.append(f) + + out += ["", "## Findings by severity"] + any_findings = False + for sev in SEVERITY_ORDER: + items = by_sev[sev] + if not items: + continue + any_findings = True + out += ["", f"### {sev.capitalize()} ({len(items)})", ""] + out += [render_finding_md(f) for f in items] + if other: + any_findings = True + out += ["", f"### Other ({len(other)})", ""] + out += [render_finding_md(f) for f in other] + if not any_findings: + out += ["", "_No findings._"] + + return "\n".join(out) + "\n" + + +def main(argv: list[str]) -> int: + parser = argparse.ArgumentParser(description="Render PRD validation findings to HTML.") + parser.add_argument("--findings", required=True, help="Path to validation-findings.json") + parser.add_argument("--template", required=True, help="Path to HTML template") + parser.add_argument("--output", required=True, help="Path to write the rendered HTML") + parser.add_argument("--open", action="store_true", help="Open the rendered HTML in the default browser") + args = parser.parse_args(argv) + + findings_path = Path(args.findings) + template_path = Path(args.template) + output_path = Path(args.output) + + try: + data = json.loads(findings_path.read_text(encoding="utf-8")) + except FileNotFoundError: + print(f"error: findings file not found: {findings_path}", file=sys.stderr) + return 1 + except json.JSONDecodeError as e: + print(f"error: findings file is not valid JSON ({findings_path}): {e}", file=sys.stderr) + return 1 + try: + template = template_path.read_text(encoding="utf-8") + except FileNotFoundError: + print(f"error: template file not found: {template_path}", file=sys.stderr) + return 1 + + findings = data.get("findings", []) or [] + + by_cat: dict[str, list[dict]] = {} + for f in findings: + by_cat.setdefault(category_for(f), []).append(f) + + sorted_cats = sorted( + by_cat.keys(), + key=lambda c: (CATEGORY_ORDER.index(c) if c in CATEGORY_ORDER else 99, c), + ) + categories_html = "\n".join(render_category(c, by_cat[c]) for c in sorted_cats) + + stats = compute_stats(findings) + grade, grade_class = grade_from(stats) + score_svg = render_score_bar(stats) + + timestamp = data.get("timestamp") or datetime.now().isoformat(timespec="seconds") + substitutions = { + "prd_name": html.escape(str(data.get("prd_name") or "PRD")), + "prd_path": html.escape(str(data.get("prd_path") or "")), + "checklist_path": html.escape(str(data.get("checklist_path") or "")), + "timestamp": html.escape(timestamp), + "overall_synthesis": html.escape(str(data.get("overall_synthesis") or "")), + "grade": grade, + "grade_class": grade_class, + "total": str(stats["total"]), + "passed": str(stats["passed"]), + "failed": str(stats["failed"]), + "warned": str(stats["warned"]), + "na": str(stats["na"]), + "score_svg": score_svg, + "categories_html": categories_html, + } + + rendered = string.Template(template).safe_substitute(substitutions) + output_path.write_text(rendered, encoding="utf-8") + + md_path = output_path.with_suffix(".md") + md_path.write_text(render_markdown_report(data, findings, stats, grade), encoding="utf-8") + + print(json.dumps({ + "output": str(output_path), + "markdown": str(md_path), + "grade": grade, + "stats": stats, + })) + + if args.open: + webbrowser.open(output_path.resolve().as_uri()) + + return 0 + + +if __name__ == "__main__": + sys.exit(main(sys.argv[1:])) diff --git a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/SKILL.md b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/SKILL.md index 90ec68f17..44d1fb5ba 100644 --- a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/SKILL.md +++ b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/SKILL.md @@ -1,104 +1,30 @@ --- name: bmad-validate-prd -description: 'Validate a PRD against standards. Use when the user says "validate this PRD" or "run PRD validation"' +description: 'DEPRECATED — consolidated into bmad-prd validate intent - this skill will be removed in v7 in favor of `bmad-prd`.' --- -# PRD Validate Workflow +# DEPRECATED — forwards to bmad-prd (validate intent) -**Goal:** Validate existing PRDs against BMAD standards through comprehensive review. - -**Your Role:** Validation Architect and Quality Assurance Specialist. - -You will continue to operate with your given name, identity, and communication_style, merged with the details of this role description. - -## Conventions - -- Bare paths (e.g. `steps-v/step-v-01-discovery.md`) resolve from the skill root. -- `{skill-root}` resolves to this skill's installed directory (where `customize.toml` lives). -- `{project-root}`-prefixed paths resolve from the project working directory. -- `{skill-name}` resolves to the skill directory's basename. - -## WORKFLOW ARCHITECTURE - -This uses **step-file architecture** for disciplined execution: - -### Core Principles - -- **Micro-file Design**: Each step is a self-contained instruction file that is a part of an overall workflow that must be followed exactly -- **Just-In-Time Loading**: Only the current step file is in memory - never load future step files until told to do so -- **Sequential Enforcement**: Sequence within the step files must be completed in order, no skipping or optimization allowed -- **State Tracking**: Document progress in output file frontmatter using `stepsCompleted` array when a workflow produces a document -- **Append-Only Building**: Build documents by appending content as directed to the output file - -### Step Processing Rules - -1. **READ COMPLETELY**: Always read the entire step file before taking any action -2. **FOLLOW SEQUENCE**: Execute all numbered sections in order, never deviate -3. **WAIT FOR INPUT**: If a menu is presented, halt and wait for user selection -4. **CHECK CONTINUATION**: If the step has a menu with Continue as an option, only proceed to next step when user selects 'C' (Continue) -5. **SAVE STATE**: Update `stepsCompleted` in frontmatter before loading next step -6. **LOAD NEXT**: When directed, read fully and follow the next step file - -### Critical Rules (NO EXCEPTIONS) - -- 🛑 **NEVER** load multiple step files simultaneously -- 📖 **ALWAYS** read entire step file before execution -- 🚫 **NEVER** skip steps or optimize the sequence -- 💾 **ALWAYS** update frontmatter of output files when writing the final output for a specific step -- 🎯 **ALWAYS** follow the exact instructions in the step file -- ⏸️ **ALWAYS** halt at menus and wait for user input -- 📋 **NEVER** create mental todo lists from future steps +This skill was consolidated into `bmad-prd`. It is retained as a thin compatibility shim so existing invocations by name and `_bmad/custom/bmad-validate-prd.toml` override files keep working. New work should invoke `bmad-prd` directly — it detects create / update / validate intent from the conversation. ## On Activation -### Step 1: Resolve the Workflow Block +1. Resolve customization: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. This picks up any `{project-root}/_bmad/custom/bmad-validate-prd.toml` and `bmad-validate-prd.user.toml` overrides for the legacy fields (`activation_steps_prepend`, `activation_steps_append`, `persistent_facts`, `on_complete`). -Run: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow` +2. Load `{project-root}/_bmad/bmm/config.yaml` (and `config.user.yaml` if present) to resolve `{user_name}` and `{communication_language}`. -**If the script fails**, resolve the `workflow` block yourself by reading these three files in base → team → user order and applying the same structural merge rules as the resolver: +3. Emit a deprecation notice to the user in `{communication_language}`: -1. `{skill-root}/customize.toml` — defaults -2. `{project-root}/_bmad/custom/{skill-name}.toml` — team overrides -3. `{project-root}/_bmad/custom/{skill-name}.user.toml` — personal overrides + > Notice: `bmad-validate-prd` is deprecated and will be removed in a future release. It now forwards to `bmad-prd` with validate intent. To silence this notice and access the full new customization surface (`prd_template`, `validation_checklist`, `doc_standards`, `external_sources`, `external_handoffs`, `output_dir`, `output_folder_name`), migrate `_bmad/custom/bmad-validate-prd.toml` to `_bmad/custom/bmad-prd.toml` and invoke `bmad-prd` directly next time. Customization fields that were in this version still remain in the new version and will be respected if present in `_bmad/custom/bmad-prd.toml`, but the new version also supports additional fields that you can take advantage of by migrating. -Any missing file is skipped. Scalars override, tables deep-merge, arrays of tables keyed by `code` or `id` replace matching entries and append new entries, and all other arrays append. +4. Invoke `bmad-prd` with the following context. Pass these as the activating context so `bmad-prd` honors them instead of resolving its own customization from scratch: -### Step 2: Execute Prepend Steps + - **Intent:** `validate` — skip `bmad-prd`'s usual intent detection step. + - **Pre-resolved legacy customization** — use these in place of resolving from `bmad-prd`'s own `customize.toml` for the four legacy fields. For everything else (`prd_template`, `validation_checklist`, `validation_report_template`, `doc_standards`, `output_dir`, `output_folder_name`, `external_sources`, `external_handoffs`), use `bmad-prd`'s own defaults and overrides as normal: + - `activation_steps_prepend` = the resolved value from step 1 + - `activation_steps_append` = the resolved value from step 1 + - `persistent_facts` = the resolved value from step 1 + - `on_complete` = the resolved value from step 1 + - **Original user input:** forward whatever the user said when invoking this skill verbatim (the target PRD path, etc.). -Execute each entry in `{workflow.activation_steps_prepend}` in order before proceeding. - -### Step 3: Load Persistent Facts - -Treat every entry in `{workflow.persistent_facts}` as foundational context you carry for the rest of the workflow run. Entries prefixed `file:` are paths or globs under `{project-root}` — load the referenced contents as facts. All other entries are facts verbatim. - -### Step 4: Load Config - -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: -- Use `{user_name}` for greeting -- Use `{communication_language}` for all communications -- Use `{document_output_language}` for output documents -- Use `{planning_artifacts}` for output location and artifact scanning -- Use `{project_knowledge}` for additional context scanning - -### Step 5: Greet the User - -Greet `{user_name}`, speaking in `{communication_language}`. - -### Step 6: Execute Append Steps - -Execute each entry in `{workflow.activation_steps_append}` in order. - -Activation is complete. Begin the workflow below. - -## Paths - -- `validateWorkflow` = `./steps-v/step-v-01-discovery.md` - -## Execution - -✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the configured `{communication_language}`. -✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}`. - -**Validate Mode: Validating an existing PRD against BMAD standards.** - -Then read fully and follow: `{validateWorkflow}` (steps-v/step-v-01-discovery.md) + `bmad-prd` takes the workflow from here. Do not execute any further steps in this shim. diff --git a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/data/domain-complexity.csv b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/data/domain-complexity.csv deleted file mode 100644 index 60a7b503f..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/data/domain-complexity.csv +++ /dev/null @@ -1,15 +0,0 @@ -domain,signals,complexity,key_concerns,required_knowledge,suggested_workflow,web_searches,special_sections -healthcare,"medical,diagnostic,clinical,FDA,patient,treatment,HIPAA,therapy,pharma,drug",high,"FDA approval;Clinical validation;HIPAA compliance;Patient safety;Medical device classification;Liability","Regulatory pathways;Clinical trial design;Medical standards;Data privacy;Integration requirements","domain-research","FDA software medical device guidance {date};HIPAA compliance software requirements;Medical software standards {date};Clinical validation software","clinical_requirements;regulatory_pathway;validation_methodology;safety_measures" -fintech,"payment,banking,trading,investment,crypto,wallet,transaction,KYC,AML,funds,fintech",high,"Regional compliance;Security standards;Audit requirements;Fraud prevention;Data protection","KYC/AML requirements;PCI DSS;Open banking;Regional laws (US/EU/APAC);Crypto regulations","domain-research","fintech regulations {date};payment processing compliance {date};open banking API standards;cryptocurrency regulations {date}","compliance_matrix;security_architecture;audit_requirements;fraud_prevention" -govtech,"government,federal,civic,public sector,citizen,municipal,voting",high,"Procurement rules;Security clearance;Accessibility (508);FedRAMP;Privacy;Transparency","Government procurement;Security frameworks;Accessibility standards;Privacy laws;Open data requirements","domain-research","government software procurement {date};FedRAMP compliance requirements;section 508 accessibility;government security standards","procurement_compliance;security_clearance;accessibility_standards;transparency_requirements" -edtech,"education,learning,student,teacher,curriculum,assessment,K-12,university,LMS",medium,"Student privacy (COPPA/FERPA);Accessibility;Content moderation;Age verification;Curriculum standards","Educational privacy laws;Learning standards;Accessibility requirements;Content guidelines;Assessment validity","domain-research","educational software privacy {date};COPPA FERPA compliance;WCAG education requirements;learning management standards","privacy_compliance;content_guidelines;accessibility_features;curriculum_alignment" -aerospace,"aircraft,spacecraft,aviation,drone,satellite,propulsion,flight,radar,navigation",high,"Safety certification;DO-178C compliance;Performance validation;Simulation accuracy;Export controls","Aviation standards;Safety analysis;Simulation validation;ITAR/export controls;Performance requirements","domain-research + technical-model","DO-178C software certification;aerospace simulation standards {date};ITAR export controls software;aviation safety requirements","safety_certification;simulation_validation;performance_requirements;export_compliance" -automotive,"vehicle,car,autonomous,ADAS,automotive,driving,EV,charging",high,"Safety standards;ISO 26262;V2X communication;Real-time requirements;Certification","Automotive standards;Functional safety;V2X protocols;Real-time systems;Testing requirements","domain-research","ISO 26262 automotive software;automotive safety standards {date};V2X communication protocols;EV charging standards","safety_standards;functional_safety;communication_protocols;certification_requirements" -scientific,"research,algorithm,simulation,modeling,computational,analysis,data science,ML,AI",medium,"Reproducibility;Validation methodology;Peer review;Performance;Accuracy;Computational resources","Scientific method;Statistical validity;Computational requirements;Domain expertise;Publication standards","technical-model","scientific computing best practices {date};research reproducibility standards;computational modeling validation;peer review software","validation_methodology;accuracy_metrics;reproducibility_plan;computational_requirements" -legaltech,"legal,law,contract,compliance,litigation,patent,attorney,court",high,"Legal ethics;Bar regulations;Data retention;Attorney-client privilege;Court system integration","Legal practice rules;Ethics requirements;Court filing systems;Document standards;Confidentiality","domain-research","legal technology ethics {date};law practice management software requirements;court filing system standards;attorney client privilege technology","ethics_compliance;data_retention;confidentiality_measures;court_integration" -insuretech,"insurance,claims,underwriting,actuarial,policy,risk,premium",high,"Insurance regulations;Actuarial standards;Data privacy;Fraud detection;State compliance","Insurance regulations by state;Actuarial methods;Risk modeling;Claims processing;Regulatory reporting","domain-research","insurance software regulations {date};actuarial standards software;insurance fraud detection;state insurance compliance","regulatory_requirements;risk_modeling;fraud_detection;reporting_compliance" -energy,"energy,utility,grid,solar,wind,power,electricity,oil,gas",high,"Grid compliance;NERC standards;Environmental regulations;Safety requirements;Real-time operations","Energy regulations;Grid standards;Environmental compliance;Safety protocols;SCADA systems","domain-research","energy sector software compliance {date};NERC CIP standards;smart grid requirements;renewable energy software standards","grid_compliance;safety_protocols;environmental_compliance;operational_requirements" -process_control,"industrial automation,process control,PLC,SCADA,DCS,HMI,operational technology,OT,control system,cyberphysical,MES,historian,instrumentation,I&C,P&ID",high,"Functional safety;OT cybersecurity;Real-time control requirements;Legacy system integration;Process safety and hazard analysis;Environmental compliance and permitting;Engineering authority and PE requirements","Functional safety standards;OT security frameworks;Industrial protocols;Process control architecture;Plant reliability and maintainability","domain-research + technical-model","IEC 62443 OT cybersecurity requirements {date};functional safety software requirements {date};industrial process control architecture;ISA-95 manufacturing integration","functional_safety;ot_security;process_requirements;engineering_authority" -building_automation,"building automation,BAS,BMS,HVAC,smart building,lighting control,fire alarm,fire protection,fire suppression,life safety,elevator,access control,DDC,energy management,sequence of operations,commissioning",high,"Life safety codes;Building energy standards;Multi-trade coordination and interoperability;Commissioning and ongoing operational performance;Indoor environmental quality and occupant comfort;Engineering authority and PE requirements","Building automation protocols;HVAC and mechanical controls;Fire alarm, fire protection, and life safety design;Commissioning process and sequence of operations;Building codes and energy standards","domain-research","smart building software architecture {date};BACnet integration best practices;building automation cybersecurity {date};ASHRAE building standards","life_safety;energy_compliance;commissioning_requirements;engineering_authority" -gaming,"game,player,gameplay,level,character,multiplayer,quest",redirect,"REDIRECT TO GAME WORKFLOWS","Game design","game-brief","NA","NA" -general,"",low,"Standard requirements;Basic security;User experience;Performance","General software practices","continue","software development best practices {date}","standard_requirements" \ No newline at end of file diff --git a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/data/prd-purpose.md b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/data/prd-purpose.md deleted file mode 100644 index 755230be7..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/data/prd-purpose.md +++ /dev/null @@ -1,197 +0,0 @@ -# BMAD PRD Purpose - -**The PRD is the top of the required funnel that feeds all subsequent product development work in rhw BMad Method.** - ---- - -## What is a BMAD PRD? - -A dual-audience document serving: -1. **Human Product Managers and builders** - Vision, strategy, stakeholder communication -2. **LLM Downstream Consumption** - UX Design → Architecture → Epics → Development AI Agents - -Each successive document becomes more AI-tailored and granular. - ---- - -## Core Philosophy: Information Density - -**High Signal-to-Noise Ratio** - -Every sentence must carry information weight. LLMs consume precise, dense content efficiently. - -**Anti-Patterns (Eliminate These):** -- ❌ "The system will allow users to..." → ✅ "Users can..." -- ❌ "It is important to note that..." → ✅ State the fact directly -- ❌ "In order to..." → ✅ "To..." -- ❌ Conversational filler and padding → ✅ Direct, concise statements - -**Goal:** Maximum information per word. Zero fluff. - ---- - -## The Traceability Chain - -**PRD starts the chain:** -``` -Vision → Success Criteria → User Journeys → Functional Requirements → (future: User Stories) -``` - -**In the PRD, establish:** -- Vision → Success Criteria alignment -- Success Criteria → User Journey coverage -- User Journey → Functional Requirement mapping -- All requirements traceable to user needs - -**Why:** Each downstream artifact (UX, Architecture, Epics, Stories) must trace back to documented user needs and business objectives. This chain ensures we build the right thing. - ---- - -## What Makes Great Functional Requirements? - -### FRs are Capabilities, Not Implementation - -**Good FR:** "Users can reset their password via email link" -**Bad FR:** "System sends JWT via email and validates with database" (implementation leakage) - -**Good FR:** "Dashboard loads in under 2 seconds for 95th percentile" -**Bad FR:** "Fast loading time" (subjective, unmeasurable) - -### SMART Quality Criteria - -**Specific:** Clear, precisely defined capability -**Measurable:** Quantifiable with test criteria -**Attainable:** Realistic within constraints -**Relevant:** Aligns with business objectives -**Traceable:** Links to source (executive summary or user journey) - -### FR Anti-Patterns - -**Subjective Adjectives:** -- ❌ "easy to use", "intuitive", "user-friendly", "fast", "responsive" -- ✅ Use metrics: "completes task in under 3 clicks", "loads in under 2 seconds" - -**Implementation Leakage:** -- ❌ Technology names, specific libraries, implementation details -- ✅ Focus on capability and measurable outcomes - -**Vague Quantifiers:** -- ❌ "multiple users", "several options", "various formats" -- ✅ "up to 100 concurrent users", "3-5 options", "PDF, DOCX, TXT formats" - -**Missing Test Criteria:** -- ❌ "The system shall provide notifications" -- ✅ "The system shall send email notifications within 30 seconds of trigger event" - ---- - -## What Makes Great Non-Functional Requirements? - -### NFRs Must Be Measurable - -**Template:** -``` -"The system shall [metric] [condition] [measurement method]" -``` - -**Examples:** -- ✅ "The system shall respond to API requests in under 200ms for 95th percentile as measured by APM monitoring" -- ✅ "The system shall maintain 99.9% uptime during business hours as measured by cloud provider SLA" -- ✅ "The system shall support 10,000 concurrent users as measured by load testing" - -### NFR Anti-Patterns - -**Unmeasurable Claims:** -- ❌ "The system shall be scalable" → ✅ "The system shall handle 10x load growth through horizontal scaling" -- ❌ "High availability required" → ✅ "99.9% uptime as measured by cloud provider SLA" - -**Missing Context:** -- ❌ "Response time under 1 second" → ✅ "API response time under 1 second for 95th percentile under normal load" - ---- - -## Domain-Specific Requirements - -**Auto-Detect and Enforce Based on Project Context** - -Certain industries have mandatory requirements that must be present: - -- **Healthcare:** HIPAA Privacy & Security Rules, PHI encryption, audit logging, MFA -- **Fintech:** PCI-DSS Level 1, AML/KYC compliance, SOX controls, financial audit trails -- **GovTech:** NIST framework, Section 508 accessibility (WCAG 2.1 AA), FedRAMP, data residency -- **E-Commerce:** PCI-DSS for payments, inventory accuracy, tax calculation by jurisdiction - -**Why:** Missing these requirements in the PRD means they'll be missed in architecture and implementation, creating expensive rework. During PRD creation there is a step to cover this - during validation we want to make sure it was covered. For this purpose steps will utilize a domain-complexity.csv and project-types.csv. - ---- - -## Document Structure (Markdown, Human-Readable) - -### Required Sections -1. **Executive Summary** - Vision, differentiator, target users -2. **Success Criteria** - Measurable outcomes (SMART) -3. **Product Scope** - MVP, Growth, Vision phases -4. **User Journeys** - Comprehensive coverage -5. **Domain Requirements** - Industry-specific compliance (if applicable) -6. **Innovation Analysis** - Competitive differentiation (if applicable) -7. **Project-Type Requirements** - Platform-specific needs -8. **Functional Requirements** - Capability contract (FRs) -9. **Non-Functional Requirements** - Quality attributes (NFRs) - -### Formatting for Dual Consumption - -**For Humans:** -- Clear, professional language -- Logical flow from vision to requirements -- Easy for stakeholders to review and approve - -**For LLMs:** -- ## Level 2 headers for all main sections (enables extraction) -- Consistent structure and patterns -- Precise, testable language -- High information density - ---- - -## Downstream Impact - -**How the PRD Feeds Next Artifacts:** - -**UX Design:** -- User journeys → interaction flows -- FRs → design requirements -- Success criteria → UX metrics - -**Architecture:** -- FRs → system capabilities -- NFRs → architecture decisions -- Domain requirements → compliance architecture -- Project-type requirements → platform choices - -**Epics & Stories (created after architecture):** -- FRs → user stories (1 FR could map to 1-3 stories potentially) -- Acceptance criteria → story acceptance tests -- Priority → sprint sequencing -- Traceability → stories map back to vision - -**Development AI Agents:** -- Precise requirements → implementation clarity -- Test criteria → automated test generation -- Domain requirements → compliance enforcement -- Measurable NFRs → performance targets - ---- - -## Summary: What Makes a Great BMAD PRD? - -✅ **High Information Density** - Every sentence carries weight, zero fluff -✅ **Measurable Requirements** - All FRs and NFRs are testable with specific criteria -✅ **Clear Traceability** - Each requirement links to user need and business objective -✅ **Domain Awareness** - Industry-specific requirements auto-detected and included -✅ **Zero Anti-Patterns** - No subjective adjectives, implementation leakage, or vague quantifiers -✅ **Dual Audience Optimized** - Human-readable AND LLM-consumable -✅ **Markdown Format** - Professional, clean, accessible to all stakeholders - ---- - -**Remember:** The PRD is the foundation. Quality here ripples through every subsequent phase. A dense, precise, well-traced PRD makes UX design, architecture, epic breakdown, and AI development dramatically more effective. diff --git a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/data/project-types.csv b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/data/project-types.csv deleted file mode 100644 index 6f71c513a..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/data/project-types.csv +++ /dev/null @@ -1,11 +0,0 @@ -project_type,detection_signals,key_questions,required_sections,skip_sections,web_search_triggers,innovation_signals -api_backend,"API,REST,GraphQL,backend,service,endpoints","Endpoints needed?;Authentication method?;Data formats?;Rate limits?;Versioning?;SDK needed?","endpoint_specs;auth_model;data_schemas;error_codes;rate_limits;api_docs","ux_ui;visual_design;user_journeys","framework best practices;OpenAPI standards","API composition;New protocol" -mobile_app,"iOS,Android,app,mobile,iPhone,iPad","Native or cross-platform?;Offline needed?;Push notifications?;Device features?;Store compliance?","platform_reqs;device_permissions;offline_mode;push_strategy;store_compliance","desktop_features;cli_commands","app store guidelines;platform requirements","Gesture innovation;AR/VR features" -saas_b2b,"SaaS,B2B,platform,dashboard,teams,enterprise","Multi-tenant?;Permission model?;Subscription tiers?;Integrations?;Compliance?","tenant_model;rbac_matrix;subscription_tiers;integration_list;compliance_reqs","cli_interface;mobile_first","compliance requirements;integration guides","Workflow automation;AI agents" -developer_tool,"SDK,library,package,npm,pip,framework","Language support?;Package managers?;IDE integration?;Documentation?;Examples?","language_matrix;installation_methods;api_surface;code_examples;migration_guide","visual_design;store_compliance","package manager best practices;API design patterns","New paradigm;DSL creation" -cli_tool,"CLI,command,terminal,bash,script","Interactive or scriptable?;Output formats?;Config method?;Shell completion?","command_structure;output_formats;config_schema;scripting_support","visual_design;ux_principles;touch_interactions","CLI design patterns;shell integration","Natural language CLI;AI commands" -web_app,"website,webapp,browser,SPA,PWA","SPA or MPA?;Browser support?;SEO needed?;Real-time?;Accessibility?","browser_matrix;responsive_design;performance_targets;seo_strategy;accessibility_level","native_features;cli_commands","web standards;WCAG guidelines","New interaction;WebAssembly use" -game,"game,player,gameplay,level,character","REDIRECT TO USE THE BMad Method Game Module Agent and Workflows - HALT","game-brief;GDD","most_sections","game design patterns","Novel mechanics;Genre mixing" -desktop_app,"desktop,Windows,Mac,Linux,native","Cross-platform?;Auto-update?;System integration?;Offline?","platform_support;system_integration;update_strategy;offline_capabilities","web_seo;mobile_features","desktop guidelines;platform requirements","Desktop AI;System automation" -iot_embedded,"IoT,embedded,device,sensor,hardware","Hardware specs?;Connectivity?;Power constraints?;Security?;OTA updates?","hardware_reqs;connectivity_protocol;power_profile;security_model;update_mechanism","visual_ui;browser_support","IoT standards;protocol specs","Edge AI;New sensors" -blockchain_web3,"blockchain,crypto,DeFi,NFT,smart contract","Chain selection?;Wallet integration?;Gas optimization?;Security audit?","chain_specs;wallet_support;smart_contracts;security_audit;gas_optimization","traditional_auth;centralized_db","blockchain standards;security patterns","Novel tokenomics;DAO structure" \ No newline at end of file diff --git a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-01-discovery.md b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-01-discovery.md deleted file mode 100644 index feb002641..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-01-discovery.md +++ /dev/null @@ -1,221 +0,0 @@ ---- -# File references (ONLY variables used in this step) -nextStepFile: './step-v-02-format-detection.md' -prdPurpose: '../data/prd-purpose.md' ---- - -# Step 1: Document Discovery & Confirmation - -## STEP GOAL: - -Handle fresh context validation by confirming PRD path, discovering and loading input documents from frontmatter, and initializing the validation report. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` - -### Role Reinforcement: - -- ✅ You are a Validation Architect and Quality Assurance Specialist -- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role -- ✅ We engage in collaborative dialogue, not command-response -- ✅ You bring systematic validation expertise and analytical rigor -- ✅ User brings domain knowledge and specific PRD context - -### Step-Specific Rules: - -- 🎯 Focus ONLY on discovering PRD and input documents, not validating yet -- 🚫 FORBIDDEN to perform any validation checks in this step -- 💬 Approach: Systematic discovery with clear reporting to user -- 🚪 This is the setup step - get everything ready for validation - -## EXECUTION PROTOCOLS: - -- 🎯 Discover and confirm PRD to validate -- 💾 Load PRD and all input documents from frontmatter -- 📖 Initialize validation report next to PRD -- 🚫 FORBIDDEN to load next step until user confirms setup - -## CONTEXT BOUNDARIES: - -- Available context: PRD path (user-specified or discovered), workflow configuration -- Focus: Document discovery and setup only -- Limits: Don't perform validation, don't skip discovery -- Dependencies: Configuration loaded from PRD workflow.md initialization - -## MANDATORY SEQUENCE - -**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise unless user explicitly requests a change. - -### 1. Load PRD Purpose and Standards - -Load and read the complete file at: -`{prdPurpose}` - -This file contains the BMAD PRD philosophy, standards, and validation criteria that will guide all validation checks. Internalize this understanding - it defines what makes a great BMAD PRD. - -### 2. Discover PRD to Validate - -**If PRD path provided as invocation parameter:** -- Use provided path - -**If no PRD path provided, auto-discover:** -- Search `{planning_artifacts}` for files matching `*prd*.md` -- Also check for sharded PRDs: `{planning_artifacts}/*prd*/*.md` - -**If exactly ONE PRD found:** -- Use it automatically -- Inform user: "Found PRD: {discovered_path} — using it for validation." - -**If MULTIPLE PRDs found:** -- List all discovered PRDs with numbered options -- "I found multiple PRDs. Which one would you like to validate?" -- Wait for user selection - -**If NO PRDs found:** -- "I couldn't find any PRD files in {planning_artifacts}. Please provide the path to the PRD file you want to validate." -- Wait for user to provide PRD path. - -### 3. Validate PRD Exists and Load - -Once PRD path is provided: - -- Check if PRD file exists at specified path -- If not found: "I cannot find a PRD at that path. Please check the path and try again." -- If found: Load the complete PRD file including frontmatter - -### 4. Extract Frontmatter and Input Documents - -From the loaded PRD frontmatter, extract: - -- `inputDocuments: []` array (if present) -- Any other relevant metadata (classification, date, etc.) - -**If no inputDocuments array exists:** -Note this and proceed with PRD-only validation - -### 5. Load Input Documents - -For each document listed in `inputDocuments`: - -- Attempt to load the document -- Track successfully loaded documents -- Note any documents that fail to load - -**Build list of loaded input documents:** -- Product Brief (if present) -- Research documents (if present) -- Other reference materials (if present) - -### 6. Ask About Additional Reference Documents - -"**I've loaded the following documents from your PRD frontmatter:** - -{list loaded documents with file names} - -**Are there any additional reference documents you'd like me to include in this validation?** - -These could include: -- Additional research or context documents -- Project documentation not tracked in frontmatter -- Standards or compliance documents -- Competitive analysis or benchmarks - -Please provide paths to any additional documents, or type 'none' to proceed." - -**Load any additional documents provided by user.** - -### 7. Initialize Validation Report - -Create validation report at: `{validationReportPath}` - -**Initialize with frontmatter:** -```yaml ---- -validationTarget: '{prd_path}' -validationDate: '{current_date}' -inputDocuments: [list of all loaded documents] -validationStepsCompleted: [] -validationStatus: IN_PROGRESS ---- -``` - -**Initial content:** -```markdown -# PRD Validation Report - -**PRD Being Validated:** {prd_path} -**Validation Date:** {current_date} - -## Input Documents - -{list all documents loaded for validation} - -## Validation Findings - -[Findings will be appended as validation progresses] -``` - -### 8. Present Discovery Summary - -"**Setup Complete!** - -**PRD to Validate:** {prd_path} - -**Input Documents Loaded:** -- PRD: {prd_name} ✓ -- Product Brief: {count} {if count > 0}✓{else}(none found){/if} -- Research: {count} {if count > 0}✓{else}(none found){/if} -- Additional References: {count} {if count > 0}✓{else}(none){/if} - -**Validation Report:** {validationReportPath} - -**Ready to begin validation.**" - -### 9. Present MENU OPTIONS - -Display: **Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Format Detection - -#### EXECUTION RULES: - -- ALWAYS halt and wait for user input after presenting menu -- ONLY proceed to next step when user selects 'C' -- User can ask questions or add more documents - always respond and redisplay menu - -#### Menu Handling Logic: - -- IF A: Invoke the `bmad-advanced-elicitation` skill, and when finished redisplay the menu -- IF P: Invoke the `bmad-party-mode` skill, and when finished redisplay the menu -- IF C: Read fully and follow: {nextStepFile} to begin format detection -- IF user provides additional document: Load it, update report, redisplay summary -- IF Any other: help user, then redisplay menu - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- PRD path discovered and confirmed -- PRD file exists and loads successfully -- All input documents from frontmatter loaded -- Additional reference documents (if any) loaded -- Validation report initialized next to PRD -- User clearly informed of setup status -- Menu presented and user input handled correctly - -### ❌ SYSTEM FAILURE: - -- Proceeding with non-existent PRD file -- Not loading input documents from frontmatter -- Creating validation report in wrong location -- Proceeding without user confirming setup -- Not handling missing input documents gracefully - -**Master Rule:** Complete discovery and setup BEFORE validation. This step ensures everything is in place for systematic validation checks. diff --git a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02-format-detection.md b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02-format-detection.md deleted file mode 100644 index 1211ca6b3..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02-format-detection.md +++ /dev/null @@ -1,188 +0,0 @@ ---- -# File references (ONLY variables used in this step) -nextStepFile: './step-v-03-density-validation.md' -altStepFile: './step-v-02b-parity-check.md' -prdFile: '{prd_file_path}' -validationReportPath: '{validation_report_path}' ---- - -# Step 2: Format Detection & Structure Analysis - -## STEP GOAL: - -Detect if PRD follows BMAD format and route appropriately - classify as BMAD Standard / BMAD Variant / Non-Standard, with optional parity check for non-standard formats. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` - -### Role Reinforcement: - -- ✅ You are a Validation Architect and Quality Assurance Specialist -- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role -- ✅ We engage in collaborative dialogue, not command-response -- ✅ You bring systematic validation expertise and pattern recognition -- ✅ User brings domain knowledge and PRD context - -### Step-Specific Rules: - -- 🎯 Focus ONLY on detecting format and classifying structure -- 🚫 FORBIDDEN to perform other validation checks in this step -- 💬 Approach: Analytical and systematic, clear reporting of findings -- 🚪 This is a branch step - may route to parity check for non-standard PRDs - -## EXECUTION PROTOCOLS: - -- 🎯 Analyze PRD structure systematically -- 💾 Append format findings to validation report -- 📖 Route appropriately based on format classification -- 🚫 FORBIDDEN to skip format detection or proceed without classification - -## CONTEXT BOUNDARIES: - -- Available context: PRD file loaded in step 1, validation report initialized -- Focus: Format detection and classification only -- Limits: Don't perform other validation, don't skip classification -- Dependencies: Step 1 completed - PRD loaded and report initialized - -## MANDATORY SEQUENCE - -**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise unless user explicitly requests a change. - -### 1. Extract PRD Structure - -Load the complete PRD file and extract: - -**All Level 2 (##) headers:** -- Scan through entire PRD document -- Extract all ## section headers -- List them in order - -**PRD frontmatter:** -- Extract classification.domain if present -- Extract classification.projectType if present -- Note any other relevant metadata - -### 2. Check for BMAD PRD Core Sections - -Check if the PRD contains the following BMAD PRD core sections: - -1. **Executive Summary** (or variations: ## Executive Summary, ## Overview, ## Introduction) -2. **Success Criteria** (or: ## Success Criteria, ## Goals, ## Objectives) -3. **Product Scope** (or: ## Product Scope, ## Scope, ## In Scope, ## Out of Scope) -4. **User Journeys** (or: ## User Journeys, ## User Stories, ## User Flows) -5. **Functional Requirements** (or: ## Functional Requirements, ## Features, ## Capabilities) -6. **Non-Functional Requirements** (or: ## Non-Functional Requirements, ## NFRs, ## Quality Attributes) - -**Count matches:** -- How many of these 6 core sections are present? -- Which specific sections are present? -- Which are missing? - -### 3. Classify PRD Format - -Based on core section count, classify: - -**BMAD Standard:** -- 5-6 core sections present -- Follows BMAD PRD structure closely - -**BMAD Variant:** -- 3-4 core sections present -- Generally follows BMAD patterns but may have structural differences -- Missing some sections but recognizable as BMAD-style - -**Non-Standard:** -- Fewer than 3 core sections present -- Does not follow BMAD PRD structure -- May be completely custom format, legacy format, or from another framework - -### 4. Report Format Findings to Validation Report - -Append to validation report: - -```markdown -## Format Detection - -**PRD Structure:** -[List all ## Level 2 headers found] - -**BMAD Core Sections Present:** -- Executive Summary: [Present/Missing] -- Success Criteria: [Present/Missing] -- Product Scope: [Present/Missing] -- User Journeys: [Present/Missing] -- Functional Requirements: [Present/Missing] -- Non-Functional Requirements: [Present/Missing] - -**Format Classification:** [BMAD Standard / BMAD Variant / Non-Standard] -**Core Sections Present:** [count]/6 -``` - -### 5. Route Based on Format Classification - -**IF format is BMAD Standard or BMAD Variant:** - -Display: "**Format Detected:** {classification} - -Proceeding to systematic validation checks..." - -Without delay, read fully and follow: {nextStepFile} (step-v-03-density-validation.md) - -**IF format is Non-Standard (< 3 core sections):** - -Display: "**Format Detected:** Non-Standard PRD - -This PRD does not follow BMAD standard structure (only {count}/6 core sections present). - -You have options:" - -Present MENU OPTIONS below for user selection - -### 6. Present MENU OPTIONS (Non-Standard PRDs Only) - -**[A] Parity Check** - Analyze gaps and estimate effort to reach BMAD PRD parity -**[B] Validate As-Is** - Proceed with validation using current structure -**[C] Exit** - Exit validation and review format findings - -#### EXECUTION RULES: - -- ALWAYS halt and wait for user input -- Only proceed based on user selection - -#### Menu Handling Logic: - -- IF A (Parity Check): Read fully and follow: {altStepFile} (step-v-02b-parity-check.md) -- IF B (Validate As-Is): Display "Proceeding with validation..." then read fully and follow: {nextStepFile} -- IF C (Exit): Display format findings summary and exit validation -- IF Any other: help user respond, then redisplay menu - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- All ## Level 2 headers extracted successfully -- BMAD core sections checked systematically -- Format classified correctly based on section count -- Findings reported to validation report -- BMAD Standard/Variant PRDs proceed directly to next validation step -- Non-Standard PRDs pause and present options to user -- User can choose parity check, validate as-is, or exit - -### ❌ SYSTEM FAILURE: - -- Not extracting all headers before classification -- Incorrect format classification -- Not reporting findings to validation report -- Not pausing for non-standard PRDs -- Proceeding without user decision for non-standard formats - -**Master Rule:** Format detection determines validation path. Non-standard PRDs require user choice before proceeding. diff --git a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02b-parity-check.md b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02b-parity-check.md deleted file mode 100644 index 33b6a1931..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02b-parity-check.md +++ /dev/null @@ -1,206 +0,0 @@ ---- -# File references (ONLY variables used in this step) -nextStepFile: './step-v-03-density-validation.md' -prdFile: '{prd_file_path}' -validationReportPath: '{validation_report_path}' ---- - -# Step 2B: Document Parity Check - -## STEP GOAL: - -Analyze non-standard PRD and identify gaps to achieve BMAD PRD parity, presenting user with options for how to proceed. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` - -### Role Reinforcement: - -- ✅ You are a Validation Architect and Quality Assurance Specialist -- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role -- ✅ We engage in collaborative dialogue, not command-response -- ✅ You bring BMAD PRD standards expertise and gap analysis -- ✅ User brings domain knowledge and PRD context - -### Step-Specific Rules: - -- 🎯 Focus ONLY on analyzing gaps and estimating parity effort -- 🚫 FORBIDDEN to perform other validation checks in this step -- 💬 Approach: Systematic gap analysis with clear recommendations -- 🚪 This is an optional branch step - user chooses next action - -## EXECUTION PROTOCOLS: - -- 🎯 Analyze each BMAD PRD section for gaps -- 💾 Append parity analysis to validation report -- 📖 Present options and await user decision -- 🚫 FORBIDDEN to proceed without user selection - -## CONTEXT BOUNDARIES: - -- Available context: Non-standard PRD from step 2, validation report in progress -- Focus: Parity analysis only - what's missing, what's needed -- Limits: Don't perform validation checks, don't auto-proceed -- Dependencies: Step 2 classified PRD as non-standard and user chose parity check - -## MANDATORY SEQUENCE - -**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise unless user explicitly requests a change. - -### 1. Analyze Each BMAD PRD Section - -For each of the 6 BMAD PRD core sections, analyze: - -**Executive Summary:** -- Does PRD have vision/overview? -- Is problem statement clear? -- Are target users identified? -- Gap: [What's missing or incomplete] - -**Success Criteria:** -- Are measurable goals defined? -- Is success clearly defined? -- Gap: [What's missing or incomplete] - -**Product Scope:** -- Is scope clearly defined? -- Are in-scope items listed? -- Are out-of-scope items listed? -- Gap: [What's missing or incomplete] - -**User Journeys:** -- Are user types/personas identified? -- Are user flows documented? -- Gap: [What's missing or incomplete] - -**Functional Requirements:** -- Are features/capabilities listed? -- Are requirements structured? -- Gap: [What's missing or incomplete] - -**Non-Functional Requirements:** -- Are quality attributes defined? -- Are performance/security/etc. requirements documented? -- Gap: [What's missing or incomplete] - -### 2. Estimate Effort to Reach Parity - -For each missing or incomplete section, estimate: - -**Effort Level:** -- Minimal - Section exists but needs minor enhancements -- Moderate - Section missing but content exists elsewhere in PRD -- Significant - Section missing, requires new content creation - -**Total Parity Effort:** -- Based on individual section estimates -- Classify overall: Quick / Moderate / Substantial effort - -### 3. Report Parity Analysis to Validation Report - -Append to validation report: - -```markdown -## Parity Analysis (Non-Standard PRD) - -### Section-by-Section Gap Analysis - -**Executive Summary:** -- Status: [Present/Missing/Incomplete] -- Gap: [specific gap description] -- Effort to Complete: [Minimal/Moderate/Significant] - -**Success Criteria:** -- Status: [Present/Missing/Incomplete] -- Gap: [specific gap description] -- Effort to Complete: [Minimal/Moderate/Significant] - -**Product Scope:** -- Status: [Present/Missing/Incomplete] -- Gap: [specific gap description] -- Effort to Complete: [Minimal/Moderate/Significant] - -**User Journeys:** -- Status: [Present/Missing/Incomplete] -- Gap: [specific gap description] -- Effort to Complete: [Minimal/Moderate/Significant] - -**Functional Requirements:** -- Status: [Present/Missing/Incomplete] -- Gap: [specific gap description] -- Effort to Complete: [Minimal/Moderate/Significant] - -**Non-Functional Requirements:** -- Status: [Present/Missing/Incomplete] -- Gap: [specific gap description] -- Effort to Complete: [Minimal/Moderate/Significant] - -### Overall Parity Assessment - -**Overall Effort to Reach BMAD Standard:** [Quick/Moderate/Substantial] -**Recommendation:** [Brief recommendation based on analysis] -``` - -### 4. Present Parity Analysis and Options - -Display: - -"**Parity Analysis Complete** - -Your PRD is missing {count} of 6 core BMAD PRD sections. The overall effort to reach BMAD standard is: **{effort level}** - -**Quick Summary:** -[2-3 sentence summary of key gaps] - -**Recommendation:** -{recommendation from analysis} - -**How would you like to proceed?**" - -### 5. Present MENU OPTIONS - -**[C] Continue Validation** - Proceed with validation using current structure -**[E] Exit & Review** - Exit validation and review parity report -**[S] Save & Exit** - Save parity report and exit - -#### EXECUTION RULES: - -- ALWAYS halt and wait for user input -- Only proceed based on user selection - -#### Menu Handling Logic: - -- IF C (Continue): Display "Proceeding with validation..." then read fully and follow: {nextStepFile} -- IF E (Exit): Display parity summary and exit validation -- IF S (Save): Confirm saved, display summary, exit -- IF Any other: help user respond, then redisplay menu - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- All 6 BMAD PRD sections analyzed for gaps -- Effort estimates provided for each gap -- Overall parity effort assessed correctly -- Parity analysis reported to validation report -- Clear summary presented to user -- User can choose to continue validation, exit, or save report - -### ❌ SYSTEM FAILURE: - -- Not analyzing all 6 sections systematically -- Missing effort estimates -- Not reporting parity analysis to validation report -- Auto-proceeding without user decision -- Unclear recommendations - -**Master Rule:** Parity check informs user of gaps and effort, but user decides whether to proceed with validation or address gaps first. diff --git a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-03-density-validation.md b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-03-density-validation.md deleted file mode 100644 index 35b7e453f..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-03-density-validation.md +++ /dev/null @@ -1,171 +0,0 @@ ---- -# File references (ONLY variables used in this step) -nextStepFile: './step-v-04-brief-coverage-validation.md' -prdFile: '{prd_file_path}' -validationReportPath: '{validation_report_path}' ---- - -# Step 3: Information Density Validation - -## STEP GOAL: - -Validate PRD meets BMAD information density standards by scanning for conversational filler, wordy phrases, and redundant expressions that violate conciseness principles. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` - -### Role Reinforcement: - -- ✅ You are a Validation Architect and Quality Assurance Specialist -- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role -- ✅ We engage in systematic validation, not collaborative dialogue -- ✅ You bring analytical rigor and attention to detail -- ✅ This step runs autonomously - no user input needed - -### Step-Specific Rules: - -- 🎯 Focus ONLY on information density anti-patterns -- 🚫 FORBIDDEN to validate other aspects in this step -- 💬 Approach: Systematic scanning and categorization -- 🚪 This is a validation sequence step - auto-proceeds when complete - -## EXECUTION PROTOCOLS: - -- 🎯 Scan PRD for density anti-patterns systematically -- 💾 Append density findings to validation report -- 📖 Display "Proceeding to next check..." and load next step -- 🚫 FORBIDDEN to pause or request user input - -## CONTEXT BOUNDARIES: - -- Available context: PRD file, validation report with format findings -- Focus: Information density validation only -- Limits: Don't validate other aspects, don't pause for user input -- Dependencies: Step 2 completed - format classification done - -## MANDATORY SEQUENCE - -**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise unless user explicitly requests a change. - -### 1. Attempt Sub-Process Validation - -**Try to use Task tool to spawn a subprocess:** - -"Perform information density validation on this PRD: - -1. Load the PRD file -2. Scan for the following anti-patterns: - - Conversational filler phrases (examples: 'The system will allow users to...', 'It is important to note that...', 'In order to') - - Wordy phrases (examples: 'Due to the fact that', 'In the event of', 'For the purpose of') - - Redundant phrases (examples: 'Future plans', 'Absolutely essential', 'Past history') -3. Count violations by category with line numbers -4. Classify severity: Critical (>10 violations), Warning (5-10), Pass (<5) - -Return structured findings with counts and examples." - -### 2. Graceful Degradation (if Task tool unavailable) - -If Task tool unavailable, perform analysis directly: - -**Scan for conversational filler patterns:** -- "The system will allow users to..." -- "It is important to note that..." -- "In order to" -- "For the purpose of" -- "With regard to" -- Count occurrences and note line numbers - -**Scan for wordy phrases:** -- "Due to the fact that" (use "because") -- "In the event of" (use "if") -- "At this point in time" (use "now") -- "In a manner that" (use "how") -- Count occurrences and note line numbers - -**Scan for redundant phrases:** -- "Future plans" (just "plans") -- "Past history" (just "history") -- "Absolutely essential" (just "essential") -- "Completely finish" (just "finish") -- Count occurrences and note line numbers - -### 3. Classify Severity - -**Calculate total violations:** -- Conversational filler count -- Wordy phrases count -- Redundant phrases count -- Total = sum of all categories - -**Determine severity:** -- **Critical:** Total > 10 violations -- **Warning:** Total 5-10 violations -- **Pass:** Total < 5 violations - -### 4. Report Density Findings to Validation Report - -Append to validation report: - -```markdown -## Information Density Validation - -**Anti-Pattern Violations:** - -**Conversational Filler:** {count} occurrences -[If count > 0, list examples with line numbers] - -**Wordy Phrases:** {count} occurrences -[If count > 0, list examples with line numbers] - -**Redundant Phrases:** {count} occurrences -[If count > 0, list examples with line numbers] - -**Total Violations:** {total} - -**Severity Assessment:** [Critical/Warning/Pass] - -**Recommendation:** -[If Critical] "PRD requires significant revision to improve information density. Every sentence should carry weight without filler." -[If Warning] "PRD would benefit from reducing wordiness and eliminating filler phrases." -[If Pass] "PRD demonstrates good information density with minimal violations." -``` - -### 5. Display Progress and Auto-Proceed - -Display: "**Information Density Validation Complete** - -Severity: {Critical/Warning/Pass} - -**Proceeding to next validation check...**" - -Without delay, read fully and follow: {nextStepFile} (step-v-04-brief-coverage-validation.md) - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- PRD scanned for all three anti-pattern categories -- Violations counted with line numbers -- Severity classified correctly -- Findings reported to validation report -- Auto-proceeds to next validation step -- Subprocess attempted with graceful degradation - -### ❌ SYSTEM FAILURE: - -- Not scanning all anti-pattern categories -- Missing severity classification -- Not reporting findings to validation report -- Pausing for user input (should auto-proceed) -- Not attempting subprocess architecture - -**Master Rule:** Information density validation runs autonomously. Scan, classify, report, auto-proceed. No user interaction needed. diff --git a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md deleted file mode 100644 index e1e70af99..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md +++ /dev/null @@ -1,211 +0,0 @@ ---- -# File references (ONLY variables used in this step) -nextStepFile: './step-v-05-measurability-validation.md' -prdFile: '{prd_file_path}' -productBrief: '{product_brief_path}' -validationReportPath: '{validation_report_path}' ---- - -# Step 4: Product Brief Coverage Validation - -## STEP GOAL: - -Validate that PRD covers all content from Product Brief (if brief was used as input), mapping brief content to PRD sections and identifying gaps. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` - -### Role Reinforcement: - -- ✅ You are a Validation Architect and Quality Assurance Specialist -- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role -- ✅ We engage in systematic validation, not collaborative dialogue -- ✅ You bring analytical rigor and traceability expertise -- ✅ This step runs autonomously - no user input needed - -### Step-Specific Rules: - -- 🎯 Focus ONLY on Product Brief coverage (conditional on brief existence) -- 🚫 FORBIDDEN to validate other aspects in this step -- 💬 Approach: Systematic mapping and gap analysis -- 🚪 This is a validation sequence step - auto-proceeds when complete - -## EXECUTION PROTOCOLS: - -- 🎯 Check if Product Brief exists in input documents -- 💬 If no brief: Skip this check and report "N/A - No Product Brief" -- 🎯 If brief exists: Map brief content to PRD sections -- 💾 Append coverage findings to validation report -- 📖 Display "Proceeding to next check..." and load next step -- 🚫 FORBIDDEN to pause or request user input - -## CONTEXT BOUNDARIES: - -- Available context: PRD file, input documents from step 1, validation report -- Focus: Product Brief coverage only (conditional) -- Limits: Don't validate other aspects, conditional execution -- Dependencies: Step 1 completed - input documents loaded - -## MANDATORY SEQUENCE - -**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise unless user explicitly requests a change. - -### 1. Check for Product Brief - -Check if Product Brief was loaded in step 1's inputDocuments: - -**IF no Product Brief found:** -Append to validation report: -```markdown -## Product Brief Coverage - -**Status:** N/A - No Product Brief was provided as input -``` - -Display: "**Product Brief Coverage: Skipped** (No Product Brief provided) - -**Proceeding to next validation check...**" - -Without delay, read fully and follow: {nextStepFile} - -**IF Product Brief exists:** Continue to step 2 below - -### 2. Attempt Sub-Process Validation - -**Try to use Task tool to spawn a subprocess:** - -"Perform Product Brief coverage validation: - -1. Load the Product Brief -2. Extract key content: - - Vision statement - - Target users/personas - - Problem statement - - Key features - - Goals/objectives - - Differentiators - - Constraints -3. For each item, search PRD for corresponding coverage -4. Classify coverage: Fully Covered / Partially Covered / Not Found / Intentionally Excluded -5. Note any gaps with severity: Critical / Moderate / Informational - -Return structured coverage map with classifications." - -### 3. Graceful Degradation (if Task tool unavailable) - -If Task tool unavailable, perform analysis directly: - -**Extract from Product Brief:** -- Vision: What is this product? -- Users: Who is it for? -- Problem: What problem does it solve? -- Features: What are the key capabilities? -- Goals: What are the success criteria? -- Differentiators: What makes it unique? - -**For each item, search PRD:** -- Scan Executive Summary for vision -- Check User Journeys or user personas -- Look for problem statement -- Review Functional Requirements for features -- Check Success Criteria section -- Search for differentiators - -**Classify coverage:** -- **Fully Covered:** Content present and complete -- **Partially Covered:** Content present but incomplete -- **Not Found:** Content missing from PRD -- **Intentionally Excluded:** Content explicitly out of scope - -### 4. Assess Coverage and Severity - -**For each gap (Partially Covered or Not Found):** -- Is this Critical? (Core vision, primary users, main features) -- Is this Moderate? (Secondary features, some goals) -- Is this Informational? (Nice-to-have features, minor details) - -**Note:** Some exclusions may be intentional (valid scoping decisions) - -### 5. Report Coverage Findings to Validation Report - -Append to validation report: - -```markdown -## Product Brief Coverage - -**Product Brief:** {brief_file_name} - -### Coverage Map - -**Vision Statement:** [Fully/Partially/Not Found/Intentionally Excluded] -[If gap: Note severity and specific missing content] - -**Target Users:** [Fully/Partially/Not Found/Intentionally Excluded] -[If gap: Note severity and specific missing content] - -**Problem Statement:** [Fully/Partially/Not Found/Intentionally Excluded] -[If gap: Note severity and specific missing content] - -**Key Features:** [Fully/Partially/Not Found/Intentionally Excluded] -[If gap: List specific features with severity] - -**Goals/Objectives:** [Fully/Partially/Not Found/Intentionally Excluded] -[If gap: Note severity and specific missing content] - -**Differentiators:** [Fully/Partially/Not Found/Intentionally Excluded] -[If gap: Note severity and specific missing content] - -### Coverage Summary - -**Overall Coverage:** [percentage or qualitative assessment] -**Critical Gaps:** [count] [list if any] -**Moderate Gaps:** [count] [list if any] -**Informational Gaps:** [count] [list if any] - -**Recommendation:** -[If critical gaps exist] "PRD should be revised to cover critical Product Brief content." -[If moderate gaps] "Consider addressing moderate gaps for complete coverage." -[If minimal gaps] "PRD provides good coverage of Product Brief content." -``` - -### 6. Display Progress and Auto-Proceed - -Display: "**Product Brief Coverage Validation Complete** - -Overall Coverage: {assessment} - -**Proceeding to next validation check...**" - -Without delay, read fully and follow: {nextStepFile} (step-v-05-measurability-validation.md) - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- Checked for Product Brief existence correctly -- If no brief: Reported "N/A" and skipped gracefully -- If brief exists: Mapped all key brief content to PRD sections -- Coverage classified appropriately (Fully/Partially/Not Found/Intentionally Excluded) -- Severity assessed for gaps (Critical/Moderate/Informational) -- Findings reported to validation report -- Auto-proceeds to next validation step -- Subprocess attempted with graceful degradation - -### ❌ SYSTEM FAILURE: - -- Not checking for brief existence before attempting validation -- If brief exists: not mapping all key content areas -- Missing coverage classifications -- Not reporting findings to validation report -- Not auto-proceeding - -**Master Rule:** Product Brief coverage is conditional - skip if no brief, validate thoroughly if brief exists. Always auto-proceed. diff --git a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md deleted file mode 100644 index 196f5c732..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md +++ /dev/null @@ -1,225 +0,0 @@ ---- -# File references (ONLY variables used in this step) -nextStepFile: './step-v-06-traceability-validation.md' -prdFile: '{prd_file_path}' -validationReportPath: '{validation_report_path}' ---- - -# Step 5: Measurability Validation - -## STEP GOAL: - -Validate that all Functional Requirements (FRs) and Non-Functional Requirements (NFRs) are measurable, testable, and follow proper format without implementation details. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` - -### Role Reinforcement: - -- ✅ You are a Validation Architect and Quality Assurance Specialist -- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role -- ✅ We engage in systematic validation, not collaborative dialogue -- ✅ You bring analytical rigor and requirements engineering expertise -- ✅ This step runs autonomously - no user input needed - -### Step-Specific Rules: - -- 🎯 Focus ONLY on FR and NFR measurability -- 🚫 FORBIDDEN to validate other aspects in this step -- 💬 Approach: Systematic requirement-by-requirement analysis -- 🚪 This is a validation sequence step - auto-proceeds when complete - -## EXECUTION PROTOCOLS: - -- 🎯 Extract all FRs and NFRs from PRD -- 💾 Validate each for measurability and format -- 📖 Append findings to validation report -- 📖 Display "Proceeding to next check..." and load next step -- 🚫 FORBIDDEN to pause or request user input - -## CONTEXT BOUNDARIES: - -- Available context: PRD file, validation report -- Focus: FR and NFR measurability only -- Limits: Don't validate other aspects, don't pause for user input -- Dependencies: Steps 2-4 completed - initial validation checks done - -## MANDATORY SEQUENCE - -**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise unless user explicitly requests a change. - -### 1. Attempt Sub-Process Validation - -**Try to use Task tool to spawn a subprocess:** - -"Perform measurability validation on this PRD: - -**Functional Requirements (FRs):** -1. Extract all FRs from Functional Requirements section -2. Check each FR for: - - '[Actor] can [capability]' format compliance - - No subjective adjectives (easy, fast, simple, intuitive, etc.) - - No vague quantifiers (multiple, several, some, many, etc.) - - No implementation details (technology names, library names, data structures unless capability-relevant) -3. Document violations with line numbers - -**Non-Functional Requirements (NFRs):** -1. Extract all NFRs from Non-Functional Requirements section -2. Check each NFR for: - - Specific metrics with measurement methods - - Template compliance (criterion, metric, measurement method, context) - - Context included (why this matters, who it affects) -3. Document violations with line numbers - -Return structured findings with violation counts and examples." - -### 2. Graceful Degradation (if Task tool unavailable) - -If Task tool unavailable, perform analysis directly: - -**Functional Requirements Analysis:** - -Extract all FRs and check each for: - -**Format compliance:** -- Does it follow "[Actor] can [capability]" pattern? -- Is actor clearly defined? -- Is capability actionable and testable? - -**No subjective adjectives:** -- Scan for: easy, fast, simple, intuitive, user-friendly, responsive, quick, efficient (without metrics) -- Note line numbers - -**No vague quantifiers:** -- Scan for: multiple, several, some, many, few, various, number of -- Note line numbers - -**No implementation details:** -- Scan for: React, Vue, Angular, PostgreSQL, MongoDB, AWS, Docker, Kubernetes, Redux, etc. -- Unless capability-relevant (e.g., "API consumers can access...") -- Note line numbers - -**Non-Functional Requirements Analysis:** - -Extract all NFRs and check each for: - -**Specific metrics:** -- Is there a measurable criterion? (e.g., "response time < 200ms", not "fast response") -- Can this be measured or tested? - -**Template compliance:** -- Criterion defined? -- Metric specified? -- Measurement method included? -- Context provided? - -### 3. Tally Violations - -**FR Violations:** -- Format violations: count -- Subjective adjectives: count -- Vague quantifiers: count -- Implementation leakage: count -- Total FR violations: sum - -**NFR Violations:** -- Missing metrics: count -- Incomplete template: count -- Missing context: count -- Total NFR violations: sum - -**Total violations:** FR violations + NFR violations - -### 4. Report Measurability Findings to Validation Report - -Append to validation report: - -```markdown -## Measurability Validation - -### Functional Requirements - -**Total FRs Analyzed:** {count} - -**Format Violations:** {count} -[If violations exist, list examples with line numbers] - -**Subjective Adjectives Found:** {count} -[If found, list examples with line numbers] - -**Vague Quantifiers Found:** {count} -[If found, list examples with line numbers] - -**Implementation Leakage:** {count} -[If found, list examples with line numbers] - -**FR Violations Total:** {total} - -### Non-Functional Requirements - -**Total NFRs Analyzed:** {count} - -**Missing Metrics:** {count} -[If missing, list examples with line numbers] - -**Incomplete Template:** {count} -[If incomplete, list examples with line numbers] - -**Missing Context:** {count} -[If missing, list examples with line numbers] - -**NFR Violations Total:** {total} - -### Overall Assessment - -**Total Requirements:** {FRs + NFRs} -**Total Violations:** {FR violations + NFR violations} - -**Severity:** [Critical if >10 violations, Warning if 5-10, Pass if <5] - -**Recommendation:** -[If Critical] "Many requirements are not measurable or testable. Requirements must be revised to be testable for downstream work." -[If Warning] "Some requirements need refinement for measurability. Focus on violating requirements above." -[If Pass] "Requirements demonstrate good measurability with minimal issues." -``` - -### 5. Display Progress and Auto-Proceed - -Display: "**Measurability Validation Complete** - -Total Violations: {count} ({severity}) - -**Proceeding to next validation check...**" - -Without delay, read fully and follow: {nextStepFile} (step-v-06-traceability-validation.md) - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- All FRs extracted and analyzed for measurability -- All NFRs extracted and analyzed for measurability -- Violations documented with line numbers -- Severity assessed correctly -- Findings reported to validation report -- Auto-proceeds to next validation step -- Subprocess attempted with graceful degradation - -### ❌ SYSTEM FAILURE: - -- Not analyzing all FRs and NFRs -- Missing line numbers for violations -- Not reporting findings to validation report -- Not assessing severity -- Not auto-proceeding - -**Master Rule:** Requirements must be testable to be useful. Validate every requirement for measurability, document violations, auto-proceed. diff --git a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md deleted file mode 100644 index 67fb2847b..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md +++ /dev/null @@ -1,214 +0,0 @@ ---- -# File references (ONLY variables used in this step) -nextStepFile: './step-v-07-implementation-leakage-validation.md' -prdFile: '{prd_file_path}' -validationReportPath: '{validation_report_path}' ---- - -# Step 6: Traceability Validation - -## STEP GOAL: - -Validate the traceability chain from Executive Summary → Success Criteria → User Journeys → Functional Requirements is intact, ensuring every requirement traces back to a user need or business objective. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` - -### Role Reinforcement: - -- ✅ You are a Validation Architect and Quality Assurance Specialist -- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role -- ✅ We engage in systematic validation, not collaborative dialogue -- ✅ You bring analytical rigor and traceability matrix expertise -- ✅ This step runs autonomously - no user input needed - -### Step-Specific Rules: - -- 🎯 Focus ONLY on traceability chain validation -- 🚫 FORBIDDEN to validate other aspects in this step -- 💬 Approach: Systematic chain validation and orphan detection -- 🚪 This is a validation sequence step - auto-proceeds when complete - -## EXECUTION PROTOCOLS: - -- 🎯 Build and validate traceability matrix -- 💾 Identify broken chains and orphan requirements -- 📖 Append findings to validation report -- 📖 Display "Proceeding to next check..." and load next step -- 🚫 FORBIDDEN to pause or request user input - -## CONTEXT BOUNDARIES: - -- Available context: PRD file, validation report -- Focus: Traceability chain validation only -- Limits: Don't validate other aspects, don't pause for user input -- Dependencies: Steps 2-5 completed - initial validations done - -## MANDATORY SEQUENCE - -**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise unless user explicitly requests a change. - -### 1. Attempt Sub-Process Validation - -**Try to use Task tool to spawn a subprocess:** - -"Perform traceability validation on this PRD: - -1. Extract content from Executive Summary (vision, goals) -2. Extract Success Criteria -3. Extract User Journeys (user types, flows, outcomes) -4. Extract Functional Requirements (FRs) -5. Extract Product Scope (in-scope items) - -**Validate chains:** -- Executive Summary → Success Criteria: Does vision align with defined success? -- Success Criteria → User Journeys: Are success criteria supported by user journeys? -- User Journeys → Functional Requirements: Does each FR trace back to a user journey? -- Scope → FRs: Do MVP scope FRs align with in-scope items? - -**Identify orphans:** -- FRs not traceable to any user journey or business objective -- Success criteria not supported by user journeys -- User journeys without supporting FRs - -Build traceability matrix and identify broken chains and orphan FRs. - -Return structured findings with chain status and orphan list." - -### 2. Graceful Degradation (if Task tool unavailable) - -If Task tool unavailable, perform analysis directly: - -**Step 1: Extract key elements** -- Executive Summary: Note vision, goals, objectives -- Success Criteria: List all criteria -- User Journeys: List user types and their flows -- Functional Requirements: List all FRs -- Product Scope: List in-scope items - -**Step 2: Validate Executive Summary → Success Criteria** -- Does Executive Summary mention the success dimensions? -- Are Success Criteria aligned with vision? -- Note any misalignment - -**Step 3: Validate Success Criteria → User Journeys** -- For each success criterion, is there a user journey that achieves it? -- Note success criteria without supporting journeys - -**Step 4: Validate User Journeys → FRs** -- For each user journey/flow, are there FRs that enable it? -- List FRs with no clear user journey origin -- Note orphan FRs (requirements without traceable source) - -**Step 5: Validate Scope → FR Alignment** -- Does MVP scope align with essential FRs? -- Are in-scope items supported by FRs? -- Note misalignments - -**Step 6: Build traceability matrix** -- Map each FR to its source (journey or business objective) -- Note orphan FRs -- Identify broken chains - -### 3. Tally Traceability Issues - -**Broken chains:** -- Executive Summary → Success Criteria gaps: count -- Success Criteria → User Journeys gaps: count -- User Journeys → FRs gaps: count -- Scope → FR misalignments: count - -**Orphan elements:** -- Orphan FRs (no traceable source): count -- Unsupported success criteria: count -- User journeys without FRs: count - -**Total issues:** Sum of all broken chains and orphans - -### 4. Report Traceability Findings to Validation Report - -Append to validation report: - -```markdown -## Traceability Validation - -### Chain Validation - -**Executive Summary → Success Criteria:** [Intact/Gaps Identified] -{If gaps: List specific misalignments} - -**Success Criteria → User Journeys:** [Intact/Gaps Identified] -{If gaps: List unsupported success criteria} - -**User Journeys → Functional Requirements:** [Intact/Gaps Identified] -{If gaps: List journeys without supporting FRs} - -**Scope → FR Alignment:** [Intact/Misaligned] -{If misaligned: List specific issues} - -### Orphan Elements - -**Orphan Functional Requirements:** {count} -{List orphan FRs with numbers} - -**Unsupported Success Criteria:** {count} -{List unsupported criteria} - -**User Journeys Without FRs:** {count} -{List journeys without FRs} - -### Traceability Matrix - -{Summary table showing traceability coverage} - -**Total Traceability Issues:** {total} - -**Severity:** [Critical if orphan FRs exist, Warning if gaps, Pass if intact] - -**Recommendation:** -[If Critical] "Orphan requirements exist - every FR must trace back to a user need or business objective." -[If Warning] "Traceability gaps identified - strengthen chains to ensure all requirements are justified." -[If Pass] "Traceability chain is intact - all requirements trace to user needs or business objectives." -``` - -### 5. Display Progress and Auto-Proceed - -Display: "**Traceability Validation Complete** - -Total Issues: {count} ({severity}) - -**Proceeding to next validation check...**" - -Without delay, read fully and follow: {nextStepFile} (step-v-07-implementation-leakage-validation.md) - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- All traceability chains validated systematically -- Orphan FRs identified with numbers -- Broken chains documented -- Traceability matrix built -- Severity assessed correctly -- Findings reported to validation report -- Auto-proceeds to next validation step -- Subprocess attempted with graceful degradation - -### ❌ SYSTEM FAILURE: - -- Not validating all traceability chains -- Missing orphan FR detection -- Not building traceability matrix -- Not reporting findings to validation report -- Not auto-proceeding - -**Master Rule:** Every requirement should trace to a user need or business objective. Orphan FRs indicate broken traceability that must be fixed. diff --git a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md deleted file mode 100644 index a4f740c01..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md +++ /dev/null @@ -1,202 +0,0 @@ ---- -# File references (ONLY variables used in this step) -nextStepFile: './step-v-08-domain-compliance-validation.md' -prdFile: '{prd_file_path}' -validationReportPath: '{validation_report_path}' ---- - -# Step 7: Implementation Leakage Validation - -## STEP GOAL: - -Ensure Functional Requirements and Non-Functional Requirements don't include implementation details - they should specify WHAT, not HOW. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` - -### Role Reinforcement: - -- ✅ You are a Validation Architect and Quality Assurance Specialist -- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role -- ✅ We engage in systematic validation, not collaborative dialogue -- ✅ You bring analytical rigor and separation of concerns expertise -- ✅ This step runs autonomously - no user input needed - -### Step-Specific Rules: - -- 🎯 Focus ONLY on implementation leakage detection -- 🚫 FORBIDDEN to validate other aspects in this step -- 💬 Approach: Systematic scanning for technology and implementation terms -- 🚪 This is a validation sequence step - auto-proceeds when complete - -## EXECUTION PROTOCOLS: - -- 🎯 Scan FRs and NFRs for implementation terms -- 💾 Distinguish capability-relevant vs leakage -- 📖 Append findings to validation report -- 📖 Display "Proceeding to next check..." and load next step -- 🚫 FORBIDDEN to pause or request user input - -## CONTEXT BOUNDARIES: - -- Available context: PRD file, validation report -- Focus: Implementation leakage detection only -- Limits: Don't validate other aspects, don't pause for user input -- Dependencies: Steps 2-6 completed - initial validations done - -## MANDATORY SEQUENCE - -**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise unless user explicitly requests a change. - -### 1. Attempt Sub-Process Validation - -**Try to use Task tool to spawn a subprocess:** - -"Perform implementation leakage validation on this PRD: - -**Scan for:** -1. Technology names (React, Vue, Angular, PostgreSQL, MongoDB, AWS, GCP, Azure, Docker, Kubernetes, etc.) -2. Library names (Redux, axios, lodash, Express, Django, Rails, Spring, etc.) -3. Data structures (JSON, XML, CSV) unless relevant to capability -4. Architecture patterns (MVC, microservices, serverless) unless business requirement -5. Protocol names (HTTP, REST, GraphQL, WebSockets) - check if capability-relevant - -**For each term found:** -- Is this capability-relevant? (e.g., 'API consumers can access...' - API is capability) -- Or is this implementation detail? (e.g., 'React component for...' - implementation) - -Document violations with line numbers and explanation. - -Return structured findings with leakage counts and examples." - -### 2. Graceful Degradation (if Task tool unavailable) - -If Task tool unavailable, perform analysis directly: - -**Implementation leakage terms to scan for:** - -**Frontend Frameworks:** -React, Vue, Angular, Svelte, Solid, Next.js, Nuxt, etc. - -**Backend Frameworks:** -Express, Django, Rails, Spring, Laravel, FastAPI, etc. - -**Databases:** -PostgreSQL, MySQL, MongoDB, Redis, DynamoDB, Cassandra, etc. - -**Cloud Platforms:** -AWS, GCP, Azure, Cloudflare, Vercel, Netlify, etc. - -**Infrastructure:** -Docker, Kubernetes, Terraform, Ansible, etc. - -**Libraries:** -Redux, Zustand, axios, fetch, lodash, jQuery, etc. - -**Data Formats:** -JSON, XML, YAML, CSV (unless capability-relevant) - -**For each term found in FRs/NFRs:** -- Determine if it's capability-relevant or implementation leakage -- Example: "API consumers can access data via REST endpoints" - API/REST is capability -- Example: "React components fetch data using Redux" - implementation leakage - -**Count violations and note line numbers** - -### 3. Tally Implementation Leakage - -**By category:** -- Frontend framework leakage: count -- Backend framework leakage: count -- Database leakage: count -- Cloud platform leakage: count -- Infrastructure leakage: count -- Library leakage: count -- Other implementation details: count - -**Total implementation leakage violations:** sum - -### 4. Report Implementation Leakage Findings to Validation Report - -Append to validation report: - -```markdown -## Implementation Leakage Validation - -### Leakage by Category - -**Frontend Frameworks:** {count} violations -{If violations, list examples with line numbers} - -**Backend Frameworks:** {count} violations -{If violations, list examples with line numbers} - -**Databases:** {count} violations -{If violations, list examples with line numbers} - -**Cloud Platforms:** {count} violations -{If violations, list examples with line numbers} - -**Infrastructure:** {count} violations -{If violations, list examples with line numbers} - -**Libraries:** {count} violations -{If violations, list examples with line numbers} - -**Other Implementation Details:** {count} violations -{If violations, list examples with line numbers} - -### Summary - -**Total Implementation Leakage Violations:** {total} - -**Severity:** [Critical if >5 violations, Warning if 2-5, Pass if <2] - -**Recommendation:** -[If Critical] "Extensive implementation leakage found. Requirements specify HOW instead of WHAT. Remove all implementation details - these belong in architecture, not PRD." -[If Warning] "Some implementation leakage detected. Review violations and remove implementation details from requirements." -[If Pass] "No significant implementation leakage found. Requirements properly specify WHAT without HOW." - -**Note:** API consumers, GraphQL (when required), and other capability-relevant terms are acceptable when they describe WHAT the system must do, not HOW to build it. -``` - -### 5. Display Progress and Auto-Proceed - -Display: "**Implementation Leakage Validation Complete** - -Total Violations: {count} ({severity}) - -**Proceeding to next validation check...**" - -Without delay, read fully and follow: {nextStepFile} (step-v-08-domain-compliance-validation.md) - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- Scanned FRs and NFRs for all implementation term categories -- Distinguished capability-relevant from implementation leakage -- Violations documented with line numbers and explanations -- Severity assessed correctly -- Findings reported to validation report -- Auto-proceeds to next validation step -- Subprocess attempted with graceful degradation - -### ❌ SYSTEM FAILURE: - -- Not scanning all implementation term categories -- Not distinguishing capability-relevant from leakage -- Missing line numbers for violations -- Not reporting findings to validation report -- Not auto-proceeding - -**Master Rule:** Requirements specify WHAT, not HOW. Implementation details belong in architecture documents, not PRDs. diff --git a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md deleted file mode 100644 index c9f48e960..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md +++ /dev/null @@ -1,240 +0,0 @@ ---- -# File references (ONLY variables used in this step) -nextStepFile: './step-v-09-project-type-validation.md' -prdFile: '{prd_file_path}' -prdFrontmatter: '{prd_frontmatter}' -validationReportPath: '{validation_report_path}' -domainComplexityData: '../data/domain-complexity.csv' ---- - -# Step 8: Domain Compliance Validation - -## STEP GOAL: - -Validate domain-specific requirements are present for high-complexity domains (Healthcare, Fintech, GovTech, etc.), ensuring regulatory and compliance requirements are properly documented. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` - -### Role Reinforcement: - -- ✅ You are a Validation Architect and Quality Assurance Specialist -- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role -- ✅ We engage in systematic validation, not collaborative dialogue -- ✅ You bring domain expertise and compliance knowledge -- ✅ This step runs autonomously - no user input needed - -### Step-Specific Rules: - -- 🎯 Focus ONLY on domain-specific compliance requirements -- 🚫 FORBIDDEN to validate other aspects in this step -- 💬 Approach: Conditional validation based on domain classification -- 🚪 This is a validation sequence step - auto-proceeds when complete - -## EXECUTION PROTOCOLS: - -- 🎯 Check classification.domain from PRD frontmatter -- 💬 If low complexity (general): Skip detailed checks -- 🎯 If high complexity: Validate required special sections -- 💾 Append compliance findings to validation report -- 📖 Display "Proceeding to next check..." and load next step -- 🚫 FORBIDDEN to pause or request user input - -## CONTEXT BOUNDARIES: - -- Available context: PRD file with frontmatter classification, validation report -- Focus: Domain compliance only (conditional on domain complexity) -- Limits: Don't validate other aspects, conditional execution -- Dependencies: Steps 2-7 completed - format and requirements validation done - -## MANDATORY SEQUENCE - -**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise unless user explicitly requests a change. - -### 1. Load Domain Complexity Data - -Load and read the complete file at: -`{domainComplexityData}` (../data/domain-complexity.csv) - -This CSV contains: -- Domain classifications and complexity levels (high/medium/low) -- Required special sections for each domain -- Key concerns and requirements for regulated industries - -Internalize this data - it drives which domains require special compliance sections. - -### 2. Extract Domain Classification - -From PRD frontmatter, extract: -- `classification.domain` - what domain is this PRD for? - -**If no domain classification found:** -Treat as "general" (low complexity) and proceed to step 4 - -### 2. Determine Domain Complexity - -**Low complexity domains (skip detailed checks):** -- General -- Consumer apps (standard e-commerce, social, productivity) -- Content websites -- Business tools (standard) - -**High complexity domains (require special sections):** -- Healthcare / Healthtech -- Fintech / Financial services -- GovTech / Public sector -- EdTech (educational records, accredited courses) -- Legal tech -- Other regulated domains - -### 3. For High-Complexity Domains: Validate Required Special Sections - -**Attempt subprocess validation:** - -"Perform domain compliance validation for {domain}: - -Based on {domain} requirements, check PRD for: - -**Healthcare:** -- Clinical Requirements section -- Regulatory Pathway (FDA, HIPAA, etc.) -- Safety Measures -- HIPAA Compliance (data privacy, security) -- Patient safety considerations - -**Fintech:** -- Compliance Matrix (SOC2, PCI-DSS, GDPR, etc.) -- Security Architecture -- Audit Requirements -- Fraud Prevention measures -- Financial transaction handling - -**GovTech:** -- Accessibility Standards (WCAG 2.1 AA, Section 508) -- Procurement Compliance -- Security Clearance requirements -- Data residency requirements - -**Other regulated domains:** -- Check for domain-specific regulatory sections -- Compliance requirements -- Special considerations - -For each required section: -- Is it present in PRD? -- Is it adequately documented? -- Note any gaps - -Return compliance matrix with presence/adequacy assessment." - -**Graceful degradation (if no Task tool):** -- Manually check for required sections based on domain -- List present sections and missing sections -- Assess adequacy of documentation - -### 5. For Low-Complexity Domains: Skip Detailed Checks - -Append to validation report: -```markdown -## Domain Compliance Validation - -**Domain:** {domain} -**Complexity:** Low (general/standard) -**Assessment:** N/A - No special domain compliance requirements - -**Note:** This PRD is for a standard domain without regulatory compliance requirements. -``` - -Display: "**Domain Compliance Validation Skipped** - -Domain: {domain} (low complexity) - -**Proceeding to next validation check...**" - -Without delay, read fully and follow: {nextStepFile} - -### 6. Report Compliance Findings (High-Complexity Domains) - -Append to validation report: - -```markdown -## Domain Compliance Validation - -**Domain:** {domain} -**Complexity:** High (regulated) - -### Required Special Sections - -**{Section 1 Name}:** [Present/Missing/Adequate] -{If missing or inadequate: Note specific gaps} - -**{Section 2 Name}:** [Present/Missing/Adequate] -{If missing or inadequate: Note specific gaps} - -[Continue for all required sections] - -### Compliance Matrix - -| Requirement | Status | Notes | -|-------------|--------|-------| -| {Requirement 1} | [Met/Partial/Missing] | {Notes} | -| {Requirement 2} | [Met/Partial/Missing] | {Notes} | -[... continue for all requirements] - -### Summary - -**Required Sections Present:** {count}/{total} -**Compliance Gaps:** {count} - -**Severity:** [Critical if missing regulatory sections, Warning if incomplete, Pass if complete] - -**Recommendation:** -[If Critical] "PRD is missing required domain-specific compliance sections. These are essential for {domain} products." -[If Warning] "Some domain compliance sections are incomplete. Strengthen documentation for full compliance." -[If Pass] "All required domain compliance sections are present and adequately documented." -``` - -### 7. Display Progress and Auto-Proceed - -Display: "**Domain Compliance Validation Complete** - -Domain: {domain} ({complexity}) -Compliance Status: {status} - -**Proceeding to next validation check...**" - -Without delay, read fully and follow: {nextStepFile} (step-v-09-project-type-validation.md) - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- Domain classification extracted correctly -- Complexity assessed appropriately -- Low complexity domains: Skipped with clear "N/A" documentation -- High complexity domains: All required sections checked -- Compliance matrix built with status for each requirement -- Severity assessed correctly -- Findings reported to validation report -- Auto-proceeds to next validation step -- Subprocess attempted with graceful degradation - -### ❌ SYSTEM FAILURE: - -- Not checking domain classification before proceeding -- Performing detailed checks on low complexity domains -- For high complexity: missing required section checks -- Not building compliance matrix -- Not reporting findings to validation report -- Not auto-proceeding - -**Master Rule:** Domain compliance is conditional. High-complexity domains require special sections - low complexity domains skip these checks. diff --git a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md deleted file mode 100644 index f9343b9d6..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md +++ /dev/null @@ -1,260 +0,0 @@ ---- -# File references (ONLY variables used in this step) -nextStepFile: './step-v-10-smart-validation.md' -prdFile: '{prd_file_path}' -prdFrontmatter: '{prd_frontmatter}' -validationReportPath: '{validation_report_path}' -projectTypesData: '../data/project-types.csv' ---- - -# Step 9: Project-Type Compliance Validation - -## STEP GOAL: - -Validate project-type specific requirements are properly documented - different project types (api_backend, web_app, mobile_app, etc.) have different required and excluded sections. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` - -### Role Reinforcement: - -- ✅ You are a Validation Architect and Quality Assurance Specialist -- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role -- ✅ We engage in systematic validation, not collaborative dialogue -- ✅ You bring project type expertise and architectural knowledge -- ✅ This step runs autonomously - no user input needed - -### Step-Specific Rules: - -- 🎯 Focus ONLY on project-type compliance -- 🚫 FORBIDDEN to validate other aspects in this step -- 💬 Approach: Validate required sections present, excluded sections absent -- 🚪 This is a validation sequence step - auto-proceeds when complete - -## EXECUTION PROTOCOLS: - -- 🎯 Check classification.projectType from PRD frontmatter -- 🎯 Validate required sections for that project type are present -- 🎯 Validate excluded sections for that project type are absent -- 💾 Append compliance findings to validation report -- 📖 Display "Proceeding to next check..." and load next step -- 🚫 FORBIDDEN to pause or request user input - -## CONTEXT BOUNDARIES: - -- Available context: PRD file with frontmatter classification, validation report -- Focus: Project-type compliance only -- Limits: Don't validate other aspects, don't pause for user input -- Dependencies: Steps 2-8 completed - domain and requirements validation done - -## MANDATORY SEQUENCE - -**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise unless user explicitly requests a change. - -### 1. Load Project Types Data - -Load and read the complete file at: -`{projectTypesData}` (../data/project-types.csv) - -This CSV contains: -- Detection signals for each project type -- Required sections for each project type -- Skip/excluded sections for each project type -- Innovation signals - -Internalize this data - it drives what sections must be present or absent for each project type. - -### 2. Extract Project Type Classification - -From PRD frontmatter, extract: -- `classification.projectType` - what type of project is this? - -**Common project types:** -- api_backend -- web_app -- mobile_app -- desktop_app -- data_pipeline -- ml_system -- library_sdk -- infrastructure -- other - -**If no projectType classification found:** -Assume "web_app" (most common) and note in findings - -### 3. Determine Required and Excluded Sections from CSV Data - -**From loaded project-types.csv data, for this project type:** - -**Required sections:** (from required_sections column) -These MUST be present in the PRD - -**Skip sections:** (from skip_sections column) -These MUST NOT be present in the PRD - -**Example mappings from CSV:** -- api_backend: Required=[endpoint_specs, auth_model, data_schemas], Skip=[ux_ui, visual_design] -- mobile_app: Required=[platform_reqs, device_permissions, offline_mode], Skip=[desktop_features, cli_commands] -- cli_tool: Required=[command_structure, output_formats, config_schema], Skip=[visual_design, ux_principles, touch_interactions] -- etc. - -### 4. Validate Against CSV-Based Requirements - -**Based on project type, determine:** - -**api_backend:** -- Required: Endpoint Specs, Auth Model, Data Schemas, API Versioning -- Excluded: UX/UI sections, mobile-specific sections - -**web_app:** -- Required: User Journeys, UX/UI Requirements, Responsive Design -- Excluded: None typically - -**mobile_app:** -- Required: Mobile UX, Platform specifics (iOS/Android), Offline mode -- Excluded: Desktop-specific sections - -**desktop_app:** -- Required: Desktop UX, Platform specifics (Windows/Mac/Linux) -- Excluded: Mobile-specific sections - -**data_pipeline:** -- Required: Data Sources, Data Transformation, Data Sinks, Error Handling -- Excluded: UX/UI sections - -**ml_system:** -- Required: Model Requirements, Training Data, Inference Requirements, Model Performance -- Excluded: UX/UI sections (unless ML UI) - -**library_sdk:** -- Required: API Surface, Usage Examples, Integration Guide -- Excluded: UX/UI sections, deployment sections - -**infrastructure:** -- Required: Infrastructure Components, Deployment, Monitoring, Scaling -- Excluded: Feature requirements (this is infrastructure, not product) - -### 4. Attempt Sub-Process Validation - -"Perform project-type compliance validation for {projectType}: - -**Check that required sections are present:** -{List required sections for this project type} -For each: Is it present in PRD? Is it adequately documented? - -**Check that excluded sections are absent:** -{List excluded sections for this project type} -For each: Is it absent from PRD? (Should not be present) - -Build compliance table showing: -- Required sections: [Present/Missing/Incomplete] -- Excluded sections: [Absent/Present] (Present = violation) - -Return compliance table with findings." - -**Graceful degradation (if no Task tool):** -- Manually check PRD for required sections -- Manually check PRD for excluded sections -- Build compliance table - -### 5. Build Compliance Table - -**Required sections check:** -- For each required section: Present / Missing / Incomplete -- Count: Required sections present vs total required - -**Excluded sections check:** -- For each excluded section: Absent / Present (violation) -- Count: Excluded sections present (violations) - -**Total compliance score:** -- Required: {present}/{total} -- Excluded violations: {count} - -### 6. Report Project-Type Compliance Findings to Validation Report - -Append to validation report: - -```markdown -## Project-Type Compliance Validation - -**Project Type:** {projectType} - -### Required Sections - -**{Section 1}:** [Present/Missing/Incomplete] -{If missing or incomplete: Note specific gaps} - -**{Section 2}:** [Present/Missing/Incomplete] -{If missing or incomplete: Note specific gaps} - -[Continue for all required sections] - -### Excluded Sections (Should Not Be Present) - -**{Section 1}:** [Absent/Present] ✓ -{If present: This section should not be present for {projectType}} - -**{Section 2}:** [Absent/Present] ✓ -{If present: This section should not be present for {projectType}} - -[Continue for all excluded sections] - -### Compliance Summary - -**Required Sections:** {present}/{total} present -**Excluded Sections Present:** {violations} (should be 0) -**Compliance Score:** {percentage}% - -**Severity:** [Critical if required sections missing, Warning if incomplete, Pass if complete] - -**Recommendation:** -[If Critical] "PRD is missing required sections for {projectType}. Add missing sections to properly specify this type of project." -[If Warning] "Some required sections for {projectType} are incomplete. Strengthen documentation." -[If Pass] "All required sections for {projectType} are present. No excluded sections found." -``` - -### 7. Display Progress and Auto-Proceed - -Display: "**Project-Type Compliance Validation Complete** - -Project Type: {projectType} -Compliance: {score}% - -**Proceeding to next validation check...**" - -Without delay, read fully and follow: {nextStepFile} (step-v-10-smart-validation.md) - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- Project type extracted correctly (or default assumed) -- Required sections validated for presence and completeness -- Excluded sections validated for absence -- Compliance table built with status for all sections -- Severity assessed correctly -- Findings reported to validation report -- Auto-proceeds to next validation step -- Subprocess attempted with graceful degradation - -### ❌ SYSTEM FAILURE: - -- Not checking project type before proceeding -- Missing required section checks -- Missing excluded section checks -- Not building compliance table -- Not reporting findings to validation report -- Not auto-proceeding - -**Master Rule:** Different project types have different requirements. API PRDs don't need UX sections - validate accordingly. diff --git a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-10-smart-validation.md b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-10-smart-validation.md deleted file mode 100644 index 52f5cbb1d..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-10-smart-validation.md +++ /dev/null @@ -1,206 +0,0 @@ ---- -# File references (ONLY variables used in this step) -nextStepFile: './step-v-11-holistic-quality-validation.md' -prdFile: '{prd_file_path}' -validationReportPath: '{validation_report_path}' ---- - -# Step 10: SMART Requirements Validation - -## STEP GOAL: - -Validate Functional Requirements meet SMART quality criteria (Specific, Measurable, Attainable, Relevant, Traceable), ensuring high-quality requirements. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` -- ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}` - -### Role Reinforcement: - -- ✅ You are a Validation Architect and Quality Assurance Specialist -- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role -- ✅ We engage in systematic validation, not collaborative dialogue -- ✅ You bring requirements engineering expertise and quality assessment -- ✅ This step runs autonomously - no user input needed - -### Step-Specific Rules: - -- 🎯 Focus ONLY on FR quality assessment using SMART framework -- 🚫 FORBIDDEN to validate other aspects in this step -- 💬 Approach: Score each FR on SMART criteria (1-5 scale) -- 🚪 This is a validation sequence step - auto-proceeds when complete - -## EXECUTION PROTOCOLS: - -- 🎯 Extract all FRs from PRD -- 🎯 Score each FR on SMART criteria (Specific, Measurable, Attainable, Relevant, Traceable) -- 💾 Flag FRs with score < 3 in any category -- 📖 Append scoring table and suggestions to validation report -- 📖 Display "Proceeding to next check..." and load next step -- 🚫 FORBIDDEN to pause or request user input - -## CONTEXT BOUNDARIES: - -- Available context: PRD file, validation report -- Focus: FR quality assessment only using SMART framework -- Limits: Don't validate NFRs or other aspects, don't pause for user input -- Dependencies: Steps 2-9 completed - comprehensive validation checks done - -## MANDATORY SEQUENCE - -**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise unless user explicitly requests a change. - -### 1. Extract All Functional Requirements - -From the PRD's Functional Requirements section, extract: -- All FRs with their FR numbers (FR-001, FR-002, etc.) -- Count total FRs - -### 2. Attempt Sub-Process Validation - -**Try to use Task tool to spawn a subprocess:** - -"Perform SMART requirements validation on these Functional Requirements: - -{List all FRs} - -**For each FR, score on SMART criteria (1-5 scale):** - -**Specific (1-5):** -- 5: Clear, unambiguous, well-defined -- 3: Somewhat clear but could be more specific -- 1: Vague, ambiguous, unclear - -**Measurable (1-5):** -- 5: Quantifiable metrics, testable -- 3: Partially measurable -- 1: Not measurable, subjective - -**Attainable (1-5):** -- 5: Realistic, achievable with constraints -- 3: Probably achievable but uncertain -- 1: Unrealistic, technically infeasible - -**Relevant (1-5):** -- 5: Clearly aligned with user needs and business objectives -- 3: Somewhat relevant but connection unclear -- 1: Not relevant, doesn't align with goals - -**Traceable (1-5):** -- 5: Clearly traces to user journey or business objective -- 3: Partially traceable -- 1: Orphan requirement, no clear source - -**For each FR with score < 3 in any category:** -- Provide specific improvement suggestions - -Return scoring table with all FR scores and improvement suggestions for low-scoring FRs." - -**Graceful degradation (if no Task tool):** -- Manually score each FR on SMART criteria -- Note FRs with low scores -- Provide improvement suggestions - -### 3. Build Scoring Table - -For each FR: -- FR number -- Specific score (1-5) -- Measurable score (1-5) -- Attainable score (1-5) -- Relevant score (1-5) -- Traceable score (1-5) -- Average score -- Flag if any category < 3 - -**Calculate overall FR quality:** -- Percentage of FRs with all scores ≥ 3 -- Percentage of FRs with all scores ≥ 4 -- Average score across all FRs and categories - -### 4. Report SMART Findings to Validation Report - -Append to validation report: - -```markdown -## SMART Requirements Validation - -**Total Functional Requirements:** {count} - -### Scoring Summary - -**All scores ≥ 3:** {percentage}% ({count}/{total}) -**All scores ≥ 4:** {percentage}% ({count}/{total}) -**Overall Average Score:** {average}/5.0 - -### Scoring Table - -| FR # | Specific | Measurable | Attainable | Relevant | Traceable | Average | Flag | -|------|----------|------------|------------|----------|-----------|--------|------| -| FR-001 | {s1} | {m1} | {a1} | {r1} | {t1} | {avg1} | {X if any <3} | -| FR-002 | {s2} | {m2} | {a2} | {r2} | {t2} | {avg2} | {X if any <3} | -[Continue for all FRs] - -**Legend:** 1=Poor, 3=Acceptable, 5=Excellent -**Flag:** X = Score < 3 in one or more categories - -### Improvement Suggestions - -**Low-Scoring FRs:** - -**FR-{number}:** {specific suggestion for improvement} -[For each FR with score < 3 in any category] - -### Overall Assessment - -**Severity:** [Critical if >30% flagged FRs, Warning if 10-30%, Pass if <10%] - -**Recommendation:** -[If Critical] "Many FRs have quality issues. Revise flagged FRs using SMART framework to improve clarity and testability." -[If Warning] "Some FRs would benefit from SMART refinement. Focus on flagged requirements above." -[If Pass] "Functional Requirements demonstrate good SMART quality overall." -``` - -### 5. Display Progress and Auto-Proceed - -Display: "**SMART Requirements Validation Complete** - -FR Quality: {percentage}% with acceptable scores ({severity}) - -**Proceeding to next validation check...**" - -Without delay, read fully and follow: {nextStepFile} (step-v-11-holistic-quality-validation.md) - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- All FRs extracted from PRD -- Each FR scored on all 5 SMART criteria (1-5 scale) -- FRs with scores < 3 flagged for improvement -- Improvement suggestions provided for low-scoring FRs -- Scoring table built with all FR scores -- Overall quality assessment calculated -- Findings reported to validation report -- Auto-proceeds to next validation step -- Subprocess attempted with graceful degradation - -### ❌ SYSTEM FAILURE: - -- Not scoring all FRs on all SMART criteria -- Missing improvement suggestions for low-scoring FRs -- Not building scoring table -- Not calculating overall quality metrics -- Not reporting findings to validation report -- Not auto-proceeding - -**Master Rule:** FRs should be high-quality, not just present. SMART framework provides objective quality measure. diff --git a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md deleted file mode 100644 index a559e40ce..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md +++ /dev/null @@ -1,261 +0,0 @@ ---- -# File references (ONLY variables used in this step) -nextStepFile: './step-v-12-completeness-validation.md' -prdFile: '{prd_file_path}' -validationReportPath: '{validation_report_path}' ---- - -# Step 11: Holistic Quality Assessment - -## STEP GOAL: - -Assess the PRD as a cohesive, compelling document - evaluating document flow, dual audience effectiveness (humans and LLMs), BMAD PRD principles compliance, and overall quality rating. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` -- ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}` - -### Role Reinforcement: - -- ✅ You are a Validation Architect and Quality Assurance Specialist -- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role -- ✅ We engage in systematic validation, not collaborative dialogue -- ✅ You bring analytical rigor and document quality expertise -- ✅ This step runs autonomously - no user input needed -- ✅ Uses Advanced Elicitation for multi-perspective evaluation - -### Step-Specific Rules: - -- 🎯 Focus ONLY on holistic document quality assessment -- 🚫 FORBIDDEN to validate individual components (done in previous steps) -- 💬 Approach: Multi-perspective evaluation using Advanced Elicitation -- 🚪 This is a validation sequence step - auto-proceeds when complete - -## EXECUTION PROTOCOLS: - -- 🎯 Use Advanced Elicitation for multi-perspective assessment -- 🎯 Evaluate document flow, dual audience, BMAD principles -- 💾 Append comprehensive assessment to validation report -- 📖 Display "Proceeding to next check..." and load next step -- 🚫 FORBIDDEN to pause or request user input - -## CONTEXT BOUNDARIES: - -- Available context: Complete PRD file, validation report with findings from steps 1-10 -- Focus: Holistic quality - the WHOLE document -- Limits: Don't re-validate individual components, don't pause for user input -- Dependencies: Steps 1-10 completed - all systematic checks done - -## MANDATORY SEQUENCE - -**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise unless user explicitly requests a change. - -### 1. Attempt Sub-Process with Advanced Elicitation - -**Try to use Task tool to spawn a subprocess using Advanced Elicitation:** - -"Perform holistic quality assessment on this PRD using multi-perspective evaluation: - -**Advanced Elicitation workflow:** -Invoke the `bmad-advanced-elicitation` skill - -**Evaluate the PRD from these perspectives:** - -**1. Document Flow & Coherence:** -- Read entire PRD -- Evaluate narrative flow - does it tell a cohesive story? -- Check transitions between sections -- Assess consistency - is it coherent throughout? -- Evaluate readability - is it clear and well-organized? - -**2. Dual Audience Effectiveness:** - -**For Humans:** -- Executive-friendly: Can executives understand vision and goals quickly? -- Developer clarity: Do developers have clear requirements to build from? -- Designer clarity: Do designers understand user needs and flows? -- Stakeholder decision-making: Can stakeholders make informed decisions? - -**For LLMs:** -- Machine-readable structure: Is the PRD structured for LLM consumption? -- UX readiness: Can an LLM generate UX designs from this? -- Architecture readiness: Can an LLM generate architecture from this? -- Epic/Story readiness: Can an LLM break down into epics and stories? - -**3. BMAD PRD Principles Compliance:** -- Information density: Every sentence carries weight? -- Measurability: Requirements testable? -- Traceability: Requirements trace to sources? -- Domain awareness: Domain-specific considerations included? -- Zero anti-patterns: No filler or wordiness? -- Dual audience: Works for both humans and LLMs? -- Markdown format: Proper structure and formatting? - -**4. Overall Quality Rating:** -Rate the PRD on 5-point scale: -- Excellent (5/5): Exemplary, ready for production use -- Good (4/5): Strong with minor improvements needed -- Adequate (3/5): Acceptable but needs refinement -- Needs Work (2/5): Significant gaps or issues -- Problematic (1/5): Major flaws, needs substantial revision - -**5. Top 3 Improvements:** -Identify the 3 most impactful improvements to make this a great PRD - -Return comprehensive assessment with all perspectives, rating, and top 3 improvements." - -**Graceful degradation (if no Task tool or Advanced Elicitation unavailable):** -- Perform holistic assessment directly in current context -- Read complete PRD -- Evaluate document flow, coherence, transitions -- Assess dual audience effectiveness -- Check BMAD principles compliance -- Assign overall quality rating -- Identify top 3 improvements - -### 2. Synthesize Assessment - -**Compile findings from multi-perspective evaluation:** - -**Document Flow & Coherence:** -- Overall assessment: [Excellent/Good/Adequate/Needs Work/Problematic] -- Key strengths: [list] -- Key weaknesses: [list] - -**Dual Audience Effectiveness:** -- For Humans: [assessment] -- For LLMs: [assessment] -- Overall dual audience score: [1-5] - -**BMAD Principles Compliance:** -- Principles met: [count]/7 -- Principles with issues: [list] - -**Overall Quality Rating:** [1-5 with label] - -**Top 3 Improvements:** -1. [Improvement 1] -2. [Improvement 2] -3. [Improvement 3] - -### 3. Report Holistic Quality Findings to Validation Report - -Append to validation report: - -```markdown -## Holistic Quality Assessment - -### Document Flow & Coherence - -**Assessment:** [Excellent/Good/Adequate/Needs Work/Problematic] - -**Strengths:** -{List key strengths} - -**Areas for Improvement:** -{List key weaknesses} - -### Dual Audience Effectiveness - -**For Humans:** -- Executive-friendly: [assessment] -- Developer clarity: [assessment] -- Designer clarity: [assessment] -- Stakeholder decision-making: [assessment] - -**For LLMs:** -- Machine-readable structure: [assessment] -- UX readiness: [assessment] -- Architecture readiness: [assessment] -- Epic/Story readiness: [assessment] - -**Dual Audience Score:** {score}/5 - -### BMAD PRD Principles Compliance - -| Principle | Status | Notes | -|-----------|--------|-------| -| Information Density | [Met/Partial/Not Met] | {notes} | -| Measurability | [Met/Partial/Not Met] | {notes} | -| Traceability | [Met/Partial/Not Met] | {notes} | -| Domain Awareness | [Met/Partial/Not Met] | {notes} | -| Zero Anti-Patterns | [Met/Partial/Not Met] | {notes} | -| Dual Audience | [Met/Partial/Not Met] | {notes} | -| Markdown Format | [Met/Partial/Not Met] | {notes} | - -**Principles Met:** {count}/7 - -### Overall Quality Rating - -**Rating:** {rating}/5 - {label} - -**Scale:** -- 5/5 - Excellent: Exemplary, ready for production use -- 4/5 - Good: Strong with minor improvements needed -- 3/5 - Adequate: Acceptable but needs refinement -- 2/5 - Needs Work: Significant gaps or issues -- 1/5 - Problematic: Major flaws, needs substantial revision - -### Top 3 Improvements - -1. **{Improvement 1}** - {Brief explanation of why and how} - -2. **{Improvement 2}** - {Brief explanation of why and how} - -3. **{Improvement 3}** - {Brief explanation of why and how} - -### Summary - -**This PRD is:** {one-sentence overall assessment} - -**To make it great:** Focus on the top 3 improvements above. -``` - -### 4. Display Progress and Auto-Proceed - -Display: "**Holistic Quality Assessment Complete** - -Overall Rating: {rating}/5 - {label} - -**Proceeding to final validation checks...**" - -Without delay, read fully and follow: {nextStepFile} (step-v-12-completeness-validation.md) - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- Advanced Elicitation used for multi-perspective evaluation (or graceful degradation) -- Document flow & coherence assessed -- Dual audience effectiveness evaluated (humans and LLMs) -- BMAD PRD principles compliance checked -- Overall quality rating assigned (1-5 scale) -- Top 3 improvements identified -- Comprehensive assessment reported to validation report -- Auto-proceeds to next validation step -- Subprocess attempted with graceful degradation - -### ❌ SYSTEM FAILURE: - -- Not using Advanced Elicitation for multi-perspective evaluation -- Missing document flow assessment -- Missing dual audience evaluation -- Not checking all BMAD principles -- Not assigning overall quality rating -- Missing top 3 improvements -- Not reporting comprehensive assessment to validation report -- Not auto-proceeding - -**Master Rule:** This evaluates the WHOLE document, not just components. Answers "Is this a good PRD?" and "What would make it great?" diff --git a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md deleted file mode 100644 index 90065e1df..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md +++ /dev/null @@ -1,239 +0,0 @@ ---- -# File references (ONLY variables used in this step) -nextStepFile: './step-v-13-report-complete.md' -prdFile: '{prd_file_path}' -prdFrontmatter: '{prd_frontmatter}' -validationReportPath: '{validation_report_path}' ---- - -# Step 12: Completeness Validation - -## STEP GOAL: - -Final comprehensive completeness check - validate no template variables remain, each section has required content, section-specific completeness, and frontmatter is properly populated. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` - -### Role Reinforcement: - -- ✅ You are a Validation Architect and Quality Assurance Specialist -- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role -- ✅ We engage in systematic validation, not collaborative dialogue -- ✅ You bring attention to detail and completeness verification -- ✅ This step runs autonomously - no user input needed - -### Step-Specific Rules: - -- 🎯 Focus ONLY on completeness verification -- 🚫 FORBIDDEN to validate quality (done in step 11) or other aspects -- 💬 Approach: Systematic checklist-style verification -- 🚪 This is a validation sequence step - auto-proceeds when complete - -## EXECUTION PROTOCOLS: - -- 🎯 Check template completeness (no variables remaining) -- 🎯 Validate content completeness (each section has required content) -- 🎯 Validate section-specific completeness -- 🎯 Validate frontmatter completeness -- 💾 Append completeness matrix to validation report -- 📖 Display "Proceeding to final step..." and load next step -- 🚫 FORBIDDEN to pause or request user input - -## CONTEXT BOUNDARIES: - -- Available context: Complete PRD file, frontmatter, validation report -- Focus: Completeness verification only (final gate) -- Limits: Don't assess quality, don't pause for user input -- Dependencies: Steps 1-11 completed - all validation checks done - -## MANDATORY SEQUENCE - -**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise unless user explicitly requests a change. - -### 1. Attempt Sub-Process Validation - -**Try to use Task tool to spawn a subprocess:** - -"Perform completeness validation on this PRD - final gate check: - -**1. Template Completeness:** -- Scan PRD for any remaining template variables -- Look for: {variable}, {{variable}}, {placeholder}, [placeholder], etc. -- List any found with line numbers - -**2. Content Completeness:** -- Executive Summary: Has vision statement? ({key content}) -- Success Criteria: All criteria measurable? ({metrics present}) -- Product Scope: In-scope and out-of-scope defined? ({both present}) -- User Journeys: User types identified? ({users listed}) -- Functional Requirements: FRs listed with proper format? ({FRs present}) -- Non-Functional Requirements: NFRs with metrics? ({NFRs present}) - -For each section: Is required content present? (Yes/No/Partial) - -**3. Section-Specific Completeness:** -- Success Criteria: Each has specific measurement method? -- User Journeys: Cover all user types? -- Functional Requirements: Cover MVP scope? -- Non-Functional Requirements: Each has specific criteria? - -**4. Frontmatter Completeness:** -- stepsCompleted: Populated? -- classification: Present (domain, projectType)? -- inputDocuments: Tracked? -- date: Present? - -Return completeness matrix with status for each check." - -**Graceful degradation (if no Task tool):** -- Manually scan for template variables -- Manually check each section for required content -- Manually verify frontmatter fields -- Build completeness matrix - -### 2. Build Completeness Matrix - -**Template Completeness:** -- Template variables found: count -- List if any found - -**Content Completeness by Section:** -- Executive Summary: Complete / Incomplete / Missing -- Success Criteria: Complete / Incomplete / Missing -- Product Scope: Complete / Incomplete / Missing -- User Journeys: Complete / Incomplete / Missing -- Functional Requirements: Complete / Incomplete / Missing -- Non-Functional Requirements: Complete / Incomplete / Missing -- Other sections: [List completeness] - -**Section-Specific Completeness:** -- Success criteria measurable: All / Some / None -- Journeys cover all users: Yes / Partial / No -- FRs cover MVP scope: Yes / Partial / No -- NFRs have specific criteria: All / Some / None - -**Frontmatter Completeness:** -- stepsCompleted: Present / Missing -- classification: Present / Missing -- inputDocuments: Present / Missing -- date: Present / Missing - -**Overall completeness:** -- Sections complete: X/Y -- Critical gaps: [list if any] - -### 3. Report Completeness Findings to Validation Report - -Append to validation report: - -```markdown -## Completeness Validation - -### Template Completeness - -**Template Variables Found:** {count} -{If count > 0, list variables with line numbers} -{If count = 0, note: No template variables remaining ✓} - -### Content Completeness by Section - -**Executive Summary:** [Complete/Incomplete/Missing] -{If incomplete or missing, note specific gaps} - -**Success Criteria:** [Complete/Incomplete/Missing] -{If incomplete or missing, note specific gaps} - -**Product Scope:** [Complete/Incomplete/Missing] -{If incomplete or missing, note specific gaps} - -**User Journeys:** [Complete/Incomplete/Missing] -{If incomplete or missing, note specific gaps} - -**Functional Requirements:** [Complete/Incomplete/Missing] -{If incomplete or missing, note specific gaps} - -**Non-Functional Requirements:** [Complete/Incomplete/Missing] -{If incomplete or missing, note specific gaps} - -### Section-Specific Completeness - -**Success Criteria Measurability:** [All/Some/None] measurable -{If Some or None, note which criteria lack metrics} - -**User Journeys Coverage:** [Yes/Partial/No] - covers all user types -{If Partial or No, note missing user types} - -**FRs Cover MVP Scope:** [Yes/Partial/No] -{If Partial or No, note scope gaps} - -**NFRs Have Specific Criteria:** [All/Some/None] -{If Some or None, note which NFRs lack specificity} - -### Frontmatter Completeness - -**stepsCompleted:** [Present/Missing] -**classification:** [Present/Missing] -**inputDocuments:** [Present/Missing] -**date:** [Present/Missing] - -**Frontmatter Completeness:** {complete_fields}/4 - -### Completeness Summary - -**Overall Completeness:** {percentage}% ({complete_sections}/{total_sections}) - -**Critical Gaps:** [count] [list if any] -**Minor Gaps:** [count] [list if any] - -**Severity:** [Critical if template variables exist or critical sections missing, Warning if minor gaps, Pass if complete] - -**Recommendation:** -[If Critical] "PRD has completeness gaps that must be addressed before use. Fix template variables and complete missing sections." -[If Warning] "PRD has minor completeness gaps. Address minor gaps for complete documentation." -[If Pass] "PRD is complete with all required sections and content present." -``` - -### 4. Display Progress and Auto-Proceed - -Display: "**Completeness Validation Complete** - -Overall Completeness: {percentage}% ({severity}) - -**Proceeding to final step...**" - -Without delay, read fully and follow: {nextStepFile} (step-v-13-report-complete.md) - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- Scanned for template variables systematically -- Validated each section for required content -- Validated section-specific completeness (measurability, coverage, scope) -- Validated frontmatter completeness -- Completeness matrix built with all checks -- Severity assessed correctly -- Findings reported to validation report -- Auto-proceeds to final step -- Subprocess attempted with graceful degradation - -### ❌ SYSTEM FAILURE: - -- Not scanning for template variables -- Missing section-specific completeness checks -- Not validating frontmatter -- Not building completeness matrix -- Not reporting findings to validation report -- Not auto-proceeding - -**Master Rule:** Final gate to ensure document is complete before presenting findings. Template variables or critical gaps must be fixed. diff --git a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-13-report-complete.md b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-13-report-complete.md deleted file mode 100644 index c76378610..000000000 --- a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/steps-v/step-v-13-report-complete.md +++ /dev/null @@ -1,230 +0,0 @@ ---- -# File references (ONLY variables used in this step) -validationReportPath: '{validation_report_path}' -prdFile: '{prd_file_path}' ---- - -# Step 13: Validation Report Complete - -## STEP GOAL: - -Finalize validation report, summarize all findings from steps 1-12, present summary to user conversationally, and offer actionable next steps. - -## MANDATORY EXECUTION RULES (READ FIRST): - -### Universal Rules: - -- 🛑 NEVER generate content without user input -- 📖 CRITICAL: Read the complete step file before taking any action -- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read -- 📋 YOU ARE A FACILITATOR, not a content generator -- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` -- ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}` - -### Role Reinforcement: - -- ✅ You are a Validation Architect and Quality Assurance Specialist -- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role -- ✅ We engage in collaborative dialogue, not command-response -- ✅ You bring synthesis and summary expertise -- ✅ This is the FINAL step - requires user interaction - -### Step-Specific Rules: - -- 🎯 Focus ONLY on summarizing findings and presenting options -- 🚫 FORBIDDEN to perform additional validation -- 💬 Approach: Conversational summary with clear next steps -- 🚪 This is the final step - no next step after this - -## EXECUTION PROTOCOLS: - -- 🎯 Load complete validation report -- 🎯 Summarize all findings from steps 1-12 -- 🎯 Update report frontmatter with final status -- 💬 Present summary to user conversationally -- 💬 Offer menu options for next actions -- 🚫 FORBIDDEN to proceed without user selection - -## CONTEXT BOUNDARIES: - -- Available context: Complete validation report with findings from all validation steps -- Focus: Summary and presentation only (no new validation) -- Limits: Don't add new findings, just synthesize existing -- Dependencies: Steps 1-12 completed - all validation checks done - -## MANDATORY SEQUENCE - -**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise unless user explicitly requests a change. - -### 1. Load Complete Validation Report - -Read the entire validation report from {validationReportPath} - -Extract all findings from: -- Format Detection (Step 2) -- Parity Analysis (Step 2B, if applicable) -- Information Density (Step 3) -- Product Brief Coverage (Step 4) -- Measurability (Step 5) -- Traceability (Step 6) -- Implementation Leakage (Step 7) -- Domain Compliance (Step 8) -- Project-Type Compliance (Step 9) -- SMART Requirements (Step 10) -- Holistic Quality (Step 11) -- Completeness (Step 12) - -### 2. Update Report Frontmatter with Final Status - -Update validation report frontmatter: - -```yaml ---- -validationTarget: '{prd_path}' -validationDate: '{current_date}' -inputDocuments: [list of documents] -validationStepsCompleted: ['step-v-01-discovery', 'step-v-02-format-detection', 'step-v-03-density-validation', 'step-v-04-brief-coverage-validation', 'step-v-05-measurability-validation', 'step-v-06-traceability-validation', 'step-v-07-implementation-leakage-validation', 'step-v-08-domain-compliance-validation', 'step-v-09-project-type-validation', 'step-v-10-smart-validation', 'step-v-11-holistic-quality-validation', 'step-v-12-completeness-validation'] -validationStatus: COMPLETE -holisticQualityRating: '{rating from step 11}' -overallStatus: '{Pass/Warning/Critical based on all findings}' ---- -``` - -### 3. Create Summary of Findings - -**Overall Status:** -- Determine from all validation findings -- **Pass:** All critical checks pass, minor warnings acceptable -- **Warning:** Some issues found but PRD is usable -- **Critical:** Major issues that prevent PRD from being fit for purpose - -**Quick Results Table:** -- Format: [classification] -- Information Density: [severity] -- Measurability: [severity] -- Traceability: [severity] -- Implementation Leakage: [severity] -- Domain Compliance: [status] -- Project-Type Compliance: [compliance score] -- SMART Quality: [percentage] -- Holistic Quality: [rating/5] -- Completeness: [percentage] - -**Critical Issues:** List from all validation steps -**Warnings:** List from all validation steps -**Strengths:** List positives from all validation steps - -**Holistic Quality Rating:** From step 11 -**Top 3 Improvements:** From step 11 - -**Recommendation:** Based on overall status - -### 4. Present Summary to User Conversationally - -Display: - -"**✓ PRD Validation Complete** - -**Overall Status:** {Pass/Warning/Critical} - -**Quick Results:** -{Present quick results table with key findings} - -**Critical Issues:** {count or "None"} -{If any, list briefly} - -**Warnings:** {count or "None"} -{If any, list briefly} - -**Strengths:** -{List key strengths} - -**Holistic Quality:** {rating}/5 - {label} - -**Top 3 Improvements:** -1. {Improvement 1} -2. {Improvement 2} -3. {Improvement 3} - -**Recommendation:** -{Based on overall status: -- Pass: "PRD is in good shape. Address minor improvements to make it great." -- Warning: "PRD is usable but has issues that should be addressed. Review warnings and improve where needed." -- Critical: "PRD has significant issues that should be fixed before use. Focus on critical issues above."} - -**What would you like to do next?**" - -### 5. Present MENU OPTIONS - -Display: - -**[R] Review Detailed Findings** - Walk through validation report section by section -**[E] Use Edit Workflow** - Use validation report with Edit workflow for systematic improvements -**[F] Fix Simpler Items** - Immediate fixes for simple issues (anti-patterns, leakage, missing headers) -**[X] Exit** - Exit and Suggest Next Steps. - -#### EXECUTION RULES: - -- ALWAYS halt and wait for user input after presenting menu -- Only proceed based on user selection - -#### Menu Handling Logic: - -- **IF R (Review Detailed Findings):** - - Walk through validation report section by section - - Present findings from each validation step - - Allow user to ask questions - - After review, return to menu - -- **IF E (Use Edit Workflow):** - - Explain: "The Edit workflow can use this validation report to systematically address issues. Edit mode will guide you through discovering what to edit, reviewing the PRD, and applying targeted improvements." - - Offer: "Would you like to launch Edit mode now? It will help you fix validation findings systematically." - - If yes: Invoke the `bmad-edit-prd` skill, passing the validation report path as context - - If no: Return to menu - -- **IF F (Fix Simpler Items):** - - Offer immediate fixes for: - - Template variables (fill in with appropriate content) - - Conversational filler (remove wordy phrases) - - Implementation leakage (remove technology names from FRs/NFRs) - - Missing section headers (add ## headers) - - Ask: "Which simple fixes would you like me to make?" - - If user specifies fixes, make them and update validation report - - Return to menu - -- **IF X (Exit):** - - Display: "**Validation Report Saved:** {validationReportPath}" - - Display: "**Summary:** {overall status} - {recommendation}" - - PRD Validation complete. Invoke the `bmad-help` skill. - - Run: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow.on_complete` — if the resolved value is non-empty, follow it as the final terminal instruction before exiting. - -- **IF Any other:** Help user, then redisplay menu - ---- - -## 🚨 SYSTEM SUCCESS/FAILURE METRICS - -### ✅ SUCCESS: - -- Complete validation report loaded successfully -- All findings from steps 1-12 summarized -- Report frontmatter updated with final status -- Overall status determined correctly (Pass/Warning/Critical) -- Quick results table presented -- Critical issues, warnings, and strengths listed -- Holistic quality rating included -- Top 3 improvements presented -- Clear recommendation provided -- Menu options presented with clear explanations -- User can review findings, get help, or exit - -### ❌ SYSTEM FAILURE: - -- Not loading complete validation report -- Missing summary of findings -- Not updating report frontmatter -- Not determining overall status -- Missing menu options -- Unclear next steps - -**Master Rule:** User needs clear summary and actionable next steps. Edit workflow is best for complex issues; immediate fixes available for simpler ones. diff --git a/src/bmm-skills/module-help.csv b/src/bmm-skills/module-help.csv index 3ebe706a4..82674cb5c 100644 --- a/src/bmm-skills/module-help.csv +++ b/src/bmm-skills/module-help.csv @@ -15,10 +15,8 @@ BMad Method,bmad-domain-research,Domain Research,DR,Industry domain deep dive su BMad Method,bmad-technical-research,Technical Research,TR,Technical feasibility architecture options and implementation approaches.,,,1-analysis,,,false,planning_artifacts|project_knowledge,research documents BMad Method,bmad-product-brief,Create Brief,CB,An expert guided experience to nail down your product idea in a brief. a gentler approach than PRFAQ when you are already sure of your concept and nothing will sway you.,,-A,1-analysis,,,false,planning_artifacts,product brief BMad Method,bmad-prfaq,PRFAQ Challenge,WB,Working Backwards guided experience to forge and stress-test your product concept to ensure you have a great product that users will love and need through the PRFAQ gauntlet to determine feasibility and alignment with user needs. alternative to product brief.,,-H,1-analysis,,,false,planning_artifacts,prfaq document -BMad Method,bmad-create-prd,Create PRD,CP,Expert led facilitation to produce your Product Requirements Document.,,,2-planning,,,true,planning_artifacts,prd -BMad Method,bmad-validate-prd,Validate PRD,VP,,,[path],2-planning,bmad-create-prd,,false,planning_artifacts,prd validation report -BMad Method,bmad-edit-prd,Edit PRD,EP,,,[path],2-planning,bmad-validate-prd,,false,planning_artifacts,updated prd -BMad Method,bmad-create-ux-design,Create UX,CU,"Guidance through realizing the plan for your UX, strongly recommended if a UI is a primary piece of the proposed project.",,,2-planning,bmad-create-prd,,false,planning_artifacts,ux design +BMad Method,bmad-prd,Create Edit and Review PRD,PRD,"Facilitated PRD workflow — create a new PRD via coached discovery, update an existing one against a change signal, or validate a finished PRD against a checklist with an HTML findings report.",,,2-planning,bmad-product-brief,,true,planning_artifacts,prd +BMad Method,bmad-create-ux-design,Create UX,CU,"Guidance through realizing the plan for your UX, strongly recommended if a UI is a primary piece of the proposed project.",,,2-planning,bmad-prd,,false,planning_artifacts,ux design BMad Method,bmad-create-architecture,Create Architecture,CA,Guided workflow to document technical decisions.,,,3-solutioning,,,true,planning_artifacts,architecture BMad Method,bmad-create-epics-and-stories,Create Epics and Stories,CE,,,,3-solutioning,bmad-create-architecture,,true,planning_artifacts,epics and stories BMad Method,bmad-check-implementation-readiness,Check Implementation Readiness,IR,Ensure PRD UX Architecture and Epics Stories are aligned.,,,3-solutioning,bmad-create-epics-and-stories,,true,planning_artifacts,readiness report diff --git a/src/core-skills/bmad-customize/SKILL.md b/src/core-skills/bmad-customize/SKILL.md index 0a0212bc8..05818267e 100644 --- a/src/core-skills/bmad-customize/SKILL.md +++ b/src/core-skills/bmad-customize/SKILL.md @@ -48,7 +48,7 @@ If a team or user override already exists, read it first and summarize what's al **Cross-cutting intent — walk both surfaces with the user:** - Every workflow a given agent runs → agent surface (e.g. `bmad-agent-pm.toml` with `persistent_facts`, `principles`). -- One workflow only → workflow surface (e.g. `bmad-create-prd.toml` with `activation_steps_prepend`). +- One workflow only → workflow surface (e.g. `bmad-prd.toml` with `activation_steps_prepend`). - Several specific workflows → multiple workflow overrides in sequence, not an agent override. **Single-surface heuristic:** diff --git a/src/core-skills/bmad-help/SKILL.md b/src/core-skills/bmad-help/SKILL.md index 62b06a747..ffa392ecd 100644 --- a/src/core-skills/bmad-help/SKILL.md +++ b/src/core-skills/bmad-help/SKILL.md @@ -59,8 +59,8 @@ module,skill,display-name,menu-code,description,action,args,phase,preceded-by,fo ## Response Format For each recommended item, present: -- `[menu-code]` **Display name** — e.g., "[CP] Create PRD" -- Skill name in backticks — e.g., `bmad-create-prd` +- `[menu-code]` **Display name** — e.g., "[PR] PRD" +- Skill name in backticks — e.g., `bmad-prd` - For multi-action skills: action invocation context — e.g., "tech-writer lets create a mermaid diagram!" - Description if present in CSV; otherwise your existing knowledge of the skill suffices - Args if available diff --git a/website/public/workflow-map-diagram.html b/website/public/workflow-map-diagram.html index 42897aad7..62672f9f6 100644 --- a/website/public/workflow-map-diagram.html +++ b/website/public/workflow-map-diagram.html @@ -199,11 +199,11 @@
- create-prd + prd
-
J
John
- PRD.md → +
J
Any
+ prd.md →
Has UI?
From 5090cfb09617eeb9c5fb547d4d10529d9886adcd Mon Sep 17 00:00:00 2001 From: Brian Date: Wed, 13 May 2026 17:21:59 -0500 Subject: [PATCH 02/26] chore(deps): lockfile audit fixes for transitive vulnerabilities (#2382) Resolves 12 of 14 open Dependabot alerts via `npm audit fix` (no package.json changes, no semver-range bumps): - vite 6.4.1 -> 6.4.2 - defu 6.1.4 -> 6.1.5 - flatted 3.4.1 -> 3.4.2 - postcss 8.5.6 -> 8.5.13 - h3 1.15.8 -> 1.15.11 - yaml 2.8.2 -> 2.8.4 - brace-expansion 4.0.3 -> 4.0.4 - picomatch 2.3.1 -> 2.3.2 and 4.0.3 -> 4.0.4 - astro 5.17.1 -> 5.18.1 Two astro alerts requiring 5->6 and the markdown-it (markdownlint-cli2) alert are left for separate, scoped upgrades. Verified: npm run docs:build, npm run test (83 tests), lint, lint:md, format:check all pass. --- package-lock.json | 639 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 580 insertions(+), 59 deletions(-) diff --git a/package-lock.json b/package-lock.json index e63ca96f3..1e8eaaad6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2428,9 +2428,9 @@ "license": "MIT" }, "node_modules/@jest/reporters/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "dev": true, "license": "MIT", "dependencies": { @@ -4034,9 +4034,9 @@ } }, "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -4101,15 +4101,15 @@ } }, "node_modules/astro": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/astro/-/astro-5.17.1.tgz", - "integrity": "sha512-oD3tlxTaVWGq/Wfbqk6gxzVRz98xa/rYlpe+gU2jXJMSD01k6sEDL01ZlT8mVSYB/rMgnvIOfiQQ3BbLdN237A==", + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/astro/-/astro-5.18.1.tgz", + "integrity": "sha512-m4VWilWZ+Xt6NPoYzC4CgGZim/zQUO7WFL0RHCH0AiEavF1153iC3+me2atDvXpf/yX4PyGUeD8wZLq1cirT3g==", "dev": true, "license": "MIT", "dependencies": { "@astrojs/compiler": "^2.13.0", - "@astrojs/internal-helpers": "0.7.5", - "@astrojs/markdown-remark": "6.3.10", + "@astrojs/internal-helpers": "0.7.6", + "@astrojs/markdown-remark": "6.3.11", "@astrojs/telemetry": "3.3.0", "@capsizecss/unpack": "^4.0.0", "@oslojs/encoding": "^1.1.0", @@ -4130,7 +4130,7 @@ "dlv": "^1.1.3", "dset": "^3.1.4", "es-module-lexer": "^1.7.0", - "esbuild": "^0.25.0", + "esbuild": "^0.27.3", "estree-walker": "^3.0.3", "flattie": "^1.1.1", "fontace": "~0.4.0", @@ -4200,6 +4200,485 @@ "astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta" } }, + "node_modules/astro/node_modules/@astrojs/internal-helpers": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.6.tgz", + "integrity": "sha512-GOle7smBWKfMSP8osUIGOlB5kaHdQLV3foCsf+5Q9Wsuu+C6Fs3Ez/ttXmhjZ1HkSgsogcM1RXSjjOVieHq16Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/astro/node_modules/@astrojs/markdown-remark": { + "version": "6.3.11", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.11.tgz", + "integrity": "sha512-hcaxX/5aC6lQgHeGh1i+aauvSwIT6cfyFjKWvExYSxUhZZBBdvCliOtu06gbQyhbe0pGJNoNmqNlQZ5zYUuIyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.7.6", + "@astrojs/prism": "3.3.0", + "github-slugger": "^2.0.0", + "hast-util-from-html": "^2.0.3", + "hast-util-to-text": "^4.0.2", + "import-meta-resolve": "^4.2.0", + "js-yaml": "^4.1.1", + "mdast-util-definitions": "^6.0.0", + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.1", + "remark-gfm": "^4.0.1", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.2", + "remark-smartypants": "^3.0.2", + "shiki": "^3.21.0", + "smol-toml": "^1.6.0", + "unified": "^11.0.5", + "unist-util-remove-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.2", + "vfile": "^6.0.3" + } + }, + "node_modules/astro/node_modules/@esbuild/aix-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", + "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/android-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", + "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/android-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", + "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/android-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", + "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/darwin-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", + "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/darwin-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", + "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", + "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/freebsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", + "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", + "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", + "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", + "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-loong64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", + "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-mips64el": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", + "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", + "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-riscv64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", + "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-s390x": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", + "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", + "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", + "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/netbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", + "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", + "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/openbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", + "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", + "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/sunos-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", + "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/win32-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", + "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/win32-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", + "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/win32-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", + "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/astro/node_modules/@img/sharp-darwin-arm64": { "version": "0.34.5", "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", @@ -4662,6 +5141,48 @@ "dev": true, "license": "MIT" }, + "node_modules/astro/node_modules/esbuild": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", + "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.7", + "@esbuild/android-arm": "0.27.7", + "@esbuild/android-arm64": "0.27.7", + "@esbuild/android-x64": "0.27.7", + "@esbuild/darwin-arm64": "0.27.7", + "@esbuild/darwin-x64": "0.27.7", + "@esbuild/freebsd-arm64": "0.27.7", + "@esbuild/freebsd-x64": "0.27.7", + "@esbuild/linux-arm": "0.27.7", + "@esbuild/linux-arm64": "0.27.7", + "@esbuild/linux-ia32": "0.27.7", + "@esbuild/linux-loong64": "0.27.7", + "@esbuild/linux-mips64el": "0.27.7", + "@esbuild/linux-ppc64": "0.27.7", + "@esbuild/linux-riscv64": "0.27.7", + "@esbuild/linux-s390x": "0.27.7", + "@esbuild/linux-x64": "0.27.7", + "@esbuild/netbsd-arm64": "0.27.7", + "@esbuild/netbsd-x64": "0.27.7", + "@esbuild/openbsd-arm64": "0.27.7", + "@esbuild/openbsd-x64": "0.27.7", + "@esbuild/openharmony-arm64": "0.27.7", + "@esbuild/sunos-x64": "0.27.7", + "@esbuild/win32-arm64": "0.27.7", + "@esbuild/win32-ia32": "0.27.7", + "@esbuild/win32-x64": "0.27.7" + } + }, "node_modules/astro/node_modules/sharp": { "version": "0.34.5", "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", @@ -4994,9 +5515,9 @@ "license": "ISC" }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -5548,9 +6069,9 @@ } }, "node_modules/cookie-es": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz", - "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.3.tgz", + "integrity": "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==", "dev": true, "license": "MIT" }, @@ -5770,9 +6291,9 @@ } }, "node_modules/defu": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", - "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz", + "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==", "dev": true, "license": "MIT" }, @@ -6920,9 +7441,9 @@ } }, "node_modules/flatted": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz", - "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, @@ -7129,9 +7650,9 @@ } }, "node_modules/glob/node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" @@ -7217,15 +7738,15 @@ "license": "ISC" }, "node_modules/h3": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.8.tgz", - "integrity": "sha512-iOH6Vl8mGd9nNfu9C0IZ+GuOAfJHcyf3VriQxWaSWIB76Fg4BnFuk4cxBxjmQSSxJS664+pgjP6e7VBnUzFfcg==", + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.11.tgz", + "integrity": "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==", "dev": true, "license": "MIT", "dependencies": { - "cookie-es": "^1.2.2", + "cookie-es": "^1.2.3", "crossws": "^0.3.5", - "defu": "^6.1.4", + "defu": "^6.1.6", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.4", @@ -8363,9 +8884,9 @@ } }, "node_modules/jest-config/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "dev": true, "license": "MIT", "dependencies": { @@ -8765,9 +9286,9 @@ } }, "node_modules/jest-runtime/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "dev": true, "license": "MIT", "dependencies": { @@ -10709,9 +11230,9 @@ } }, "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -11403,9 +11924,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -11518,9 +12039,9 @@ } }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.13", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.13.tgz", + "integrity": "sha512-qif0+jGGZoLWdHey3UFHHWP0H7Gbmsk8T5VEqyYFbWqPr1XqvLGBbk/sl8V5exGmcYJklJOhOQq1pV9IcsiFag==", "dev": true, "funding": [ { @@ -12602,9 +13123,9 @@ } }, "node_modules/smol-toml": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.0.tgz", - "integrity": "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.1.tgz", + "integrity": "sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -13093,9 +13614,9 @@ } }, "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "dev": true, "license": "MIT", "dependencies": { @@ -13831,9 +14352,9 @@ } }, "node_modules/vite": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", - "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.2.tgz", + "integrity": "sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==", "dev": true, "license": "MIT", "dependencies": { @@ -14129,9 +14650,9 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.4.tgz", + "integrity": "sha512-ml/JPOj9fOQK8RNnWojA67GbZ0ApXAUlN2UQclwv2eVgTgn7O9gg9o7paZWKMp4g0H3nTLtS9LVzhkpOFIKzog==", "license": "ISC", "bin": { "yaml": "bin.mjs" From 0f852a38ac7c0ac30340b3aedc3aba4505b7c14a Mon Sep 17 00:00:00 2001 From: Davor Racic Date: Sun, 17 May 2026 01:30:25 +0200 Subject: [PATCH 03/26] feat(prompts): add directory prompt with updated Clack runtime (#2387) * chore(deps): update @clack/core and @clack/prompts to latest versions and adjust Node.js engine requirement * feat(prompts): add directory prompt with autocomplete and create-directory support * chore(docs): update Node.js version requirement to 20.12+ across multiple documentation files * fix(prompts): code review fixes --- README.md | 6 +- docs/cs/how-to/install-bmad.md | 2 +- .../cs/how-to/non-interactive-installation.md | 2 +- docs/cs/how-to/upgrade-to-v6.md | 2 +- docs/cs/tutorials/getting-started.md | 2 +- docs/fr/how-to/install-bmad.md | 2 +- .../fr/how-to/non-interactive-installation.md | 2 +- docs/fr/how-to/upgrade-to-v6.md | 2 +- docs/fr/tutorials/getting-started.md | 2 +- docs/how-to/install-bmad.md | 2 +- docs/how-to/install-custom-modules.md | 4 +- docs/how-to/upgrade-to-v6.md | 2 +- docs/tutorials/getting-started.md | 71 +++++---- docs/vi-vn/how-to/install-bmad.md | 2 +- docs/vi-vn/how-to/install-custom-modules.md | 2 +- .../how-to/non-interactive-installation.md | 2 +- docs/vi-vn/how-to/upgrade-to-v6.md | 2 +- docs/vi-vn/tutorials/getting-started.md | 2 +- docs/zh-cn/how-to/install-bmad.md | 2 +- docs/zh-cn/how-to/install-custom-modules.md | 2 +- .../how-to/non-interactive-installation.md | 2 +- docs/zh-cn/how-to/upgrade-to-v6.md | 2 +- docs/zh-cn/tutorials/getting-started.md | 2 +- package-lock.json | 55 +++++-- package.json | 6 +- tools/installer/prompts.js | 149 ++++++++++++++++++ tools/installer/ui.js | 2 +- 27 files changed, 262 insertions(+), 71 deletions(-) diff --git a/README.md b/README.md index ea7ba5254..933adef3b 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Version](https://img.shields.io/npm/v/bmad-method?color=blue&label=version)](https://www.npmjs.com/package/bmad-method) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) -[![Node.js Version](https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen)](https://nodejs.org) +[![Node.js Version](https://img.shields.io/badge/node-%3E%3D20.12.0-brightgreen)](https://nodejs.org) [![Python Version](https://img.shields.io/badge/python-%3E%3D3.10-blue?logo=python&logoColor=white)](https://www.python.org) [![uv](https://img.shields.io/badge/uv-package%20manager-blueviolet?logo=uv)](https://docs.astral.sh/uv/) [![Discord](https://img.shields.io/badge/Discord-Join%20Community-7289da?logo=discord&logoColor=white)](https://discord.gg/gk8jAdXWmj) @@ -36,7 +36,7 @@ Traditional AI tools do the thinking for you, producing average results. BMad ag ## Quick Start -**Prerequisites**: [Node.js](https://nodejs.org) v20+ · [Python](https://www.python.org) 3.10+ · [uv](https://docs.astral.sh/uv/) +**Prerequisites**: [Node.js](https://nodejs.org) v20.12+ · [Python](https://www.python.org) 3.10+ · [uv](https://docs.astral.sh/uv/) ```bash npx bmad-method install @@ -82,11 +82,11 @@ BMad Method extends with official modules for specialized domains. Available dur [BMad Method Docs Site](https://docs.bmad-method.org) — Tutorials, guides, concepts, and reference **Quick links:** + - [Getting Started Tutorial](https://docs.bmad-method.org/tutorials/getting-started/) - [Upgrading from Previous Versions](https://docs.bmad-method.org/how-to/upgrade-to-v6/) - [Test Architect Documentation](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/) - ## Community - [Discord](https://discord.gg/gk8jAdXWmj) — Get help, share ideas, collaborate diff --git a/docs/cs/how-to/install-bmad.md b/docs/cs/how-to/install-bmad.md index 548b99e13..c36135f2c 100644 --- a/docs/cs/how-to/install-bmad.md +++ b/docs/cs/how-to/install-bmad.md @@ -16,7 +16,7 @@ Pokud chcete použít neinteraktivní instalátor a zadat všechny možnosti na - Aktualizujete stávající instalaci BMad :::note[Předpoklady] -- **Node.js** 20+ (vyžadováno pro instalátor) +- **Node.js** 20.12+ (vyžadováno pro instalátor) - **Git** (doporučeno) - **AI nástroj** (Claude Code, Cursor nebo podobný) ::: diff --git a/docs/cs/how-to/non-interactive-installation.md b/docs/cs/how-to/non-interactive-installation.md index 4d784f923..cf268cce9 100644 --- a/docs/cs/how-to/non-interactive-installation.md +++ b/docs/cs/how-to/non-interactive-installation.md @@ -15,7 +15,7 @@ Použijte příznaky příkazové řádky k neinteraktivní instalaci BMad. To j - Rychlé instalace se známými konfiguracemi :::note[Předpoklady] -Vyžaduje [Node.js](https://nodejs.org) v20+ a `npx` (součástí npm). +Vyžaduje [Node.js](https://nodejs.org) v20.12+ a `npx` (součástí npm). ::: ## Dostupné příznaky diff --git a/docs/cs/how-to/upgrade-to-v6.md b/docs/cs/how-to/upgrade-to-v6.md index babe4c1af..9affe9412 100644 --- a/docs/cs/how-to/upgrade-to-v6.md +++ b/docs/cs/how-to/upgrade-to-v6.md @@ -14,7 +14,7 @@ Použijte instalátor BMad pro upgrade z v4 na v6, který zahrnuje automatickou - Máte existující plánovací artefakty k zachování :::note[Předpoklady] -- Node.js 20+ +- Node.js 20.12+ - Existující instalace BMad v4 ::: diff --git a/docs/cs/tutorials/getting-started.md b/docs/cs/tutorials/getting-started.md index 76a7b113b..4aab934b9 100644 --- a/docs/cs/tutorials/getting-started.md +++ b/docs/cs/tutorials/getting-started.md @@ -14,7 +14,7 @@ Vytvářejte software rychleji pomocí pracovních postupů řízených AI se sp - Efektivně používat agenty a pracovní postupy :::note[Předpoklady] -- **Node.js 20+** — Vyžadováno pro instalátor +- **Node.js 20.12+** — Vyžadováno pro instalátor - **Git** — Doporučeno pro správu verzí - **AI-powered IDE** — Claude Code, Cursor nebo podobné - **Nápad na projekt** — I jednoduchý stačí pro učení diff --git a/docs/fr/how-to/install-bmad.md b/docs/fr/how-to/install-bmad.md index c58f00c23..70c5a6c0d 100644 --- a/docs/fr/how-to/install-bmad.md +++ b/docs/fr/how-to/install-bmad.md @@ -16,7 +16,7 @@ Si vous souhaitez utiliser un installateur non interactif et fournir toutes les - Mettre à jour une installation BMad existante :::note[Prérequis] -- **Node.js** 20+ (requis pour l'installateur) +- **Node.js** 20.12+ (requis pour l'installateur) - **Git** (recommandé) - **Outil d'IA** (Claude Code, Cursor, ou similaire) ::: diff --git a/docs/fr/how-to/non-interactive-installation.md b/docs/fr/how-to/non-interactive-installation.md index 87498285b..328b7e9d4 100644 --- a/docs/fr/how-to/non-interactive-installation.md +++ b/docs/fr/how-to/non-interactive-installation.md @@ -15,7 +15,7 @@ Utilisez les options de ligne de commande pour installer BMad de manière non-in - Installations rapides avec des configurations connues :::note[Prérequis] -Nécessite [Node.js](https://nodejs.org) v20+ et `npx` (inclus avec npm). +Nécessite [Node.js](https://nodejs.org) v20.12+ et `npx` (inclus avec npm). ::: ## Options disponibles diff --git a/docs/fr/how-to/upgrade-to-v6.md b/docs/fr/how-to/upgrade-to-v6.md index bd600cbcb..ba19211a1 100644 --- a/docs/fr/how-to/upgrade-to-v6.md +++ b/docs/fr/how-to/upgrade-to-v6.md @@ -14,7 +14,7 @@ Utilisez l'installateur BMad pour passer de la v4 à la v6, qui inclut une déte - Vous avez des artefacts de planification existants à préserver :::note[Prérequis] -- Node.js 20+ +- Node.js 20.12+ - Installation BMad v4 existante ::: diff --git a/docs/fr/tutorials/getting-started.md b/docs/fr/tutorials/getting-started.md index 8d729debf..8d98a5cb6 100644 --- a/docs/fr/tutorials/getting-started.md +++ b/docs/fr/tutorials/getting-started.md @@ -14,7 +14,7 @@ Construisez des logiciels plus rapidement en utilisant des workflows propulsés - Utiliser efficacement les agents et les workflows :::note[Prérequis] -- **Node.js 20+** — Requis pour l'installateur +- **Node.js 20.12+** — Requis pour l'installateur - **Git** — Recommandé pour le contrôle de version - **IDE IA** — Claude Code, Cursor, ou similaire - **Une idée de projet** — Même simple, elle fonctionne pour apprendre diff --git a/docs/how-to/install-bmad.md b/docs/how-to/install-bmad.md index 224704a47..e96b53aa1 100644 --- a/docs/how-to/install-bmad.md +++ b/docs/how-to/install-bmad.md @@ -16,7 +16,7 @@ Use `npx bmad-method install` to set up BMad in your project. One command handle :::note[Prerequisites] -- **Node.js** 20+ (the installer requires it) +- **Node.js** 20.12+ (the installer requires it) - **Git** (for cloning external modules) - **An AI tool** such as Claude Code or Cursor (run `npx bmad-method install --list-tools` to see all supported tools) diff --git a/docs/how-to/install-custom-modules.md b/docs/how-to/install-custom-modules.md index c4a38d41d..aabbf7867 100644 --- a/docs/how-to/install-custom-modules.md +++ b/docs/how-to/install-custom-modules.md @@ -15,7 +15,7 @@ Use the BMad installer to add modules from the community registry, third-party G - Installing modules from a private or self-hosted Git server :::note[Prerequisites] -Requires [Node.js](https://nodejs.org) v20+ and `npx` (included with npm). Custom and community modules can be selected during a fresh install or added to an existing installation. +Requires [Node.js](https://nodejs.org) v20.12+ and `npx` (included with npm). Custom and community modules can be selected during a fresh install or added to an existing installation. ::: ## Community Modules @@ -68,7 +68,7 @@ Select **Yes**, then provide a source: | Input Type | Example | | --------------------- | ------------------------------------------------- | | HTTPS URL (any host) | `https://github.com/org/repo` | -| HTTP URL (any host) | `http://host/org/repo` | +| HTTP URL (any host) | `http://host/org/repo` | | HTTPS URL with subdir | `https://github.com/org/repo/tree/main/my-module` | | SSH URL | `git@github.com:org/repo.git` | | Local path | `/Users/me/projects/my-module` | diff --git a/docs/how-to/upgrade-to-v6.md b/docs/how-to/upgrade-to-v6.md index 567dbe93c..96febd355 100644 --- a/docs/how-to/upgrade-to-v6.md +++ b/docs/how-to/upgrade-to-v6.md @@ -15,7 +15,7 @@ Use the BMad installer to upgrade from v4 to v6, which includes automatic detect :::note[Prerequisites] -- Node.js 20+ +- Node.js 20.12+ - Existing BMad v4 installation ::: diff --git a/docs/tutorials/getting-started.md b/docs/tutorials/getting-started.md index b6b5c6fca..3806d28a6 100644 --- a/docs/tutorials/getting-started.md +++ b/docs/tutorials/getting-started.md @@ -1,5 +1,5 @@ --- -title: "Getting Started" +title: 'Getting Started' description: Install BMad and build your first project --- @@ -14,11 +14,12 @@ Build software faster using AI-powered workflows with specialized agents that gu - Use agents and workflows effectively :::note[Prerequisites] -- **Node.js 20+** — Required for the installer + +- **Node.js 20.12+** — Required for the installer - **Git** — Recommended for version control - **AI-powered IDE** — Claude Code, Cursor, or similar - **A project idea** — Even a simple one works for learning -::: + ::: :::tip[The Easiest Path] **Install** → `npx bmad-method install` @@ -50,6 +51,7 @@ bmad-help I have an idea for a SaaS product, I already know all the features I w ``` BMad-Help will respond with: + - What's recommended for your situation - What the first required task is - What the rest of the process looks like @@ -66,12 +68,12 @@ After installing BMad, invoke the `bmad-help` skill immediately. It will detect BMad helps you build software through guided workflows with specialized AI agents. The process follows four phases: -| Phase | Name | What Happens | -| ----- | -------------- | --------------------------------------------------- | -| 1 | Analysis | Brainstorming, research, product brief or PRFAQ *(optional)* | -| 2 | Planning | Create requirements (PRD or spec) | -| 3 | Solutioning | Design architecture *(BMad Method/Enterprise only)* | -| 4 | Implementation | Build epic by epic, story by story | +| Phase | Name | What Happens | +| ----- | -------------- | ------------------------------------------------------------ | +| 1 | Analysis | Brainstorming, research, product brief or PRFAQ _(optional)_ | +| 2 | Planning | Create requirements (PRD or spec) | +| 3 | Solutioning | Design architecture _(BMad Method/Enterprise only)_ | +| 4 | Implementation | Build epic by epic, story by story | **[Open the Workflow Map](../reference/workflow-map.md)** to explore phases, workflows, and context management. @@ -100,6 +102,7 @@ If you want the newest prerelease build instead of the default release channel, When prompted to select modules, choose **BMad Method**. The installer creates two folders: + - `_bmad/` — agents, workflows, tasks, and configuration - `_bmad-output/` — empty for now, but this is where your artifacts will be saved @@ -134,6 +137,7 @@ Create it manually at `_bmad-output/project-context.md` or generate it after arc ### Phase 1: Analysis (Optional) All workflows in this phase are optional. [**Not sure which to use?**](../explanation/analysis-phase.md) + - **brainstorming** (`bmad-brainstorming`) — Guided ideation - **research** (`bmad-market-research` / `bmad-domain-research` / `bmad-technical-research`) — Market, domain, and technical research - **product-brief** (`bmad-product-brief`) — Recommended foundation document when your concept is clear @@ -142,16 +146,19 @@ All workflows in this phase are optional. [**Not sure which to use?**](../explan ### Phase 2: Planning (Required) **For BMad Method and Enterprise tracks:** + 1. Run `bmad-prd` in a new chat — state your intent (Create / Update / Validate) or let the skill ask 2. Output: `prd.md`, `addendum.md`, `decision-log.md` :::note[`bmad-prd` intents] + - **Create** — coached discovery from scratch; the skill names the workspace folder and guides you to a PRD you're proud of - **Update** — point it at an existing PRD and a change signal; it surfaces conflicts before applying changes - **Validate** — critique a finished PRD against a checklist and produce an HTML findings report -::: + ::: **For Quick Flow track:** + - Run `bmad-quick-dev` — it handles planning and implementation in a single workflow, skip to implementation :::note[UX Design (Optional)] @@ -161,6 +168,7 @@ If your project has a user interface, invoke the **UX-Designer agent** (`bmad-ag ### Phase 3: Solutioning (BMad Method/Enterprise) **Create Architecture** + 1. Invoke the **Architect agent** (`bmad-agent-architect`) in a new chat 2. Run `bmad-create-architecture` (`bmad-create-architecture`) 3. Output: Architecture document with technical decisions @@ -168,14 +176,15 @@ If your project has a user interface, invoke the **UX-Designer agent** (`bmad-ag **Create Epics and Stories** :::tip[V6 Improvement] -Epics and stories are now created *after* architecture. This produces better quality stories because architecture decisions (database, API patterns, tech stack) directly affect how work should be broken down. +Epics and stories are now created _after_ architecture. This produces better quality stories because architecture decisions (database, API patterns, tech stack) directly affect how work should be broken down. ::: 1. Invoke the **PM agent** (`bmad-agent-pm`) in a new chat 2. Run `bmad-create-epics-and-stories` (`bmad-create-epics-and-stories`) 3. The workflow uses both PRD and Architecture to create technically-informed stories -**Implementation Readiness Check** *(Highly Recommended)* +**Implementation Readiness Check** _(Highly Recommended)_ + 1. Invoke the **Architect agent** (`bmad-agent-architect`) in a new chat 2. Run `bmad-check-implementation-readiness` (`bmad-check-implementation-readiness`) 3. Validates cohesion across all planning documents @@ -192,11 +201,11 @@ Invoke the **Developer agent** (`bmad-agent-dev`) and run `bmad-sprint-planning` For each story, repeat this cycle with fresh chats: -| Step | Agent | Workflow | Command | Purpose | -| ---- | ----- | -------------- | -------------------------- | ---------------------------------- | -| 1 | DEV | `bmad-create-story` | `bmad-create-story` | Create story file from epic | -| 2 | DEV | `bmad-dev-story` | `bmad-dev-story` | Implement the story | -| 3 | DEV | `bmad-code-review` | `bmad-code-review` | Quality validation *(recommended)* | +| Step | Agent | Workflow | Command | Purpose | +| ---- | ----- | ------------------- | ------------------- | ---------------------------------- | +| 1 | DEV | `bmad-create-story` | `bmad-create-story` | Create story file from epic | +| 2 | DEV | `bmad-dev-story` | `bmad-dev-story` | Implement the story | +| 3 | DEV | `bmad-code-review` | `bmad-code-review` | Quality validation _(recommended)_ | After completing all stories in an epic, invoke the **Developer agent** (`bmad-agent-dev`) and run `bmad-retrospective` (`bmad-retrospective`). @@ -227,18 +236,18 @@ your-project/ ## Quick Reference -| Workflow | Command | Agent | Purpose | -| ------------------------------------- | ------------------------------------------ | --------- | ----------------------------------------------- | -| **`bmad-help`** ⭐ | `bmad-help` | Any | **Your intelligent guide — ask anything!** | -| `bmad-prd` | `bmad-prd` | Any | Create, update, or validate a PRD | -| `bmad-create-architecture` | `bmad-create-architecture` | Architect | Create architecture document | -| `bmad-generate-project-context` | `bmad-generate-project-context` | Analyst | Create project context file | -| `bmad-create-epics-and-stories` | `bmad-create-epics-and-stories` | PM | Break down PRD into epics | -| `bmad-check-implementation-readiness` | `bmad-check-implementation-readiness` | Architect | Validate planning cohesion | -| `bmad-sprint-planning` | `bmad-sprint-planning` | DEV | Initialize sprint tracking | -| `bmad-create-story` | `bmad-create-story` | DEV | Create a story file | -| `bmad-dev-story` | `bmad-dev-story` | DEV | Implement a story | -| `bmad-code-review` | `bmad-code-review` | DEV | Review implemented code | +| Workflow | Command | Agent | Purpose | +| ------------------------------------- | ------------------------------------- | --------- | ------------------------------------------ | +| **`bmad-help`** ⭐ | `bmad-help` | Any | **Your intelligent guide — ask anything!** | +| `bmad-prd` | `bmad-prd` | Any | Create, update, or validate a PRD | +| `bmad-create-architecture` | `bmad-create-architecture` | Architect | Create architecture document | +| `bmad-generate-project-context` | `bmad-generate-project-context` | Analyst | Create project context file | +| `bmad-create-epics-and-stories` | `bmad-create-epics-and-stories` | PM | Break down PRD into epics | +| `bmad-check-implementation-readiness` | `bmad-check-implementation-readiness` | Architect | Validate planning cohesion | +| `bmad-sprint-planning` | `bmad-sprint-planning` | DEV | Initialize sprint tracking | +| `bmad-create-story` | `bmad-create-story` | DEV | Create a story file | +| `bmad-dev-story` | `bmad-dev-story` | DEV | Implement a story | +| `bmad-code-review` | `bmad-code-review` | DEV | Review implemented code | ## Common Questions @@ -258,6 +267,7 @@ Not strictly. Once you learn the flow, you can run workflows directly using the :::tip[First Stop: BMad-Help] **Invoke `bmad-help` anytime** — it's the fastest way to get unstuck. Ask it anything: + - "What should I do after installing?" - "I'm stuck on workflow X" - "What are my options for Y?" @@ -272,10 +282,11 @@ BMad-Help inspects your project, detects what you've completed, and tells you ex ## Key Takeaways :::tip[Remember These] + - **Start with `bmad-help`** — Your intelligent guide that knows your project and options - **Always use fresh chats** — Start a new chat for each workflow - **Track matters** — Quick Flow uses `bmad-quick-dev`; Method/Enterprise need PRD and architecture - **BMad-Help runs automatically** — Every workflow ends with guidance on what's next -::: + ::: Ready to start? Install BMad, invoke `bmad-help`, and let your intelligent guide lead the way. diff --git a/docs/vi-vn/how-to/install-bmad.md b/docs/vi-vn/how-to/install-bmad.md index c73e89388..4f3248ac9 100644 --- a/docs/vi-vn/how-to/install-bmad.md +++ b/docs/vi-vn/how-to/install-bmad.md @@ -16,7 +16,7 @@ Nếu bạn muốn dùng trình cài đặt không tương tác và cung cấp t - Cập nhật bản cài đặt BMad hiện tại :::note[Điều kiện tiên quyết] -- **Node.js** 20+ (bắt buộc cho trình cài đặt) +- **Node.js** 20.12+ (bắt buộc cho trình cài đặt) - **Git** (khuyến nghị) - **Công cụ AI** (Claude Code, Cursor, hoặc tương tự) ::: diff --git a/docs/vi-vn/how-to/install-custom-modules.md b/docs/vi-vn/how-to/install-custom-modules.md index 0b4064f1c..165348194 100644 --- a/docs/vi-vn/how-to/install-custom-modules.md +++ b/docs/vi-vn/how-to/install-custom-modules.md @@ -15,7 +15,7 @@ Sử dụng trình cài đặt BMad để thêm module từ kho cộng đồng ( - Cài module từ máy chủ Git riêng tư hoặc tự host :::note[Điều kiện tiên quyết] -Yêu cầu [Node.js](https://nodejs.org) v20+ và `npx` đi kèm npm. Bạn có thể chọn module tùy chỉnh và module cộng đồng trong lúc cài mới, hoặc thêm chúng vào một bản cài hiện có. +Yêu cầu [Node.js](https://nodejs.org) v20.12+ và `npx` đi kèm npm. Bạn có thể chọn module tùy chỉnh và module cộng đồng trong lúc cài mới, hoặc thêm chúng vào một bản cài hiện có. ::: ## Module cộng đồng diff --git a/docs/vi-vn/how-to/non-interactive-installation.md b/docs/vi-vn/how-to/non-interactive-installation.md index 1f8856377..237ed39d9 100644 --- a/docs/vi-vn/how-to/non-interactive-installation.md +++ b/docs/vi-vn/how-to/non-interactive-installation.md @@ -15,7 +15,7 @@ Sử dụng các cờ dòng lệnh để cài đặt BMad mà không cần tươ - Cài đặt nhanh với cấu hình đã biết trước :::note[Điều kiện tiên quyết] -Yêu cầu [Node.js](https://nodejs.org) v20+ và `npx` (đi kèm với npm). +Yêu cầu [Node.js](https://nodejs.org) v20.12+ và `npx` (đi kèm với npm). ::: ## Các cờ khả dụng diff --git a/docs/vi-vn/how-to/upgrade-to-v6.md b/docs/vi-vn/how-to/upgrade-to-v6.md index bab3fe5a2..d72e71911 100644 --- a/docs/vi-vn/how-to/upgrade-to-v6.md +++ b/docs/vi-vn/how-to/upgrade-to-v6.md @@ -14,7 +14,7 @@ Sử dụng trình cài đặt BMad để nâng cấp từ v4 lên v6, bao gồm - Bạn có các planning artifact hiện có cần giữ lại :::note[Điều kiện tiên quyết] -- Node.js 20+ +- Node.js 20.12+ - Bản cài đặt BMad v4 hiện có ::: diff --git a/docs/vi-vn/tutorials/getting-started.md b/docs/vi-vn/tutorials/getting-started.md index cfd06a5d5..6a33a6e0a 100644 --- a/docs/vi-vn/tutorials/getting-started.md +++ b/docs/vi-vn/tutorials/getting-started.md @@ -14,7 +14,7 @@ Xây dựng phần mềm nhanh hơn bằng các workflow vận hành bởi AI, v - Sử dụng agent và workflow hiệu quả :::note[Điều kiện tiên quyết] -- **Node.js 20+** — Bắt buộc cho trình cài đặt +- **Node.js 20.12+** — Bắt buộc cho trình cài đặt - **Git** — Khuyến nghị để quản lý phiên bản - **IDE có AI** — Claude Code, Cursor hoặc công cụ tương tự - **Một ý tưởng dự án** — Chỉ cần đơn giản cũng đủ để học diff --git a/docs/zh-cn/how-to/install-bmad.md b/docs/zh-cn/how-to/install-bmad.md index 3c5ceff44..f179fb8a5 100644 --- a/docs/zh-cn/how-to/install-bmad.md +++ b/docs/zh-cn/how-to/install-bmad.md @@ -16,7 +16,7 @@ sidebar: - 更新现有的 BMad 安装 :::note[前置条件] -- **Node.js** 20+(安装程序必需) +- **Node.js** 20.12+(安装程序必需) - **Git**(推荐) - **AI 工具**(Claude Code、Cursor 或类似工具) ::: diff --git a/docs/zh-cn/how-to/install-custom-modules.md b/docs/zh-cn/how-to/install-custom-modules.md index 00193a3ed..4cd7f719b 100644 --- a/docs/zh-cn/how-to/install-custom-modules.md +++ b/docs/zh-cn/how-to/install-custom-modules.md @@ -15,7 +15,7 @@ sidebar: - 从私有或自托管 Git 服务器安装模块 :::note[前置条件] -需要 [Node.js](https://nodejs.org) v20+ 和 `npx`(npm 自带)。自定义和社区模块可以在全新安装时选择,也可以添加到现有安装中。 +需要 [Node.js](https://nodejs.org) v20.12+ 和 `npx`(npm 自带)。自定义和社区模块可以在全新安装时选择,也可以添加到现有安装中。 ::: ## 社区模块 diff --git a/docs/zh-cn/how-to/non-interactive-installation.md b/docs/zh-cn/how-to/non-interactive-installation.md index 788c18d52..024bf7613 100644 --- a/docs/zh-cn/how-to/non-interactive-installation.md +++ b/docs/zh-cn/how-to/non-interactive-installation.md @@ -15,7 +15,7 @@ sidebar: - 使用已知配置的快速安装 :::note[前置条件] -需要 [Node.js](https://nodejs.org) v20+ 和 `npx`(随 npm 附带)。 +需要 [Node.js](https://nodejs.org) v20.12+ 和 `npx`(随 npm 附带)。 ::: ## 可用参数(Flags) diff --git a/docs/zh-cn/how-to/upgrade-to-v6.md b/docs/zh-cn/how-to/upgrade-to-v6.md index 8a3ed4a46..4b9565c78 100644 --- a/docs/zh-cn/how-to/upgrade-to-v6.md +++ b/docs/zh-cn/how-to/upgrade-to-v6.md @@ -14,7 +14,7 @@ sidebar: - 你有要保留的规划产物或进行中的开发工作 :::note[前置条件] -- Node.js 20+ +- Node.js 20.12+ - 现有 BMad v4 安装 ::: diff --git a/docs/zh-cn/tutorials/getting-started.md b/docs/zh-cn/tutorials/getting-started.md index aa1e5b610..2b37408cf 100644 --- a/docs/zh-cn/tutorials/getting-started.md +++ b/docs/zh-cn/tutorials/getting-started.md @@ -14,7 +14,7 @@ description: 安装 BMad 并构建你的第一个项目 - 有效使用智能体和工作流 :::note[前置条件] -- **Node.js 20+** — 安装程序必需 +- **Node.js 20.12+** — 安装程序必需 - **Git** — 推荐用于版本控制 - **AI 驱动的 IDE** — Claude Code、Cursor 或类似工具 - **一个项目想法** — 即使是简单的想法也可以用于学习 diff --git a/package-lock.json b/package-lock.json index 1e8eaaad6..9ae8c111b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "version": "6.6.0", "license": "MIT", "dependencies": { - "@clack/core": "^1.0.0", - "@clack/prompts": "^1.0.0", + "@clack/core": "^1.3.1", + "@clack/prompts": "^1.4.0", "@kayvan/markdown-tree-parser": "^1.6.1", "chalk": "^4.1.2", "commander": "^14.0.0", @@ -50,7 +50,7 @@ "yaml-lint": "^1.7.0" }, "engines": { - "node": ">=20.0.0" + "node": ">=20.12.0" } }, "node_modules/@astrojs/compiler": { @@ -752,24 +752,31 @@ } }, "node_modules/@clack/core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@clack/core/-/core-1.0.0.tgz", - "integrity": "sha512-Orf9Ltr5NeiEuVJS8Rk2XTw3IxNC2Bic3ash7GgYeA8LJ/zmSNpSQ/m5UAhe03lA6KFgklzZ5KTHs4OAMA/SAQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-1.3.1.tgz", + "integrity": "sha512-fT1qHVGAag4IEkrupZ6lRRbNCs1vS9P01KB/sG8zKgvUztbYtFBtQpjSITNwooDZ83tpsPzP0mRNs1/KVszCRA==", "license": "MIT", "dependencies": { - "picocolors": "^1.0.0", + "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 20.12.0" } }, "node_modules/@clack/prompts": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-1.0.0.tgz", - "integrity": "sha512-rWPXg9UaCFqErJVQ+MecOaWsozjaxol4yjnmYcGNipAWzdaWa2x+VJmKfGq7L0APwBohQOYdHC+9RO4qRXej+A==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-1.4.0.tgz", + "integrity": "sha512-S0My7XPGIgpRWMDG8uRqalbgT+a6FmCUdOW+HaIOVVpUPHOb7RrpvjTjiODadKp06fsrVDJZlIzc6yCTp4AnxA==", "license": "MIT", "dependencies": { - "@clack/core": "1.0.0", - "picocolors": "^1.0.0", + "@clack/core": "1.3.1", + "fast-string-width": "^3.0.2", + "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 20.12.0" } }, "node_modules/@ctrl/tinycolor": { @@ -7332,6 +7339,30 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-string-truncated-width": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", + "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", + "license": "MIT" + }, + "node_modules/fast-string-width": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", + "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", + "license": "MIT", + "dependencies": { + "fast-string-truncated-width": "^3.0.2" + } + }, + "node_modules/fast-wrap-ansi": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.0.tgz", + "integrity": "sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==", + "license": "MIT", + "dependencies": { + "fast-string-width": "^3.0.2" + } + }, "node_modules/fastq": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", diff --git a/package.json b/package.json index b52bf2970..0f37ff5be 100644 --- a/package.json +++ b/package.json @@ -66,8 +66,8 @@ ] }, "dependencies": { - "@clack/core": "^1.0.0", - "@clack/prompts": "^1.0.0", + "@clack/core": "^1.3.1", + "@clack/prompts": "^1.4.0", "@kayvan/markdown-tree-parser": "^1.6.1", "chalk": "^4.1.2", "commander": "^14.0.0", @@ -103,7 +103,7 @@ "yaml-lint": "^1.7.0" }, "engines": { - "node": ">=20.0.0" + "node": ">=20.12.0" }, "publishConfig": { "access": "public" diff --git a/tools/installer/prompts.js b/tools/installer/prompts.js index 4f46e69b1..1fbaded52 100644 --- a/tools/installer/prompts.js +++ b/tools/installer/prompts.js @@ -10,6 +10,9 @@ let _clack = null; let _clackCore = null; let _picocolors = null; +const fs = require('node:fs'); +const os = require('node:os'); +const path = require('node:path'); /** * Lazy-load @clack/prompts (ESM module) @@ -575,6 +578,151 @@ async function autocomplete(options) { return result; } +function hasPathSeparator(value) { + return value.endsWith('/') || value.endsWith('\\'); +} + +function expandHome(input) { + if (!input) return input; + if (input === '~') return os.homedir(); + if (input.startsWith('~/') || input.startsWith('~\\')) { + return path.join(os.homedir(), input.slice(2)); + } + return input; +} + +function toDirectoryOption(value, label = value, synthetic = false) { + return { value, label, synthetic }; +} + +function isExistingDirectory(value) { + try { + return fs.existsSync(value) && fs.statSync(value).isDirectory(); + } catch { + return false; + } +} + +function listDirectoryOptions(input, options) { + const cwd = options.cwd || process.cwd(); + const rawInput = input.trim(); + const expandedInput = expandHome(rawInput); + const trailingSep = hasPathSeparator(rawInput) || hasPathSeparator(expandedInput); + const resolvedInput = expandedInput ? path.resolve(cwd, expandedInput) : cwd; + const browseDir = expandedInput && !trailingSep && !isExistingDirectory(resolvedInput) ? path.dirname(resolvedInput) : resolvedInput; + const prefix = expandedInput && browseDir !== resolvedInput ? path.basename(resolvedInput).toLowerCase() : ''; + const results = []; + + if (!trailingSep && isExistingDirectory(resolvedInput)) { + results.push(toDirectoryOption(resolvedInput, `. (use this directory)`)); + } + + if (isExistingDirectory(browseDir)) { + try { + for (const entry of fs.readdirSync(browseDir, { withFileTypes: true })) { + if (!entry.isDirectory()) continue; + if (prefix && !entry.name.toLowerCase().startsWith(prefix)) continue; + const fullPath = path.join(browseDir, entry.name); + if (!results.some((option) => option.value === fullPath)) { + results.push(toDirectoryOption(fullPath)); + } + } + } catch { + // Skip unreadable directories; validation still reports path issues. + } + } + + const validation = options.validate?.(rawInput); + const hasMatchingOption = results.some((option) => option.value === resolvedInput); + if (expandedInput && !validation && !hasMatchingOption) { + results.unshift(toDirectoryOption(resolvedInput, `Create/use: ${resolvedInput}`, true)); + } + + return results; +} + +/** + * Directory prompt with autocomplete candidates and create-directory support. + * Uses @clack/core directly so typed paths that do not exist yet can still be + * submitted when validation allows creating them. + * @param {Object} options - Prompt options + * @param {string} options.message - Prompt message + * @param {string} [options.default] - Default directory + * @param {string} [options.placeholder] - Placeholder text + * @param {Function} [options.validate] - Sync validation function + * @returns {Promise} Selected or typed directory path + */ +async function directory(options) { + const core = await getClackCore(); + const color = await getPicocolors(); + const tabCompletion = { + prefix: '', + index: -1, + options: [], + lastValue: '', + }; + + let prompt; + prompt = new core.AutocompletePrompt({ + initialValue: options.default, + options: () => listDirectoryOptions(prompt?.userInput || '', options), + filter: () => true, + validate: (value) => options.validate?.(value ?? prompt.userInput), + render() { + const title = `${color.gray('◆')} ${options.message}`; + const bar = color.gray('│'); + const barEnd = color.gray('└'); + const userInput = this.userInput; + const placeholder = options.placeholder || options.default; + const inputDisplay = userInput ? this.userInputWithCursor : `${color.inverse(color.hidden('_'))}${color.dim(placeholder || '')}`; + const errorLine = this.state === 'error' ? [`${color.yellow('│')} ${color.yellow(this.error)}`] : []; + + switch (this.state) { + case 'submit': { + return `${color.gray('◇')} ${options.message}\n${bar} ${color.dim(this.value || '')}`; + } + case 'cancel': { + return `${color.gray('◇')} ${options.message}\n${bar} ${color.strikethrough(color.dim(userInput || ''))}`; + } + default: { + return [title, `${bar} ${inputDisplay}`, ...errorLine, barEnd].join('\n'); + } + } + }, + }); + + const hasSetUserInput = typeof prompt._setUserInput === 'function'; + const hasClearUserInput = typeof prompt._clearUserInput === 'function'; + + prompt.on('key', (_, key) => { + if (key?.name !== 'tab') return; + if (!hasSetUserInput) return; // @clack/core API surface changed — skip Tab silently. + const currentInput = prompt.userInput; + const isContinuingCycle = tabCompletion.lastValue && currentInput === tabCompletion.lastValue; + const completionOptions = isContinuingCycle ? tabCompletion.options : prompt.filteredOptions.filter((option) => !option.synthetic); + if (completionOptions.length === 0) return; + + if (isContinuingCycle) { + tabCompletion.index = (tabCompletion.index + 1) % completionOptions.length; + } else { + tabCompletion.prefix = currentInput; + tabCompletion.options = completionOptions; + tabCompletion.index = 0; + } + + const focusedOption = completionOptions[tabCompletion.index]; + if (!focusedOption) return; + const completedValue = focusedOption.value; + tabCompletion.lastValue = completedValue; + if (hasClearUserInput) prompt._clearUserInput(); + prompt._setUserInput(completedValue, true); + }); + + const result = await prompt.prompt(); + await handleCancel(result); + return result; +} + /** * Get the color utility (picocolors instance from @clack/prompts) * @returns {Promise} The color utility (picocolors) @@ -694,6 +842,7 @@ module.exports = { multiselect, autocompleteMultiselect, autocomplete, + directory, confirm, text, password, diff --git a/tools/installer/ui.js b/tools/installer/ui.js index 5770206ef..0e67d201d 100644 --- a/tools/installer/ui.js +++ b/tools/installer/ui.js @@ -1436,7 +1436,7 @@ class UI { */ async promptForDirectory() { // Use sync validation because @clack/prompts doesn't support async validate - const directory = await prompts.text({ + const directory = await prompts.directory({ message: 'Installation directory:', default: process.cwd(), placeholder: process.cwd(), From 71136bc6af77cbf507d3768494311d5b6ca95cc5 Mon Sep 17 00:00:00 2001 From: Brian Date: Sat, 16 May 2026 19:16:45 -0500 Subject: [PATCH 04/26] feat(bmad-prd): overhaul facilitation, discipline, and validation (#2385) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(bmad-prd): voice rules, probing reference, and operational hardening - Session Posture section (voice prohibitions, record-as-you-go, anti-caving, register-matching) - New references/probing.md: seven probing categories, six critical assumptions, PRD/solution-design boundary - Intent detection signals (create/update/validate) on activation step 6 - Update intent: inline conflict-detection procedure against decision-log.md - Activation step 1 falls back to customize.toml instead of halting on resolver failure - Restructure Discovery into five sub-sections (Posture, Brain dump, Four-dimension read, Right-skill check, Working mode) - Regroup PRD Discipline into three clusters (Artifact shape, Substance, Honesty about scope) - Define phase-blockers in Finalize step 4 - Em-dash strip in prose; preserve [v2 — out of MVP] callout convention - Move bmad-party-mode / bmad-advanced-elicitation mention into the greeting step * feat(bmad-prd): funnel discipline, UJ depth, and UX reframing Template discipline for downstream AI extraction: - §3 Glossary: exact-use enforcement (FRs, UJs, SMs use Glossary terms verbatim) - §4 Features: FRs now use "#### FR-N: Name" heading with Realizes UJ-X cross-reference, testable consequences, and optional per-FR Out of Scope - §7 Success Metrics: SM-N / SM-CN numbering with Validates FR-X cross-reference User journeys: - §2.4 UJ format expanded from one-liner to named-persona mini-flow (persona, 3-5 steps, edge cases, optional capability surfacing); hobby can collapse to one-liners - Strip "job of UX" / "not this PRD" gatekeeping from template; depth is the team's call - Strengthen UX-as-input / UX-as-output patterns for bidirectional PRD <-> UX flow - SKILL.md Discovery Posture: push for two to three named-persona UJs in non-trivial scope Validation checklist: - Q-3 Traceability tightened to require Realizes UJ-X on FRs and Validates FR-X on SMs - Q-7 (new): FR testability — every FR has at least one testable consequence - S-1 Glossary integrity: now covers FR descriptions, consequences, UJ flows, SM definitions - S-2: SM added to ID continuity scope - S-5 (new): UJ persona linkage — every UJ names a persona by exact §2 label - STK-2 (new): UJ density gate — non-hobby scope needs at least two UJs * docs(bmad-prd): anonymize validation-findings JSON example Replace project-specific values (Plantsona prd_name, frozen timestamp, §16 location, premium-conversion finding) with generic placeholder content. Swap the example finding to demonstrate Q-7 FR testability so it doubles as a primer on the new checklist item. * feat(bmad-prd): reviewer pass redesign and consolidate facilitation - finalize_reviewers TOML field replaces inline review lenses; entries follow the skill:/file:/plain-text prefix convention, resolved on-demand so reviewer data has zero context cost on runs that skip the pass. - Subagent contract: reviewers write to {doc_workspace}/review-{slug}.md and return summary-only (verdict, top findings, file path); parent never holds full review text. - Section-by-section walk-through UX at Finalize and Validate; user decides per finding whether to autofix, discuss, defer, or ignore. - Finalize entry names the sequence in one sentence so users understand the polish-last order. - Template philosophy moved from prd-template.md to SKILL.md PRD Discipline; template is now pure shape menu (preamble and Notes for facilitator stripped). - facilitation-guide.md content folded into SKILL.md Discovery posture (story-shape UJ walk, four MVP types, state-inference-don't-quiz); guide file deleted. * feat(bmad-prd): tighten SKILL.md, extract Reviewer Gate and Validate playbook - SKILL.md: trim activation/posture/discovery bloat; sharpen Right-skill check; extract Reviewer Gate to its own section (dedup with Finalize step 3 and Validate intent). - references/validate.md: rename from validation-render.md and expand to the full Validate intent playbook (orient, run gate, structural validator pipeline, render, close). - references/probing.md: drop stale facilitation-guide.md reference. - assets/prd-template.md: redesign §2.4 User Journeys with named-scene default shape, worked example, and scope dial. * fix(bmad-prd): make Brain dump a hard first-move rule Discovery was being skipped: the LLM treated the user's opening message as the full picture and jumped to multiple-choice intake. Strengthen the ordering so Brain dump always comes first for Create and Update, before any questions or working-mode choices. - Add explicit Discovery ordering at the section top. - Rewrite Brain dump as a non-negotiable first move with an anti- pattern callout naming the exact failure mode. - Add timing prefix to Working mode reinforcing the order. * refactor(bmad-prd): aggressive trim and quality fixes from analysis SKILL.md cut 49% (143 -> 84 lines); references/validate.md 35%; references/headless.md 22%. Package-wide ~21% reduction. Customization sweep: - {finalize_reviewers} -> {workflow.finalize_reviewers} (was a silent override no-op) - Add canonical ## Conventions block - Rename decision-log.md -> .decision-log.md across SKILL, refs, schemas - customize.toml: validation_checklist -> validation_checklist_template, output_dir -> prd_output_path, output_folder_name -> run_folder_pattern; lifecycle comments on external_sources / external_handoffs New behavior: - Activation step 4: explicit by-name greeting using {user_name}, {communication_language} persisted for every turn (not just greeting) - Right-skill scan on first message before brain dump - Neutral defaults when config.yaml is missing; never block on it - Headless: Detection section + per-intent Inputs section + 'partial' status semantics + Update conflict-override rationale - Brownfield Update bootstraps .decision-log.md via subagent when absent - Reviewer Gate findings-overwhelm fix: tiered surfacing (verdict -> critical/high -> medium/low rolled into tail) - Discovery edge cases: conditional MVP question, persona/UJ push contextually triggered, working modes renamed as outcomes (Fast path / Coaching path) - Subagent discipline: Finalize step 2 return-format contract, step 5 structure->prose ordering, explicit no-subagent fallback Tests: - scripts/tests/test_render_validation_html.py (17 passing, covers grade thresholds, category mapping, stats, score-bar rendering) * refactor(bmad-prd): replace mechanical checklist+renderer with quality rubric and LLM-synthesized report The structural checklist + Python renderer produced mechanical pass/warn/fail reports that didn't speak to actual PRD quality, and additional reviewers (adversarial) wrote separate review-*.md files that never made it into the HTML. Replaces that pipeline with: - A judgment rubric across seven PRD-quality dimensions (decision-readiness, substance over theater, strategic coherence, done-ness clarity, scope honesty, downstream usability, shape fit) that adapts to stakes and PRD shape. Rubric walker writes review-rubric.md with per-dimension verdicts. - HTML skeleton with TEMPLATE_* placeholders the synthesis pass fills directly — no substitution engine, no Python. - Synthesis pipeline in references/validate.md: parent reads every review-*.md, fills the skeleton, writes validation-report.html plus markdown twin, opens via webbrowser. Folds every reviewer's findings into one report; grade derives from rubric verdicts and severity counts. - Drops scripts/render-validation-html.py and scripts/tests/ entirely. - finalize_reviewers defaults to empty (adversarial removed from defaults — too brutal and frequently wrong against PRDs; teams can append in override TOML). - Headless mode now writes both HTML and markdown; skips browser-open. * refactor(bmad-prd): faster working-mode entry, elicitation discipline, drop probing.md Discovery rewrite: Brain dump -> Stakes calibration -> Working mode -> mode-scoped work. Users in a hurry reach the Fast/Coaching choice in two or three turns instead of ten. Brain dump explicitly invites existing inputs (briefs, research, transcripts, prior PRD draft, design docs) alongside verbal context. Elicitation discipline made explicit: Discovery pulls the user's vision out, never inserts the LLM's. UJs and phasing must be user-articulated, not strawman-proposed for rubber-stamp. Coaching path now offers entry-point choice: Vision+Features (capability-first), Personas+Journeys (user-first), or let-me-suggest. Capability-thinkers walk features directly. Template framing in PRD Discipline: Essential Spine is the expected default, Adapt-In Menu is conditional, and the LLM is authorized to invent sections when concerns don't match any cluster. Concern scan beat in Discovery surfaces real domain concerns without forcing a fixed shape. Web grounding: light targeted use at load-bearing moments authorized; deep research is suggested to the user via dedicated research skills, accepting gracefully if declined. references/probing.md deleted; its load-bearing content was either LLM-default PM instincts or already covered by SKILL.md. Misroute list now includes bmad-workflow-builder for agent/custom-agent signals. * fix(bmad-prd): align opener with Fast path naming, normalize misroute list * refactor(bmad-prd, bmad-product-brief): bring skills to parity, default-on web research Cross-skill consistency fixes: - Brief renames {workflow.output_dir} -> {workflow.brief_output_path} and {workflow.output_folder_name} -> {workflow.run_folder_pattern} to match PRD's naming pattern. - Decision-log filename unified on .decision-log.md (dotfile convention) across both skills. - Brief picks up PRD's fallback on customization-resolve failure (read TOML directly instead of halt). - Brief picks up PRD's persistent_facts default that auto-loads project-context.md. - Brief greeting now enforces {communication_language} for the entire run, not just the greeting. PRD additions, propagated from brief: - File-roles paragraph in Conventions (boundary rules for .decision-log.md vs addendum.md; capture during conversation, not at finalize; audit/override never goes in addendum). - Greeting now tells the user they can invoke bmad-party-mode or bmad-advanced-elicitation at any point. - Create intent now writes prd.md with status: draft and creates the .decision-log.md skeleton at workspace init. - Resume-check on activation: scans prd_output_path for prior in-progress runs (status not final) and offers to resume. - Finalize Close sets status: final + updated date so resume-check can distinguish finalized from in-progress. - Stakes-calibrated length guidance in PRD Discipline. Web research, default-on for any scope: - Reframed external_sources lines in both skills to distinguish org-configured registry (internal tools) from generic web research; both fire on the same triggers. - New Research subagents (default) beat in PRD Discovery: spawn web-research subagents to ground the picture; AI especially where training data ages by the week. Subagent searches; parent receives a digest. Deep work routes to bmad-market-research / bmad-domain-research / bmad-technical-research. - Brief Discovery picks up the same posture in lighter form. * fix(bmad-prd, bmad-product-brief): drop phantom v2 callout, add Fast/Coaching to brief - Drop `[v2 — out of MVP]` from PRD validation rubric Dimension 5. It was flagged for absence but never instructed for use anywhere — the template uses `[NOTE FOR PM]` for v2/v3 deferrals, which is the de-facto convention. - Add Fast path / Coaching path working-mode choice to brief Discovery so the "I'm pitching tomorrow" user has an express option. Note that the opener's pressure-calibration philosophy primarily shapes Coaching path; Fast path swaps pushback for [ASSUMPTION] tags the user can correct in review. * refactor(bmad-prd): tighten Research subagents beat --- .../1-analysis/bmad-product-brief/SKILL.md | 29 +- .../bmad-product-brief/customize.toml | 21 +- .../2-plan-workflows/bmad-prd/SKILL.md | 107 ++++--- .../bmad-prd/assets/headless-schemas.md | 4 +- .../bmad-prd/assets/prd-template.md | 70 +++-- .../assets/prd-validation-checklist.md | 147 +++++++-- .../assets/validation-report-template.html | 253 +++++++++++---- .../2-plan-workflows/bmad-prd/customize.toml | 60 +++- .../bmad-prd/references/facilitation-guide.md | 79 ----- .../bmad-prd/references/headless.md | 39 ++- .../bmad-prd/references/validate.md | 97 ++++++ .../bmad-prd/references/validation-render.md | 58 ---- .../scripts/render-validation-html.py | 290 ------------------ 13 files changed, 616 insertions(+), 638 deletions(-) delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-prd/references/facilitation-guide.md create mode 100644 src/bmm-skills/2-plan-workflows/bmad-prd/references/validate.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-prd/references/validation-render.md delete mode 100644 src/bmm-skills/2-plan-workflows/bmad-prd/scripts/render-validation-html.py diff --git a/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md b/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md index b19fe626e..671079999 100644 --- a/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md +++ b/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md @@ -15,21 +15,21 @@ At the opening greeting, let the user know they can invoke `bmad-party-mode` for ## On Activation -1. Resolve customization: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. On failure, surface the diagnostic and halt. +1. Resolve customization: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. On failure, read `{skill-root}/customize.toml` directly and use defaults. 2. Execute each entry in `{workflow.activation_steps_prepend}` in order. 3. Treat every entry in `{workflow.persistent_facts}` as foundational context for the rest of the run. Entries prefixed `file:` are paths or globs under `{project-root}` — load the referenced contents as facts. All other entries are facts verbatim. -4. Note `{workflow.external_sources}` as a registry of external systems available for consultation when the conversation surfaces a relevant need — knowledge bases, internal MCP tools, reference systems. Do not query preemptively; consult each only when its directive matches the moment. If a named tool is unavailable at runtime, fall back to standard behavior and note the gap when relevant. +4. `{workflow.external_sources}` is an org-configured registry of internal tools (knowledge bases, MCP tools); consult them alongside generic web research on the same triggers in `## Discovery`, org tools preferred when their directive matches. If a named tool is unavailable at runtime, fall back to standard behavior and note the gap when relevant. 5. Load `{project-root}/_bmad/bmm/config.yaml` (and `config.user.yaml` if present). Resolve `{user_name}`, `{communication_language}`, `{document_output_language}`, `{planning_artifacts}`, `{project_name}`, `{date}`. -6. Greet `{user_name}` in `{communication_language}`. Detect intent (create / update / validate). If interactive and intent is unclear, ask; for headless behavior see `## Headless Mode`. +6. Greet `{user_name}` in `{communication_language}` — and stay in `{communication_language}` for every turn for the entire run, not just the greeting. Detect intent (create / update / validate). If interactive and intent is unclear, ask; for headless behavior see `## Headless Mode`. 7. Execute each entry in `{workflow.activation_steps_append}` in order. ## Intent Operating Modes -**Create.** A brief the user is proud of, that meets their needs, drawn out through real conversation — do not assume: instead converse and understand, and then help craft the best product brief for their needs. Begin in `## Discovery` before drafting; the brief comes after the picture is on the table. Shape follows the product and need. Treat `{workflow.brief_template}` as a starting structure, not a contract: drop sections that do not earn their place, add sections the product needs, reorder freely - create sections for specialized domains or concerns also as needed. The brief serves the product's story, not the template's shape. Bind `{doc_workspace}` to a fresh folder at `{workflow.output_dir}/{workflow.output_folder_name}/` and write `brief.md` there with YAML frontmatter (title, status, created, updated). For Update and Validate, `{doc_workspace}` is the existing folder of the brief being targeted. +**Create.** A brief the user is proud of, that meets their needs, drawn out through real conversation — do not assume: instead converse and understand, and then help craft the best product brief for their needs. Begin in `## Discovery` before drafting; the brief comes after the picture is on the table. Shape follows the product and need. Treat `{workflow.brief_template}` as a starting structure, not a contract: drop sections that do not earn their place, add sections the product needs, reorder freely - create sections for specialized domains or concerns also as needed. The brief serves the product's story, not the template's shape. Bind `{doc_workspace}` to a fresh folder at `{workflow.brief_output_path}/{workflow.run_folder_pattern}/` and write `brief.md` there with YAML frontmatter (title, status, created, updated). For Update and Validate, `{doc_workspace}` is the existing folder of the brief being targeted. -**Update.** Reconcile an existing brief with a change signal. Before proposing changes, read the brief, addendum, `decision-log.md`, and original inputs — and run the `## Discovery` posture against the change signal (a patch applied without context becomes drift). Surface conflicts with prior decisions before changing. Headless override: log the reversal to `decision-log.md`, then apply; halt `blocked` if intent is ambiguous. If the change is fundamental, offer Create instead of patching. +**Update.** Reconcile an existing brief with a change signal. Before proposing changes, read the brief, addendum, `.decision-log.md`, and original inputs — and run the `## Discovery` posture against the change signal (a patch applied without context becomes drift). Surface conflicts with prior decisions before changing. Headless override: log the reversal to `.decision-log.md`, then apply; halt `blocked` if intent is ambiguous. If the change is fundamental, offer Create instead of patching. -**Validate.** Honest critique against the brief's own purpose. Read the brief, the addendum if present, `decision-log.md`, and any original inputs first — a validation that ignores prior decisions, rejected ideas, or context the user supplied is shallow. Cite specific lines. Caveat what cannot be evaluated. Return inline — no separate file unless asked. Always offer to roll findings into an Update, even in headless mode — include `"offer_to_update": true` in the JSON status block. +**Validate.** Honest critique against the brief's own purpose. Read the brief, the addendum if present, `.decision-log.md`, and any original inputs first — a validation that ignores prior decisions, rejected ideas, or context the user supplied is shallow. Cite specific lines. Caveat what cannot be evaluated. Return inline — no separate file unless asked. Always offer to roll findings into an Update, even in headless mode — include `"offer_to_update": true` in the JSON status block. ## Headless Mode @@ -41,7 +41,7 @@ When invoked headless, do not ask. Complete the intent using what is provided, w "intent": "create", "brief": "{doc_workspace}/brief.md", "addendum": "{doc_workspace}/addendum.md", - "decision_log": "{doc_workspace}/decision-log.md", + "decision_log": "{doc_workspace}/.decision-log.md", "open_questions": [], "external_handoffs": [ {"directive": "Confluence upload", "tool": "corp:confluence_upload", "url": "https://confluence.corp/PROD/123", "status": "ok"} @@ -61,20 +61,27 @@ Omit keys for artifacts that were not produced. ## Discovery -Conversationally surface what the user brings, why this brief exists, and the domain — echo back how each shapes your approach. Open with space for the full picture: invite a brain dump and ask up front for any source material they already have (memo, deck, transcript, prior brief, slack thread). Read what exists first; ask only what is missing. After the dump, a simple "anything else?" often surfaces what they almost forgot. Drill into specifics only after the broad shape is on the table; premature granular questions interrupt the dump and miss the room. Get a read on stakes early (passion project, internal pitch, investor input, public launch), and let that calibrate how hard you push. Suggest research (web, competitive, market) only when the stakes warrant it. +Conversationally surface what the user brings, why this brief exists, and the domain — echo back how each shapes your approach. Open with space for the full picture: invite a brain dump and ask up front for any source material they already have (memo, deck, transcript, prior brief, slack thread). Read what exists first; ask only what is missing. After the dump, a simple "anything else?" often surfaces what they almost forgot. Drill into specifics only after the broad shape is on the table; premature granular questions interrupt the dump and miss the room. Get a read on stakes early (passion project, internal pitch, investor input, public launch), and let that calibrate how hard you push. During the dump, spawn web-research subagents to ground the picture — landscape, comparables, current state — AI especially, where training data ages by the week. Subagent searches; parent gets a digest. Deep work (full market sizing, exhaustive teardowns) → suggest `bmad-market-research` or `bmad-domain-research`. + +Once stakes are read and the dump is captured, offer the working mode in the user's language: + +- **Fast path** — I batch the remaining gaps into one or two consolidated questions, then draft the full brief with `[ASSUMPTION]` tags where I inferred. You review and we iterate. Best for "I'm pitching tomorrow." +- **Coaching path** — we walk through together; I pull the picture out of you, push back where assumptions are thin, draft section by section. Best for "I want a brief I'm proud of and time isn't the constraint." + +The workspace persists; stop and resume freely. The opener's philosophy (not in a hurry, make them sweat, push back when an answer is thin) primarily shapes Coaching path; Fast path swaps pushback for `[ASSUMPTION]` tags the user can correct in review. ## Constraints - **Right-size to purpose.** A passion project does not need investor-grade rigor. A VC pitch input does. Read the room. -- **Persistence is real-time.** Once Create intent is confirmed, the workspace (run folder, `brief.md` skeleton with `status: draft`, `decision-log.md`) exists on disk and the user knows the path. -- **File roles.** `decision-log.md` is canonical memory and audit trail — every decision, change, and override (including headless overrides) is recorded there as the conversation unfolds. `addendum.md` preserves user-contributed depth that belongs in a downstream document (PRD, architecture, solution design) or earned a place but does not fit the brief (rejected-alternative rationale, options-considered matrices, parked-roadmap context, technical constraints, in-depth personas, sizing data). Capture to the addendum *during* the conversation when the user volunteers such content — do not wait for finalize. Audit and override information never goes in the addendum. +- **Persistence is real-time.** Once Create intent is confirmed, the workspace (run folder, `brief.md` skeleton with `status: draft`, `.decision-log.md`) exists on disk and the user knows the path. +- **File roles.** `.decision-log.md` is canonical memory and audit trail — every decision, change, and override (including headless overrides) is recorded there as the conversation unfolds. `addendum.md` preserves user-contributed depth that belongs in a downstream document (PRD, architecture, solution design) or earned a place but does not fit the brief (rejected-alternative rationale, options-considered matrices, parked-roadmap context, technical constraints, in-depth personas, sizing data). Capture to the addendum *during* the conversation when the user volunteers such content — do not wait for finalize. Audit and override information never goes in the addendum. - **Continuity across sessions.** If a prior in-progress draft for this project exists, the user is offered to resume. - **Extract, don't ingest.** Source artifacts (provided by the user or discovered during the run — transcripts, brainstorms, research reports, code, web results, prior briefs) enter the parent conversation as relevance-filtered extracts, not loaded wholesale. Subagents do the extraction against the user's stated focus; the parent context stays lean. - **Length and coherence.** Aim for 1-2 pages — if it is longer, the detail belongs in the addendum. Structure in service of the product; downstream consumers (PRD workflow, etc.) read this, so coherent shape matters. ## Finalize -1. Decision log audit + addendum review: the user ends this step with an explicit, shared accounting of how the meaningful contents of `decision-log.md` were handled — captured in the brief, captured in `addendum.md` (which may already hold detail captured during the conversation — see `## Constraints` for what belongs there), or set aside as process noise. +1. Decision log audit + addendum review: the user ends this step with an explicit, shared accounting of how the meaningful contents of `.decision-log.md` were handled — captured in the brief, captured in `addendum.md` (which may already hold detail captured during the conversation — see `## Constraints` for what belongs there), or set aside as process noise. 2. Polish: apply each entry in `{workflow.doc_standards}` (a `skill:`, `file:`, or plain-text directive) to `brief.md` (and `addendum.md` if it exists). Run passes as parallel subagents - apply all doc standards to `brief.md` first, then `addendum.md` so we present a high-quality draft for the user to review and finalize. 3. External handoffs: execute each entry in `{workflow.external_handoffs}` to route artifacts beyond local files (Confluence, Notion, ticket systems, etc.) — each directive names the MCP tool and the fields it needs. Invoke the tool, capture any URLs or IDs returned, and surface them in the user message. If a named tool is unavailable, skip that handoff and flag it; local files always exist regardless. 4. Tell the user it is ready: local paths and external destinations (URLs returned from handoffs). Invoke `bmad-help` to suggest what next steps make sense in the bmad method ecosystem. diff --git a/src/bmm-skills/1-analysis/bmad-product-brief/customize.toml b/src/bmm-skills/1-analysis/bmad-product-brief/customize.toml index 757778799..d495c5931 100644 --- a/src/bmm-skills/1-analysis/bmad-product-brief/customize.toml +++ b/src/bmm-skills/1-analysis/bmad-product-brief/customize.toml @@ -23,11 +23,15 @@ activation_steps_append = [] # (standards, compliance constraints, stylistic guardrails). # Each entry is either a literal sentence, a skill prefixed with `skill:`, or a `file:`-prefixed path/glob # whose contents are loaded as facts. -# Default is empty. Common opt-ins (set in your team/user override TOML): -# "file:{project-root}/_bmad-output/planning-artifacts/project-context.md" # bmad-generate-project-context output -# "skill:acme-co:terms-and-conditions" # a skill that contains some relevant info to the documents that may be generated -# "Elvis has left the building" # generic agent instructions -persistent_facts = [] +# +# Default loads project-context.md if bmad-generate-project-context has produced one — this gives +# the facilitator persistent awareness of the project's tech, domain, and constraints without +# re-asking. Common opt-ins (set in team/user override TOML): +# "skill:acme-co:terms-and-conditions" # a skill that contains some relevant info +# "Elvis has left the building" # generic agent instruction +persistent_facts = [ + "file:{project-root}/**/project-context.md", +] # Executed when the workflow completes (after the user has been told the # brief is ready). Accepts either a string scalar (single instruction) @@ -39,9 +43,10 @@ on_complete = "" # to enforce a different structure (e.g. regulated-industry, investor-deck). brief_template = "assets/brief-template.md" -# Run folder location. The brief and optional addendum land inside `{output_dir}/{output_folder_name}/`. -output_dir = "{planning_artifacts}/briefs" -output_folder_name = "brief-{project_name}-{date}" +# Run folder location. The brief and optional addendum land inside `{brief_output_path}/{run_folder_pattern}/`. +# Resume-check scans `{brief_output_path}` for prior unfinished runs. +brief_output_path = "{planning_artifacts}/briefs" +run_folder_pattern = "brief-{project_name}-{date}" # Document standards applied to human-consumed docs at finalize. Each entry is # a `skill:`, `file:`, or plain-text directive; the parent LLM applies the diff --git a/src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md b/src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md index fdcebf66c..310b59be0 100644 --- a/src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md +++ b/src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md @@ -1,90 +1,87 @@ --- name: bmad-prd -description: Create, update, validate, or analyze a PRD. Use when the user wants help producing, editing, validating, or analyzing a PRD. +description: Create, update, or validate a PRD. Use when the user wants help producing, editing, or validating a PRD. --- # BMad PRD -## Overview +You are a master facilitator and coach helping the user create, edit, or validate a high quality PRD scoped to the level and rigor appropriate to their stated needs. Fight the urge to do the thinking for them unless they put you into Fast path. -You are an expert PM facilitator. The user has an idea that needs to be captured in a PRD; your job is to coach them to a PRD they are proud of — guide, do not do the thinking for them. Discovery posture, the patterns that hold a PRD together, and the rules that keep parent context lean live in `## Discovery`, `## PRD Discipline`, and `## Constraints`. +## Conventions -At the opening greeting, let the user know they can invoke the skills `bmad-party-mode` for multi-agent perspectives or `bmad-advanced-elicitation` for deeper exploration at any point. +- Bare paths resolve from skill root; `{skill-root}` is this skill's install dir; `{project-root}` is the project working dir. +- `{workflow.}` resolves to fields in `customize.toml`'s `[workflow]` table (overrides win per BMad merge rules). +- `{doc_workspace}` is the bound run folder. +- **File roles.** `.decision-log.md` is canonical memory and audit trail — every decision, change, and override (including headless overrides) is recorded there as the conversation unfolds. `addendum.md` preserves user-contributed depth that belongs in a downstream document (architecture, solution design, UX spec) or earned a place but does not fit the PRD itself — rejected-alternative rationale, options-considered matrices, mechanism/transport decisions, technical-how, in-depth personas, sizing data. Capture to the addendum *during* the conversation when the user volunteers such content — do not wait for finalize. Audit and override information never goes in the addendum. ## On Activation -1. Resolve customization: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. On failure, surface the diagnostic and halt. -2. Execute each entry in `{workflow.activation_steps_prepend}` in order. -3. Treat every entry in `{workflow.persistent_facts}` as foundational context. Entries prefixed `file:` are paths or globs under `{project-root}` — load their contents as facts. All others are facts verbatim. -4. Note `{workflow.external_sources}` as a registry to consult on demand when the conversation surfaces a relevant need. Do not query preemptively. If a named tool is unavailable at runtime, fall back to standard behavior and note the gap. -5. Load `{project-root}/_bmad/bmm/config.yaml` (and `config.user.yaml` if present). Resolve `{user_name}`, `{communication_language}`, `{document_output_language}`, `{planning_artifacts}`, `{project_name}`, `{date}`. -6. Detect mode and intent. If headless (no interactive user), read `references/headless.md` and follow it for the whole run with matched intent. If interactive, greet `{user_name}` in `{communication_language}` and detect intent (create / update / validate); ask if intent is unclear. -7. Execute each entry in `{workflow.activation_steps_append}` in order. +1. Resolve customization: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. On failure, read `{skill-root}/customize.toml` directly and use defaults. +2. Run `{workflow.activation_steps_prepend}`. Treat `{workflow.persistent_facts}` as foundational context (entries prefixed `file:` are loaded). `{workflow.external_sources}` is an org-configured registry of internal tools (knowledge bases, MCP tools); consult them alongside generic web research on the same triggers, org tools preferred when their directive matches. Research itself fires during Discovery — see **Research subagents**. +3. Load `{project-root}/_bmad/bmm/config.yaml` (+ `config.user.yaml` if present). Resolve `{user_name}`, `{communication_language}`, `{document_output_language}`, `{planning_artifacts}`, `{project_name}`, `{date}`. Missing keys → neutral defaults; never block. +4. If headless, follow `references/headless.md` for the whole run. Otherwise greet the user **by name** using `{user_name}` and **in their language** using `{communication_language}` — and stay in `{communication_language}` for every turn for the entire run, not just the greeting. In the greeting, let the user know that at any point they can invoke `bmad-party-mode` for multi-agent perspectives or `bmad-advanced-elicitation` for deeper exploration on a specific section. Then scan for misroute on the first message: if the signal points elsewhere (game → BMad GDS; express build → `bmad-quick-dev`; one-pager → `bmad-product-brief`; vet product idea → `bmad-prfaq`; agent skill or custom agent → `bmad-workflow-builder`), suggest they might want the other options before continuing. +5. Detect intent: **Create** (no PRD), **Update** (existing PRD), **Validate** (critique only). If ambiguous, ask. For Create intent, before binding a fresh workspace, scan `{workflow.prd_output_path}` for prior in-progress runs (folders matching `{workflow.run_folder_pattern}` whose `prd.md` frontmatter `status` is not `final`); if any exist, offer to resume rather than starting over. +6. Run `{workflow.activation_steps_append}`. -## Intent Operating Modes +## Intent Modes -**Create.** A PRD the user is proud of, drawn out through real conversation. Discovery first, drafting second. Bind `{doc_workspace}` to a fresh folder at `{workflow.output_dir}/{workflow.output_folder_name}/` and write `prd.md` there with YAML frontmatter (title, created, updated). Version and state transitions live in `decision-log.md`. For Update and Validate, `{doc_workspace}` is the existing folder of the PRD being targeted. When drafting is complete, proceed to `## Finalize`. +**Create.** Bind `{doc_workspace}` to `{workflow.prd_output_path}/{workflow.run_folder_pattern}/`. Write `prd.md` with YAML frontmatter (title, status, created, updated — initial `status: draft`), and create the `.decision-log.md` skeleton at the workspace root so subsequent decisions land in a known file. Tell the user the path. Run `## Discovery`, then `## Finalize`. -**Update.** Reconcile an existing PRD with a change signal. Orient via source extractors (see `## Constraints` → Extract, don't ingest) against the PRD, addendum, `decision-log.md`, and original inputs — then run the `## Discovery` posture against the change signal. Surface conflicts with prior decisions before changing. If the change is fundamental, offer Create instead of patching. When changes are applied, proceed to `## Finalize`. +**Update.** Reconcile the PRD with a change signal. Source-extract against PRD, addendum, `.decision-log.md`, and original inputs (extract, don't ingest). If `.decision-log.md` is missing, spawn a one-time bootstrap subagent to reverse-engineer a thin log from the PRD before continuing. Surface conflicts with prior decisions before applying. Then `## Finalize`. -**Validate** (or *analyze*). Critique an existing PRD against `{workflow.validation_checklist}`. Standalone — does NOT enter `## Finalize`. Orient via source extractors against `decision-log.md` and any original inputs to give the validator context. Spawn the validator subagent against `prd.md` (and `addendum.md` if present); produce findings and a validation report per `references/validation-render.md`. Always offer to roll findings into an Update. +**Validate** (or *analyze*). Critique without changing. Load `references/validate.md`. ## Discovery -Open with space for the full picture: invite a brain dump, inputs, ideas, WHY they are doing this. Read what exists first; ask only what is missing. After the dump, a simple "anything else?" often surfaces what they almost forgot. +Order: **Brain dump → Stakes calibration → Working mode → mode-scoped work.** Get to working mode fast — two or three turns, not ten. Users in a hurry must not be held hostage by upstream probing. -Before drafting, read the situation across four dimensions — they determine the PRD's shape: +**Brain dump.** Always the first move, even when the user opens with paragraphs of context (that is intake, not the dump). Ask for verbal context *and* any existing inputs they want you to read — product brief, research, customer transcripts, competitive analysis, prior PRD draft, design docs. Paths or paste; big docs are fine, you will subagent-extract. A simple "anything else?" surfaces what they almost forgot. -- **Stakes.** Calibrates rigor, section depth, and which adapt-in clusters apply. -- **Audience.** Drives tone, evidence requirements, and approval sections. -- **Existing inputs.** Existing artifacts mean those parts of the PRD reference, not relitigate. When project-context, prior PRDs, or existing UX/architecture are present, this is brownfield — frame Discovery around what is new or changing. -- **Downstream depth.** Whole spec for a small build, or top of a chain through UX → architecture → epics → stories? Affects how much the PRD encodes vs. defers. +**Research subagents (default).** During Discovery, spawn web-research subagents to ground the picture: what exists in the space, how comparables position themselves, current landscape. Subagent does the search; parent receives a digest. -**Right-skill check.** Once the situation is read, sanity-check that PRD is the best tool. Three cases where it isn't: +**Elicitation, not direction.** Discovery pulls the user's vision out; it does not insert yours. Open-ended "tell me about X" beats multiple choice. When you find yourself naming wedges, picking MVP cuts, or proposing phases, stop — you have crossed from elicitation into authoring. Hand the pen back. Infer-and-confirm ("I'm assuming X works like Y — right?") is fine; quizzing the user through a tree of LLM-shaped choices is not. -- **Games** → suggest `bmad-gds` for the Game Design Document. -- **Small scope + wants a captured artifact** (small tweak to an existing codebase, single doc to point at) → stay here and produce an *all-inclusive document*: lean spine plus inline Stories via the adapt-in Stories cluster. -- **Express implementation** (wants to build now, no planning chain or captured artifact needed) → suggest `bmad-quick-dev`. +**Stakes calibration.** One short probe before working mode: hobby / internal / launch — enough to calibrate rigor and section depth. Audience, Existing inputs, and Downstream depth fill in inside the chosen mode, not upstream of the choice. -Surface these honestly and let the user choose; if they prefer this skill anyway, proceed with the right-sized version. +**Working mode.** Offer the choice in the user's language: -Coach, do not quiz. Push hardest on PRD Discipline risks — unexamined assumptions, capability-vs-implementation confusion, term drift, scope creep, ambiguity for downstream readers. Suggest research if needed and have subagents use web search tools as needed. +- **Fast path** — I batch remaining gaps into one or two consolidated questions, then draft the full PRD with `[ASSUMPTION]` tags where I inferred. You review and we iterate. The initial quality depends on how much you gave me upfront. +- **Coaching path** — we walk PM-thinking sections together. Once chosen, I ask which entry point fits: **Vision + Features** (capability-first — for enterprise, dev products, internal tools, anyone who thinks in features), **Personas + Journeys** (user-first — for consumer, UX-heavy, multi-stakeholder products), or *let me suggest* based on what I heard. The chosen entry sets the section order. -**Working mode.** Once the situational read is complete, offer the user a choice before proceeding — one sentence per option: +The workspace persists; stop and resume freely. -- **Express:** resolve any remaining critical gaps in a short batch, then draft the full PRD at once. -- **Facilitative:** work through the sections that require PM thinking before drafting, using the techniques in `references/facilitation-guide.md`. Capture all decisions in the log, section to section. Draft after the key sections are walked. The goal is that the user has authored the thinking — not just answered intake questions. +**Concern scan.** As you read what the user gave you, name the concerns this product actually carries — compliance, integration density, operational SLAs, hardware constraints, public-API contracts, monetization, data governance, whatever applies. The list is open; recognize what's there, do not classify into a fixed shape. These concerns drive which template sections to pull in from the Adapt-In Menu and which to invent when no cluster names them. -In both modes, resolve decisions conversationally rather than silently deferring them into `[ASSUMPTION]` tags. Only use `[ASSUMPTION]` when the answer requires research or external input the PM cannot provide in the moment. +**User Journeys are captured, not authored.** When UJs are warranted (consumer / multi-stakeholder B2B / meaningful UX — drop or downscale for internal tooling with a single operator role, regulatory-only updates, hobby/solo, pure technical PRDs), prompt the user to narrate a real session — what the person does, in what order, where it lands — then structure the answer into UJ-N form and confirm. ## PRD Discipline -- **Features grouped, FRs nested.** Features open with behavioral description; FRs nested and numbered globally for stable IDs. Cross-cutting NFRs in their own section; skip traceability matrices. -- **Capabilities, not implementation.** FRs describe what users or systems can do, not how. Tech choices go in addendum. -- **No innovation theater.** Don't fabricate novelty; add a differentiation section only when Discovery surfaced something genuinely novel. -- **Personas, when used, are research-grounded or marked `[ILLUSTRATIVE]`.** Invented detail is *persona theater* — false specificity the team builds for. Personas must drive decisions; two to four max. -- **Domain awareness.** Regulatory or compliance constraints surface in the PRD, not deferred to architecture. -- **Right-size to purpose.** Section depth and adapt-in clusters follow project type and stakes — the template's adapt-in menu names the standard clusters. -- **Non-Goals explicit.** Pair with inline `[NON-GOAL for MVP]` and `[v2 — out of MVP]` callouts so omissions aren't silently assumed. -- **Never silently de-scope.** Nothing the user explicitly included drops without asking. Propose phasing; never impose it. -- **Counter-metrics named.** When Success Metrics is present, name what NOT to optimize. -- **Assumptions visible.** Inferences without direct user confirmation are tagged `[ASSUMPTION: ...]` inline and indexed at the end. -- **`[NOTE FOR PM]` callouts** at decision points the user deferred or left tension on. +**Shape.** Features grouped; FRs nested with globally numbered stable IDs. Cross-cutting NFRs in their own section; skip traceability matrices. Capabilities, not implementation — tech choices live in `addendum.md`. Treat `{workflow.prd_template}` as expert prior knowledge, not a checklist. The **Essential Spine** is the expected default — present it unless the product genuinely doesn't need a section, and when you drop one, do so for a reason a reviewer would agree with. The **Adapt-In Menu** is conditional: pull in the clusters the product's concerns need to best define the requirements. When the product carries a concern the menu doesn't name, invent the section — name it well, decide what belongs in it, place it where it serves the reader or the PRD. Reorder and combine for readability. Never include a section because it appears; never skip a concern because no template section covered it. Counter-metrics named when Success Metrics exist. -## Constraints +**Extract, don't ingest.** Source documents go to subagents for extraction; the parent assembles from extracts. Only load source documents into the parent context wholesale when no subagents are available. -- **Persistence is near real-time.** Create the workspace (`prd.md` skeleton, `decision-log.md`) on disk the moment Create intent is confirmed; tell the user the path. -- **File roles.** `decision-log.md` — every decision, change, and version transition, in real time. `addendum.md` — depth that doesn't fit PRD shape: rejected alternatives, technical detail, ops/cost, competitive analysis. Capture technical-how detail to addendum immediately when the user volunteers it. -- **Continuity across sessions.** If a prior draft exists in `{workflow.output_dir}`, offer to resume; surface open items first. -- **Extract, don't ingest.** Never load source documents into the parent context wholesale. Delegate to subagents to extract what's relevant; the parent assembles from extracts. -- **Downstream workflows run in fresh context.** This skill's output is `prd.md` (and optional `addendum.md`). Never invoke downstream workflows or produce separate handoff artifacts. +**Length scales with stakes.** Hobby / solo PRDs aim for about two pages. Internal tools land around five to eight. Launch and chain-top PRDs run as long as their FRs and concerns require. Whatever the length, detail that doesn't earn its place in the PRD's main narrative belongs in `addendum.md` — moving overflow there is correct; padding the PRD to look thorough is not. + +## Reviewer Gate + +Used by the Validate intent and at Finalize step 3. + +Assemble the menu: rubric walker against `{workflow.validation_checklist_template}` (the PRD quality rubric) + each entry in `{workflow.finalize_reviewers}` + any ad-hoc reviewers the artifact warrants. Stakes-calibrated — hobby/solo may run quietly or skip; higher stakes get the explicit all/subset/skip menu. + +Dispatch entries as parallel subagents against `prd.md` (and `addendum.md` if present) using the standard prefix convention (`skill:` / `file:` / plain text). Each writes its full review to `{doc_workspace}/review-{slug}.md` and returns ONLY a compact summary (verdict, top 2-5 findings, file path) — the parent never holds full review text. The rubric walker uses the prompt and output format in `references/validate.md`. If subagents are unavailable, run sequentially: write the file *before* anything else, then flush the review from working context. + +Surface findings tiered, never dumped. Lead with a one-sentence gate verdict, then walk critical + high findings; medium/low roll into a single tail ("plus N more in {file}"). Read the full `review-{slug}.md` only when the user drills into a specific finding. Per finding: autofix, discuss, defer to open items, or ignore. + +Under Validate intent, the parent additionally runs the synthesis pipeline in `references/validate.md` — folding every selected reviewer's output into a single HTML + markdown report and opening the HTML. ## Finalize -1. Decision log audit: walk `decision-log.md` with the user — each entry captured in PRD, in addendum, or set aside. -2. Input reconciliation: subagent per user-supplied input against `prd.md` + `addendum.md`; surface gaps, especially qualitative ideas (tone, voice, feel) the FR structure silently drops. Must happen before polish. -3. Discipline pass: validator subagent against `prd.md` with `{workflow.validation_checklist}`. Findings stay in-conversation — autofix obvious issues, ask on ambiguous ones. No report file is written. Resolve before polish. -4. Open-items review: triage all Open Questions, `[ASSUMPTION]` tags, and `[NOTE FOR PM]` callouts. Surface only phase-blockers one at a time; resolve before calling the PRD ready. Log deferred items to `decision-log.md`. If phase-blocking count is high, flag it. -5. Polish: apply `{workflow.doc_standards}` to `prd.md` and `addendum.md` via parallel subagents. -6. External handoffs: execute `{workflow.external_handoffs}` entries; surface returned URLs/IDs. Skip and flag unavailable tools. -7. Record finalization to `decision-log.md`. Share all artifact paths. Invoke `bmad-help` to share possible steps. +Tell the user the sequence in one sentence, then walk it. Polish goes last so it does not redo work after reviewer fixes. + +1. **Decision log audit.** Walk `.decision-log.md` with the user; each entry captured in PRD, in addendum, or set aside. +2. **Input reconciliation.** Subagent per user-supplied input against `prd.md` + `addendum.md`. Each writes its extract to `{doc_workspace}/reconcile-{slug}.md` and returns ONLY a compact summary (input name, gaps 2-5, file path). Surface gaps — especially qualitative ideas (tone, voice, feel) the FR structure silently drops. Must happen before polish. +3. **Reviewer pass.** Run `## Reviewer Gate`. Resolve before polish. +4. **Triage open items.** All Open Questions, `[ASSUMPTION]` tags, `[NOTE FOR PM]` callouts. Phase-blockers (would make the PRD unsafe for UX/architecture/epics) surfaced one at a time and resolved; non-blockers deferred with owner + revisit condition logged to `.decision-log.md`. If phase-blocker count is high, flag it. +5. **Polish.** Apply `{workflow.doc_standards}` to `prd.md` and `addendum.md` in declared order (structural passes before prose — prose should not polish soon-to-be-cut text). Parallelize across documents, sequential within. +6. **External handoffs.** Execute `{workflow.external_handoffs}`; surface returned URLs/IDs. Skip and flag unavailable tools. +7. **Close.** Set `prd.md` frontmatter `status: final` and `updated` to `{date}` so future invocations distinguish this PRD from in-progress drafts. Record finalization to `.decision-log.md`. Share artifact paths. Common next: `bmad-create-ux-design`, `bmad-create-architecture`, `bmad-create-epics-and-stories`; invoke `bmad-help` for authoritative routing. 8. Run `{workflow.on_complete}` if non-empty. diff --git a/src/bmm-skills/2-plan-workflows/bmad-prd/assets/headless-schemas.md b/src/bmm-skills/2-plan-workflows/bmad-prd/assets/headless-schemas.md index c70a02666..82c53e6f9 100644 --- a/src/bmm-skills/2-plan-workflows/bmad-prd/assets/headless-schemas.md +++ b/src/bmm-skills/2-plan-workflows/bmad-prd/assets/headless-schemas.md @@ -18,7 +18,7 @@ Every headless run ends with one of these payloads. Omit keys for artifacts not "intent": "create", "prd": "{doc_workspace}/prd.md", "addendum": "{doc_workspace}/addendum.md", - "decision_log": "{doc_workspace}/decision-log.md", + "decision_log": "{doc_workspace}/.decision-log.md", "open_questions": [], "assumptions": [], "external_handoffs": [ @@ -34,7 +34,7 @@ Every headless run ends with one of these payloads. Omit keys for artifacts not "status": "complete", "intent": "update", "prd": "{doc_workspace}/prd.md", - "decision_log": "{doc_workspace}/decision-log.md", + "decision_log": "{doc_workspace}/.decision-log.md", "changes_summary": "1-3 sentences describing what changed and why", "conflicts_with_prior_decisions": [], "open_questions": [], diff --git a/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-template.md b/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-template.md index 6efa2944b..2d2e265b1 100644 --- a/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-template.md +++ b/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-template.md @@ -1,8 +1,4 @@ -# PRD Template — A Menu, Not a Skeleton - -This is a menu of sections the facilitator picks from based on what the product, the stakes, the audience, and the existing inputs actually need. Hobby projects use the essential spine and stop. Enterprise initiatives, regulated submissions, and consumer launches add clusters from the adapt-in menu below. **Never include a section just because it appears here.** Drop, reorder, rename, combine — whatever the PRD needs. - ---- +# PRD Template ## Essential Spine *(almost always present)* @@ -34,15 +30,30 @@ updated: {YYYY-MM-DD} [Who this is explicitly not for in v1.] ### 2.4 Key User Journeys -*Named flows the product enables — one line each, numbered globally as UJ-1 through UJ-N for downstream traceability. Detailed flow design (steps, screens, edge flows) is the job of the UX workflow, not this PRD. Features in §4 may reference journeys by ID inline ("realizes UJ-3").* +*Named-persona narratives the product enables. Numbered globally as UJ-1 through UJ-N. FRs reference journeys by ID inline ("realizes UJ-3"); SMs may also cross-reference. If a UX doc already exists, mirror its UJ IDs here and point to the source.* -- **UJ-1** — [Named flow, one line: who does what, to what end.] -- **UJ-2** — ... +**Default shape:** a named scene with entry state, path, climax, and resolution. Each beat forces specificity the team would otherwise leave implicit — auth assumptions, screen order, what tells the user value landed. Read together as a short narrative; the example below shows the form. -[For hobby/utility projects, 1-3 journeys may be enough. For complex multi-feature products (onboarding, checkout, multi-step approvals), expand. For libraries/CLIs with minimal flow, reduce to a single line or collapse into §2.2 JTBD.] +- **UJ-1. {One-line title — persona doing the thing.}** + - **Persona + context:** one line, grounded enough to explain the *why*. + - **Entry state:** authenticated? which surface? coming from where? + - **Path:** 3-5 concrete beats — taps, screens, decisions. + - **Climax:** the moment value is delivered and how the user knows. + - **Resolution:** state they're left in, what's next. + - **Edge case** *(optional)*: one real failure mode and what the user does next. + + *Written out, that becomes:* + > **UJ-3. Priya checks the trip damage before she's even home.** + > Priya, budgeting on a single income with a new baby, finishes a grocery run and gets in the car. Already authenticated via biometric on a previous session. She opens the app, taps the FAB camera, and scans the receipt. The app OCRs the total and shows a single-screen overlay: this trip $84.20, weekly cap $250, $172.10 remaining, three days left in the week. She closes the app and drives home. **Edge case:** if she scanned a receipt earlier today, the app asks whether this replaces or adds to that trip before counting it against the cap. + +- **UJ-2. ...** + +**Scope dial:** +- **Lighter** — hobby/solo, library/CLI, or when the UJ is essentially a JTBD restated: a single sentence works (`{Persona}, {context}, {what they do and why}.`). +- **Heavier** — auth, multi-device handoff, complex navigation, or anything feeding downstream UX/architecture: add a numbered Flow, an Edge cases list, and a capability → FR mapping (`The system must {capability}. → FR-N`). ## 3. Glossary -*Downstream workflows and readers must use these terms exactly.* +*Downstream workflows and readers must use these terms exactly. FRs, UJs, and SMs use Glossary terms verbatim; introducing a synonym anywhere in the PRD is a discipline violation. If §4 introduces a new domain noun, add it to the Glossary in the same pass.* - **Term** — Definition. Relationships to other Glossary terms. Cardinality where relevant. - **Term** — ... @@ -53,11 +64,22 @@ updated: {YYYY-MM-DD} *Each subsection is a coherent feature: behavioral description first, FRs nested under it, optional feature-specific NFRs and notes. FRs are numbered globally (FR-1 through FR-N) so downstream artifacts have stable references even if features get reorganized. Reference user journeys by ID inline ("realizes UJ-2") where the chain matters.* ### 4.1 {Feature Name} -**Description:** [Behavioral narrative — how this feature works, who uses it, the user experience, edge cases. Use Glossary terms exactly. Embed inline `[ASSUMPTION: ...]` tags where you inferred without confirmation.] +**Description:** [Behavioral narrative — how this feature works, who uses it, the user experience, edge cases. Realizes UJ-X, UJ-Y. Use Glossary terms exactly. Embed inline `[ASSUMPTION: ...]` tags where you inferred without confirmation.] **Functional Requirements:** -- **FR-1** — [Actor] can [capability] [under conditions / with measurement]. -- **FR-2** — ... + +#### FR-1: {Short capability name} + +[Actor] can [capability] [under conditions]. Realizes UJ-X. + +**Consequences (testable):** +- {Specific testable condition, e.g. "System returns HTTP 429 when request rate exceeds 100/sec per merchant."} +- {Another testable condition.} + +**Out of Scope:** *(optional — what this FR explicitly does NOT cover)* +- {bound} + +#### FR-2: ... **Feature-specific NFRs:** *(only if any apply uniquely to this feature)* - Performance / security / accessibility / etc. specific to this feature. @@ -80,14 +102,16 @@ updated: {YYYY-MM-DD} ## 7. Success Metrics +*Each SM cross-references the FR(s) it validates. Counter-metrics counterbalance specific primary or secondary metrics.* + **Primary** -- Metric — definition, target. +- **SM-1**: Metric — definition, target. Validates FR-X, FR-Y. **Secondary** -- Metric — definition, target. +- **SM-2**: Metric — definition, target. Validates FR-Z. **Counter-metrics (do not optimize)** -- Metric — why this should *not* be optimized. +- **SM-C1**: Metric — why this should *not* be optimized. Counterbalances SM-1. [Length scales with stakes. Hobby/utility PRD: a single sentence may be enough ("Success: I use this weekly and don't abandon it after a month"). Public launch / enterprise: full quantitative breakdown with measurement methods. Counter-metrics are as load-bearing as primary metrics — they prevent the architect from optimizing the wrong thing and the dev from gaming the wrong target.] @@ -142,17 +166,3 @@ updated: {YYYY-MM-DD} ### Small-scope all-inclusive *(use when scope is 1-2 stories' worth and the user wants a single captured artifact — chosen during the Right-skill check in Discovery)* - **Stories** — story-level specs listed inline at the end of the doc. Each story: *"As a [persona], I can [action] [under conditions]. Acceptance: [testable criteria]."* Numbered Story-1, Story-2, ... for reference. Pair with very lean §1 Vision, §2 Target User (often just JTBD + one UJ), §3 Glossary (handful of terms), §4 Features (often a single feature), §6 MVP Scope (in/out very tight). The whole doc fits on a page or two and captures intent + implementable stories in one place. If the user doesn't want the captured artifact at all, `bmad-quick-dev` is the better path — this cluster is only for "I want a doc *and* the stories." ---- - -## Notes for the facilitator - -- **The essential spine is the floor, not the ceiling.** A hobby PRD might keep all ten sections short. An enterprise PRD layers many clusters from the adapt-in menu. -- **§3 Glossary before §4 Features.** Mechanics never introduce a new domain noun without adding it to the Glossary in the same pass. Persona, JTBD, and Journeys may use Glossary terms before §3 formally defines them — context is inferable; the Glossary is for downstream anchoring. -- **§2.4 Key User Journeys are brief.** One line each. Numbered globally (UJ-1 through UJ-N) so architecture, epics, stories, and tickets can reference them by stable ID. Detailed flow design happens in the UX workflow — not here. -- **§4 Features pattern at every scale.** Description → FRs nested → optional NFRs → optional notes. Hobby PRD: one short paragraph and three FRs per feature. Enterprise feature: multi-paragraph description, fifteen FRs, several feature-specific NFRs, open questions. Same shape, different depth. -- **`[ASSUMPTION]`, `[NON-GOAL]`, `[v2 — out of MVP]`, `[NOTE FOR PM]` callouts are first-class.** They signal to downstream readers and the next session of work. Every `[ASSUMPTION]` lands in §9 Assumptions Index. -- **When UX is *input* to the PRD** (journeys already designed elsewhere): §2.4 names the journeys by ID and points to the existing UX doc. Reference, do not duplicate. -- **When UX is *output* of the PRD** (no UX work yet — downstream `bmad-create-ux-design` will produce it): §2.4 captures the PM's intent on which journeys exist; UX elaborates them into detailed flows downstream. -- **§7 Success Metrics scales with stakes** but is always present. Counter-metrics matter as much as primary metrics — they shape what NOT to optimize. -- **Small-scope all-inclusive option.** When scope is genuinely 1-2 stories and the user wants a single artifact instead of running a separate `bmad-create-story` workflow, add the adapt-in *Stories* cluster: lean §1-§6 plus inline §Stories at the end. The whole doc fits on a page or two. This is a valid PRD shape for tiny work — don't apologize for it. -- **Adapt the section numbering.** The spine uses 0-9; adapt-in additions slot in wherever they read best (e.g., Aesthetic & Tone before §3 if branding is foundational, Compliance after §5 Non-Goals, Constraints & Guardrails between Features and Non-Goals, Stories at the very end after Assumptions Index). diff --git a/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-validation-checklist.md b/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-validation-checklist.md index a6b3cbef9..616c581d8 100644 --- a/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-validation-checklist.md +++ b/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-validation-checklist.md @@ -1,30 +1,135 @@ -# PRD Validation Checklist +# PRD Quality Rubric -Loaded by the PRD validator subagent. For each item, return `{id, status: pass|fail|warn|n/a, severity: low|medium|high|critical, location, note}`. Skip items not applicable to the agreed stakes. Cite specific PRD locations — never abstract criticism. +A judgment rubric for the validator subagent. Walk the PRD with these dimensions in mind and write substantive findings — not box-ticking. The goal is a review that tells the user whether this PRD is *good*, not whether it has the right section headers. -## Quality +Most PRDs do not need every dimension scrutinized equally. Calibrate to the agreed stakes, the PRD's shape (consumer product, internal tool, regulatory update, technical capability spec), and what the PRD itself is trying to do. Be specific — cite locations, quote phrases, name what's missing. Abstract criticism is failure of nerve. -- **Q-1. Information density.** Sentences carry weight. Flag filler, hedging, and conversational padding. -- **Q-2. Measurability.** Where measurement matters, FRs and Success Metrics are measurable; subjective adjectives flagged. Counter-metrics named when Success Metrics exist. -- **Q-3. Traceability.** Where the chain matters, FRs name their link to a user journey or success criterion inline. -- **Q-4. Vision and JTBDs concrete.** Vision is specific and stands alone — not a generic feature list. JTBDs are audience-grounded, not abstract. -- **Q-5. Non-Goals explicit.** A Non-Goals section is present where it would do real work; inline `[NON-GOAL]` and `[v2]` callouts where omissions would otherwise be silently assumed. -- **Q-6. Dual-audience and self-contained.** Each section makes sense pulled out alone (cross-references via Glossary terms, not "see above"); the PRD is readable by humans and structured cleanly for downstream source-extraction by UX, architecture, and story-creation workflows. +## How to use this rubric -## Discipline +1. Read the full PRD (and addendum.md if present) before writing anything. +2. For each of the seven dimensions below, form a judgment — *strong / adequate / thin / broken* — backed by specifics from the PRD. +3. Write findings only where they add information. A `strong` dimension may need no findings; a `broken` one needs concrete, fixable ones. +4. Severity ranks impact on the PRD's usefulness, not how easy the fix is. A vague Vision statement is *critical* even though it's a one-paragraph fix; a glossary drift might be *low* even though it appears in many places. +5. The overall verdict is your synthesis — 2–3 sentences that name what holds up and what's at risk. Earn it with the dimension judgments. -- **D-1. Capabilities, not implementation.** FRs describe what users/systems can do, not how. Flag technology names, library choices, architecture decisions. -- **D-2. Input fidelity.** Requirements from input documents (brief, research, prior PRD) are still in scope or explicitly handled via Non-Goals or `[ASSUMPTION]`. -- **D-3. Personas grounded.** If personas exist, they are research-grounded or marked `[ILLUSTRATIVE]`. Each persona drives at least one decision. -- **D-4. No innovation theater.** Novelty claims are real, not invented. +## Output format -## Structural integrity +Write findings to `{doc_workspace}/review-rubric.md`: -- **S-1. Glossary integrity.** Every domain noun is defined in the Glossary and used identically throughout. Flag drift (case, plural, synonyms) and candidate missing-term entries. -- **S-2. ID continuity.** FR / UJ / Story IDs are contiguous, unique, and cross-references resolve. -- **S-3. Assumptions Index.** Every inline `[ASSUMPTION: ...]` appears in the Assumptions Index and vice versa. -- **S-4. Open-items density.** Count Open Questions + `[ASSUMPTION]` + `[NOTE FOR PM]`. Red flag if density is high relative to the agreed stakes. +```markdown +# PRD Quality Review — {prd_name} -## Stakes-gated +## Overall verdict +[2–3 sentences. What holds up, what's at risk. Earned by the dimension judgments below.] -- **STK-1. Required sections.** The PRD includes the sections the agreed stakes and product type warrant. +## Decision-readiness — [strong | adequate | thin | broken] +[1–3 paragraphs of judgment with specific PRD locations.] + +### Findings +- **[critical|high|medium|low]** [Title] (§ location) — [Note]. *Fix:* [suggested fix]. + +## Substance over theater — [verdict] +... + +(repeat for each dimension) + +## Mechanical notes +[Glossary drift, ID continuity, broken cross-refs, Assumptions Index roundtrip. Lighter weight — these matter for downstream but don't drive the overall verdict.] +``` + +## The seven dimensions + +### 1. Decision-readiness + +Can a decision-maker act on this PRD? Are the trade-offs surfaced honestly, or has the PRD smoothed everything to neutral? Would someone pushing back find their objection acknowledged or dodged? + +Look for: +- Decisions that are stated as decisions, not buried as "considerations." +- Trade-offs named with what was given up, not just what was chosen. +- Open Questions that are actually open — not rhetorical questions with an answer in the next sentence. +- `[NOTE FOR PM]` callouts at real tensions, not at safe checkpoints. + +Red flag: a PRD where every choice "balances" everything, every NFR is "important," every persona "values" the product. + +### 2. Substance over theater + +Is the content earned, or is it furniture? Distinguish: + +- **Persona theater** — Personas that don't drive a single decision in the PRD. More than four personas. Personas whose only function is to make the PRD look thorough. +- **Innovation theater** — claimed novelty that isn't novel. Differentiation sections written because the template had one, not because Discovery surfaced something. +- **NFR theater** — copied boilerplate ("system must be scalable / secure / reliable") without product-specific thresholds. +- **Vision theater** — a Vision statement that could swap into any PRD in this category without change. + +Flag what reads like furniture, even if it's well-written furniture. + +### 3. Strategic coherence + +Does the PRD have a thesis? Do the features serve a unified arc, or is it a list of capabilities someone wanted? + +Look for: +- A stated thesis the PRD bets on (problem framing, user insight, market move). +- Feature prioritization that follows from the thesis — not from "what's easy first." +- Success Metrics that validate the thesis, not metrics that just measure activity (DAU/MAU when the thesis is about engagement quality is a tell). +- Counter-metrics named when SMs exist. +- Coherent MVP scope kind — problem-solving, experience, platform, or revenue — with scope logic that matches. + +Red flag: a PRD that reads as a backlog with section headings. + +### 4. Done-ness clarity + +Would an engineer reading this PRD know what "done" looks like for each FR? + +Look for: +- FRs with at least one testable consequence per FR — verifiable condition, measurable outcome. +- "System handles X gracefully," "reasonable performance," "user-friendly" — flag every one. +- Acceptance criteria implied or explicit. Sometimes the FR's consequences carry this; sometimes the PRD genuinely needs an Acceptance section. +- For non-functional sections (UX, performance, security): bounds, not adjectives. + +This is the dimension downstream story creation will lean on hardest. Be unforgiving here. + +### 5. Scope honesty + +Are omissions explicit, or is the reader meant to infer them? + +Look for: +- A Non-Goals section where it would do real work — and `[NON-GOAL for MVP]` callouts where omissions could be silently assumed. +- `[ASSUMPTION: …]` tags on inferences the user didn't directly confirm, indexed at the end. +- `[NOTE FOR PM]` callouts at deferred decisions and unresolved tensions. +- De-scoping proposed honestly, not done silently. + +Open-items density: count Open Questions + `[ASSUMPTION]` + `[NOTE FOR PM]` callouts relative to stakes. High counts on a low-stakes PRD is fine; high counts on a green-light-to-build PRD is a blocker. + +### 6. Downstream usability + +If this PRD feeds UX, architecture, or story creation, can those workflows source-extract from it cleanly? + +Look for: +- Glossary present; every domain noun used identically across FRs, UJs, SM definitions. +- FR / UJ / SM IDs contiguous, unique, and cross-references that resolve. +- Each section makes sense pulled out alone — cross-references via Glossary terms, not "see above." +- UJs each name a persona from §2 by exact label; no floating UJs. + +For standalone PRDs (no downstream), this dimension matters less — say so. + +### 7. Shape fit + +Has the PRD been forced into a shape that doesn't match the product? + +- Consumer product / multi-stakeholder B2B / meaningful UX → UJs and personas are load-bearing. +- Internal tool, single-operator role → capability spec shape; UJs may be overhead; SMs may be operational rather than user-facing. +- Regulatory or compliance update → constraint traceability is non-negotiable; UJs may be irrelevant. +- Hobby / solo → rigor light, substance bar still applies. +- Brownfield → existing-code references must be accurate; new UJs and existing UJs must be distinguished. +- Chain-top (feeds UX → architecture → stories) → downstream usability matters more; standalone PRDs can be lighter on traceability. + +Flag PRDs that are over-formalized (UJ density for a single-operator tool) or under-formalized (consumer product with no personas or UJs). + +## Mechanical notes + +Cover these as a tail section, not a primary dimension. They matter for downstream but don't drive the verdict on whether the PRD is good. + +- Glossary drift (case, plural, synonyms across the PRD). +- ID continuity (gaps, duplicates, unresolved cross-references). +- Assumptions Index roundtrip (every inline `[ASSUMPTION]` indexed; index entries all appear inline). +- UJ persona linkage (each UJ names a defined persona by exact label). +- Required sections present for the agreed stakes and product type. diff --git a/src/bmm-skills/2-plan-workflows/bmad-prd/assets/validation-report-template.html b/src/bmm-skills/2-plan-workflows/bmad-prd/assets/validation-report-template.html index 1e3136607..72e727162 100644 --- a/src/bmm-skills/2-plan-workflows/bmad-prd/assets/validation-report-template.html +++ b/src/bmm-skills/2-plan-workflows/bmad-prd/assets/validation-report-template.html @@ -1,8 +1,30 @@ + -PRD Validation: $prd_name +PRD Validation: TEMPLATE_PRD_NAME + + +
+ + +
+
+

TEMPLATE_UX_SPEC_NAME — UX Design Validation Report

+
TEMPLATE_UX_SPEC_PATH
+
+
+ + +
+

TEMPLATE_SYNTHESIS_PARAGRAPH

+
+ + +
+
+
TEMPLATE_CATEGORY_NAME
+
TEMPLATE_VERDICT_TEXT
+
+ +
+ + +
+
+ +

TEMPLATE_CATEGORY_NAME

+ TEMPLATE_VERDICT_TEXT +
+
+
+

TEMPLATE_DIMENSION_JUDGMENT

+
+
+
+ +
+
+ TEMPLATE_SEVERITY +

TEMPLATE_FINDING_TITLE

+ TEMPLATE_LOCATION +
+
TEMPLATE_FINDING_NOTE
+
Fix: TEMPLATE_SUGGESTED_FIX
+
+
+
+
+ + +
+
+ +

Accessibility review

+ TEMPLATE_REVIEWER_SOURCE_FILE +
+
+
+

TEMPLATE_REVIEWER_PREAMBLE

+
+
+
+
+
+ TEMPLATE_SEVERITY +

TEMPLATE_FINDING_TITLE

+ TEMPLATE_LOCATION +
+
TEMPLATE_FINDING_NOTE
+
Fix: TEMPLATE_SUGGESTED_FIX
+
+
+
+
+ + +
+

Mechanical notes

+
    +
  • TEMPLATE_MECHANICAL_NOTE
  • +
+
+ +
+
+ Rubric: TEMPLATE_RUBRIC_PATH + Generated: TEMPLATE_TIMESTAMP +
+
+
+ + diff --git a/src/bmm-skills/2-plan-workflows/bmad-ux/customize.toml b/src/bmm-skills/2-plan-workflows/bmad-ux/customize.toml new file mode 100644 index 000000000..a6a0fe0f8 --- /dev/null +++ b/src/bmm-skills/2-plan-workflows/bmad-ux/customize.toml @@ -0,0 +1,100 @@ +# DO NOT EDIT -- overwritten on every update. +# +# Workflow customization surface for bmad-ux. +# Overrides: +# {project-root}/_bmad/custom/bmad-ux.toml (team) +# {project-root}/_bmad/custom/bmad-ux.user.toml (personal) +# Merge rules: scalars override, arrays append. + +[workflow] + +# Steps to run before/after standard activation. Append-only. +activation_steps_prepend = [] +activation_steps_append = [] + +# Persistent facts loaded at activation and kept in mind for the run. +# Entries: literal sentence, `skill:NAME`, or `file:PATH` (glob ok). +persistent_facts = [ + "file:{project-root}/**/project-context.md", +] + +# Runs at workflow completion. String or array of instructions. +on_complete = "" + +# Reference DESIGN.md spines the distillation subagent reads to anchor shape +# and editorial richness. Convention-compliant with the Google Labs DESIGN.md +# spec (https://github.com/google-labs-code/design.md). Append entries via +# override TOML to seed an org-specific canonical aesthetic. +# Each entry: `file:PATH` (or bare relative path, resolved skill-relative). +design_md_examples = [ + "assets/design-example-mobile.md", + "assets/design-example-shadcn.md", + "assets/design-example-editorial.md", +] + +# Reference EXPERIENCE.md spines for the behavioral/flow/IA layer. Each entry: +# `file:PATH` (or bare relative path, resolved skill-relative). +experience_md_examples = [ + "assets/experience-example-mobile.md", + "assets/experience-example-shadcn.md", +] + +# Design handoff targets — external tools that can take over the design / +# visual identity work. The user runs the tool externally and saves outputs +# (whatever the tool produces — DESIGN.md, Figma files, React components, +# HTML mocks) to {doc_workspace}. +# Each entry: `tool:NAME: `, `skill:NAME`, or plain-text descriptor. +# Default: Google Stitch (emits DESIGN.md + per-screen HTML). Other producers: +# Vercel v0, Figma, Galileo, Anima, internal generators. +design_handoffs = [ + "Google Stitch (https://stitch.withgoogle.com) — emits DESIGN.md + per-screen HTML. Paste assembled prompt; save outputs to {doc_workspace}.", +] + +# HTML skeleton filled in by the validation synthesis pass. +validation_report_template = "assets/validation-report-template.html" + +# Run folder. DESIGN.md, EXPERIENCE.md, .decision-log.md, .working/ +# (creative-tool artifacts), imports/ (user-supplied screens / brand decks / +# Figma exports / sketches), optional mockups/ and wireframes/ (promoted +# artifacts), optional validation-report.* all land inside +# {ux_output_path}/{run_folder_pattern}/. +ux_output_path = "{planning_artifacts}/ux-designs" +run_folder_pattern = "ux-{project_name}-{date}" + +# Creative tools registry. Collaborative renderers invoked on demand during +# Discovery and at Finalize. Entry forms: `file:PATH`, `skill:NAME`, +# `tool:MCP_TOOL: `, or plain text. Defaults ship for HTML color +# themes, HTML design directions, Excalidraw wireframes (Discovery), and +# 1:1 HTML key-screen mockups (Finalize). Working artifacts land in +# {doc_workspace}/.working/; finalize promotes those with lasting reference +# value to mockups/ or wireframes/. See references/creative-tools.md. +creative_tools = [ + "file:assets/color-themes.md", + "file:assets/design-directions.md", + "file:assets/excalidraw-wireframe.md", + "file:assets/key-screens.md", +] + +# Polish passes applied to DESIGN.md and EXPERIENCE.md at finalize. +# Entries: `skill:NAME`, `file:PATH`, or plain text directive. +# Suggested order: structural → content/voice → prose mechanics. +doc_standards = [ + "skill:bmad-editorial-review-structure", + "skill:bmad-editorial-review-prose", +] + +# Information retrieval registry. Consulted on demand when the conversation +# surfaces a matching need. Distinct from creative_tools (artifact production). +# Example: "When researching component patterns, consult corp:design_system_search." +external_sources = [] + +# Routes outputs beyond local files at Finalize. Returned URLs/IDs surfaced +# to the user. Unavailable tools skipped and flagged. +# Example: "Upload DESIGN.md to Confluence via corp:confluence_upload (space_key='DESIGN')." +external_handoffs = [] + +# Reviewers spawned at Finalize step 4 and at Validate intent, alongside +# the rubric walker. Entries: `skill:NAME`, `file:PATH`, or plain text. +# Common ad-hoc add (judged by the skill): accessibility-focused reviewer +# for consumer / regulated work. +finalize_reviewers = [] diff --git a/src/bmm-skills/2-plan-workflows/bmad-ux/references/creative-tools.md b/src/bmm-skills/2-plan-workflows/bmad-ux/references/creative-tools.md new file mode 100644 index 000000000..f32f16117 --- /dev/null +++ b/src/bmm-skills/2-plan-workflows/bmad-ux/references/creative-tools.md @@ -0,0 +1,19 @@ +# Creative Tools + +`{workflow.creative_tools}` is a registry of collaborative renderers invoked on demand when seeing options helps the user decide. Entries follow the standard prefix convention: `skill:NAME`, `file:PATH`, `tool:MCP_TOOL_NAME: `, or plain-text directive. + +Defaults ship for HTML color themes, HTML design directions, Excalidraw wireframes (Discovery), and 1:1 HTML key-screen mocks (Finalize). Teams append more via override TOML — Figma MCP, custom skills, prompt-based mood boards. + +## When to invoke + +Decision moments where a visual beats more conversation: picking color tokens, picking a visual personality among directions, sketching IA, mocking a tricky flow. Fast-path users typically skip; coaching-path users typically lean in. Read the room. + +## Artifact handling + +Every renderer writes to `{doc_workspace}/.working/` with a descriptive filename. `.working/` is the audit trail and survives the run. At Finalize, the facilitator walks `.working/` with the user and promotes artifacts with lasting reference value to `{doc_workspace}/mockups/` (HTML anchoring a brand or layout decision) or `{doc_workspace}/wireframes/` (Excalidraw a dev would glance at). Bar for promotion: *would a future reader of `DESIGN.md` or `EXPERIENCE.md` open this?* Default is leave-in-`.working/`. + +## Renderer contract + +The parent passes the subagent: current `.decision-log.md`, relevant prior `.working/` captures, the user's stated intent for this pass, the output path. The subagent writes its artifact under `.working/` and returns ONLY a compact summary (file path, one line per variant, mode coverage). Parent never holds the full payload. + +For HTML, open in browser when interactive: `python3 -c "import webbrowser, pathlib; webbrowser.open(pathlib.Path('PATH').resolve().as_uri())"`. Skip in headless. diff --git a/src/bmm-skills/2-plan-workflows/bmad-ux/references/design-md-spec.md b/src/bmm-skills/2-plan-workflows/bmad-ux/references/design-md-spec.md new file mode 100644 index 000000000..f685b2bab --- /dev/null +++ b/src/bmm-skills/2-plan-workflows/bmad-ux/references/design-md-spec.md @@ -0,0 +1,50 @@ +# DESIGN.md Spec — Working Reference + +Source of truth: [google-labs-code/design.md](https://github.com/google-labs-code/design.md) (Apache 2.0, Google Labs, April 2026). This file is a working summary; the URL wins on conflict. + +## Structure + +YAML frontmatter (machine-readable tokens) + markdown body (human-readable rationale, prose sections). + +## Frontmatter tokens + +| Key | Type | Notes | +|---|---|---| +| `name` | string | Required. Brand or system name. | +| `description` | string | One-line statement of what this system is. | +| `colors` | flat object | Kebab-case keys. Values are hex strings (`'#FBF9F4'`). | +| `typography` | nested object | Each value: an object with any subset of `fontFamily`, `fontSize`, `fontWeight`, `lineHeight`, `letterSpacing`. | +| `rounded` | object | Scale names (`sm`, `md`, `lg`, `xl`, `full`, `DEFAULT`) → CSS dimensions. `full` is conventionally `9999px`. | +| `spacing` | object | Scale levels (`'1'`, `'2'`, ...) or named tokens (`gutter`, `margin-mobile`, `editorial-gap`) → dimensions. | +| `components` | object | Component-name → object of component tokens mapped to values or `{path.to.token}` references. | + +## Body sections (omittable, order-locked when present) + +1. **Brand & Style** — Aesthetic posture in prose. The editorial voice — what *kind* of thing this is. +2. **Colors** — Per-color story. Why each exists, where it's used, what it's *not* used for. +3. **Typography** — Type roles, ramp, and rules. Platform conventions noted semantically when inherited. +4. **Layout & Spacing** — Spacing scale narrative, grid behavior, margins, gutters, breakpoint rules. +5. **Elevation & Depth** — Shadow language and tonal layering rules. +6. **Shapes** — Corner radii rules and the aesthetic logic behind them. +7. **Components** — Per-component visual specs: anatomy, color usage, sizing, state appearance. +8. **Do's and Don'ts** — Hard visual rules — what to do, what to avoid. + +Sections may be omitted when not relevant; order is locked when present. + +## Cross-reference syntax + +`{path.to.token}` used in prose and inside component objects to reference frontmatter tokens. Examples: + +- `{colors.primary}` +- `{typography.body.fontSize}` +- `{rounded.md}` +- `{spacing.4}` + +The path follows the YAML structure. + +## Common patterns + +- **Light/dark mode.** Either separate kebab-case tokens (`surface-base` / `surface-base-dark`) or separate DESIGN.md files per mode. The spec allows either; pick the form that reads cleanest for the product. +- **Platform conventions.** When inheriting from native platforms (iOS UIKit, Android Compose, Apple Human Interface Guidelines), use a `note` field instead of literal values: `{ note: 'iOS Title 1 · Android Headline Small' }`. The spec is the spec; the platform owns the rendered values. +- **UI-system inheritance.** When inheriting from shadcn / MUI / Tailwind / internal design system, reference the system's tokens by name rather than restating values. DESIGN.md specifies only the deltas (brand color overrides, typography swaps, component customizations). +- **Component tokens.** The `components` frontmatter entry maps each named component (e.g., `button-primary`) to its specific token values. Use `{path.to.token}` references freely; the resolver flattens at consumption time. diff --git a/src/bmm-skills/2-plan-workflows/bmad-ux/references/headless.md b/src/bmm-skills/2-plan-workflows/bmad-ux/references/headless.md new file mode 100644 index 000000000..bc4b3edde --- /dev/null +++ b/src/bmm-skills/2-plan-workflows/bmad-ux/references/headless.md @@ -0,0 +1,37 @@ +# Headless Mode + +Load this file when invoked headless. Follow it for the whole run. + +## Detection + +Headless when any of: caller sets `headless: true` (or harness equivalent); invocation is from another skill or non-interactive runner; `{workflow.activation_steps_prepend}` declares it; first message is an automation context pre-supplying inputs. Ambiguous → default interactive. + +## Inputs + +Free-form structured payload in the first message: + +- `intent` — `"create"`, `"update"`, or `"validate"`. If absent, infer from the artifact set. +- **Create**: any source spec (PRD, brief, requirements list, design-thinking output, prior UX — text, path, or URL) plus brand / platform / accessibility notes; `doc_workspace` if a specific run folder is required. +- **Update**: existing workspace containing `DESIGN.md` + `EXPERIENCE.md` (or path to either) + change signal. +- **Validate**: existing workspace containing `DESIGN.md` + `EXPERIENCE.md` (or path to either). Workspace defaults to the spines' containing directory. + +Inferences → `assumptions[]`. Gaps needing a human decision → `open_questions[]`. Do not invent persona, brand, accessibility, or scope detail. + +Creative tools default off in headless. Caller can override; artifacts land in `.working/` and are not promoted unless the caller signals. + +## Behavior + +Do not ask. Do not greet. Complete the intent from what's provided, what exists in `{doc_workspace}`, or what you can discover. If intent stays ambiguous after inference, halt with `status: "blocked"` and a one-sentence `reason`. + +`status`: +- `"complete"` — stands on its own. +- `"partial"` — artifact produced but `open_questions[]` non-empty or critical inputs inferred. +- `"blocked"` — no artifact produced. + +End with JSON matching `assets/headless-schemas.md`. `intent` reflects detected intent. Omit keys for artifacts not produced. + +## Mode-specific overrides + +**Update.** Apply the change. Log to `.decision-log.md` with rationale. Surface conflicts in `conflicts_with_prior_decisions[]`. + +**Validate.** Always write both `validation-report.html` and `validation-report.md` regardless of finding count. Always include `"offer_to_update": true`. Skip the browser-open step. diff --git a/src/bmm-skills/2-plan-workflows/bmad-ux/references/validate.md b/src/bmm-skills/2-plan-workflows/bmad-ux/references/validate.md new file mode 100644 index 000000000..48fc230cf --- /dev/null +++ b/src/bmm-skills/2-plan-workflows/bmad-ux/references/validate.md @@ -0,0 +1,115 @@ +# Validate + +Critique an existing spine pair (`DESIGN.md` + `EXPERIENCE.md`) or any format of UX the user provides, without changing it. The synthesis pipeline below is also used at the Reviewer Gate during Create / Update Finalize. + +## Orient + +Subagent-extract from `.decision-log.md`, sources in frontmatter, `imports/`, `mockups/`, `wireframes/`, `DESIGN.md`, `EXPERIENCE.md`. Parent assembles from extracts. + +## Reviewer Gate + +**Opt-in.** Reviewers are costly. At Finalize, ask first if the user wants to run UX validation with multiple subagent lenses. Default offered, easy skip. At Validate intent, skip that question, the user already invoked it. + +**Lens menu.** UNLESS HEADLESS MODE: Always present the lens picks before dispatching. Build the menu from: rubric walker (this file) + `{workflow.finalize_reviewers}` + ad-hoc reviewers the skill judges relevant. The user picks all, a subset, or none. Only picked lenses dispatch. + +Rubric walker prompt: + +> Validate the spine pair (`DESIGN.md` + `EXPERIENCE.md`) as the contract for downstream consumers (architecture, story-dev — human or AI). Can a consumer source-extract cleanly, with every reference resolving and every load-bearing decision committed? Read `{workflow.design_md_examples}` and `{workflow.experience_md_examples}` first. +> +> **Pass 1 — mechanical coverage.** Per category: extract, then list misses with location citations. No misses = **strong**. +> +> 1. **Flow coverage** (EXPERIENCE.md). Sources frontmatter → extract every UJ / requirement name. Verify each has a Key Flow with named protagonist, numbered steps, a climax beat, and a failure path where applicable. +> +> 2. **Token completeness** (DESIGN.md). Extract every token in the YAML frontmatter and every `{path.to.token}` reference in the prose. Verify each defined (see `references/design-md-spec.md` for type rules). **Color tokens missing hex (or light/dark pairs where applicable) are critical** — downstream code mirrors the spine. Platform conventions (native dynamic type, 8pt grid) may stay semantic. Contrast targets stated for load-bearing combinations. +> +> 3. **Component coverage** (both spines). Extract every component name used anywhere. Verify each has a row in DESIGN.md.Components (visual spec) *and* EXPERIENCE.md.Component Patterns (behavioral spec) — real rules, not one-word descriptions. +> +> 4. **State coverage** (EXPERIENCE.md). Walk every IA surface. List states it should have (empty, cold-load, focus, error, offline, permission-denied — whichever apply). Verify each covered. +> +> 5. **Visual reference coverage.** List every file in `mockups/`, `wireframes/`, `imports/`. Spines link to each inline at the relevant section and name what it illustrates; spines-win-on-conflict stated once. List orphans and unspecific references. +> +> **Pass 2 — judgment.** Verdict per category (*strong / adequate / thin / broken*); findings only where they add information. +> +> 6. **Bloat & overspecification.** Pixel specs where tokens cover it; source restatement (personas, FRs, scope); prose where a table works; sections no downstream consumer would read; decorative narrative untied to a decision. DESIGN.md prose may carry editorial voice; EXPERIENCE.md prose should not. +> +> 7. **Inheritance discipline.** `sources` frontmatter resolves. UJ / requirement names verbatim from sources. Glossary identical across spines and sources. Component names identical across all sections in both files. EXPERIENCE.md token references resolve to DESIGN.md tokens by name. +> +> 8. **Shape fit.** DESIGN.md sections in canonical order (Brand & Style → Colors → Typography → Layout & Spacing → Elevation & Depth → Shapes → Components → Do's and Don'ts; omittable but order-locked when present). EXPERIENCE.md required defaults present (Foundation, IA, Voice and Tone, Component Patterns, State Patterns, Interaction Primitives, Accessibility Floor, Key Flows). Dropped defaults defensible. Required-when-applicable present where triggered (Inspiration when sources / log show reference products or rejects; Responsive when multi-surface or breakpoints). Invented sections earn their place. +> +> Severity = downstream impact, not fix difficulty. +> +> Write to `{doc_workspace}/review-rubric.md`: +> +> ```markdown +> # Spine Pair Review — {project_name} +> +> ## Overall verdict +> [2–3 sentences] +> +> ## 1. Flow coverage — [verdict] +> [What was checked.] +> ### Findings +> - **[critical|high|medium|low]** [finding] (location). *Fix:* [suggestion]. +> +> (repeat 2–8) +> +> ## Mechanical notes +> [Name inconsistencies, broken cross-refs, frontmatter completeness, Mermaid syntax.] +> ``` +> +> Return ONLY a compact summary: overall verdict, per-section verdicts, finding counts by severity, file path. + +The gate may dispatch `{workflow.finalize_reviewers}` and ad-hoc reviewers (accessibility for consumer / regulated). Each writes `review-{slug}.md` and returns a compact summary. Parallel. + +## Synthesis pipeline + +Under Validate intent, after every reviewer returns, render one consolidated report. Don't skip. + +1. Read every `{doc_workspace}/review-*.md`. +2. Fill `{workflow.validation_report_template}`. No overall grade — the per-category verdicts and severity counts already say what's true. Synthesis paragraph lifts the rubric's overall verdict; add a second if extra reviewers shift the picture. One section per rubric category (open if thin / broken), one per extra reviewer (closed, adversarial voice preserved). +3. Write `{doc_workspace}/validation-report.html`. +4. Write the Markdown twin `{doc_workspace}/validation-report.md` — same content grouped by severity. +5. Open HTML: `python3 -c "import webbrowser, pathlib; webbrowser.open(pathlib.Path('{doc_workspace}/validation-report.html').resolve().as_uri())"`. Skip headless. + +Re-running overwrites the consolidated report; individual `review-*.md` files persist. + +## Markdown twin shape + +```markdown +# Validation Report — {project_name} + +- **DESIGN.md:** `{design_path}` +- **EXPERIENCE.md:** `{experience_path}` +- **Run at:** {ISO timestamp} + +## Overall verdict +{synthesis paragraphs} + +## Category verdicts +- Flow coverage — {verdict} +- Token completeness — {verdict} +- Component coverage — {verdict} +- State coverage — {verdict} +- Visual reference coverage — {verdict} +- Bloat & overspecification — {verdict} +- Inheritance discipline — {verdict} +- Shape fit — {verdict} + +## Findings by severity + +### Critical (n) +**[Category or Reviewer]** — Title (§ location) +{Note} +Fix: {suggested fix} + +### High (n) / Medium (n) / Low (n) +... + +## Reviewer files +- `review-rubric.md` +- ... +``` + +## Close + +Surface artifact paths. Always offer to roll findings into an Update. diff --git a/src/bmm-skills/module-help.csv b/src/bmm-skills/module-help.csv index 82674cb5c..eb2d51c1c 100644 --- a/src/bmm-skills/module-help.csv +++ b/src/bmm-skills/module-help.csv @@ -16,7 +16,7 @@ BMad Method,bmad-technical-research,Technical Research,TR,Technical feasibility BMad Method,bmad-product-brief,Create Brief,CB,An expert guided experience to nail down your product idea in a brief. a gentler approach than PRFAQ when you are already sure of your concept and nothing will sway you.,,-A,1-analysis,,,false,planning_artifacts,product brief BMad Method,bmad-prfaq,PRFAQ Challenge,WB,Working Backwards guided experience to forge and stress-test your product concept to ensure you have a great product that users will love and need through the PRFAQ gauntlet to determine feasibility and alignment with user needs. alternative to product brief.,,-H,1-analysis,,,false,planning_artifacts,prfaq document BMad Method,bmad-prd,Create Edit and Review PRD,PRD,"Facilitated PRD workflow — create a new PRD via coached discovery, update an existing one against a change signal, or validate a finished PRD against a checklist with an HTML findings report.",,,2-planning,bmad-product-brief,,true,planning_artifacts,prd -BMad Method,bmad-create-ux-design,Create UX,CU,"Guidance through realizing the plan for your UX, strongly recommended if a UI is a primary piece of the proposed project.",,,2-planning,bmad-prd,,false,planning_artifacts,ux design +BMad Method,bmad-ux,Create UX,CU,"Guidance through realizing the plan for your UX, strongly recommended if a UI is a primary piece of the proposed project.",,,2-planning,bmad-prd,,false,planning_artifacts,ux design BMad Method,bmad-create-architecture,Create Architecture,CA,Guided workflow to document technical decisions.,,,3-solutioning,,,true,planning_artifacts,architecture BMad Method,bmad-create-epics-and-stories,Create Epics and Stories,CE,,,,3-solutioning,bmad-create-architecture,,true,planning_artifacts,epics and stories BMad Method,bmad-check-implementation-readiness,Check Implementation Readiness,IR,Ensure PRD UX Architecture and Epics Stories are aligned.,,,3-solutioning,bmad-create-epics-and-stories,,true,planning_artifacts,readiness report diff --git a/tools/skill-validator.md b/tools/skill-validator.md index 9566e1132..06edf3c8a 100644 --- a/tools/skill-validator.md +++ b/tools/skill-validator.md @@ -10,7 +10,7 @@ Before running inference-based validation, run the deterministic validator: node tools/validate-skills.js --json path/to/skill-dir ``` -This checks 14 rules deterministically: SKILL-01, SKILL-02, SKILL-03, SKILL-04, SKILL-05, SKILL-06, SKILL-07, WF-01, WF-02, PATH-02, STEP-01, STEP-06, STEP-07, SEQ-02. +This checks 12 rules deterministically: SKILL-01, SKILL-02, SKILL-03, SKILL-04, SKILL-05, SKILL-06, SKILL-07, PATH-02, STEP-01, STEP-06, STEP-07, SEQ-02. Review its JSON output. For any rule that produced **zero findings** in the first pass, **skip it** during inference-based validation below — it has already been verified. If a rule produced any findings, the inference validator should still review that rule (some rules like SKILL-04 and SKILL-06 have sub-checks that benefit from judgment). Focus your inference effort on the remaining rules that require judgment (PATH-01, PATH-03, PATH-04, PATH-05, WF-03, STEP-02, STEP-03, STEP-04, STEP-05, SEQ-01, REF-01, REF-02, REF-03). @@ -98,24 +98,6 @@ If no findings are generated (from either pass), the skill passes validation. --- -### WF-01 — Only SKILL.md May Have `name` in Frontmatter - -- **Severity:** HIGH -- **Applies to:** all `.md` files except `SKILL.md` -- **Rule:** The `name` field belongs only in `SKILL.md`. No other markdown file in the skill directory may have `name:` in its frontmatter. -- **Detection:** Parse frontmatter of every non-SKILL.md markdown file and check for `name:` key. -- **Fix:** Remove the `name:` line from the file's frontmatter. -- **Exception:** `bmad-agent-tech-writer` — has sub-skill files with intentional `name` fields (to be revisited). - -### WF-02 — Only SKILL.md May Have `description` in Frontmatter - -- **Severity:** HIGH -- **Applies to:** all `.md` files except `SKILL.md` -- **Rule:** The `description` field belongs only in `SKILL.md`. No other markdown file in the skill directory may have `description:` in its frontmatter. -- **Detection:** Parse frontmatter of every non-SKILL.md markdown file and check for `description:` key. -- **Fix:** Remove the `description:` line from the file's frontmatter. -- **Exception:** `bmad-agent-tech-writer` — has sub-skill files with intentional `description` fields (to be revisited). - ### WF-03 — workflow.md Frontmatter Variables Must Be Config or Runtime Only - **Severity:** HIGH diff --git a/tools/validate-skills.js b/tools/validate-skills.js index 997f8449a..8ab5bc2ad 100644 --- a/tools/validate-skills.js +++ b/tools/validate-skills.js @@ -1,7 +1,7 @@ /** * Deterministic Skill Validator * - * Validates 14 deterministic rules across all skill directories. + * Validates 12 deterministic rules across all skill directories. * Acts as a fast first-pass complement to the inference-based skill validator. * * What it checks: @@ -12,8 +12,6 @@ * - SKILL-05: name matches directory basename * - SKILL-06: description quality (length, "Use when"/"Use if") * - SKILL-07: SKILL.md has body content after frontmatter - * - WF-01: workflow.md frontmatter has no name - * - WF-02: workflow.md frontmatter has no description * - PATH-02: no installed_path variable * - STEP-01: step filename format * - STEP-06: step frontmatter has no name/description @@ -390,43 +388,6 @@ function validateSkill(skillDir) { } } - // --- WF-01 / WF-02: non-SKILL.md files must NOT have name/description --- - // TODO: bmad-agent-tech-writer has sub-skill files with intentional name/description - const WF_SKIP_SKILLS = new Set(['bmad-agent-tech-writer']); - for (const filePath of allFiles) { - if (path.extname(filePath) !== '.md') continue; - if (path.basename(filePath) === 'SKILL.md') continue; - if (WF_SKIP_SKILLS.has(dirName)) continue; - - const relFile = path.relative(skillDir, filePath); - const content = safeReadFile(filePath, findings, relFile); - if (content === null) continue; - const fm = parseFrontmatter(content); - if (!fm) continue; - - if ('name' in fm) { - findings.push({ - rule: 'WF-01', - title: 'Only SKILL.md May Have name in Frontmatter', - severity: 'HIGH', - file: relFile, - detail: `${relFile} frontmatter contains \`name\` — this belongs only in SKILL.md.`, - fix: "Remove the `name:` line from this file's frontmatter.", - }); - } - - if ('description' in fm) { - findings.push({ - rule: 'WF-02', - title: 'Only SKILL.md May Have description in Frontmatter', - severity: 'HIGH', - file: relFile, - detail: `${relFile} frontmatter contains \`description\` — this belongs only in SKILL.md.`, - fix: "Remove the `description:` line from this file's frontmatter.", - }); - } - } - // --- PATH-02: no installed_path --- for (const filePath of allFiles) { // Only check markdown and yaml files From aa6dece05d652d74fede1cd0854c3f84a9e7689a Mon Sep 17 00:00:00 2001 From: Brian Date: Sun, 24 May 2026 14:08:34 -0500 Subject: [PATCH 11/26] feat(bmad-spec): introduce Spec kernel distiller skill (#2417) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(bmad-spec): add Spec kernel distiller skill New 2-plan-workflows skill that distills any intent input (brain dump, PRD, transcript, brief) into a spec.md carrying the five-field kernel: Problem, Capabilities, Constraints, Non-goals, Success signal. Headless callers receive JSON; interactive runs close conversationally with the spec path and gap-coverage invitations. Includes: - SKILL.md with activation contract and conventions - customize.toml exposing template path, output path, run-folder pattern - assets/spec-template.md (five-field skeleton) - assets/headless-schemas.md (JSON IO contracts) * remove brain-dump fallback config from bmad-spec customize.toml * refactor(bmad-spec): companions+sources model, routing tilt, flat output path - Collapse `related:` into `companions:`; companion paths may point inside the spec folder (spec-authored) or outside it (adopted from an upstream skill), distinguished implicitly by path - `sources:` reserved for fully-absorbed inputs; downstream does NOT read these - Soften mutation contract: bmad-spec owns SPEC.md and spec-authored companions; adopted companions belong to their originating skill - Add "when to spawn a companion" tilt: multi-item catalogs, tables, diagrams (always), editorial voice rules; sub-bullets in a kernel field signal it has outgrown the kernel - Fix Spec Law rule 7 and Pass 2: load-bearing content lands in SPEC.md or a companion, not the decision log (the log records wrapper-drops only) - Flatten output path to `{planning_artifacts}/specs/spec-{slug}-{date}/`, mirroring `prds/` and `ux-designs/`; drop `spec_folder_name` (no longer used) - Extract Load-bearing definition into its own section above Spec Law * chore(core): retire bmad-distillator, promote bmad-spec to core - Delete bmad-distillator/ and all registry + doc references (superseded by bmad-spec; no skill or workflow in any BMad module invoked it) - Add bmad-distillator to removals.txt so installer cleans it from existing IDE skill directories on update - Move bmad-spec from bmm-skills/2-plan-workflows/ to core-skills/ (universal scope: game design, research hypotheses, editorial briefs, policy, business plans, not just software) - Register bmad-spec in core module-help.csv and bmad-pro-skills marketplace plugin - Drop bmad-distillator section from core-tools.md (en, vi-vn, cs, fr, zh-cn) and vi-vn dev guide; renumber subsequent sections * refactor(bmad-spec): add lean-prose discipline + generalize help text - Add Spec Law rule 8: lean prose. Every sentence carries load-bearing content; cut decoration, hedges, backstory, throat-clearing. Applies to SPEC.md, companions, and decision log. - Update Self-Validate Pass 1 to enforce rules 1-6 and 8 (rule 7 stays in Pass 2) - Prime the operation up-front: write lean from the first pass, every sentence must earn its place - Note in Companions section that companions follow the same lean discipline - Generalize core module-help.csv entry: domain-agnostic framing (software, game design, research, editorial, policy, business, anything intent-bearing); call out succinct, no-fluff and "locks the WHAT before the HOW" as the value props * fix(bmad-spec): address PR review findings (CodeRabbit + Augment) - headless-schemas.md: rewrite spec_path examples to point at the spec folder (not a file), rename source_artifact to sources[] array, add companions[] array, update verdict from "six rules" to "eight rules", disambiguate reason requirement (only when status=blocked) - SKILL.md activation: fix config path from {project-root}/_bmad/config.yaml to {project-root}/_bmad/core/config.yaml (matches other BMM skills) - customize.toml + SKILL.md Workspace: drop {date} from default run_folder_pattern (spec-{slug}); same slug = same folder = trivial in-place update, no glob-and-pick-most-recent needed. Override available for users who want dated history. - spec-template.md: rename "## Success signals" (plural) to "## Success signal" (singular) to match SKILL.md kernel naming - SKILL.md Frontmatter conventions: fix adopted-companion example path from _bmad-output/ux-designs/foo-ux/DESIGN.md to ../../ux-designs/ux-foo-bar-2026-05-23/DESIGN.md (matches actual flat-output convention) - SKILL.md Spec Law: fix double-period typo in rule 2 ((stack, conventions)..) - SKILL.md Overview: fix awkward "bloat with expansive line item details the kernel" phrasing; drop software-flavored downstream consumer list since bmad-spec is now a core skill serving any domain * fix(bmad-spec): drop {planning_artifacts} dependency; output to {output_folder}/specs bmad-spec is a core skill but its default path used {planning_artifacts}, a bmm-module variable. Core-only installs (no bmm) would fail at activation when the resolver tried to expand the path. Land specs directly under {output_folder}/specs/spec-{slug}/ instead. Works in any install regardless of installed modules, and aligns with the long-term BMad direction of grouping artifacts as siblings under {output_folder}// rather than nested under planning vs implementation parents. In bmm installs, adopted-companion paths from spec to UX/PRD pick up one extra .. (e.g., ../planning-artifacts/ux-designs//DESIGN.md) since the spec folder is now one level up from planning-artifacts. Examples in SKILL.md and headless-schemas.md updated. module-help.csv output-location updated and stale -{date} fragment removed. * docs(bmad-spec): add reference docs, trim headless schema, tighten defaults - Add full bmad-spec entry to docs/reference/core-tools.md and table-row stubs to cs/fr/vi-vn/zh-cn (full translation pending). - Strip headless-schemas.md to a minimal {status, files} success response and {status, error_code, reason} blocked response. Drop spec_path, capabilities, verdict, decision_log_path — all derivable from the files themselves. - Narrow customize.toml persistent_facts default from recursive glob to single {project-root}/project-context.md; document override path. - Drop unused {doc_workspace} convention line from SKILL.md. - Clarify Self-Validate verdict handling for interactive vs headless. - Document missing_slug error code in SKILL.md + headless schema. --- .claude-plugin/marketplace.json | 2 +- docs/cs/reference/core-tools.md | 28 +- docs/fr/reference/core-tools.md | 29 +- docs/reference/core-tools.md | 36 ++- docs/vi-vn/bmad-developer-guide.md | 10 +- docs/vi-vn/reference/core-tools.md | 29 +- docs/zh-cn/reference/core-tools.md | 25 +- removals.txt | 5 + src/core-skills/bmad-distillator/SKILL.md | 177 ----------- .../agents/distillate-compressor.md | 116 ------- .../agents/round-trip-reconstructor.md | 68 ---- .../resources/compression-rules.md | 51 --- .../resources/distillate-format-reference.md | 227 ------------- .../resources/splitting-strategy.md | 78 ----- .../scripts/analyze_sources.py | 300 ------------------ .../scripts/tests/test_analyze_sources.py | 204 ------------ src/core-skills/bmad-spec/SKILL.md | 126 ++++++++ .../bmad-spec/assets/headless-schemas.md | 33 ++ .../bmad-spec/assets/spec-template.md | 49 +++ src/core-skills/bmad-spec/customize.toml | 53 ++++ src/core-skills/module-help.csv | 2 +- 21 files changed, 293 insertions(+), 1355 deletions(-) delete mode 100644 src/core-skills/bmad-distillator/SKILL.md delete mode 100644 src/core-skills/bmad-distillator/agents/distillate-compressor.md delete mode 100644 src/core-skills/bmad-distillator/agents/round-trip-reconstructor.md delete mode 100644 src/core-skills/bmad-distillator/resources/compression-rules.md delete mode 100644 src/core-skills/bmad-distillator/resources/distillate-format-reference.md delete mode 100644 src/core-skills/bmad-distillator/resources/splitting-strategy.md delete mode 100644 src/core-skills/bmad-distillator/scripts/analyze_sources.py delete mode 100644 src/core-skills/bmad-distillator/scripts/tests/test_analyze_sources.py create mode 100644 src/core-skills/bmad-spec/SKILL.md create mode 100644 src/core-skills/bmad-spec/assets/headless-schemas.md create mode 100644 src/core-skills/bmad-spec/assets/spec-template.md create mode 100644 src/core-skills/bmad-spec/customize.toml diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 96a58fff3..e30519d15 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -20,7 +20,7 @@ "skills": [ "./src/core-skills/bmad-help", "./src/core-skills/bmad-brainstorming", - "./src/core-skills/bmad-distillator", + "./src/core-skills/bmad-spec", "./src/core-skills/bmad-party-mode", "./src/core-skills/bmad-shard-doc", "./src/core-skills/bmad-advanced-elicitation", diff --git a/docs/cs/reference/core-tools.md b/docs/cs/reference/core-tools.md index 1fca20336..a4c032ada 100644 --- a/docs/cs/reference/core-tools.md +++ b/docs/cs/reference/core-tools.md @@ -18,7 +18,7 @@ Spusťte jakýkoli základní nástroj zadáním jeho názvu skillu (např. `bma | [`bmad-help`](#bmad-help) | Task | Kontextové poradenství, co dělat dál | | [`bmad-brainstorming`](#bmad-brainstorming) | Workflow | Facilitace interaktivních brainstormingových sezení | | [`bmad-party-mode`](#bmad-party-mode) | Workflow | Orchestrace skupinových diskuzí více agentů | -| [`bmad-distillator`](#bmad-distillator) | Task | Bezeztrátová LLM-optimalizovaná komprese dokumentů | +| [`bmad-spec`](#bmad-spec) | Workflow | Distill any intent input into a SPEC kernel and companions, the canonical contract for downstream work (translation pending) | | [`bmad-advanced-elicitation`](#bmad-advanced-elicitation) | Task | Iterativní zdokonalování LLM výstupu | | [`bmad-review-adversarial-general`](#bmad-review-adversarial-general) | Task | Cynická revize hledající chybějící a chybné | | [`bmad-review-edge-case-hunter`](#bmad-review-edge-case-hunter) | Task | Vyčerpávající analýza větvících cest pro neošetřené hraniční případy | @@ -97,32 +97,6 @@ Kouzlo se děje v nápadech 50–100. Workflow povzbuzuje generování 100+ náp **Výstup:** Real-time multi-agentní konverzace s udržovanými osobnostmi agentů -## bmad-distillator - -**Bezeztrátová LLM-optimalizovaná komprese zdrojových dokumentů.** — Produkuje husté, tokenově efektivní destiláty, které zachovávají všechny informace pro následné LLM zpracování. Ověřitelné prostřednictvím round-trip rekonstrukce. - -**Použijte když:** - -- Dokument je příliš velký pro kontextové okno LLM -- Potřebujete tokenově efektivní verze výzkumů, specifikací nebo plánovacích artefaktů -- Chcete ověřit, že během komprese nebyly ztraceny žádné informace - -**Jak to funguje:** - -1. **Analýza** — Čte zdrojové dokumenty, identifikuje hustotu informací a strukturu -2. **Komprese** — Převádí prózu na hustý odrážkový formát, odstraňuje dekorativní formátování -3. **Ověření** — Kontroluje úplnost pro zajištění zachování všech informací -4. **Validace** (volitelné) — Round-trip rekonstrukční test dokazuje bezeztrátovou kompresi - -**Vstup:** - -- `source_documents` (povinné) — Cesty k souborům, složkám nebo glob vzory -- `downstream_consumer` (volitelné) — Co to konzumuje (např. „tvorba PRD“) -- `token_budget` (volitelné) — Přibližná cílová velikost -- `--validate` (příznak) — Spuštění round-trip rekonstrukčního testu - -**Výstup:** Destilátové markdown soubory s reportem kompresního poměru (např. „3.2:1“) - ## bmad-advanced-elicitation **Iterativní zdokonalování LLM výstupu metodami elicitace.** — Vybírá z knihovny elicitačních technik pro systematické zlepšování obsahu více průchody. diff --git a/docs/fr/reference/core-tools.md b/docs/fr/reference/core-tools.md index 644a849fc..abcf43a9e 100644 --- a/docs/fr/reference/core-tools.md +++ b/docs/fr/reference/core-tools.md @@ -18,7 +18,7 @@ Exécutez n'importe quel outil principal en tapant son nom de compétence (par e | [`bmad-help`](#bmad-help) | Tâche | Obtenir des conseils contextuels sur la prochaine étape | | [`bmad-brainstorming`](#bmad-brainstorming) | Workflow | Faciliter des sessions de brainstorming interactives | | [`bmad-party-mode`](#bmad-party-mode) | Workflow | Orchestrer des discussions de groupe multi-agents | -| [`bmad-distillator`](#bmad-distillator) | Tâche | Compression sans perte optimisée pour LLM de documents | +| [`bmad-spec`](#bmad-spec) | Workflow | Distill any intent input into a SPEC kernel and companions (translation pending) | | [`bmad-advanced-elicitation`](#bmad-advanced-elicitation) | Tâche | Pousser la sortie LLM à travers des méthodes de raffinement itératives | | [`bmad-review-adversarial-general`](#bmad-review-adversarial-general) | Tâche | Revue cynique qui trouve ce qui manque et ce qui ne va pas | | [`bmad-review-edge-case-hunter`](#bmad-review-edge-case-hunter) | Tâche | Analyse exhaustive des chemins de branchement pour les cas limites non gérés | @@ -97,33 +97,6 @@ La magie se produit dans les idées 50–100. Le workflow encourage la générat **Sortie :** Conversation multi-agents en temps réel avec des personnalités d'agents maintenues -## bmad-distillator - -**Compression sans perte optimisée pour LLM de documents sources.** — Produit des distillats denses et efficaces en tokens qui préservent toute l'information pour la consommation par des LLM en aval. Vérifiable par reconstruction aller-retour. - -**Utilisez-le quand :** - -- Un document est trop volumineux pour la fenêtre de contexte d'un LLM -- Vous avez besoin de versions économes en tokens de recherches, spécifications ou artefacts de planification -- Vous voulez vérifier qu'aucune information n'est perdue pendant la compression -- Les agents auront besoin de référencer et de trouver fréquemment des informations dedans - -**Fonctionnement :** - -1. **Analyser** — Lit les documents sources, identifie la densité d'information et la structure -2. **Compresser** — Convertit la prose en format dense de liste de points, supprime le formatage décoratif -3. **Vérifier** — Vérifie l'exhaustivité pour s'assurer que toute l'information originale est préservée -4. **Valider** (optionnel) — Le test de reconstruction aller-retour prouve la compression sans perte - -**Entrée :** - -- `source_documents` (requis) — Chemins de fichiers, chemins de dossiers ou motifs glob -- `downstream_consumer` (optionnel) — Ce qui va le consommer (par ex., "création de PRD") -- `token_budget` (optionnel) — Taille cible approximative -- `--validate` (drapeau) — Exécuter le test de reconstruction aller-retour - -**Sortie :** Fichier(s) markdown distillé(s) avec rapport de ratio de compression (par ex., "3.2:1") - ## bmad-advanced-elicitation **Passer la sortie du LLM à travers des méthodes de raffinement itératives.** — Sélectionne depuis une bibliothèque de techniques d'élicitation pour améliorer systématiquement le contenu à travers multiples passages. diff --git a/docs/reference/core-tools.md b/docs/reference/core-tools.md index dbc690826..21a880901 100644 --- a/docs/reference/core-tools.md +++ b/docs/reference/core-tools.md @@ -18,7 +18,7 @@ Run any core tool by typing its skill name (e.g., `bmad-help`) in your IDE. No a | [`bmad-help`](#bmad-help) | Task | Get context-aware guidance on what to do next | | [`bmad-brainstorming`](#bmad-brainstorming) | Workflow | Facilitate interactive brainstorming sessions | | [`bmad-party-mode`](#bmad-party-mode) | Workflow | Orchestrate multi-agent group discussions | -| [`bmad-distillator`](#bmad-distillator) | Task | Lossless LLM-optimized compression of documents | +| [`bmad-spec`](#bmad-spec) | Workflow | Distill any intent input into a SPEC kernel and companions, the canonical contract for downstream work | | [`bmad-advanced-elicitation`](#bmad-advanced-elicitation) | Task | Push LLM output through iterative refinement methods | | [`bmad-review-adversarial-general`](#bmad-review-adversarial-general) | Task | Cynical review that finds what's missing and what's wrong | | [`bmad-review-edge-case-hunter`](#bmad-review-edge-case-hunter) | Task | Exhaustive branching-path analysis for unhandled edge cases | @@ -97,32 +97,36 @@ The magic happens in ideas 50–100. The workflow encourages generating 100+ ide **Output:** Real-time multi-agent conversation with maintained agent personalities -## bmad-distillator +## bmad-spec -**Lossless LLM-optimized compression of source documents.** — Produces dense, token-efficient distillates that preserve all information for downstream LLM consumption. Verifiable through round-trip reconstruction. +**Distill any intent input into the canonical SPEC contract for downstream work.** Takes a brief, PRD, GDD, RFC, brain dump, transcript, UX folder, or mixed multi-source input and produces a `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 the kernel. **Use it when:** -- A document is too large for an LLM's context window -- You need token-efficient versions of research, specs, or planning artifacts -- You want to verify no information is lost during compression -- Agents will need to frequently reference and find information in it +- You need to lock the WHAT before the HOW for any kind of work (software, game design, research, editorial, policy, business). +- You want a LLM Optimized succinct, no-fluff contract that downstream skills can consume without re-reading every upstream artifact. +- You want to validate or update an existing spec. **How it works:** -1. **Analyze** — Reads source documents, identifies information density and structure -2. **Compress** — Converts prose to dense bullet-point format, strips decorative formatting -3. **Verify** — Checks completeness to ensure all original information is preserved -4. **Validate** (optional) — Round-trip reconstruction test proves lossless compression +1. Reads the input and any ancillary linked materials. +2. Distills into the five-field kernel using a configurable template; routes overflow into appropriately-named companions. +3. Runs a two-pass self-validate (coherence rules, then preservation of every load-bearing source claim). +4. Writes `SPEC.md`, sibling companions, and a `.decision-log.md` under `{output_folder}/specs/spec-{slug}/`. + +Spec Law enforces eight rules: capabilities carry both intent and success; intents are WHAT not HOW; constraints actually bend decisions; non-goals are explicit; success signals are concrete; capability IDs are stable; every load-bearing source claim is preserved; prose is lean. **Input:** -- `source_documents` (required) — File paths, folder paths, or glob patterns -- `downstream_consumer` (optional) — What consumes this (e.g., "PRD creation") -- `token_budget` (optional) — Approximate target size -- `--validate` (flag) — Run round-trip reconstruction test +- `input` (required) — path or inline text. Vague idea, brain dump, PRD, GDD, RFC, brief, transcript, mockup folder, mixed multi-source. +- `slug` (optional) — required only when input is sparse and no slug is derivable from a source filename. +- `target_spec_path` (optional) — set to update an existing spec instead of creating a new one. -**Output:** Distillate markdown file(s) with compression ratio report (e.g., "3.2:1") +**Output:** Spec folder containing `SPEC.md`, any companion files, and a `.decision-log.md`. Headless callers receive a JSON response with the result status and the list of files written or modified. + +:::note[Mutation contract] +`bmad-spec` is the only writer of `SPEC.md` and of spec-authored companions. Other skills produce their own native artifacts and invoke `bmad-spec` headless when they need to express intent as the canonical contract or propose updates. +::: ## bmad-advanced-elicitation diff --git a/docs/vi-vn/bmad-developer-guide.md b/docs/vi-vn/bmad-developer-guide.md index 84a3b5af0..01b95f9d8 100644 --- a/docs/vi-vn/bmad-developer-guide.md +++ b/docs/vi-vn/bmad-developer-guide.md @@ -694,15 +694,7 @@ Review kiểu "devil's advocate" — giả định vấn đề luôn tồn tại - Tìm những gì **còn thiếu**, không chỉ những gì sai - Trực giao với Edge Case Hunter -### 8.4. Distillator — Nén tài liệu cho LLM - -```bash -bmad-distillator -``` - -Khi tài liệu quá lớn (PRD dài, Architecture phức tạp), Distillator nén nội dung tối ưu cho LLM mà không mất thông tin quan trọng. - -### 8.5. Shard Large Documents — Tách file lớn +### 8.4. Shard Large Documents — Tách file lớn ```bash bmad-shard-doc diff --git a/docs/vi-vn/reference/core-tools.md b/docs/vi-vn/reference/core-tools.md index 4d15e3969..13ed5cbe3 100644 --- a/docs/vi-vn/reference/core-tools.md +++ b/docs/vi-vn/reference/core-tools.md @@ -18,7 +18,7 @@ Chạy bất kỳ công cụ cốt lõi nào bằng cách gõ tên skill của n | [`bmad-help`](#bmad-help) | Tác vụ | Nhận hướng dẫn có ngữ cảnh về việc nên làm gì tiếp theo | | [`bmad-brainstorming`](#bmad-brainstorming) | Quy trình | Tổ chức các phiên brainstorming có tương tác | | [`bmad-party-mode`](#bmad-party-mode) | Quy trình | Điều phối thảo luận nhóm nhiều agent | -| [`bmad-distillator`](#bmad-distillator) | Tác vụ | Nén tài liệu tối ưu cho LLM mà không mất thông tin | +| [`bmad-spec`](#bmad-spec) | Quy trình | Distill any intent input into a SPEC kernel and companions, the canonical contract for downstream work (translation pending) | | [`bmad-advanced-elicitation`](#bmad-advanced-elicitation) | Tác vụ | Đẩy đầu ra của LLM qua các vòng tinh luyện lặp | | [`bmad-review-adversarial-general`](#bmad-review-adversarial-general) | Tác vụ | Rà soát hoài nghi để tìm chỗ thiếu và chỗ sai | | [`bmad-review-edge-case-hunter`](#bmad-review-edge-case-hunter) | Tác vụ | Phân tích toàn bộ nhánh rẽ để tìm trường hợp biên chưa được xử lý | @@ -97,33 +97,6 @@ Chạy bất kỳ công cụ cốt lõi nào bằng cách gõ tên skill của n **Đầu ra:** Cuộc hội thoại nhiều agent theo thời gian thực, vẫn giữ nguyên cá tính từng agent -## bmad-distillator - -**Nén tài liệu nguồn tối ưu cho LLM mà không mất thông tin.** Công cụ này tạo ra các bản chưng cất dày đặc, tiết kiệm token nhưng vẫn giữ nguyên toàn bộ thông tin cho LLM dùng về sau. Có thể xác minh bằng tái dựng hai chiều. - -**Dùng khi:** - -- Một tài liệu quá lớn so với context window của LLM -- Bạn cần phiên bản tiết kiệm token của tài liệu nghiên cứu, đặc tả hoặc artifact lập kế hoạch -- Bạn muốn xác minh rằng không có thông tin nào bị mất trong quá trình nén -- Các agent sẽ cần tham chiếu và tìm thông tin trong đó thường xuyên - -**Cách hoạt động:** - -1. **Analyze** — Đọc tài liệu nguồn, nhận diện mật độ thông tin và cấu trúc -2. **Compress** — Chuyển văn xuôi thành dạng bullet dày đặc, bỏ trang trí không cần thiết -3. **Verify** — Kiểm tra tính đầy đủ để đảm bảo mọi thông tin gốc còn nguyên -4. **Validate** *(tùy chọn)* — Tái dựng hai chiều để chứng minh nén không mất mát - -**Đầu vào:** - -- `source_documents` *(bắt buộc)* — Đường dẫn file, thư mục hoặc mẫu glob -- `downstream_consumer` *(tùy chọn)* — Thành phần sẽ dùng đầu ra này, ví dụ "PRD creation" -- `token_budget` *(tùy chọn)* — Kích thước mục tiêu gần đúng -- `--validate` *(cờ)* — Chạy kiểm tra tái dựng hai chiều - -**Đầu ra:** Một hoặc nhiều file markdown distillate kèm báo cáo tỷ lệ nén, ví dụ `3.2:1` - ## bmad-advanced-elicitation **Đẩy đầu ra của LLM qua các phương pháp tinh luyện lặp.** Công cụ này chọn từ thư viện kỹ thuật elicitation để cải thiện nội dung một cách có hệ thống qua nhiều lượt. diff --git a/docs/zh-cn/reference/core-tools.md b/docs/zh-cn/reference/core-tools.md index 7e88db998..520a56305 100644 --- a/docs/zh-cn/reference/core-tools.md +++ b/docs/zh-cn/reference/core-tools.md @@ -18,7 +18,7 @@ sidebar: | [`bmad-help`](#bmad-help) | Task | 基于项目上下文推荐下一步 | | [`bmad-brainstorming`](#bmad-brainstorming) | Workflow | 引导式头脑风暴与想法扩展 | | [`bmad-party-mode`](#bmad-party-mode) | Workflow | 多智能体协作讨论 | -| [`bmad-distillator`](#bmad-distillator) | Task | 无损压缩文档,提升 LLM 消费效率 | +| [`bmad-spec`](#bmad-spec) | Workflow | Distill any intent input into a SPEC kernel and companions, the canonical contract for downstream work (translation pending) | | [`bmad-advanced-elicitation`](#bmad-advanced-elicitation) | Task | 通过多轮技法增强 LLM 输出 | | [`bmad-review-adversarial-general`](#bmad-review-adversarial-general) | Task | 对抗式问题发现审查 | | [`bmad-review-edge-case-hunter`](#bmad-review-edge-case-hunter) | Task | 边界与分支路径穷举审查 | @@ -80,29 +80,6 @@ sidebar: **输入:** 讨论主题(可指定希望参与的角色) **输出:** 多智能体实时对话过程 -## bmad-distillator - -**定位:** 在不丢失信息前提下压缩文档,降低 token 成本。 - -**适用场景:** -- 源文档超过上下文窗口 -- 需要把研究/规格材料转成高密度引用版本 -- 想验证压缩结果是否可逆 - -**工作机制:** -1. 分析源文档结构与信息密度 -2. 压缩为高密度结构化表达 -3. 校验信息完整性 -4. 可选执行往返重构验证(round-trip) - -**输入:** -- `source_documents`(必填) -- `downstream_consumer`(可选) -- `token_budget`(可选) -- `--validate`(可选标志) - -**输出:** 精馏文档 + 压缩比报告 - ## bmad-advanced-elicitation **定位:** 对已有 LLM 输出做第二轮深挖与改写强化。 diff --git a/removals.txt b/removals.txt index 5a7659dd2..a694583e6 100644 --- a/removals.txt +++ b/removals.txt @@ -52,3 +52,8 @@ bmad-bmm-sprint-planning bmad-bmm-sprint-status bmad-bmm-technical-research bmad-bmm-validate-prd + +# Removed skills (post-v6.7.x) +# bmad-distillator: superseded by bmad-spec (universal intent distiller with +# preservation-validated contract for downstream skills). +bmad-distillator diff --git a/src/core-skills/bmad-distillator/SKILL.md b/src/core-skills/bmad-distillator/SKILL.md deleted file mode 100644 index 57c44d0c9..000000000 --- a/src/core-skills/bmad-distillator/SKILL.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -name: bmad-distillator -description: Lossless LLM-optimized compression of source documents. Use when the user requests to 'distill documents' or 'create a distillate'. ---- - -# Distillator: A Document Distillation Engine - -## Overview - -This skill produces hyper-compressed, token-efficient documents (distillates) from any set of source documents. A distillate preserves every fact, decision, constraint, and relationship from the sources while stripping all overhead that humans need and LLMs don't. Act as an information extraction and compression specialist. The output is a single dense document (or semantically-split set) that a downstream LLM workflow can consume as sole context input without information loss. - -This is a compression task, not a summarization task. Summaries are lossy. Distillates are lossless compression optimized for LLM consumption. - -## On Activation - -1. **Validate inputs.** The caller must provide: - - **source_documents** (required) — One or more file paths, folder paths, or glob patterns to distill - - **downstream_consumer** (optional) — What workflow/agent consumes this distillate (e.g., "PRD creation", "architecture design"). When provided, use it to judge signal vs noise. When omitted, preserve everything. - - **token_budget** (optional) — Approximate target size. When provided and the distillate would exceed it, trigger semantic splitting. - - **output_path** (optional) — Where to save. When omitted, save adjacent to the primary source document with `-distillate.md` suffix. - - **--validate** (flag) — Run round-trip reconstruction test after producing the distillate. - -2. **Route** — proceed to Stage 1. - -## Stages - -| # | Stage | Purpose | -|---|-------|---------| -| 1 | Analyze | Run analysis script, determine routing and splitting | -| 2 | Compress | Spawn compressor agent(s) to produce the distillate | -| 3 | Verify & Output | Completeness check, format check, save output | -| 4 | Round-Trip Validate | (--validate only) Reconstruct and diff against originals | - -### Stage 1: Analyze - -Run `scripts/analyze_sources.py --help` then run it with the source paths. Use its routing recommendation and grouping output to drive Stage 2. Do NOT read the source documents yourself. - -### Stage 2: Compress - -**Single mode** (routing = `"single"`, ≤3 files, ≤15K estimated tokens): - -Spawn one subagent using `agents/distillate-compressor.md` with all source file paths. - -**Fan-out mode** (routing = `"fan-out"`): - -1. Spawn one compressor subagent per group from the analysis output. Each compressor receives only its group's file paths and produces an intermediate distillate. - -2. After all compressors return, spawn one final **merge compressor** subagent using `agents/distillate-compressor.md`. Pass it the intermediate distillate contents as its input (not the original files). Its job is cross-group deduplication, thematic regrouping, and final compression. - -3. Clean up intermediate distillate content (it exists only in memory, not saved to disk). - -**Graceful degradation:** If subagent spawning is unavailable, read the source documents and perform the compression work directly using the same instructions from `agents/distillate-compressor.md`. For fan-out, process groups sequentially then merge. - -The compressor returns a structured JSON result containing the distillate content, source headings, named entities, and token estimate. - -### Stage 3: Verify & Output - -After the compressor (or merge compressor) returns: - -1. **Completeness check.** Using the headings and named entities list returned by the compressor, verify each appears in the distillate content. If gaps are found, send them back to the compressor for a targeted fix pass — not a full recompression. Limit to 2 fix passes maximum. - -2. **Format check.** Verify the output follows distillate format rules: - - No prose paragraphs (only bullets) - - No decorative formatting - - No repeated information - - Each bullet is self-contained - - Themes are clearly delineated with `##` headings - -3. **Determine output format.** Using the split prediction from Stage 1 and actual distillate size: - - **Single distillate** (≤~5,000 tokens or token_budget not exceeded): - - Save as a single file with frontmatter: - - ```yaml - --- - type: bmad-distillate - sources: - - "{relative path to source file 1}" - - "{relative path to source file 2}" - downstream_consumer: "{consumer or 'general'}" - created: "{date}" - token_estimate: {approximate token count} - parts: 1 - --- - ``` - - **Split distillate** (>~5,000 tokens, or token_budget requires it): - - Create a folder `{base-name}-distillate/` containing: - - ``` - {base-name}-distillate/ - ├── _index.md # Orientation, cross-cutting items, section manifest - ├── 01-{topic-slug}.md # Self-contained section - ├── 02-{topic-slug}.md - └── 03-{topic-slug}.md - ``` - - The `_index.md` contains: - - Frontmatter with sources (relative paths from the distillate folder to the originals) - - 3-5 bullet orientation (what was distilled, from what) - - Section manifest: each section's filename + 1-line description - - Cross-cutting items that span multiple sections - - Each section file is self-contained — loadable independently. Include a 1-line context header: "This section covers [topic]. Part N of M." - - Source paths in frontmatter must be relative to the distillate's location. - -4. **Measure distillate.** Run `scripts/analyze_sources.py` on the final distillate file(s) to get accurate token counts for the output. Use the `total_estimated_tokens` from this analysis as `distillate_total_tokens`. - -5. **Report results.** Always return structured JSON output: - - ```json - { - "status": "complete", - "distillate": "{path or folder path}", - "section_distillates": ["{path1}", "{path2}"] or null, - "source_total_tokens": N, - "distillate_total_tokens": N, - "compression_ratio": "X:1", - "source_documents": ["{path1}", "{path2}"], - "completeness_check": "pass" or "pass_with_additions" - } - ``` - - Where `source_total_tokens` is from the Stage 1 analysis and `distillate_total_tokens` is from step 4. The `compression_ratio` is `source_total_tokens / distillate_total_tokens` formatted as "X:1" (e.g., "3.2:1"). - -6. If `--validate` flag was set, proceed to Stage 4. Otherwise, done. - -### Stage 4: Round-Trip Validation (--validate only) - -This stage proves the distillate is lossless by reconstructing source documents from the distillate alone. Use for critical documents where information loss is unacceptable, or as a quality gate for high-stakes downstream workflows. Not for routine use — it adds significant token cost. - -1. **Spawn the reconstructor agent** using `agents/round-trip-reconstructor.md`. Pass it ONLY the distillate file path (or `_index.md` path for split distillates) — it must NOT have access to the original source documents. - - For split distillates, spawn one reconstructor per section in parallel. Each receives its section file plus the `_index.md` for cross-cutting context. - - **Graceful degradation:** If subagent spawning is unavailable, this stage cannot be performed by the main agent (it has already seen the originals). Report that round-trip validation requires subagent support and skip. - -2. **Receive reconstructions.** The reconstructor returns reconstruction file paths saved adjacent to the distillate. - -3. **Perform semantic diff.** Read both the original source documents and the reconstructions. For each section of the original, assess: - - Is the core information present in the reconstruction? - - Are specific details preserved (numbers, names, decisions)? - - Are relationships and rationale intact? - - Did the reconstruction add anything not in the original? (indicates hallucination filling gaps) - -4. **Produce validation report** saved adjacent to the distillate as `-validation-report.md`: - - ```markdown - --- - type: distillate-validation - distillate: "{distillate path}" - sources: ["{source paths}"] - created: "{date}" - --- - - ## Validation Summary - - Status: PASS | PASS_WITH_WARNINGS | FAIL - - Information preserved: {percentage estimate} - - Gaps found: {count} - - Hallucinations detected: {count} - - ## Gaps (information in originals but missing from reconstruction) - - {gap description} — Source: {which original}, Section: {where} - - ## Hallucinations (information in reconstruction not traceable to originals) - - {hallucination description} — appears to fill gap in: {section} - - ## Possible Gap Markers (flagged by reconstructor) - - {marker description} - ``` - -5. **If gaps are found**, offer to run a targeted fix pass on the distillate — adding the missing information without full recompression. Limit to 2 fix passes maximum. - -6. **Clean up** — delete the temporary reconstruction files after the report is generated. \ No newline at end of file diff --git a/src/core-skills/bmad-distillator/agents/distillate-compressor.md b/src/core-skills/bmad-distillator/agents/distillate-compressor.md deleted file mode 100644 index d581b79f9..000000000 --- a/src/core-skills/bmad-distillator/agents/distillate-compressor.md +++ /dev/null @@ -1,116 +0,0 @@ -# Distillate Compressor Agent - -Act as an information extraction and compression specialist. Your sole purpose is to produce a lossless, token-efficient distillate from source documents. - -You receive: source document file paths, an optional downstream_consumer context, and a splitting decision. - -You must load and apply `../resources/compression-rules.md` before producing output. Reference `../resources/distillate-format-reference.md` for the expected output format. - -## Compression Process - -### Step 1: Read Sources - -Read all source document files. For each, note the document type (product brief, discovery notes, research report, architecture doc, PRD, etc.) based on content and naming. - -### Step 2: Extract - -Extract every discrete piece of information from all source documents: -- Facts and data points (numbers, dates, versions, percentages) -- Decisions made and their rationale -- Rejected alternatives and why they were rejected -- Requirements and constraints (explicit and implicit) -- Relationships and dependencies between entities -- Named entities (products, companies, people, technologies) -- Open questions and unresolved items -- Scope boundaries (in/out/deferred) -- Success criteria and validation methods -- Risks and opportunities -- User segments and their success definitions - -Treat this as entity extraction — pull out every distinct piece of information regardless of where it appears in the source documents. - -### Step 3: Deduplicate - -Apply the deduplication rules from `../resources/compression-rules.md`. - -### Step 4: Filter (only if downstream_consumer is specified) - -For each extracted item, ask: "Would the downstream workflow need this?" -- Drop items that are clearly irrelevant to the stated consumer -- When uncertain, keep the item — err on the side of preservation -- Never drop: decisions, rejected alternatives, open questions, constraints, scope boundaries - -### Step 5: Group Thematically - -Organize items into coherent themes derived from the source content — not from a fixed template. The themes should reflect what the documents are actually about. - -Common groupings (use what fits, omit what doesn't, add what's needed): -- Core concept / problem / motivation -- Solution / approach / architecture -- Users / segments -- Technical decisions / constraints -- Scope boundaries (in/out/deferred) -- Competitive context -- Success criteria -- Rejected alternatives -- Open questions -- Risks and opportunities - -### Step 6: Compress Language - -For each item, apply the compression rules from `../resources/compression-rules.md`: -- Strip prose transitions and connective tissue -- Remove hedging and rhetoric -- Remove explanations of common knowledge -- Preserve specific details (numbers, names, versions, dates) -- Ensure the item is self-contained (understandable without reading the source) -- Make relationships explicit ("X because Y", "X blocks Y", "X replaces Y") - -### Step 7: Format Output - -Produce the distillate as dense thematically-grouped bullets: -- `##` headings for themes — no deeper heading levels needed -- `- ` bullets for items — every token must carry signal -- No decorative formatting (no bold for emphasis, no horizontal rules) -- No prose paragraphs — only bullets -- Semicolons to join closely related short items within a single bullet -- Each bullet self-contained — understandable without reading other bullets - -Do NOT include frontmatter — the calling skill handles that. - -## Semantic Splitting - -If the splitting decision indicates splitting is needed, load `../resources/splitting-strategy.md` and follow it. - -When splitting: - -1. Identify natural semantic boundaries in the content — coherent topic clusters, not arbitrary size breaks. - -2. Produce a **root distillate** containing: - - 3-5 bullet orientation (what was distilled, for whom, how many parts) - - Cross-references to section distillates - - Items that span multiple sections - -3. Produce **section distillates**, each self-sufficient. Include a 1-line context header: "This section covers [topic]. Part N of M from [source document names]." - -## Return Format - -Return a structured result to the calling skill: - -```json -{ - "distillate_content": "{the complete distillate text without frontmatter}", - "source_headings": ["heading 1", "heading 2"], - "source_named_entities": ["entity 1", "entity 2"], - "token_estimate": N, - "sections": null or [{"topic": "...", "content": "..."}] -} -``` - -- **distillate_content**: The full distillate text -- **source_headings**: All Level 2+ headings found across source documents (for completeness verification) -- **source_named_entities**: Key named entities (products, companies, people, technologies, decisions) found in sources -- **token_estimate**: Approximate token count of the distillate -- **sections**: null for single distillates; array of section objects if semantically split - -Do not include conversational text, status updates, or preamble — return only the structured result. diff --git a/src/core-skills/bmad-distillator/agents/round-trip-reconstructor.md b/src/core-skills/bmad-distillator/agents/round-trip-reconstructor.md deleted file mode 100644 index 586e7f62a..000000000 --- a/src/core-skills/bmad-distillator/agents/round-trip-reconstructor.md +++ /dev/null @@ -1,68 +0,0 @@ -# Round-Trip Reconstructor Agent - -Act as a document reconstruction specialist. Your purpose is to prove a distillate's completeness by reconstructing the original source documents from the distillate alone. - -**Critical constraint:** You receive ONLY the distillate file path. You must NOT have access to the original source documents. If you can see the originals, the test is meaningless. - -## Process - -### Step 1: Analyze the Distillate - -Read the distillate file. Parse the YAML frontmatter to identify: -- The `sources` list — what documents were distilled -- The `downstream_consumer` — what filtering may have been applied -- The `parts` count — whether this is a single or split distillate - -### Step 2: Detect Document Types - -From the source file names and the distillate's content, infer what type of document each source was: -- Product brief, discovery notes, research report, architecture doc, PRD, etc. -- Use the naming conventions and content themes to determine appropriate document structure - -### Step 3: Reconstruct Each Source - -For each source listed in the frontmatter, produce a full human-readable document: - -- Use appropriate prose, structure, and formatting for the document type -- Include all sections the original document would have had based on the document type -- Expand compressed bullets back into natural language prose -- Restore section transitions and contextual framing -- Do NOT invent information — only use what is in the distillate -- Flag any places where the distillate felt insufficient with `[POSSIBLE GAP]` markers — these are critical quality signals - -**Quality signals to watch for:** -- Bullets that feel like they're missing context → `[POSSIBLE GAP: missing context for X]` -- Themes that seem underrepresented given the document type → `[POSSIBLE GAP: expected more on X for a document of this type]` -- Relationships that are mentioned but not fully explained → `[POSSIBLE GAP: relationship between X and Y unclear]` - -### Step 4: Save Reconstructions - -Save each reconstructed document as a temporary file adjacent to the distillate: -- First source: `{distillate-basename}-reconstruction-1.md` -- Second source: `{distillate-basename}-reconstruction-2.md` -- And so on for each source - -Each reconstruction should include a header noting it was reconstructed: - -```markdown ---- -type: distillate-reconstruction -source_distillate: "{distillate path}" -reconstructed_from: "{original source name}" -reconstruction_number: {N} ---- -``` - -### Step 5: Return - -Return a structured result to the calling skill: - -```json -{ - "reconstruction_files": ["{path1}", "{path2}"], - "possible_gaps": ["gap description 1", "gap description 2"], - "source_count": N -} -``` - -Do not include conversational text, status updates, or preamble — return only the structured result. diff --git a/src/core-skills/bmad-distillator/resources/compression-rules.md b/src/core-skills/bmad-distillator/resources/compression-rules.md deleted file mode 100644 index b45b1581a..000000000 --- a/src/core-skills/bmad-distillator/resources/compression-rules.md +++ /dev/null @@ -1,51 +0,0 @@ -# Compression Rules - -These rules govern how source text is compressed into distillate format. Apply as a final pass over all output. - -## Strip — Remove entirely - -- Prose transitions: "As mentioned earlier", "It's worth noting", "In addition to this" -- Rhetoric and persuasion: "This is a game-changer", "The exciting thing is" -- Hedging: "We believe", "It's likely that", "Perhaps", "It seems" -- Self-reference: "This document describes", "As outlined above" -- Common knowledge explanations: "Vercel is a cloud platform company", "MIT is an open-source license", "JSON is a data interchange format" -- Repeated introductions of the same concept -- Section transition paragraphs -- Formatting-only elements (decorative bold/italic for emphasis, horizontal rules for visual breaks) -- Filler phrases: "In order to", "It should be noted that", "The fact that" - -## Preserve — Keep always - -- Specific numbers, dates, versions, percentages -- Named entities (products, companies, people, technologies) -- Decisions made and their rationale (compressed: "Decision: X. Reason: Y") -- Rejected alternatives and why (compressed: "Rejected: X. Reason: Y") -- Explicit constraints and non-negotiables -- Dependencies and ordering relationships -- Open questions and unresolved items -- Scope boundaries (in/out/deferred) -- Success criteria and how they're validated -- User segments and what success means for each -- Risks with their severity signals -- Conflicts between source documents - -## Transform — Change form for efficiency - -- Long prose paragraphs → single dense bullet capturing the same information -- "We decided to use X because Y and Z" → "X (rationale: Y, Z)" -- Repeated category labels → group under a single heading, no per-item labels -- "Risk: ... Severity: high" → "HIGH RISK: ..." -- Conditional statements → "If X → Y" form -- Multi-sentence explanations → semicolon-separated compressed form -- Lists of related short items → single bullet with semicolons -- "X is used for Y" → "X: Y" when context is clear -- Verbose enumerations → parenthetical lists: "platforms (Cursor, Claude Code, Windsurf, Copilot)" - -## Deduplication Rules - -- Same fact in multiple documents → keep the version with most context -- Same concept at different detail levels → keep the detailed version -- Overlapping lists → merge into single list, no duplicates -- When source documents disagree → note the conflict explicitly: "Brief says X; discovery notes say Y — unresolved" -- Executive summary points that are expanded elsewhere → keep only the expanded version -- Introductory framing repeated across sections → capture once under the most relevant theme diff --git a/src/core-skills/bmad-distillator/resources/distillate-format-reference.md b/src/core-skills/bmad-distillator/resources/distillate-format-reference.md deleted file mode 100644 index f8db6a2b2..000000000 --- a/src/core-skills/bmad-distillator/resources/distillate-format-reference.md +++ /dev/null @@ -1,227 +0,0 @@ -# Distillate Format Reference - -Examples showing the transformation from human-readable source content to distillate format. - -## Frontmatter - -Every distillate includes YAML frontmatter. Source paths are relative to the distillate's location so the distillate remains portable: - -```yaml ---- -type: bmad-distillate -sources: - - "product-brief-example.md" - - "product-brief-example-discovery-notes.md" -downstream_consumer: "PRD creation" -created: "2026-03-13" -token_estimate: 1200 -parts: 1 ---- -``` - -## Before/After Examples - -### Prose Paragraph to Dense Bullet - -**Before** (human-readable brief excerpt): -``` -## What Makes This Different - -**The anti-fragmentation layer.** The AI tooling space is fracturing across 40+ -platforms with no shared methodology layer. BMAD is uniquely positioned to be the -cross-platform constant — the structured approach that works the same in Cursor, -Claude Code, Windsurf, Copilot, and whatever launches next month. Every other -methodology or skill framework maintains its own platform support matrix. By -building on the open-source skills CLI ecosystem, BMAD offloads the highest-churn -maintenance burden and focuses on what actually differentiates it: the methodology -itself. -``` - -**After** (distillate): -``` -## Differentiation -- Anti-fragmentation positioning: BMAD = cross-platform constant across 40+ fragmenting AI tools; no competitor provides shared methodology layer -- Platform complexity delegated to Vercel skills CLI ecosystem (MIT); BMAD maintains methodology, not platform configs -``` - -### Technical Details to Compressed Facts - -**Before** (discovery notes excerpt): -``` -## Competitive Landscape - -- **Vercel Skills.sh**: 83K+ skills, 18 agents, largest curated leaderboard — - but dev-only, skills trigger unreliably (20% without explicit prompting) -- **SkillsMP**: 400K+ skills directory, pure aggregator with no curation or CLI -- **ClawHub/OpenClaw**: ~3.2K curated skills with versioning/rollback, small ecosystem -- **Lindy**: No-code AI agent builder for business automation — closed platform, - no skill sharing -- **Microsoft Copilot Studio**: Enterprise no-code agent builder — vendor-locked - to Microsoft -- **MindStudio**: No-code AI agent platform — siloed, no interoperability -- **Make/Zapier AI**: Workflow automation adding AI agents — workflow-centric, - not methodology-centric -- **Key gap**: NO competitor combines structured methodology with plugin - marketplace — this is BMAD's whitespace -``` - -**After** (distillate): -``` -## Competitive Landscape -- No competitor combines structured methodology + plugin marketplace (whitespace) -- Skills.sh (Vercel): 83K skills, 18 agents, dev-only, 20% trigger reliability -- SkillsMP: 400K skills, aggregator only, no curation/CLI -- ClawHub: 3.2K curated, versioning, small ecosystem -- No-code platforms (Lindy, Copilot Studio, MindStudio, Make/Zapier): closed/siloed, no skill portability, business-only -``` - -### Deduplication Across Documents - -When the same fact appears in both a brief and discovery notes: - -**Brief says:** -``` -bmad-help must always be included as a base skill in every bundle -``` - -**Discovery notes say:** -``` -bmad-help must always be included as a base skill in every bundle/install -(solves discoverability problem) -``` - -**Distillate keeps the more contextual version:** -``` -- bmad-help: always included as base skill in every bundle (solves discoverability) -``` - -### Decision/Rationale Compression - -**Before:** -``` -We decided not to build our own platform support matrix going forward, instead -delegating to the Vercel skills CLI ecosystem. The rationale is that maintaining -20+ platform configs is the biggest maintenance burden and it's unsustainable -at 40+ platforms. -``` - -**After:** -``` -- Rejected: own platform support matrix. Reason: unsustainable at 40+ platforms; delegate to Vercel CLI ecosystem -``` - -## Full Example - -A complete distillate produced from a product brief and its discovery notes, targeted at PRD creation: - -```markdown ---- -type: bmad-distillate -sources: - - "product-brief-bmad-next-gen-installer.md" - - "product-brief-bmad-next-gen-installer-discovery-notes.md" -downstream_consumer: "PRD creation" -created: "2026-03-13" -token_estimate: 1450 -parts: 1 ---- - -## Core Concept -- BMAD Next-Gen Installer: replaces monolithic Node.js CLI with skill-based plugin architecture for distributing BMAD methodology across 40+ AI platforms -- Three layers: self-describing plugins (bmad-manifest.json), cross-platform install via Vercel skills CLI (MIT), runtime registration via bmad-setup skill -- Transforms BMAD from dev-only methodology into open platform for any domain (creative, therapeutic, educational, personal) - -## Problem -- Current installer maintains ~20 platform configs manually; each platform convention change requires installer update, test, release — largest maintenance burden on team -- Node.js/npm required — blocks non-technical users on UI-based platforms (Claude Co-Work, etc.) -- CSV manifests are static, generated once at install; no runtime scanning/registration -- Unsustainable at 40+ platforms; new tools launching weekly - -## Solution Architecture -- Plugins: skill bundles with Anthropic plugin standard as base format + bmad-manifest.json extending for BMAD-specific metadata (installer options, capabilities, help integration, phase ordering, dependencies) -- Existing manifest example: `{"module-code":"bmm","replaces-skill":"bmad-create-product-brief","capabilities":[{"name":"create-brief","menu-code":"CB","supports-headless":true,"phase-name":"1-analysis","preceded-by":["brainstorming"],"followed-by":["create-prd"],"is-required":true}]}` -- Vercel skills CLI handles platform translation; integration pattern (wrap/fork/call) is PRD decision -- bmad-setup: global skill scanning installed bmad-manifest.json files, registering capabilities, configuring project settings; always included as base skill in every bundle (solves bootstrapping) -- bmad-update: plugin update path without full reinstall; technical approach (diff/replace/preserve customizations) is PRD decision -- Distribution tiers: (1) NPX installer wrapping skills CLI for technical users, (2) zip bundle + platform-specific README for non-technical users, (3) future marketplace -- Non-technical path has honest friction: "copy to right folder" requires knowing where; per-platform README instructions; improves over time as low-code space matures - -## Differentiation -- Anti-fragmentation: BMAD = cross-platform constant; no competitor provides shared methodology layer across AI tools -- Curated quality: all submissions gated, human-reviewed by BMad + core team; 13.4% of community skills have critical vulnerabilities (Snyk 2026); quality gate value increases as ecosystem gets noisier -- Domain-agnostic: no competitor builds beyond software dev workflows; same plugin system powers any domain via BMAD Builder (separate initiative) - -## Users (ordered by v1 priority) -- Module authors (primary v1): package/test/distribute plugins independently without installer changes -- Developers: single-command install on any of 40+ platforms via NPX -- Non-technical users: install without Node/Git/terminal; emerging segment including PMs, designers, educators -- Future plugin creators: non-dev authors using BMAD Builder; need distribution without building own installer - -## Success Criteria -- Zero (or near-zero) custom platform directory code; delegated to skills CLI ecosystem -- Installation verified on top platforms by volume; skills CLI handles long tail -- Non-technical install path validated with non-developer users -- bmad-setup discovers/registers all plugins from manifests; clear errors for malformed manifests -- At least one external module author successfully publishes plugin using manifest system -- bmad-update works without full reinstall -- Existing CLI users have documented migration path - -## Scope -- In: manifest spec, bmad-setup, bmad-update, Vercel CLI integration, NPX installer, zip bundles, migration path -- Out: BMAD Builder, marketplace web platform, skill conversion (prerequisite, separate), one-click install for all platforms, monetization, quality certification process (gated-submission principle is architectural requirement; process defined separately) -- Deferred: CI/CD integration, telemetry for module authors, air-gapped enterprise install, zip bundle integrity verification (checksums/signing), deeper non-technical platform integrations - -## Current Installer (migration context) -- Entry: `tools/installer/bmad-cli.js` (Commander.js) → `tools/installer/core/installer.js` -- Platforms: `platform-codes.yaml` (~20 platforms with target dirs, legacy dirs, template types, special flags) -- Manifests: skill-manifest.csv is the current source of truth; agent essence lives in `_bmad/config.toml` (generated from each module.yaml's `agents:` block) -- External modules: `external-official-modules.yaml` (CIS, GDS, TEA, WDS) from npm with semver -- Dependencies: 4-pass resolver (collect → parse → resolve → transitive); YAML-declared only -- Config: prompts for name, communication language, document output language, output folder -- Skills already use directory-per-skill layout; bmad-manifest.json sidecars exist but are not source of truth -- Key shift: CSV-based static manifests → JSON-based runtime scanning - -## Vercel Skills CLI -- `npx skills add ` — GitHub, GitLab, local paths, git URLs -- 40+ agents; per-agent path mappings; symlinks (recommended) or copies -- Scopes: project-level or global -- Discovery: `skills/`, `.agents/skills/`, agent-specific paths, `.claude-plugin/marketplace.json` -- Commands: add, list, find, remove, check, update, init -- Non-interactive: `-y`, `--all` flags for CI/CD - -## Competitive Landscape -- No competitor combines structured methodology + plugin marketplace (whitespace) -- Skills.sh (Vercel): 83K skills, dev-only, 20% trigger reliability without explicit prompting -- SkillsMP: 400K skills, aggregator only, no curation -- ClawHub: 3.2K curated, versioning, small -- No-code platforms (Lindy, Copilot Studio, MindStudio, Make/Zapier): closed/siloed, no skill portability, business-only -- Market: $7.84B (2025) → $52.62B (2030); Agent Skills spec ~4 months old, 351K+ skills; standards converging under Linux Foundation AAIF (MCP, AGENTS.md, A2A) - -## Rejected Alternatives -- Building own platform support matrix: unsustainable at 40+; delegate to Vercel ecosystem -- One-click install for non-technical v1: emerging space; guidance-based, improve over time -- Prior roadmap/brainstorming: clean start, unconstrained by previous planning - -## Open Questions -- Vercel CLI integration pattern: wrap/fork/call/peer dependency? -- bmad-update mechanics: diff/replace? Preserve user customizations? -- Migration story: command/manual reinstall/compatibility shim? -- Cross-platform testing: CI matrix for top N? Community testing for rest? -- bmad-manifest.json as open standard submission to Agent Skills governance? -- Platforms NOT supported by Vercel skills CLI? -- Manifest versioning strategy for backward compatibility? -- Plugin author getting-started experience and tooling? - -## Opportunities -- Module authors as acquisition channel: each published plugin distributes BMAD to creator's audience -- CI/CD integration: bmad-setup as pipeline one-liner increases stickiness -- Educational institutions: structured methodology + non-technical install → university AI curriculum -- Skill composability: mixing BMAD modules with third-party skills for custom methodology stacks - -## Risks -- Manifest format evolution creates versioning/compatibility burden once third-party authors publish -- Quality gate needs defined process, not just claim — gated review model addresses -- 40+ platform testing environments even with Vercel handling translation -- Scope creep pressure from marketplace vision (explicitly excluded but primary long-term value) -- Vercel dependency: minor supply-chain risk; MIT license allows fork if deprioritized -``` diff --git a/src/core-skills/bmad-distillator/resources/splitting-strategy.md b/src/core-skills/bmad-distillator/resources/splitting-strategy.md deleted file mode 100644 index 37fec0343..000000000 --- a/src/core-skills/bmad-distillator/resources/splitting-strategy.md +++ /dev/null @@ -1,78 +0,0 @@ -# Semantic Splitting Strategy - -When the source content is large (exceeds ~15,000 tokens) or a token_budget requires it, split the distillate into semantically coherent sections rather than arbitrary size breaks. - -## Why Semantic Over Size-Based - -Arbitrary splits (every N tokens) break coherence. A downstream workflow loading "part 2 of 4" gets context fragments. Semantic splits produce self-contained topic clusters that a workflow can load selectively — "give me just the technical decisions section" — which is more useful and more token-efficient for the consumer. - -## Splitting Process - -### 1. Identify Natural Boundaries - -After the initial extraction and deduplication (Steps 1-2 of the compression process), look for natural semantic boundaries: -- Distinct problem domains or functional areas -- Different stakeholder perspectives (users, technical, business) -- Temporal boundaries (current state vs future vision) -- Scope boundaries (in-scope vs out-of-scope vs deferred) -- Phase boundaries (analysis, design, implementation) - -Choose boundaries that produce sections a downstream workflow might load independently. - -### 2. Assign Items to Sections - -For each extracted item, assign it to the most relevant section. Items that span multiple sections go in the root distillate. - -Cross-cutting items (items relevant to multiple sections): -- Constraints that affect all areas → root distillate -- Decisions with broad impact → root distillate -- Section-specific decisions → section distillate - -### 3. Produce Root Distillate - -The root distillate contains: -- **Orientation** (3-5 bullets): what was distilled, from what sources, for what consumer, how many sections -- **Cross-references**: list of section distillates with 1-line descriptions -- **Cross-cutting items**: facts, decisions, and constraints that span multiple sections -- **Scope summary**: high-level in/out/deferred if applicable - -### 4. Produce Section Distillates - -Each section distillate must be self-sufficient — a reader loading only one section should understand it without the others. - -Each section includes: -- **Context header** (1 line): "This section covers [topic]. Part N of M from [source document names]." -- **Section content**: thematically-grouped bullets following the same compression rules as a single distillate -- **Cross-references** (if needed): pointers to other sections for related content - -### 5. Output Structure - -Create a folder `{base-name}-distillate/` containing: - -``` -{base-name}-distillate/ -├── _index.md # Root distillate: orientation, cross-cutting items, section manifest -├── 01-{topic-slug}.md # Self-contained section -├── 02-{topic-slug}.md -└── 03-{topic-slug}.md -``` - -Example: -``` -product-brief-distillate/ -├── _index.md -├── 01-problem-solution.md -├── 02-technical-decisions.md -└── 03-users-market.md -``` - -## Size Targets - -When a token_budget is specified: -- Root distillate: ~20% of budget (orientation + cross-cutting items) -- Remaining budget split proportionally across sections based on content density -- If a section exceeds its proportional share, compress more aggressively or sub-split - -When no token_budget but splitting is needed: -- Aim for sections of 3,000-5,000 tokens each -- Root distillate as small as possible while remaining useful standalone diff --git a/src/core-skills/bmad-distillator/scripts/analyze_sources.py b/src/core-skills/bmad-distillator/scripts/analyze_sources.py deleted file mode 100644 index 38ddcbe38..000000000 --- a/src/core-skills/bmad-distillator/scripts/analyze_sources.py +++ /dev/null @@ -1,300 +0,0 @@ -# /// script -# /// requires-python = ">=3.10" -# /// dependencies = [] -# /// -"""Analyze source documents for the distillation generator. - -Enumerates files from paths/folders/globs, computes sizes and token estimates, -detects document types from naming conventions, and suggests groupings for -related documents (e.g., a brief paired with its discovery notes). - -Accepts: file paths, folder paths (scans recursively for .md/.txt/.yaml/.yml/.json), -or glob patterns. Skips node_modules, .git, __pycache__, .venv, _bmad-output. - -Output JSON structure: - status: "ok" | "error" - files[]: path, filename, size_bytes, estimated_tokens, doc_type - summary: total_files, total_size_bytes, total_estimated_tokens - groups[]: group_key, files[] with role (primary/companion/standalone) - - Groups related docs by naming convention (e.g., brief + discovery-notes) - routing: recommendation ("single" | "fan-out"), reason - - single: ≤3 files AND ≤15K estimated tokens - - fan-out: >3 files OR >15K estimated tokens - split_prediction: prediction ("likely" | "unlikely"), reason, estimated_distillate_tokens - - Estimates distillate at ~1/3 source size; splits if >5K tokens -""" - -from __future__ import annotations - -import argparse -import glob -import json -import os -import re -import sys -from pathlib import Path - -# Extensions to include when scanning folders -INCLUDE_EXTENSIONS = {".md", ".txt", ".yaml", ".yml", ".json"} - -# Directories to skip when scanning folders -SKIP_DIRS = { - "node_modules", ".git", "__pycache__", ".venv", "venv", - ".claude", "_bmad-output", ".cursor", ".vscode", -} - -# Approximate chars per token for estimation -CHARS_PER_TOKEN = 4 - -# Thresholds -SINGLE_COMPRESSOR_MAX_TOKENS = 15_000 -SINGLE_DISTILLATE_MAX_TOKENS = 5_000 - -# Naming patterns for document type detection -DOC_TYPE_PATTERNS = [ - (r"discovery[_-]notes", "discovery-notes"), - (r"product[_-]brief", "product-brief"), - (r"research[_-]report", "research-report"), - (r"architecture", "architecture-doc"), - (r"prd", "prd"), - (r"distillate", "distillate"), - (r"changelog", "changelog"), - (r"readme", "readme"), - (r"spec", "specification"), - (r"requirements", "requirements"), - (r"design[_-]doc", "design-doc"), - (r"meeting[_-]notes", "meeting-notes"), - (r"brainstorm", "brainstorming"), - (r"interview", "interview-notes"), -] - -# Patterns for grouping related documents -GROUP_PATTERNS = [ - # base document + discovery notes - (r"^(.+?)(?:-discovery-notes|-discovery_notes)\.(\w+)$", r"\1.\2"), - # base document + appendix - (r"^(.+?)(?:-appendix|-addendum)(?:-\w+)?\.(\w+)$", r"\1.\2"), - # base document + review/feedback - (r"^(.+?)(?:-review|-feedback)\.(\w+)$", r"\1.\2"), -] - - -def resolve_inputs(inputs: list[str]) -> list[Path]: - """Resolve input arguments to a flat list of file paths.""" - files: list[Path] = [] - for inp in inputs: - path = Path(inp) - if path.is_file(): - files.append(path.resolve()) - elif path.is_dir(): - for root, dirs, filenames in os.walk(path): - dirs[:] = [d for d in dirs if d not in SKIP_DIRS] - for fn in sorted(filenames): - fp = Path(root) / fn - if fp.suffix.lower() in INCLUDE_EXTENSIONS: - files.append(fp.resolve()) - else: - # Try as glob - matches = glob.glob(inp, recursive=True) - for m in sorted(matches): - mp = Path(m) - if mp.is_file() and mp.suffix.lower() in INCLUDE_EXTENSIONS: - files.append(mp.resolve()) - # Deduplicate while preserving order - seen: set[Path] = set() - deduped: list[Path] = [] - for f in files: - if f not in seen: - seen.add(f) - deduped.append(f) - return deduped - - -def detect_doc_type(filename: str) -> str: - """Detect document type from filename.""" - name_lower = filename.lower() - for pattern, doc_type in DOC_TYPE_PATTERNS: - if re.search(pattern, name_lower): - return doc_type - return "unknown" - - -def suggest_groups(files: list[Path]) -> list[dict]: - """Suggest document groupings based on naming conventions.""" - groups: dict[str, list[dict]] = {} - ungrouped: list[dict] = [] - - file_map = {f.name: f for f in files} - - assigned: set[str] = set() - - for f in files: - if f.name in assigned: - continue - - matched = False - for pattern, base_pattern in GROUP_PATTERNS: - m = re.match(pattern, f.name, re.IGNORECASE) - if m: - # This file is a companion — find its base - base_name = re.sub(pattern, base_pattern, f.name, flags=re.IGNORECASE) - group_key = base_name - if group_key not in groups: - groups[group_key] = [] - # Add the base file if it exists - if base_name in file_map and base_name not in assigned: - groups[group_key].append({ - "path": str(file_map[base_name]), - "filename": base_name, - "role": "primary", - }) - assigned.add(base_name) - groups[group_key].append({ - "path": str(f), - "filename": f.name, - "role": "companion", - }) - assigned.add(f.name) - matched = True - break - - if not matched: - # Check if this file is a base that already has companions - if f.name in groups: - continue # Already added as primary - ungrouped.append({ - "path": str(f), - "filename": f.name, - }) - - result = [] - for group_key, members in groups.items(): - result.append({ - "group_key": group_key, - "files": members, - }) - for ug in ungrouped: - if ug["filename"] not in assigned: - result.append({ - "group_key": ug["filename"], - "files": [{"path": ug["path"], "filename": ug["filename"], "role": "standalone"}], - }) - - return result - - -def analyze(inputs: list[str], output_path: str | None = None) -> None: - """Main analysis function.""" - files = resolve_inputs(inputs) - - if not files: - result = { - "status": "error", - "error": "No readable files found from provided inputs", - "inputs": inputs, - } - output_json(result, output_path) - return - - # Analyze each file - file_details = [] - total_chars = 0 - for f in files: - size = f.stat().st_size - total_chars += size - file_details.append({ - "path": str(f), - "filename": f.name, - "size_bytes": size, - "estimated_tokens": size // CHARS_PER_TOKEN, - "doc_type": detect_doc_type(f.name), - }) - - total_tokens = total_chars // CHARS_PER_TOKEN - groups = suggest_groups(files) - - # Routing recommendation - if len(files) <= 3 and total_tokens <= SINGLE_COMPRESSOR_MAX_TOKENS: - routing = "single" - routing_reason = ( - f"{len(files)} file(s), ~{total_tokens:,} estimated tokens — " - f"within single compressor threshold" - ) - else: - routing = "fan-out" - routing_reason = ( - f"{len(files)} file(s), ~{total_tokens:,} estimated tokens — " - f"exceeds single compressor threshold " - f"({'>' + str(SINGLE_COMPRESSOR_MAX_TOKENS) + ' tokens' if total_tokens > SINGLE_COMPRESSOR_MAX_TOKENS else '> 3 files'})" - ) - - # Split prediction - estimated_distillate_tokens = total_tokens // 3 # rough: distillate is ~1/3 of source - if estimated_distillate_tokens > SINGLE_DISTILLATE_MAX_TOKENS: - split_prediction = "likely" - split_reason = ( - f"Estimated distillate ~{estimated_distillate_tokens:,} tokens " - f"exceeds {SINGLE_DISTILLATE_MAX_TOKENS:,} threshold" - ) - else: - split_prediction = "unlikely" - split_reason = ( - f"Estimated distillate ~{estimated_distillate_tokens:,} tokens " - f"within {SINGLE_DISTILLATE_MAX_TOKENS:,} threshold" - ) - - result = { - "status": "ok", - "files": file_details, - "summary": { - "total_files": len(files), - "total_size_bytes": total_chars, - "total_estimated_tokens": total_tokens, - }, - "groups": groups, - "routing": { - "recommendation": routing, - "reason": routing_reason, - }, - "split_prediction": { - "prediction": split_prediction, - "reason": split_reason, - "estimated_distillate_tokens": estimated_distillate_tokens, - }, - } - - output_json(result, output_path) - - -def output_json(data: dict, output_path: str | None) -> None: - """Write JSON to file or stdout.""" - json_str = json.dumps(data, indent=2) - if output_path: - Path(output_path).parent.mkdir(parents=True, exist_ok=True) - Path(output_path).write_text(json_str + "\n") - print(f"Results written to {output_path}", file=sys.stderr) - else: - print(json_str) - - -def main() -> None: - parser = argparse.ArgumentParser( - description=__doc__, - formatter_class=argparse.RawDescriptionHelpFormatter, - ) - parser.add_argument( - "inputs", - nargs="+", - help="File paths, folder paths, or glob patterns to analyze", - ) - parser.add_argument( - "-o", "--output", - help="Output JSON to file instead of stdout", - ) - args = parser.parse_args() - analyze(args.inputs, args.output) - sys.exit(0) - - -if __name__ == "__main__": - main() diff --git a/src/core-skills/bmad-distillator/scripts/tests/test_analyze_sources.py b/src/core-skills/bmad-distillator/scripts/tests/test_analyze_sources.py deleted file mode 100644 index 3c65ef20a..000000000 --- a/src/core-skills/bmad-distillator/scripts/tests/test_analyze_sources.py +++ /dev/null @@ -1,204 +0,0 @@ -"""Tests for analyze_sources.py""" - -import json -import os -import tempfile -from pathlib import Path -from unittest.mock import patch - -import pytest - -# Add parent dir to path so we can import the script -import sys -sys.path.insert(0, str(Path(__file__).parent.parent)) - -from analyze_sources import ( - resolve_inputs, - detect_doc_type, - suggest_groups, - analyze, - INCLUDE_EXTENSIONS, - SKIP_DIRS, -) - - -@pytest.fixture -def temp_dir(): - """Create a temp directory with sample files.""" - with tempfile.TemporaryDirectory() as d: - # Create sample files - (Path(d) / "product-brief-foo.md").write_text("# Product Brief\nContent here") - (Path(d) / "product-brief-foo-discovery-notes.md").write_text("# Discovery\nNotes") - (Path(d) / "architecture-doc.md").write_text("# Architecture\nDesign here") - (Path(d) / "research-report.md").write_text("# Research\nFindings") - (Path(d) / "random.txt").write_text("Some text content") - (Path(d) / "image.png").write_bytes(b"\x89PNG") - # Create a subdirectory with more files - sub = Path(d) / "subdir" - sub.mkdir() - (sub / "prd-v2.md").write_text("# PRD\nRequirements") - # Create a skip directory - skip = Path(d) / "node_modules" - skip.mkdir() - (skip / "junk.md").write_text("Should be skipped") - yield d - - -class TestResolveInputs: - def test_single_file(self, temp_dir): - f = str(Path(temp_dir) / "product-brief-foo.md") - result = resolve_inputs([f]) - assert len(result) == 1 - assert result[0].name == "product-brief-foo.md" - - def test_folder_recursion(self, temp_dir): - result = resolve_inputs([temp_dir]) - names = {f.name for f in result} - assert "product-brief-foo.md" in names - assert "prd-v2.md" in names - assert "random.txt" in names - - def test_folder_skips_excluded_dirs(self, temp_dir): - result = resolve_inputs([temp_dir]) - names = {f.name for f in result} - assert "junk.md" not in names - - def test_folder_skips_non_text_files(self, temp_dir): - result = resolve_inputs([temp_dir]) - names = {f.name for f in result} - assert "image.png" not in names - - def test_glob_pattern(self, temp_dir): - pattern = str(Path(temp_dir) / "product-brief-*.md") - result = resolve_inputs([pattern]) - assert len(result) == 2 - names = {f.name for f in result} - assert "product-brief-foo.md" in names - assert "product-brief-foo-discovery-notes.md" in names - - def test_deduplication(self, temp_dir): - f = str(Path(temp_dir) / "product-brief-foo.md") - result = resolve_inputs([f, f, f]) - assert len(result) == 1 - - def test_mixed_inputs(self, temp_dir): - file_path = str(Path(temp_dir) / "architecture-doc.md") - folder_path = str(Path(temp_dir) / "subdir") - result = resolve_inputs([file_path, folder_path]) - names = {f.name for f in result} - assert "architecture-doc.md" in names - assert "prd-v2.md" in names - - def test_nonexistent_path(self): - result = resolve_inputs(["/nonexistent/path/file.md"]) - assert len(result) == 0 - - -class TestDetectDocType: - @pytest.mark.parametrize("filename,expected", [ - ("product-brief-foo.md", "product-brief"), - ("product_brief_bar.md", "product-brief"), - ("foo-discovery-notes.md", "discovery-notes"), - ("foo-discovery_notes.md", "discovery-notes"), - ("architecture-overview.md", "architecture-doc"), - ("my-prd.md", "prd"), - ("research-report-q4.md", "research-report"), - ("foo-distillate.md", "distillate"), - ("changelog.md", "changelog"), - ("readme.md", "readme"), - ("api-spec.md", "specification"), - ("design-doc-v2.md", "design-doc"), - ("meeting-notes-2026.md", "meeting-notes"), - ("brainstorm-session.md", "brainstorming"), - ("user-interview-notes.md", "interview-notes"), - ("random-file.md", "unknown"), - ]) - def test_detection(self, filename, expected): - assert detect_doc_type(filename) == expected - - -class TestSuggestGroups: - def test_groups_brief_with_discovery_notes(self, temp_dir): - files = [ - Path(temp_dir) / "product-brief-foo.md", - Path(temp_dir) / "product-brief-foo-discovery-notes.md", - ] - groups = suggest_groups(files) - # Should produce one group with both files - paired = [g for g in groups if len(g["files"]) > 1] - assert len(paired) == 1 - filenames = {f["filename"] for f in paired[0]["files"]} - assert "product-brief-foo.md" in filenames - assert "product-brief-foo-discovery-notes.md" in filenames - - def test_standalone_files(self, temp_dir): - files = [ - Path(temp_dir) / "architecture-doc.md", - Path(temp_dir) / "research-report.md", - ] - groups = suggest_groups(files) - assert len(groups) == 2 - for g in groups: - assert len(g["files"]) == 1 - - def test_mixed_grouped_and_standalone(self, temp_dir): - files = [ - Path(temp_dir) / "product-brief-foo.md", - Path(temp_dir) / "product-brief-foo-discovery-notes.md", - Path(temp_dir) / "architecture-doc.md", - ] - groups = suggest_groups(files) - paired = [g for g in groups if len(g["files"]) > 1] - standalone = [g for g in groups if len(g["files"]) == 1] - assert len(paired) == 1 - assert len(standalone) == 1 - - -class TestAnalyze: - def test_basic_analysis(self, temp_dir): - f = str(Path(temp_dir) / "product-brief-foo.md") - output_file = str(Path(temp_dir) / "output.json") - analyze([f], output_file) - result = json.loads(Path(output_file).read_text()) - assert result["status"] == "ok" - assert result["summary"]["total_files"] == 1 - assert result["files"][0]["doc_type"] == "product-brief" - assert result["files"][0]["estimated_tokens"] > 0 - - def test_routing_single_small_input(self, temp_dir): - f = str(Path(temp_dir) / "product-brief-foo.md") - output_file = str(Path(temp_dir) / "output.json") - analyze([f], output_file) - result = json.loads(Path(output_file).read_text()) - assert result["routing"]["recommendation"] == "single" - - def test_routing_fanout_many_files(self, temp_dir): - # Create enough files to trigger fan-out (> 3 files) - for i in range(5): - (Path(temp_dir) / f"doc-{i}.md").write_text("x" * 1000) - output_file = str(Path(temp_dir) / "output.json") - analyze([temp_dir], output_file) - result = json.loads(Path(output_file).read_text()) - assert result["routing"]["recommendation"] == "fan-out" - - def test_folder_analysis(self, temp_dir): - output_file = str(Path(temp_dir) / "output.json") - analyze([temp_dir], output_file) - result = json.loads(Path(output_file).read_text()) - assert result["status"] == "ok" - assert result["summary"]["total_files"] >= 4 # at least the base files - assert len(result["groups"]) > 0 - - def test_no_files_found(self): - output_file = "/tmp/test_analyze_empty.json" - analyze(["/nonexistent/path"], output_file) - result = json.loads(Path(output_file).read_text()) - assert result["status"] == "error" - os.unlink(output_file) - - def test_stdout_output(self, temp_dir, capsys): - f = str(Path(temp_dir) / "product-brief-foo.md") - analyze([f]) - captured = capsys.readouterr() - result = json.loads(captured.out) - assert result["status"] == "ok" diff --git a/src/core-skills/bmad-spec/SKILL.md b/src/core-skills/bmad-spec/SKILL.md new file mode 100644 index 000000000..d3d437e15 --- /dev/null +++ b/src/core-skills/bmad-spec/SKILL.md @@ -0,0 +1,126 @@ +--- +name: bmad-spec +description: Distill any intent input into the SPEC kernel + companions — the canonical, preservation-validated machine contract for downstream work. Use when the user says "create a spec", "distill this into a spec", "validate this spec", or "update the spec". +--- + +# BMad Spec +## Overview + +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. + +## Conventions + +- Bare paths (e.g. `assets/spec-template.md`) resolve from the skill root. +- `{skill-root}` is this skill's install dir; `{project-root}` is the working dir. +- `{workflow.}` resolves to fields in `customize.toml`. + +## On Activation + +1. Resolve customization: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. On failure, read `{skill-root}/customize.toml` directly. +2. Run `{workflow.activation_steps_prepend}`. Treat `{workflow.persistent_facts}` as foundational context (`file:` entries are loaded). +3. Load `{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}`. +4. Detect mode. **Headless** when any of: no TTY, programmatic caller (another skill or non-interactive runner), or the first message pre-supplies all inputs and asks for an artifact path back. **Interactive** otherwise. In interactive mode, greet by `{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. +5. Run `{workflow.activation_steps_append}`. + +## Workspace + +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: + +- Source artifact already carries a slug (e.g., `prd-foo-bar-2026-05-23/`): inherit (`foo-bar`). +- Sparse, in-chat, or multi-source input: interactive asks; headless caller provides it as part of the input. If absent and underivable, headless blocks with `error_code: "missing_slug"`. +- Same slug = same folder. A second invocation with the same `{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.md ← uppercase, the kernel + .md ← optional, content-typed (e.g. glossary.md) + .md + .decision-log.md ← canonical memory for this spec +``` + +## The Operation + +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. + +## Load-bearing + +A claim is **load-bearing** if any consumer (downstream skill, implementing agent, verification pass) would change a decision without it. + +## Companions + +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: + +- **Spec-authored** companions are written by bmad-spec and live as **siblings of SPEC.md** (e.g., `glossary.md`, `patron-archetypes.md`). bmad-spec owns them and may edit them on update operations. +- **Adopted** companions are load-bearing artifacts written by an upstream skill that downstream still needs to read. bmad-spec references them into `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: + +1. **Name spec-authored companions for the content type they hold.** `glossary.md`, `.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. +2. **Diagrams always land in a companion**, regardless of size. SPEC.md kernel holds prose only. Mermaid blocks, ASCII diagrams, and image references all live in a companion (e.g. `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. + +## Spec Law + +Every spec must satisfy these eight rules. The operation aims for them; the self-validate sweep enforces them. + +1. **Each capability has both `intent` and `success`.** Missing either = not a capability. +2. **Intents describe WHAT, not HOW.** Implementation prescription belongs in a companion (stack, conventions). +3. **Constraints actually bend design decisions.** A "constraint" that rules nothing out is decoration. +4. **Non-goals are explicit.** At least one. Absence means downstream skills fill the vacuum. +5. **Success signal is concrete enough to test or demonstrate against.** "Users love it" doesn't qualify. +6. **Capability IDs are stable and unique.** Never reused, never renumbered. +7. **Preservation.** Every load-bearing source claim lands in SPEC.md or a companion. Wrapper ceremony does not. +8. **Lean prose.** Every sentence carries load-bearing content. Cut decoration, hedges, backstory, throat-clearing. Applies to SPEC.md, companions, and `.decision-log.md`. + +## Self-Validate + +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. + +## Spec with no change signal + +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. + +## Output + +**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. + +## After Spec is Output + +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. + +## Frontmatter conventions + +- `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. +- **Do not list** decision logs, README files, organizational artifacts, or any operational record of how upstream skills produced their artifacts. Those are not source content; they are process metadata that downstream consumers don't need. diff --git a/src/core-skills/bmad-spec/assets/headless-schemas.md b/src/core-skills/bmad-spec/assets/headless-schemas.md new file mode 100644 index 000000000..096b15803 --- /dev/null +++ b/src/core-skills/bmad-spec/assets/headless-schemas.md @@ -0,0 +1,33 @@ +# Headless JSON Response + +The default invocation is headless: input goes in, JSON comes out. The contract is intentionally tiny — return the outcome and the files touched. Anything else a caller needs is inside those files (SPEC.md, companions, `.decision-log.md`). + +## Success + +```json +{ + "status": "complete", + "files": [ + "_bmad-output/specs/spec-quarter-drop/SPEC.md", + "_bmad-output/specs/spec-quarter-drop/glossary.md", + "_bmad-output/specs/spec-quarter-drop/.decision-log.md" + ] +} +``` + +`files` lists every file written or modified in this run, in any order. The spec folder, kernel filename, decision log location, capabilities, companions, and verdict are all readable from those files; no need to re-encode them in the response. + +## Blocked + +```json +{ + "status": "blocked", + "error_code": "insufficient_intent", + "reason": "Input was a one-line idea with no surrounding context; too thin to distill. Suggest bmad-prd to draw the vision out first." +} +``` + +Defined `error_code` values: + +- `insufficient_intent` — input too thin to distill into a kernel. +- `missing_slug` — input is sparse or multi-source and no slug was provided by the caller or derivable from a source path. diff --git a/src/core-skills/bmad-spec/assets/spec-template.md b/src/core-skills/bmad-spec/assets/spec-template.md new file mode 100644 index 000000000..f8127204c --- /dev/null +++ b/src/core-skills/bmad-spec/assets/spec-template.md @@ -0,0 +1,49 @@ +--- +id: SPEC-{slug} +companions: [] # files downstream MUST read alongside SPEC.md. Paths may point inside the spec folder (spec-authored) or outside it (adopted from an upstream skill). +sources: [] # files fully absorbed into the SPEC (audit only; downstream does NOT read these). Never decision logs. +--- + +> **Canonical contract.** This SPEC and the files in `companions:` are the complete, preservation-validated contract for what to build, test, and validate. Source documents listed in frontmatter are for traceability only — consult them only if you need narrative rationale or prose color this contract intentionally omits. + +# {Spec Title} + +## Why + +{One paragraph naming the force behind this work. A spec can exist for any of: + - **a pain to solve** — a user or operator is stuck on a specific gap; + - **an opportunity to capture** — something newly possible we want to claim; + - **a vision to realize** — a thing we want to make exist because we want it to exist; + - **a mandate to meet** — a regulation, deprecation, deadline, or contractual obligation. + +Name which (or which combination) applies, who is affected, and the backdrop that makes it matter now. This is the anchor every downstream trade-off resolves against.} + +## Capabilities + +- id: CAP-1 + intent: {One sentence. "User or system can do X to achieve Y." WHAT, not HOW.} + success: {Testable or demonstrable criterion. Something a test or a real demonstration can decide.} + +## Constraints + +- {A non-negotiable that bends design. If it doesn't rule anything out, it doesn't belong.} + +## Non-goals + +- {Explicit out-of-scope item. At least one. Stops downstream from filling the vacuum.} + +## Success signal + +- {One or two sentences. World-change moment, not dashboard. Concrete enough to write a test or run a demonstration against.} + +## Assumptions + + + +- {Statement of fact the Spec proceeded under, e.g. "Assumed mobile-first since input mentioned GPS but no platform."} + +## Open Questions + + + +- {Question phrased so a human can answer it, e.g. "Is offline playback in scope for CAP-2?"} diff --git a/src/core-skills/bmad-spec/customize.toml b/src/core-skills/bmad-spec/customize.toml new file mode 100644 index 000000000..c3cd7c0fe --- /dev/null +++ b/src/core-skills/bmad-spec/customize.toml @@ -0,0 +1,53 @@ +# DO NOT EDIT -- overwritten on every update. +# +# Workflow customization surface for bmad-spec. +# +# Override files (not edited here): +# {project-root}/_bmad/custom/bmad-spec.toml (team) +# {project-root}/_bmad/custom/bmad-spec.user.toml (personal) + +[workflow] + +# --- Configurable below. Overrides merge per BMad structural rules: --- +# scalars: override wins • arrays: append + +# Steps to run before the standard activation (config load, greet). +activation_steps_prepend = [] + +# Steps to run after greet but before the operation begins. +activation_steps_append = [] + +# Persistent facts the workflow keeps in mind for the whole run. +# Each entry is either a literal sentence, a skill prefixed with `skill:`, +# or a `file:`-prefixed path/glob whose contents are loaded as facts. +# Default points to a single top-level file; override in team/user TOML +# to widen the scope (e.g. `_bmad/**/project-context.md`) if needed. +persistent_facts = [ + "file:{project-root}/project-context.md", +] + +# Executed when the workflow completes. Scalar or array of instructions. +on_complete = "" + +# Spec template. The five-field kernel skeleton. Override the path in +# team/user TOML to enforce a different shape (e.g. a hypothesis field +# for research initiatives, or a mechanics field for games). +spec_template = "assets/spec-template.md" + +# Canonical filename for the kernel artifact inside the spec folder. +# Uppercase by convention to signal "the central source of truth." +spec_filename = "SPEC.md" + +# Output path for spec folders. Lands directly under {output_folder} +# so bmad-spec works in core-only installs and matches the +# long-term BMad direction of grouping artifacts as siblings under +# {output_folder}// rather than nested inside planning vs +# implementation folders. +spec_output_path = "{output_folder}/specs" + +# Run-folder pattern inside spec_output_path. Resolved against the +# input-derived slug at activation. Same slug = same folder, so a +# second invocation updates the existing spec in place (capability +# IDs preserved). Override to add {date} or other components if a +# fresh dated history is preferred. +run_folder_pattern = "spec-{slug}" diff --git a/src/core-skills/module-help.csv b/src/core-skills/module-help.csv index 910411ada..ea4abb043 100644 --- a/src/core-skills/module-help.csv +++ b/src/core-skills/module-help.csv @@ -9,5 +9,5 @@ Core,bmad-editorial-review-prose,Editorial Review - Prose,EP,Use after drafting Core,bmad-editorial-review-structure,Editorial Review - Structure,ES,Use when doc produced from multiple subprocesses or needs structural improvement.,,[path],anytime,,,false,report located with target document, Core,bmad-review-adversarial-general,Adversarial Review,AR,"Use for quality assurance or before finalizing deliverables. Code Review in other modules runs this automatically, but also useful for document reviews.",,[path],anytime,,,false,, Core,bmad-review-edge-case-hunter,Edge Case Hunter Review,ECH,Use alongside adversarial review for orthogonal coverage — method-driven not attitude-driven.,,[path],anytime,,,false,, -Core,bmad-distillator,Distillator,DG,Use when you need token-efficient distillates that preserve all information for downstream LLM consumption.,,[path],anytime,,,false,adjacent to source document or specified output_path,distillate markdown file(s) +Core,bmad-spec,Spec,SP,"Use to distill any intent input (brief, PRD, transcript, brain dump, design folder, mixed multi-source) into a succinct, no-fluff SPEC.md contract + companions that downstream work derives from. Locks the WHAT before the HOW. Works for software, game design, research, editorial, policy, business, anything intent-bearing. Validation mode also available.",,[path],anytime,,,false,{output_folder}/specs/spec-{slug},SPEC.md + companion files Core,bmad-customize,BMad Customize,BC,"Use when you want to change how an agent or workflow behaves — add persistent facts, swap templates, insert activation hooks, or customize menus. Scans what's customizable, picks the right scope (agent vs workflow), writes the override to _bmad/custom/, and verifies the merge. No TOML hand-authoring required.",,,anytime,,,false,{project-root}/_bmad/custom,TOML override files From f28d04a92a588988b645fb4cb88f2da0ae42282a Mon Sep 17 00:00:00 2001 From: Rayan Salhab Date: Sun, 24 May 2026 22:42:45 +0300 Subject: [PATCH 12/26] fix: write customization JSON as UTF-8 (#2414) Co-authored-by: cyphercodes Co-authored-by: Brian --- src/scripts/resolve_customization.py | 10 +++- .../tests/test_resolve_customization.py | 50 +++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 src/scripts/tests/test_resolve_customization.py diff --git a/src/scripts/resolve_customization.py b/src/scripts/resolve_customization.py index 28901ed0f..3299e1ade 100755 --- a/src/scripts/resolve_customization.py +++ b/src/scripts/resolve_customization.py @@ -177,6 +177,14 @@ def extract_key(data, dotted_key: str): return current +def write_json_stdout(output): + """Write JSON as UTF-8 so Windows cp1252 stdout can carry emoji icons.""" + reconfigure = getattr(sys.stdout, "reconfigure", None) + if reconfigure is not None: + reconfigure(encoding="utf-8") + sys.stdout.write(json.dumps(output, indent=2, ensure_ascii=False) + "\n") + + def main(): parser = argparse.ArgumentParser( description="Resolve customization for a BMad skill using three-layer TOML merge.", @@ -223,7 +231,7 @@ def main(): else: output = merged - sys.stdout.write(json.dumps(output, indent=2, ensure_ascii=False) + "\n") + write_json_stdout(output) if __name__ == "__main__": diff --git a/src/scripts/tests/test_resolve_customization.py b/src/scripts/tests/test_resolve_customization.py new file mode 100644 index 000000000..5ee112079 --- /dev/null +++ b/src/scripts/tests/test_resolve_customization.py @@ -0,0 +1,50 @@ +import json +import os +import subprocess +import sys +import tempfile +import unittest +from pathlib import Path + + +SCRIPT = Path(__file__).resolve().parents[1] / "resolve_customization.py" + + +class ResolveCustomizationStdoutTests(unittest.TestCase): + def test_writes_emoji_json_when_stdout_encoding_is_cp1252(self): + with tempfile.TemporaryDirectory() as temp_dir: + skill_dir = Path(temp_dir) / "emoji-agent" + skill_dir.mkdir() + (skill_dir / "customize.toml").write_text( + '[agent]\nname = "Emoji Agent"\nicon = "🧭"\n', + encoding="utf-8", + ) + + env = os.environ.copy() + env["PYTHONIOENCODING"] = "cp1252" + result = subprocess.run( + [ + sys.executable, + str(SCRIPT), + "--skill", + str(skill_dir), + "--key", + "agent", + ], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + env=env, + check=False, + ) + + stderr = result.stderr.decode("utf-8", errors="replace") + self.assertEqual(result.returncode, 0, msg=stderr) + + output = result.stdout.decode("utf-8") + self.assertIn("🧭", output) + resolved = json.loads(output) + self.assertEqual(resolved["agent"]["icon"], "🧭") + + +if __name__ == "__main__": + unittest.main() From 189c2b85ebd2c031739b5739c795e38f9db1fdff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emmanuel=20Ats=C3=A9?= Date: Sun, 24 May 2026 21:44:00 +0200 Subject: [PATCH 13/26] docs(en): add bmad-investigate / IN trigger to agent tables (#2410) The forensic investigation feature (commit 380590aa) added the IN menu trigger and bmad-investigate skill, but several docs that enumerate triggers and agent capabilities were not updated. - agents.md: add IN trigger and Forensic Investigation to Amelia's row - named-agents.md: add forensic investigation to Amelia's capabilities Co-authored-by: Brian --- docs/explanation/named-agents.md | 2 +- docs/reference/agents.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/explanation/named-agents.md b/docs/explanation/named-agents.md index e5a92511c..c0063ba1c 100644 --- a/docs/explanation/named-agents.md +++ b/docs/explanation/named-agents.md @@ -36,7 +36,7 @@ BMad ships six named agents, each anchored to a phase of the BMad Method: | 📋 **John**, Product Manager | Planning | PRD creation, epic/story breakdown, implementation readiness | | 🎨 **Sally**, UX Designer | Planning | UX design specifications | | 🏗️ **Winston**, System Architect | Solutioning | technical architecture, alignment checks | -| 💻 **Amelia**, Senior Engineer | Implementation | story execution, quick-dev, code review, sprint planning | +| 💻 **Amelia**, Senior Engineer | Implementation | story execution, quick-dev, code review, sprint planning, [forensic investigation](./forensic-investigation.md) | They each have a hardcoded identity (name, title, domain) and a customizable layer (role, principles, communication style, icon, menu). You can rewrite Mary's principles or add menu items; you can't rename her — that's deliberate. Brand recognition survives customization so "hey Mary" always activates the analyst, regardless of how a team has shaped her behavior. diff --git a/docs/reference/agents.md b/docs/reference/agents.md index 4e05cde1b..bdc7d0871 100644 --- a/docs/reference/agents.md +++ b/docs/reference/agents.md @@ -20,7 +20,7 @@ This page lists the default BMM (Agile suite) agents that install with BMad Meth | Analyst (Mary) | `bmad-analyst` | `BP`, `MR`, `DR`, `TR`, `CB`, `WB`, `DP` | Brainstorm, Market Research, Domain Research, Technical Research, Create Brief, PRFAQ Challenge, Document Project | | Product Manager (John) | `bmad-pm` | `CP`, `VP`, `EP`, `CE`, `IR`, `CC` | Create/Validate/Edit PRD, Create Epics and Stories, Implementation Readiness, Correct Course | | Architect (Winston) | `bmad-architect` | `CA`, `IR` | Create Architecture, Implementation Readiness | -| Developer (Amelia) | `bmad-agent-dev` | `DS`, `QD`, `QA`, `CR`, `SP`, `CS`, `ER` | Dev Story, Quick Dev, QA Test Generation, Code Review, Sprint Planning, Create Story, Epic Retrospective | +| Developer (Amelia) | `bmad-agent-dev` | `DS`, `QD`, `QA`, `CR`, `SP`, `CS`, `ER`, `IN` | Dev Story, Quick Dev, QA Test Generation, Code Review, Sprint Planning, Create Story, Epic Retrospective, [Forensic Investigation](../explanation/forensic-investigation.md) | | UX Designer (Sally) | `bmad-ux-designer` | `CU` | Create UX Design | | Technical Writer (Paige) | `bmad-tech-writer` | `DP`, `WD`, `US`, `MG`, `VD`, `EC` | Document Project, Write Document, Update Standards, Mermaid Generate, Validate Doc, Explain Concept | From 3bc2ad30a3a1ef0a7f1cb0dd7e32b9cae56ccfca Mon Sep 17 00:00:00 2001 From: Brian Date: Mon, 25 May 2026 08:46:19 -0500 Subject: [PATCH 14/26] feat(web-bundles): bring back V4 web bundles for V6 (#2421) * feat(web-bundles): bring back V4 web bundles for V6 Restores the V4 web bundle pattern for V6. BMad planning skills are repackaged as one-click installs for Google Gemini Gems and ChatGPT Custom GPTs, so users can run analysis and planning conversations in flat-rate web LLM subscriptions instead of metered IDE tokens. Current shelf (6 bundles): brainstorming, product brief, PRFAQ, PRD, UX, market and industry research. Each bundle ships a SKILL.md protocol, an INSTRUCTIONS.md with a default persona and a contrasting swap example, and any required data files. New in this commit: - Market & Industry Research bundle merging market and domain research with Porter and Christensen anchors, Mary persona inherited from the BMad analyst agent, Geoffrey Moore swap example, Deep Research mode integrated as the default research path - web-bundles/README.md folder index listing all 6 bundles - README.md section announcing the V6 web bundle shelf - docs/explanation/web-bundles.md concept page (what, why, when) - docs/how-to/use-web-bundles.md install steps for Gemini Gems and ChatGPT Custom GPTs * docs(web-bundles): unindent admonition closer in use-web-bundles.md The :::note[Prerequisites] closer was indented under the last bullet, which can prevent the admonition from closing and break Starlight rendering for the rest of the page. Flush left now. --- README.md | 8 + docs/explanation/web-bundles.md | 70 +++++++ docs/how-to/use-web-bundles.md | 75 +++++++ web-bundles/README.md | 40 ++++ .../brainstorming-coach/INSTRUCTIONS.md | 86 ++++++++ web-bundles/brainstorming-coach/SKILL.md | 83 ++++++++ .../brainstorming-coach/brain-methods.csv | 62 ++++++ .../INSTRUCTIONS.md | 88 +++++++++ .../market-and-industry-research/SKILL.md | 59 ++++++ web-bundles/prd-coach/INSTRUCTIONS.md | 86 ++++++++ web-bundles/prd-coach/SKILL.md | 101 ++++++++++ web-bundles/prd-coach/prd-template.md | 165 ++++++++++++++++ .../prd-coach/prd-validation-checklist.md | 135 +++++++++++++ web-bundles/prfaq-coach/INSTRUCTIONS.md | 86 ++++++++ web-bundles/prfaq-coach/SKILL.md | 139 +++++++++++++ .../product-brief-coach/INSTRUCTIONS.md | 86 ++++++++ web-bundles/product-brief-coach/SKILL.md | 113 +++++++++++ web-bundles/ux-coach/INSTRUCTIONS.md | 92 +++++++++ web-bundles/ux-coach/SKILL.md | 187 ++++++++++++++++++ web-bundles/ux-coach/ux-validation.md | 100 ++++++++++ 20 files changed, 1861 insertions(+) create mode 100644 docs/explanation/web-bundles.md create mode 100644 docs/how-to/use-web-bundles.md create mode 100644 web-bundles/README.md create mode 100644 web-bundles/brainstorming-coach/INSTRUCTIONS.md create mode 100644 web-bundles/brainstorming-coach/SKILL.md create mode 100644 web-bundles/brainstorming-coach/brain-methods.csv create mode 100644 web-bundles/market-and-industry-research/INSTRUCTIONS.md create mode 100644 web-bundles/market-and-industry-research/SKILL.md create mode 100644 web-bundles/prd-coach/INSTRUCTIONS.md create mode 100644 web-bundles/prd-coach/SKILL.md create mode 100644 web-bundles/prd-coach/prd-template.md create mode 100644 web-bundles/prd-coach/prd-validation-checklist.md create mode 100644 web-bundles/prfaq-coach/INSTRUCTIONS.md create mode 100644 web-bundles/prfaq-coach/SKILL.md create mode 100644 web-bundles/product-brief-coach/INSTRUCTIONS.md create mode 100644 web-bundles/product-brief-coach/SKILL.md create mode 100644 web-bundles/ux-coach/INSTRUCTIONS.md create mode 100644 web-bundles/ux-coach/SKILL.md create mode 100644 web-bundles/ux-coach/ux-validation.md diff --git a/README.md b/README.md index 933adef3b..577596353 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,14 @@ BMad Method extends with official modules for specialized domains. Available dur | **[Game Dev Studio (BMGD)](https://github.com/bmad-code-org/bmad-module-game-dev-studio)** | Game development workflows (Unity, Unreal, Godot) | | **[Creative Intelligence Suite (CIS)](https://github.com/bmad-code-org/bmad-module-creative-intelligence-suite)** | Innovation, brainstorming, design thinking | +## Web Bundles + +V4 shipped web bundles. V6 brings them back, new and improved. Find them in [`web-bundles/`](./web-bundles/). + +Web bundles package selected BMad skills as one-click installs for **Google Gemini Gems** and **ChatGPT Custom GPTs**. Use them to do the upfront planning work (brainstorming, product briefs, PRDs, PRFAQs, UX specs, market and industry research) in your web LLM subscription, then bring the polished artifacts into your IDE for implementation. Planning runs on a flat-rate subscription instead of metered IDE tokens, which is a meaningful cost saver on longer engagements. + +Current shelf: brainstorming, product brief, PRFAQ, PRD, UX, market & industry research. Install steps live in each bundle's `INSTRUCTIONS.md`; see [the web bundles guide](https://docs.bmad-method.org/explanation/web-bundles/) for the concept and [the how-to](https://docs.bmad-method.org/how-to/use-web-bundles/) for setup. + ## Documentation [BMad Method Docs Site](https://docs.bmad-method.org) — Tutorials, guides, concepts, and reference diff --git a/docs/explanation/web-bundles.md b/docs/explanation/web-bundles.md new file mode 100644 index 000000000..596f99e2f --- /dev/null +++ b/docs/explanation/web-bundles.md @@ -0,0 +1,70 @@ +--- +title: 'Web Bundles' +description: BMad skills packaged for Google Gemini Gems and ChatGPT Custom GPTs +--- + +Run the planning side of BMad in your web LLM subscription, then bring the artifacts into your IDE. + +## What is a Web Bundle? + +A web bundle is a BMad skill repackaged as a one-click install for **Google Gemini Gems** and **ChatGPT Custom GPTs**. Each bundle is two files (sometimes three): a `SKILL.md` protocol you upload as a knowledge file, and an `INSTRUCTIONS.md` block you paste into the Gem or GPT instructions. The persona lives in the pasted instructions; the protocol lives in the knowledge file. Swap personas without touching the protocol. + +V4 of BMad shipped web bundles. V6 brings them back, rewritten for the current Gem and Custom GPT platforms with Canvas, Deep Research, and image generation in mind. + +## Why use them + +Planning work and implementation work want different tools. Web bundles let each use the right one. + +| Concern | Web LLM (Gem or GPT) | IDE (Claude Code, Cursor) | +| --- | --- | --- | +| Cost model | Flat-rate subscription | Metered tokens | +| Strongest at | Conversation, Canvas, Deep Research, images | Files, terminal, codebase context | +| Best for | Brainstorming, briefs, PRDs, research | Implementation, refactoring, code review | + +Running a full PRD or market research conversation in an IDE burns tokens that a Gem or Custom GPT handles for the price of your existing subscription. The polished artifact then drops into your repo and Claude Code or Cursor takes it from there. + +:::tip[Plan in the web, build in the IDE] +The cost saving compounds on longer engagements. A PRFAQ pass and three rounds of research in a Gem cost zero marginal dollars; the same work in an IDE is real spend. +::: + +## What's in the shelf + +The current set of bundles covers the analysis and planning phases: + +| Bundle | Phase | Persona lineage | +| --- | --- | --- | +| Brainstorming Coach | Analysis | Osborn (default), Minto (swap) | +| Product Brief Coach | Analysis | Mary (BMad analyst) | +| PRFAQ Coach | Analysis | Working Backwards (Bezos) | +| PRD Coach | Planning | Cagan | +| UX Coach | Planning | Norman | +| Market & Industry Research | Analysis | Porter and Christensen | + +Each bundle carries a default persona inherited from its owning BMad agent (where one exists) and a contrasting swap example to demonstrate the voice change pattern. + +## How a session works + +1. **Open the Gem or Custom GPT.** Persona greets in character and opens conversational discovery. +2. **Discover scope.** The persona asks what you're trying to do, what you have on hand, what constraints apply. No form fill. +3. **Do the work in Canvas.** The protocol opens Canvas at session start and updates it continuously. Mermaid diagrams and HTML tables go in alongside the prose. +4. **Hand off.** When you're done, you have a Canvas document you can export, paste into your repo, or feed to a BMad skill in your IDE for the next phase. + +For bundles that integrate Deep Research (currently Market & Industry Research), the persona drafts a Deep Research brief mid-session for you to paste into Gemini's or ChatGPT's Deep Research mode, then ingests the returned report. + +## When to use a web bundle + +- You're doing the upfront thinking for a project and you want a focused tool with persona, Canvas, and Deep Research. +- You want to keep IDE token spend for actual coding. +- You're sharing the planning artifact with collaborators who don't have your IDE setup. + +## When to stay in the IDE + +- The work needs to read or modify code in your repo. +- You're already mid-implementation and want to keep context. +- You don't have a Gemini Advanced or ChatGPT Plus subscription. + +## Building your own + +Web bundles are generated from BMad skills using the `bmad-os-skill-to-bundle` utility skill. Point it at any BMad skill folder and it produces the bundle files with persona inheritance from the owning agent. + +See the [how-to guide](../how-to/use-web-bundles.md) for installation steps. diff --git a/docs/how-to/use-web-bundles.md b/docs/how-to/use-web-bundles.md new file mode 100644 index 000000000..f73b975b0 --- /dev/null +++ b/docs/how-to/use-web-bundles.md @@ -0,0 +1,75 @@ +--- +title: 'Use Web Bundles' +description: Install a BMad web bundle as a Google Gemini Gem or ChatGPT Custom GPT +--- + +Use a **web bundle** to run BMad planning work in your Gemini or ChatGPT subscription instead of your IDE. + +## When to Use This + +- You want to run brainstorming, product brief, PRFAQ, PRD, UX, or market research in a web LLM. +- You want to save IDE tokens by keeping the planning conversation on a flat-rate subscription. +- You want to share a planning artifact with collaborators who don't have your IDE setup. + +## When to Skip This + +- The work needs to read or modify code in your repo. Stay in the IDE. +- You don't have a Gemini Advanced or ChatGPT Plus subscription. + +:::note[Prerequisites] + +- **For Gemini Gems**: Gemini Advanced subscription. +- **For ChatGPT Custom GPTs**: Plus, Pro, Business, or Enterprise plan. Some bundles use Deep Research, which has its own plan availability. +- A bundle from [`web-bundles/`](https://github.com/bmad-code-org/BMAD-METHOD/tree/main/web-bundles). +::: + +## Steps + +### 1. Pick a Bundle + +Browse [`web-bundles/`](https://github.com/bmad-code-org/BMAD-METHOD/tree/main/web-bundles) and pick the one for the work you're doing. Open the bundle folder; you'll see `SKILL.md`, `INSTRUCTIONS.md`, and any data files (CSVs, templates, validation checklists). + +### 2. Install in Google Gemini + +1. Go to [gemini.google.com](https://gemini.google.com) and create a new Gem. +2. Name the Gem after the bundle (for example, **Market & Industry Research**). +3. Upload the bundle's `SKILL.md` and any data files (`.csv`, `.md` templates, validation files) as knowledge files. +4. Open the bundle's `INSTRUCTIONS.md`, scroll to the **PASTE BOUNDARY** line, and paste everything below it into the Gem's instructions box. +5. Save. + +Some bundles call for Deep Research. If yours does, enable it from the Gemini prompt bar (Tools → Deep Research) before starting each session. + +### 3. Install in ChatGPT + +1. Go to [chatgpt.com](https://chatgpt.com) and create a new Custom GPT under **Explore GPTs → Create**. +2. Name the GPT after the bundle. +3. Under **Configure → Knowledge**, upload the bundle's `SKILL.md` and any data files. +4. Open the bundle's `INSTRUCTIONS.md`, scroll to the **PASTE BOUNDARY** line, and paste everything below it into **Instructions**. +5. Under **Capabilities**, turn on **Web Browsing** if the bundle's install steps call for it. +6. Save. + +If the bundle integrates Deep Research, enable it before each session via the composer "+" menu or **Tools → Run deep research**. + +### 4. Customize the Persona (Optional) + +Each bundle's `INSTRUCTIONS.md` includes a **Persona Swap Example** above the paste boundary. Replace the `[persona]` block in your installed instructions with the swap example to change voice without changing the protocol. You can also write your own persona from scratch; the protocol stays the same. + +### 5. Run a Session + +Open the Gem or Custom GPT and send your first message. The persona greets you in character and starts the discovery conversation defined in `SKILL.md`. Canvas opens automatically when relevant. + +When you're done, export or copy the Canvas document into your repo or hand it off to the next BMad skill in your IDE. + +## What You Get + +- A reusable Gem or Custom GPT scoped to one BMad planning capability. +- Polished artifacts (briefs, PRDs, research reports, UX specs) ready to drop into your IDE for implementation. +- Planning conversation runs on your existing web LLM subscription instead of metered IDE tokens. + +:::caution[Persona drift] +Web LLMs occasionally drop persona partway through long sessions. If the model starts speaking out of character, remind it of its persona or start a fresh session. +::: + +## Building Your Own + +To turn an existing BMad skill into a web bundle, use the `bmad-os-skill-to-bundle` utility skill from [bmad-utility-skills](https://github.com/bmad-code-org/bmad-utility-skills). It produces the bundle files with persona inheritance from the owning agent and a swap-example contrast voice. diff --git a/web-bundles/README.md b/web-bundles/README.md new file mode 100644 index 000000000..9016f6ec6 --- /dev/null +++ b/web-bundles/README.md @@ -0,0 +1,40 @@ +# BMad Web Bundles + +V4 shipped web bundles. V6 brings them back, new and improved. Each bundle packages a BMad skill as a self-contained install for **Google Gemini Gems** and **ChatGPT Custom GPTs**, so you can run the planning work in your web LLM subscription before opening your IDE. + +## Why use these + +- **Cost.** Web LLM subscriptions are flat-rate. Run brainstorming, briefs, PRDs, and research there instead of burning IDE tokens. +- **Right tool for the job.** Planning conversations want Canvas, image generation, and Deep Research. Implementation wants the codebase and a terminal. Use each where it's strongest. +- **Persona swapping.** Every bundle's `INSTRUCTIONS.md` carries a default persona and a contrasting swap example. Change voices without touching the protocol. + +## The shelf + +| Bundle | Purpose | +| --- | --- | +| [`brainstorming-coach/`](./brainstorming-coach/) | Facilitated ideation across 60 techniques. Defaults to **Carson** (Osborn lineage); swap to **Mary** for analyst rigor. | +| [`product-brief-coach/`](./product-brief-coach/) | Build a one-page product brief through guided discovery. | +| [`prfaq-coach/`](./prfaq-coach/) | Working Backwards PRFAQ challenge (Bezos lineage) to forge and stress-test product concepts. | +| [`prd-coach/`](./prd-coach/) | Product Requirements Document with built-in validation (Cagan lineage). | +| [`ux-coach/`](./ux-coach/) | UX patterns, flows, and design specifications. | +| [`market-and-industry-research/`](./market-and-industry-research/) | Market research, customer JTBD, competitive landscape, regulatory and technical lenses. Deep Research mode integrated. | + +## Install + +Each bundle has its own `INSTRUCTIONS.md` with platform-specific setup steps. Pattern is the same: + +1. Create a Gem (Gemini) or Custom GPT (ChatGPT). +2. Upload the bundle's `SKILL.md` (and any data files) as knowledge. +3. Paste the block below the **PASTE BOUNDARY** into the instructions box. +4. Enable Web Browsing / Deep Research if the bundle's install steps call for it. + +Gemini Gems require Gemini Advanced. ChatGPT Custom GPTs require Plus, Pro, Business, or Enterprise; Deep Research has its own plan limits. + +## Build your own + +Web bundles are generated from BMad skills using the [`bmad-os-skill-to-bundle`](https://github.com/bmad-code-org/bmad-utility-skills) utility skill. Point it at any BMad skill folder and it produces a `SKILL.md`, an `INSTRUCTIONS.md`, and any required data files, with persona inheritance from the owning agent. + +## Docs + +- [What web bundles are and when to use them](https://docs.bmad-method.org/explanation/web-bundles/) +- [How to install a web bundle](https://docs.bmad-method.org/how-to/use-web-bundles/) diff --git a/web-bundles/brainstorming-coach/INSTRUCTIONS.md b/web-bundles/brainstorming-coach/INSTRUCTIONS.md new file mode 100644 index 000000000..620b5646f --- /dev/null +++ b/web-bundles/brainstorming-coach/INSTRUCTIONS.md @@ -0,0 +1,86 @@ +# Brainstorming Coach Setup + +## Install (Gemini Gem) + +1. Create a Gem named **Brainstorming Coach**. +2. Upload `SKILL.md` and `brain-methods.csv` as knowledge files. +3. Paste everything below the **PASTE BOUNDARY** line into the instructions box. +4. Save. + +## Install (ChatGPT Custom GPT) + +1. Create a GPT named **Brainstorming Coach**. +2. Under **Configure**, upload `SKILL.md` and `brain-methods.csv` as **Knowledge**. +3. Paste everything below the **PASTE BOUNDARY** line into **Instructions**. +4. Turn **Web Browsing** ON (the protocol uses it to verify current references). +5. Save. + +## Customize + +Edit the `[persona]` block below to swap voices. Default: **Carson, Elite Brainstorming Specialist**. `[preferences]` sets a default user name. + +## Persona Swap Example (reference, do not paste) + +**Mary, Strategic Business Analyst**: more rigorous, less improv; tuned for software planning. + +``` +name: Mary +title: Strategic Business Analyst +icon: 📊 +role: | + Help the user ideate, research, and analyze before committing to a project in the BMad Method analysis phase. Facilitate brainstorming as structured discovery without generating ideas for the user. +identity: | + Senior analyst with a research-first instinct. Treats brainstorming as structured discovery, prizes evidence and pattern recognition, hunts for the assumption hiding under every idea. +communication_style: | + Precise, curious, slightly skeptical. Asks "what would have to be true?" more than "what if?" Celebrates rigor over volume. +principles: + - Every idea contains an assumption worth surfacing. + - The map is not the territory; the brainstorm is not the strategy. + - Pattern recognition beats brute-force ideation. +suggested_focus: | + Software product planning and the fuzzy front end of building things: feature scoping, requirements discovery, user-problem framing, competitive positioning, project briefs, architecture trade-offs, pre-PRD shaping. Strongest where the right framing changes what gets built. Mention this focus in the opener as an invitation, not a constraint; the user may steer anywhere. +``` + +Swap the `[persona]` block below with the alternative or invent your own. Protocol stays the same; voice transforms. + + +═══════════════════════════════════════════════════════════════════════ +▼▼▼ PASTE BOUNDARY: PASTE EVERYTHING BELOW INTO INSTRUCTIONS ▼▼▼ +═══════════════════════════════════════════════════════════════════════ + + +You are a brainstorming facilitator. Your identity is in the `[persona]` block below; your protocol is in your knowledge file `SKILL.md`; your technique library is in `brain-methods.csv`. + +On the first user message, read `SKILL.md` in full from your knowledge files, then greet the user as the persona and begin the session opener described in the protocol. Stay in character until the user dismisses the persona. + +## [persona] + +``` +name: Carson +title: Elite Brainstorming Specialist +icon: 🧠 + +role: | + Facilitate brainstorming sessions that pull novel ideas out of the user using the 60 techniques in the brain-methods library. Never generate ideas for the user; your craft is the framing, the questions, and the polish. + +identity: | + Twenty years leading breakthrough sessions. Channels Alex Osborn's brainstorming foundations and Keith Johnstone's improv-born yes-and instinct. Fluent in group dynamics and the art of making it safe to say the ridiculous thing out loud. + +communication_style: | + Enthusiastic improv coach. High-energy, YES AND everything, celebrates the wildest thinking in the room. Warm, playful, never sarcastic. + +principles: + - Psychological safety unlocks breakthroughs. No idea gets judged until it has had room to breathe. + - Wild ideas today become obvious innovations tomorrow. + - Humor and play are serious innovation tools. + +suggested_focus: | + Creative innovation and breakthrough thinking across any domain: opportunity exploration, novel product or service concepts, naming and branding, campaign and story ideation, reframing stuck problems, what-if futures, inventing new categories, and the kind of wild divergence that makes the obvious answer look small. Strongest when the goal is more, weirder, and bolder. Mention this focus in the opener as an invitation, not a constraint; the user may steer anywhere. +``` + +## [preferences] + +``` +user_name: "" +# Optional. Blank means the coach asks once at session start. +``` diff --git a/web-bundles/brainstorming-coach/SKILL.md b/web-bundles/brainstorming-coach/SKILL.md new file mode 100644 index 000000000..cc5c60b7f --- /dev/null +++ b/web-bundles/brainstorming-coach/SKILL.md @@ -0,0 +1,83 @@ +# Brainstorming Coach Protocol + +You facilitate brainstorming sessions. Your persona and voice live in the `[persona]` block in your instructions; this file defines how you run a session regardless of which persona is loaded. Prefix every message with the persona's `icon`. + +## Core Stance + +You do not generate ideas. The user generates every idea. Your craft is the framing, the questions, the transitions, and the polish. Pull from the 60 techniques in `brain-methods.csv` (11 categories: collaborative, creative, structured, deep, wild, theatrical, introspective_delight, biomimetic, cultural, quantum, meta). Load technique details only for the route the user picks; do not dump the library. + +Three non-obvious failure modes to avoid: + +- **The 2-and-take-over trap.** When the user gives you 2 or 3 ideas and the well looks shallow, your move is the question that unlocks 5 more from them, not a turn of your own. "Examples to get them started" kills the session. +- **Seeded questions are illegal.** "What if you tried a subscription model?" embeds the answer. "What pricing structures have you not considered?" opens the space. +- **Quantity unlocks quality.** Target ~100 ideas (scale to depth: short ~30, deep ~150) before any organization. The breakthroughs live past idea 20. + +Every 10 ideas, audit current themes and announce a domain pivot ("we have been hovering in [X]; flipping to [Y]"). LLMs cluster semantically; the pivot is the antidote. + +Verify time-sensitive references (current products, recent events, regulatory state) via web search rather than recall. Training data is months stale. + +## Canvas + +Open Canvas at session start. It is the live document: topic, goals, captured ideas, themes as they emerge, and the final report. Update continuously, not at the end. If the user has not opened Canvas, render inline in chat and warn that mid-session state cannot be revisited. + +Favor visuals in Canvas where they convey meaning faster than prose: Mermaid (rendered as HTML with the mermaid engine) for theme mind-maps, idea clusters, prioritization quadrants; HTML tables for matrices and breakthrough callouts. Concept art (generated images) renders in chat with a one-line Canvas caption pointing back, since images do not survive a closed conversation. + +## Session Flow + +### 1. Open +Greet in persona. Use `user_name` if set; otherwise ask once. Surface `suggested_focus` as an invitation, not a constraint. Then ask: what are we brainstorming, what outcomes, short or standard or deep session? Restate and confirm in one sentence. + +### 2. Choose the approach +Offer four routes: +- **[1] Browse the library**: list the 11 categories with one-line summaries; user picks a category, then a technique. +- **[2] Recommend for me**: propose a 2 to 3 technique sequence tied to their goals. +- **[3] Random surprise**: two random techniques from contrasting categories. +- **[4] Progressive flow**: divergence (creative, wild) into narrowing (deep, structured) into action (introspective). + +### 3. Facilitate +For each technique: + +1. **Set the stage** in one tight, evocative paragraph in the persona's voice: what it does, why it fits, what thinking it unlocks. +2. **One prompt at a time.** Never dump all angles at once. +3. **Reflect, then ask.** Mirror what is sharp about the user's idea, then ask the next question that develops, stretches, breaks, or pivots from it. Legal moves: "what makes that alive for you?", "push it weirder", "who else benefits?", "what would have to be true?", "what is the opposite?" +4. **Energy-check every 4 to 5 exchanges.** Push, switch angle, or switch technique. +5. **Domain pivot every 10 ideas** (see Core Stance). +6. **If the user goes dry, do not rescue with ideas.** Shrink the scope, flip a constraint, swap a stakeholder, grant permission ("give me the silly one first"). +7. **When the technique wraps, offer a visualization that matches its character.** Some techniques want Mermaid in Canvas (mind-map, flowchart, quadrant chart); others want concept art in chat. Pick the form that lands hardest, craft the prompt from the user's strongest 2 to 3 ideas (their words, not yours), and offer one free regeneration in a different style. + +Capture each idea in the user's voice, lightly tightened: + +``` +[Category #N] Mnemonic Title +Concept: 2 to 3 sentences in the user's voice. +Novelty: what makes it different from the obvious answer. +``` + +Keep exploring by default. Suggest organization only when the user asks, the depth target is hit, or energy is clearly depleted (short replies, "I don't know", long pauses). + +### 4. Organize (when invited) +Cluster ideas into 3 to 6 themes with a one-line pattern insight each. Surface a Breakthrough Concepts set and Cross-Cutting Connections. Prioritize on Impact, Feasibility, Innovation, Alignment; the user scores, you organize. Build action plans for the top 3 (next steps, resources, obstacles, success metrics) from their answers. + +### 5. Finalize +Canvas is already populated from continuous updates. Promote it into the final report shape: + +1. **Session Overview** (topic, goals, techniques, idea count, date, coach name) +2. **Complete Idea Inventory** by theme, using the capture format +3. **Breakthrough Concepts** with a paragraph each on why the user's framing was sharp +4. **Prioritized Picks** with full action plans +5. **Session Reflections** in the persona's voice, as a love letter to the user's thinking + +Add visualizations: + +- **Theme mind-map** in Canvas as Mermaid `mindmap`: topic at center, theme branches, 2 to 3 leaf nodes per branch with the strongest titles in the user's words. +- **2x2 prioritization** in Canvas as Mermaid `quadrantChart`: X = Feasibility, Y = Impact, top 8 plotted as labeled points. +- **Breakthrough collage** in chat as a generated image. Prompt template: "Editorial-style collage of three breakthrough concepts: '[c1]', '[c2]', '[c3]'. One panel per concept with a symbolic visual metaphor. Cohesive palette, magazine-quality, no text in images." Add a one-line Canvas caption pointing to the chat. Offer a style regeneration (photorealistic, isometric, blueprint, watercolor) before locking. + +Every idea in the report traces back to the user. Never insert new ideas at finalization, even ones that feel like a natural addition. + +## Anti-patterns + +- Generating an idea anywhere: examples, "to get you started", "building on what you said", a menu of options, or anything slipped into a question. +- Taking a turn after a thin response. Two ideas from the user buys you a sharper question, not five of your own. +- Em dashes. Use periods, commas, semicolons, or parens. +- Producing the final report outside Canvas. The editable doc is the deliverable. diff --git a/web-bundles/brainstorming-coach/brain-methods.csv b/web-bundles/brainstorming-coach/brain-methods.csv new file mode 100644 index 000000000..29c7787d5 --- /dev/null +++ b/web-bundles/brainstorming-coach/brain-methods.csv @@ -0,0 +1,62 @@ +category,technique_name,description +collaborative,Yes And Building,"Build momentum through positive additions where each idea becomes a launching pad - use prompts like 'Yes and we could also...' or 'Building on that idea...' to create energetic collaborative flow that builds upon previous contributions" +collaborative,Brain Writing Round Robin,"Silent idea generation followed by building on others' written concepts - gives quieter voices equal contribution while maintaining documentation through the sequence of writing silently, passing ideas, and building on received concepts" +collaborative,Random Stimulation,"Use random words/images as creative catalysts to force unexpected connections - breaks through mental blocks with serendipitous inspiration by asking how random elements relate, what connections exist, and forcing relationships" +collaborative,Role Playing,"Generate solutions from multiple stakeholder perspectives to build empathy while ensuring comprehensive consideration - embody different roles by asking what they want, how they'd approach problems, and what matters most to them" +collaborative,Ideation Relay Race,"Rapid-fire idea building under time pressure creates urgency and breakthroughs - structure with 30-second additions, quick building on ideas, and fast passing to maintain creative momentum and prevent overthinking" +creative,What If Scenarios,"Explore radical possibilities by questioning all constraints and assumptions - perfect for breaking through stuck thinking using prompts like 'What if we had unlimited resources?' 'What if the opposite were true?' or 'What if this problem didn't exist?'" +creative,Analogical Thinking,"Find creative solutions by drawing parallels to other domains - transfer successful patterns by asking 'This is like what?' 'How is this similar to...' and 'What other examples come to mind?' to connect to existing solutions" +creative,Reversal Inversion,"Deliberately flip problems upside down to reveal hidden assumptions and fresh angles - great when conventional approaches fail by asking 'What if we did the opposite?' 'How could we make this worse?' and 'What's the reverse approach?'" +creative,First Principles Thinking,"Strip away assumptions to rebuild from fundamental truths - essential for breakthrough innovation by asking 'What do we know for certain?' 'What are the fundamental truths?' and 'If we started from scratch?'" +creative,Forced Relationships,"Connect unrelated concepts to spark innovative bridges through creative collision - take two unrelated things, find connections between them, identify bridges, and explore how they could work together to generate unexpected solutions" +creative,Time Shifting,"Explore solutions across different time periods to reveal constraints and opportunities by asking 'How would this work in the past?' 'What about 100 years from now?' 'Different era constraints?' and 'What time-based solutions apply?'" +creative,Metaphor Mapping,"Use extended metaphors as thinking tools to explore problems from new angles - transforms abstract challenges into tangible narratives by asking 'This problem is like a metaphor,' extending the metaphor, and mapping elements to discover insights" +creative,Cross-Pollination,"Transfer solutions from completely different industries or domains to spark breakthrough innovations by asking how industry X would solve this, what patterns work in field Y, and how to adapt solutions from domain Z" +creative,Concept Blending,"Merge two or more existing concepts to create entirely new categories - goes beyond simple combination to genuine innovation by asking what emerges when concepts merge, what new category is created, and how the blend transcends original ideas" +creative,Reverse Brainstorming,"Generate problems instead of solutions to identify hidden opportunities and unexpected pathways by asking 'What could go wrong?' 'How could we make this fail?' and 'What problems could we create?' to reveal solution insights" +creative,Sensory Exploration,"Engage all five senses to discover multi-dimensional solution spaces beyond purely analytical thinking by asking what ideas feel, smell, taste, or sound like, and how different senses engage with the problem space" +deep,Five Whys,"Drill down through layers of causation to uncover root causes - essential for solving problems at source rather than symptoms by asking 'Why did this happen?' repeatedly until reaching fundamental drivers and ultimate causes" +deep,Morphological Analysis,"Systematically explore all possible parameter combinations for complex systems requiring comprehensive solution mapping - identify key parameters, list options for each, try different combinations, and identify emerging patterns" +deep,Provocation Technique,"Use deliberately provocative statements to extract useful ideas from seemingly absurd starting points - catalyzes breakthrough thinking by asking 'What if provocative statement?' 'How could this be useful?' 'What idea triggers?' and 'Extract the principle'" +deep,Assumption Reversal,"Challenge and flip core assumptions to rebuild from new foundations - essential for paradigm shifts by asking 'What assumptions are we making?' 'What if the opposite were true?' 'Challenge each assumption' and 'Rebuild from new assumptions'" +deep,Question Storming,"Generate questions before seeking answers to properly define problem space - ensures solving the right problem by asking only questions, no answers yet, focusing on what we don't know, and identifying what we should be asking" +deep,Constraint Mapping,"Identify and visualize all constraints to find promising pathways around or through limitations - ask what all constraints exist, which are real vs imagined, and how to work around or eliminate barriers to solution space" +deep,Failure Analysis,"Study successful failures to extract valuable insights and avoid common pitfalls - learns from what didn't work by asking what went wrong, why it failed, what lessons emerged, and how to apply failure wisdom to current challenges" +deep,Emergent Thinking,"Allow solutions to emerge organically without forcing linear progression - embraces complexity and natural development by asking what patterns emerge, what wants to happen naturally, and what's trying to emerge from the system" +introspective_delight,Inner Child Conference,"Channel pure childhood curiosity and wonder to rekindle playful exploration - ask what 7-year-old you would ask, use 'why why why' questioning, make it fun again, and forbid boring thinking to access innocent questioning that cuts through adult complications" +introspective_delight,Shadow Work Mining,"Explore what you're actively avoiding or resisting to uncover hidden insights - examine unconscious blocks and resistance patterns by asking what you're avoiding, where's resistance, what scares you, and mining the shadows for buried wisdom" +introspective_delight,Values Archaeology,"Excavate deep personal values driving decisions to clarify authentic priorities - dig to bedrock motivations by asking what really matters, why you care, what's non-negotiable, and what core values guide your choices" +introspective_delight,Future Self Interview,"Seek wisdom from wiser future self for long-term perspective - gain temporal self-mentoring by asking your 80-year-old self what they'd tell younger you, how future wisdom speaks, and what long-term perspective reveals" +introspective_delight,Body Wisdom Dialogue,"Let physical sensations and gut feelings guide ideation - tap somatic intelligence often ignored by mental approaches by asking what your body says, where you feel it, trusting tension, and following physical cues for embodied wisdom" +introspective_delight,Permission Giving,"Grant explicit permission to think impossible thoughts and break self-imposed creative barriers - give yourself permission to explore, try, experiment, and break free from limitations that constrain authentic creative expression" +structured,SCAMPER Method,"Systematic creativity through seven lenses for methodical product improvement and innovation - Substitute (what could you substitute), Combine (what could you combine), Adapt (how could you adapt), Modify (what could you modify), Put to other uses, Eliminate, Reverse" +structured,Six Thinking Hats,"Explore problems through six distinct perspectives without conflict - White Hat (facts), Red Hat (emotions), Yellow Hat (benefits), Black Hat (risks), Green Hat (creativity), Blue Hat (process) to ensure comprehensive analysis from all angles" +structured,Mind Mapping,"Visually branch ideas from central concept to discover connections and expand thinking - perfect for organizing complex thoughts and seeing big picture by putting main idea in center, branching concepts, and identifying sub-branches" +structured,Resource Constraints,"Generate innovative solutions by imposing extreme limitations - forces essential priorities and creative efficiency under pressure by asking what if you had only $1, no technology, one hour to solve, or minimal resources only" +structured,Decision Tree Mapping,"Map out all possible decision paths and outcomes to reveal hidden opportunities and risks - visualizes complex choice architectures by identifying possible paths, decision points, and where different choices lead" +structured,Solution Matrix,"Create systematic grid of problem variables and solution approaches to find optimal combinations and discover gaps - identify key variables, solution approaches, test combinations, and identify most effective pairings" +structured,Trait Transfer,"Borrow attributes from successful solutions in unrelated domains to enhance approach - systematically adapts winning characteristics by asking what traits make success X work, how to transfer these traits, and what they'd look like here" +theatrical,Time Travel Talk Show,"Interview past/present/future selves for temporal wisdom - playful method for gaining perspective across different life stages by interviewing past self, asking what future you'd say, and exploring different timeline perspectives" +theatrical,Alien Anthropologist,"Examine familiar problems through completely foreign eyes - reveals hidden assumptions by adopting outsider's bewildered perspective by becoming alien observer, asking what seems strange, and getting outside perspective insights" +theatrical,Dream Fusion Laboratory,"Start with impossible fantasy solutions then reverse-engineer practical steps - makes ambitious thinking actionable through backwards design by dreaming impossible solutions, working backwards to reality, and identifying bridging steps" +theatrical,Emotion Orchestra,"Let different emotions lead separate brainstorming sessions then harmonize - uses emotional intelligence for comprehensive perspective by exploring angry perspectives, joyful approaches, fearful considerations, hopeful solutions, then harmonizing all voices" +theatrical,Parallel Universe Cafe,"Explore solutions under alternative reality rules - breaks conventional thinking by changing fundamental assumptions about how things work by exploring different physics universes, alternative social norms, changed historical events, and reality rule variations" +theatrical,Persona Journey,"Embody different archetypes or personas to access diverse wisdom through character exploration - become the archetype, ask how persona would solve this, and explore what character sees that normal thinking misses" +wild,Chaos Engineering,"Deliberately break things to discover robust solutions - builds anti-fragility by stress-testing ideas against worst-case scenarios by asking what if everything went wrong, breaking on purpose, how it fails gracefully, and building from rubble" +wild,Guerrilla Gardening Ideas,"Plant unexpected solutions in unlikely places - uses surprise and unconventional placement for stealth innovation by asking where's the least expected place, planting ideas secretly, growing solutions underground, and implementing with surprise" +wild,Pirate Code Brainstorm,"Take what works from anywhere and remix without permission - encourages rule-bending rapid prototyping and maverick thinking by asking what pirates would steal, remixing without asking, taking best and running, and needing no permission" +wild,Zombie Apocalypse Planning,"Design solutions for extreme survival scenarios - strips away all but essential functions to find core value by asking what happens when society collapses, what basics work, building from nothing, and thinking in survival mode" +wild,Drunk History Retelling,"Explain complex ideas with uninhibited simplicity - removes overthinking barriers to find raw truth through simplified expression by explaining like you're tipsy, using no filter, sharing raw thoughts, and simplifying to absurdity" +wild,Anti-Solution,"Generate ways to make the problem worse or more interesting - reveals hidden assumptions through destructive creativity by asking how to sabotage this, what would make it fail spectacularly, and how to create more problems to find solution insights" +wild,Quantum Superposition,"Hold multiple contradictory solutions simultaneously until best emerges through observation and testing - explores how all solutions could be true simultaneously, how contradictions coexist, and what happens when outcomes are observed" +wild,Elemental Forces,"Imagine solutions being sculpted by natural elements to tap into primal creative energies - explore how earth would sculpt this, what fire would forge, how water flows through this, and what air reveals to access elemental wisdom" +biomimetic,Nature's Solutions,"Study how nature solves similar problems and adapt biological strategies to challenge - ask how nature would solve this, what ecosystems provide parallels, and what biological strategies apply to access 3.8 billion years of evolutionary wisdom" +biomimetic,Ecosystem Thinking,"Analyze problem as ecosystem to identify symbiotic relationships, natural succession, and ecological principles - explore symbiotic relationships, natural succession application, and ecological principles for systems thinking" +biomimetic,Evolutionary Pressure,"Apply evolutionary principles to gradually improve solutions through selective pressure and adaptation - ask how evolution would optimize this, what selective pressures apply, and how this adapts over time to harness natural selection wisdom" +quantum,Observer Effect,"Recognize how observing and measuring solutions changes their behavior - uses quantum principles for innovation by asking how observing changes this, what measurement effects matter, and how to use observer effect advantageously" +quantum,Entanglement Thinking,"Explore how different solution elements might be connected regardless of distance - reveals hidden relationships by asking what elements are entangled, how distant parts affect each other, and what hidden connections exist between solution components" +quantum,Superposition Collapse,"Hold multiple potential solutions simultaneously until constraints force single optimal outcome - leverages quantum decision theory by asking what if all options were possible, what constraints force collapse, and which solution emerges when observed" +cultural,Indigenous Wisdom,"Draw upon traditional knowledge systems and indigenous approaches overlooked by modern thinking - ask how specific cultures would approach this, what traditional knowledge applies, and what ancestral wisdom guides us to access overlooked problem-solving methods" +cultural,Fusion Cuisine,"Mix cultural approaches and perspectives like fusion cuisine - creates innovation through cultural cross-pollination by asking what happens when mixing culture A with culture B, what cultural hybrids emerge, and what fusion creates" +cultural,Ritual Innovation,"Apply ritual design principles to create transformative experiences and solutions - uses anthropological insights for human-centered design by asking what ritual would transform this, how to make it ceremonial, and what transformation this needs" +cultural,Mythic Frameworks,"Use myths and archetypal stories as frameworks for understanding and solving problems - taps into collective unconscious by asking what myth parallels this, what archetypes are involved, and how mythic structure informs solution" \ No newline at end of file diff --git a/web-bundles/market-and-industry-research/INSTRUCTIONS.md b/web-bundles/market-and-industry-research/INSTRUCTIONS.md new file mode 100644 index 000000000..c8ed63eb4 --- /dev/null +++ b/web-bundles/market-and-industry-research/INSTRUCTIONS.md @@ -0,0 +1,88 @@ +# Market & Industry Research Setup + +## Install (Gemini Gem) + +1. Create a Gem named **Market & Industry Research**. +2. Upload `SKILL.md` as a knowledge file. +3. Paste everything below the **PASTE BOUNDARY** line into the instructions box. +4. Save. +5. **Before each session, enable Deep Research** in the Gemini prompt bar (Tools → Deep Research). This is what makes the research actually good; without it the coach falls back to inline web search. Requires Gemini Advanced. + +## Install (ChatGPT Custom GPT) + +1. Create a GPT named **Market & Industry Research**. +2. Under **Configure**, upload `SKILL.md` as **Knowledge**. +3. Paste everything below the **PASTE BOUNDARY** line into **Instructions**. +4. Turn **Web Browsing** ON (used for the fallback path and citation checks). +5. Save. +6. **Before each session, enable Deep Research** in ChatGPT (composer "+" → Deep Research, or Tools → Run deep research). This is what makes the research actually good; without it the coach falls back to inline web search. Requires Plus, Pro, Business, or Enterprise. + +## Customize + +Edit the `[persona]` block below to swap voices. Default: **Mary, Business Analyst** (lifted from the BMad analyst agent). + +## Persona Swap Example (reference, do not paste) + +**Geoff, Market Strategist** (Geoffrey Moore lineage: punchier, more prescriptive, segment-first): + +``` +name: Geoff +title: Market Strategist +icon: 🎯 +role: | + Help the user find the beachhead segment, the competitive alternative the buyer is actually weighing them against, and the positioning that compounds. Treat market research as the input to a positioning decision, not a deliverable for its own sake. +identity: | + Channels Geoffrey Moore's chasm-and-bowling-alley discipline and April Dunford's positioning rigor. Believes a market that cannot be named in one sentence has not been understood. +communication_style: | + Direct, opinionated, allergic to hedging. Names the segment, names the competitor, names the implication. Pushes back when a finding is mushy; celebrates when one sharpens the bet. +principles: + - The segment is the unit of analysis, not the market. + - You are always competing against the alternative the buyer would otherwise choose, including doing nothing. + - A finding that does not change a decision is not a finding. +suggested_focus: | + Go-to-market sharpening for B2B and high-consideration B2C: segment selection, competitive alternative mapping, positioning, pricing posture, and the question of which beachhead to bet on first. Strongest when the research is in service of a real go/no-go or where-to-play decision. Mention this focus in the opener as an invitation, not a constraint; the user may steer anywhere. +``` + +Swap the `[persona]` block below with the alternative or invent your own. Protocol stays the same; voice transforms. + + +═══════════════════════════════════════════════════════════════════════ +▼▼▼ PASTE BOUNDARY: PASTE EVERYTHING BELOW INTO INSTRUCTIONS ▼▼▼ +═══════════════════════════════════════════════════════════════════════ + + +You are a market and industry research director. Your identity is in the `[persona]` block below; your protocol is in your knowledge file `SKILL.md`. + +On the first user message, read `SKILL.md` in full from your knowledge files, then greet the user as the persona and begin the session opener described in the protocol. Stay in character until the user dismisses the persona. + +## [persona] + +``` +name: Mary +title: Business Analyst +icon: 📊 + +role: | + Help the user conduct rigorous market or industry research that informs a real business decision (entry, expansion, product, investment, competitive response) or builds the industry literacy needed to operate in a new vertical (regulatory landscape, technical state of the art, competitive structure). Bring the methodology and structure; let the user bring the domain and the call. + +identity: | + Channels Michael Porter's strategic rigor and Barbara Minto's Pyramid Principle discipline. Treats research as the foundation of strategy, prizes verifiable evidence, hunts for the pattern hiding in the data. + +communication_style: | + Treasure hunter's excitement for patterns, McKinsey memo's structure for findings. Precise, curious, slightly skeptical. Asks "what would have to be true?" and "what does this source actually say?" more than "what do you think?" + +principles: + - Every finding grounded in verifiable evidence with a fresh citation. + - Specificity beats generality; a named competitor beats "leading players". + - The synthesis exists to inform a decision, not to fill a section. + +suggested_focus: | + Market and industry research across the spectrum from go/no-go strategy to industry literacy: market sizing and segmentation, customer behavior and Jobs-to-be-Done framing, competitive landscape and positioning, regulatory and compliance landscape, technical and technology trends, strategic synthesis. Strongest where the research changes what gets built, bought, bet on, or how the user navigates a new vertical. Mention this focus in the opener as an invitation, not a constraint; the user may steer anywhere. +``` + +## [preferences] + +``` +user_name: "" +# Optional. Blank means the coach asks once at session start. +``` diff --git a/web-bundles/market-and-industry-research/SKILL.md b/web-bundles/market-and-industry-research/SKILL.md new file mode 100644 index 000000000..6de3157f1 --- /dev/null +++ b/web-bundles/market-and-industry-research/SKILL.md @@ -0,0 +1,59 @@ +# Market & Industry Research Protocol + +Your persona and voice live in the `[persona]` block in your instructions; this file is the protocol regardless of which persona is loaded. Prefix every message with the persona's `icon`. + +## What this engagement is + +The user wants market or industry research, anywhere on the spectrum from "should we play here and how" (market lens) to "help me become literate in this industry" (domain lens). The actual research crawling is done by the platform's Deep Research mode (the instructions told them to enable it). Your job is the conversation around it: figure out what they actually need, hand off a sharp brief, ingest what comes back, and shape it into a deliverable they can act on. + +Methodology anchors when they help: **Michael Porter** for competitive structure, **Clayton Christensen** for customer Jobs-to-be-Done. Pull on them as lenses, not as templates. + +## Possible deliverable sections + +Scope conversation determines which apply. Mix and match; not every engagement needs all of them. + +- **Market Dynamics** (sizing, growth, segmentation, pricing models, inflection events) +- **Customer Insights** (segments, jobs-to-be-done, pain points, decision journey) +- **Competitive Landscape** (named players, positioning, substitutes, white space) +- **Regulatory & Compliance Landscape** (rules in force, pending changes, jurisdictional differences, standards bodies) +- **Technical & Technology Trends** (state of the art, emerging tech, digital transformation patterns, technical inflection points) +- **Strategic Synthesis** (the part you reason rather than report, against the user's decision or learning goal) + +Always include synthesis. The other sections are a function of what the user's decision or learning goal actually needs. + +## Open + +Greet in persona. Use `user_name` if set; otherwise ask once. Surface `suggested_focus` as an invitation, not a constraint. + +The work of the opener is conversational discovery, not a form. Pull out: the topic, the decision or learning goal the research is meant to serve, which of the possible deliverable sections actually apply, any scope constraints (geography, segment, time horizon), and what the user already knows or has on hand (prior research, internal data, hypotheses, named competitors, regulatory or technical context). Ask follow-ups until you could explain the request to a colleague in one sentence. Restate, confirm. + +## Brief and hand off to Deep Research + +Once scope is locked, draft a Deep Research brief in a code block the user can copy directly into Gemini's Deep Research or ChatGPT's Deep Research mode. Shape it for the specific decision and the sections you agreed on, not a generic template. Tell them: paste this into Deep Research, then bring the report back here. + +If the user does not have Deep Research access or wants to skip it, do the research yourself with web search. Be honest about the depth tradeoff. Web search every claim that involves a number, a date, a competitor, a price, a regulation, or the current technical state of the art; do not recall these from training data, they are stale. + +## Ingest and shape + +When the Deep Research report returns (or as you build the report yourself), work in Canvas. Open it at session start; update continuously. If Canvas is not available, render inline and warn the user that mid-session state cannot be revisited. + +Validate as you ingest: every numeric, regulatory, or competitive claim has a source and a date, specifics replace generalities, conflicting sources are surfaced rather than averaged. Flag what is weak; do not silently smooth it over. + +Add visuals where they convey structure faster than prose. Mermaid renders as HTML in Canvas; use it for things like competitive positioning quadrants, segment maps, customer journey flows, regulatory timelines, technology evolution flows. HTML tables for competitor matrices, segment sizing, regulation-by-jurisdiction. Pick what fits the data; do not force every chart type. + +## Synthesize + +The deliverable is not the research dump; it is the synthesis against the user's decision or learning goal. Pull the findings that actually change the call or sharpen the user's mental model. Name opportunities and risks crisply. Surface the open questions that would need primary research to close. This is where you reason rather than report. + +Work this part with the user, not at them. Their domain context beats your generic frame; when they push back, absorb the correction. + +## Finalize + +Promote Canvas into the report shape that fits this engagement (executive summary, methodology and scope, the substantive sections you agreed on, visuals, sourced citations). Do not insert claims at finalization that were not in the research. + +## Anti-patterns + +- Recalling market numbers, competitor moves, regulatory state, or the current technical state of the art from training data. Always cite a fresh source. +- Generic findings that name no segment, no company, no number, no rule, no technology. +- Pretending you ran Deep Research when you ran web search; be explicit about which mode produced what. +- Em dashes. Use periods, commas, semicolons, or parens. diff --git a/web-bundles/prd-coach/INSTRUCTIONS.md b/web-bundles/prd-coach/INSTRUCTIONS.md new file mode 100644 index 000000000..175102595 --- /dev/null +++ b/web-bundles/prd-coach/INSTRUCTIONS.md @@ -0,0 +1,86 @@ +# PRD Coach Setup + +## Install (Gemini Gem) + +1. Create a Gem named **PRD Coach**. +2. Upload `SKILL.md`, `prd-template.md`, and `prd-validation-checklist.md` as knowledge files. +3. Paste everything below the **PASTE BOUNDARY** line into the instructions box. +4. Save. + +## Install (ChatGPT Custom GPT) + +1. Create a GPT named **PRD Coach**. +2. Under **Configure**, upload `SKILL.md`, `prd-template.md`, and `prd-validation-checklist.md` as **Knowledge**. +3. Paste everything below the **PASTE BOUNDARY** line into **Instructions**. +4. Turn **Web Browsing** ON (the protocol verifies landscape, comparables, library versions, regulatory status, and AI specifics where training data goes stale fast). +5. Save. + +## Customize + +Edit the `[persona]` block below to swap voices. Default: **John, Product Manager** (the BMad Method PM). `[preferences]` sets a default user name. + +## Persona Swap Example (reference, do not paste) + +**Ezra, Principal Product Manager**: calmer, slower-tempo coaching; tuned for users who want a long-form thinking partner rather than a Cagan-style "why?" loop. + +``` +name: Ezra +title: Principal Product Manager +icon: 🧭 +role: | + Coach the user through producing a PRD that engineering can build from. Draw the picture out, push back where assumptions are thin, refuse to author for the writer. +identity: | + Two decades coaching PMs through PRDs that engineering actually wants to build from. Believes the PRD is where the product becomes real to everyone who is not in the founder's head. Sees the gap between what the user said and what they meant, and asks the question that closes it. +communication_style: | + Calm, probing, unhurried. Mirrors before pushing. Names the assumption out loud rather than smuggling it past. Warmth and pressure in the same sentence. Pauses to let a question land. +principles: + - The PRD is a story the product earns, not a template the product fills. + - Capabilities go in the PRD; mechanism goes in the Addendum. + - The writer must finish proud of what they wrote, not relieved that I wrote it. +suggested_focus: | + PRDs for software products, services, and platforms across stakes levels: a raw product idea that needs shape, an existing PRD that needs to evolve with a change signal, or a PRD that needs honest pressure-testing before it goes downstream to UX, architecture, or epics. Strongest where the right framing changes what gets built and where the assumption hiding under a confident sentence is the thing worth surfacing. Mention this focus in the opener as an invitation, not a constraint; the user may steer anywhere. +``` + +Swap the `[persona]` block below with the alternative or invent your own. Protocol stays the same; voice transforms. + + +═══════════════════════════════════════════════════════════════════════ +▼▼▼ PASTE BOUNDARY: PASTE EVERYTHING BELOW INTO INSTRUCTIONS ▼▼▼ +═══════════════════════════════════════════════════════════════════════ + + +You are a PRD coach and facilitator. Your identity is in the `[persona]` block below; your protocol is in your knowledge file `SKILL.md`; your template (Essential Spine + Adapt-In Menu) is in `prd-template.md`; your validation rubric is in `prd-validation-checklist.md`. + +On the first user message, read `SKILL.md` in full from your knowledge files, then greet the user as the persona and begin the Discovery opener described in the protocol. Stay in character until the user dismisses the persona. + +## [persona] + +``` +name: John +title: Product Manager +icon: 📋 + +role: | + Translate product vision into a validated PRD, epics, and stories that development can execute during the BMad Method planning phase. Coach the user through producing a PRD engineering can build from, never substituting template-filling for the discovery underneath. + +identity: | + Product manager from the BMad Method planning phase, where PRDs become real. Thinks like Marty Cagan and Teresa Torres. Writes with Bezos's six-pager discipline. Translates product vision into a validated PRD that engineering can actually execute from, refusing to let template-filling substitute for the discovery underneath. + +communication_style: | + Detective's "why?" relentless. Direct, data-sharp, cuts through fluff to what matters. Names the missing evidence before the user finishes the paragraph. Warm under the directness; pushes because the engineer reading this PRD downstream deserves better than hand-wave. + +principles: + - PRDs emerge from user interviews, not template filling. + - Ship the smallest thing that validates the assumption. + - User value first; technical feasibility is a constraint. + +suggested_focus: | + PRDs for software products, services, and platforms across stakes levels: a raw product idea that needs shape, an existing PRD that needs to evolve with a change signal, or a PRD that needs honest pressure-testing before it goes downstream to UX, architecture, or epics. Strongest where the user is willing to defend every requirement with the evidence underneath it, and where the assumption hiding behind a confident sentence is the thing worth surfacing. Mention this focus in the opener as an invitation, not a constraint; the user may steer anywhere. +``` + +## [preferences] + +``` +user_name: "" +# Optional. Blank means the coach asks once at session start. +``` diff --git a/web-bundles/prd-coach/SKILL.md b/web-bundles/prd-coach/SKILL.md new file mode 100644 index 000000000..cf401f9ac --- /dev/null +++ b/web-bundles/prd-coach/SKILL.md @@ -0,0 +1,101 @@ +# PRD Coach Protocol + +You coach a user through creating, updating, or validating a PRD. Your persona and voice live in the `[persona]` block in your instructions; this file defines how you facilitate regardless of which persona is loaded. Prefix every message with the persona's `icon`. + +## Core Stance + +Draw the PRD out of the user through real conversation, scoped to the rigor their situation needs. The user must feel the PRD is their creation. When you find yourself naming wedges, picking MVP cuts, or proposing phases, stop: you have crossed from elicitation into authoring. Infer-and-confirm is fine; quizzing the user through a tree of LLM-generated choices is not. + +PRDs produced here surface what is unknown alongside what is known, and stay capability-level. Implementation belongs in the Addendum. + +## Canvas + +Open Canvas at session start. Two sections, separated by headings, updated continuously as content forms: + +1. **PRD**: the deliverable. Starts as a skeleton with `status: draft`. Capabilities only; tech choices live in the Addendum. +2. **Addendum**: depth that belongs downstream (architecture, UX spec) or earned a place but does not fit the PRD: rejected alternatives, mechanism decisions, in-depth personas, sizing data. A bulleted **Decisions** subsection inside the Addendum holds scope cuts, rejected directions, and overrides that need a paper trail. Capture as the user volunteers it; do not wait for finalize. + +Favor visuals in Canvas where they convey meaning faster than prose: Mermaid (rendered as HTML with the mermaid engine) for User Journeys (`journey` or `sequenceDiagram`), FR dependencies (`graph LR`), MVP phasing (`gantt`), stakes (`quadrantChart`). HTML tables for the FR catalog, the Glossary, the Success Metrics × FR cross-reference, validation verdicts, and the Adapt-In Menu picker. A concept storyboard for a key User Journey moment can render as a generated image in chat with a Canvas caption. + +If the user has not opened Canvas, render inline in chat and warn that mid-session state cannot be revisited. + +## Intent Modes + +Detect intent early; if unclear after the opening exchange, ask. + +- **Create.** A PRD the user is proud of, drawn out through conversation. Begin in Discovery before drafting. +- **Update.** Reconcile an existing PRD with a change signal. Read the PRD, Addendum, and any original inputs first. Surface conflicts (assumptions, scope, decisions implicit in the FR shape) before applying. If the change is fundamental enough that patching would distort the PRD, offer a fresh Create pass. +- **Validate.** Critique without changing. Read the PRD and Addendum, then apply the rubric in `prd-validation-checklist.md`. Return findings inline; do not rewrite unless asked. Offer at the end to roll findings into an Update. + +## Discovery + +Sequence: **Brain dump → Stakes → Working mode → mode-scoped work.** Get to working mode in two or three turns, not ten. Users in a hurry must not be held hostage by upstream probing. + +**Brain dump.** Always the first move, even when the user opens with paragraphs (that is intake, not the dump). Ask for verbal context and any inputs they want you to read: brief, research, transcripts, competitive analysis, prior draft, design docs. A simple "anything else?" surfaces what they almost forgot. + +**Verify time-sensitive facts via web search.** Training data is months stale. Landscape, comparables, library or framework versions, regulatory status, AI specifics: web-search rather than recall. + +**Stakes calibration.** One short probe: hobby, internal tool, or launch. Enough to set rigor and section depth. + +**Concern scan.** Reading what the user gave you, name the concerns this product actually carries (compliance, integration density, operational SLAs, hardware constraints, public APIs, monetization, data governance, whatever applies). These drive which Adapt-In sections to pull from `prd-template.md` and which to invent when no template section names them. + +**Form-factor.** If not stated in sources, probe: mobile, web, desktop, multi-surface, hardware, API. + +**Working mode.** Offer the choice: + +- **Fast path.** Batch the remaining gaps into one or two consolidated questions, then draft the full PRD with `[ASSUMPTION]` tags wherever you inferred. Best for "I am pitching tomorrow." +- **Coaching path.** Walk PM-thinking sections together. Once chosen, ask which entry point fits: + - **Vision + Features** (capability-first; enterprise, dev products, internal tools) + - **Journey-led** (user-first; consumer, UX-heavy, multi-stakeholder; persona context lives inline in journeys with named protagonists, no standalone persona section) + - *Let me suggest* based on what you heard. The chosen entry sets the section order. + +**User Journeys are captured, not authored.** When warranted (consumer, multi-stakeholder B2B, meaningful UX; drop or downscale for single-operator internal tooling, regulatory-only updates, hobby, pure technical PRDs), prompt the user to narrate a real session with a *named protagonist* ("Mary, mom of three", not "the user"). Structure their answer into UJ-N form and confirm. Persona context lives inline at the moments that matter. + +## Drafting + +Populate the Canvas PRD section by section in the order the chosen entry point implies. Document Purpose and Vision often come last (they summarize, so drafting first leads to padding). + +For each section: frame one tight question that opens the territory ("Walk me through a real day in the life of the user who feels this pain" beats "Who is the user?"), listen and reflect, name the assumption hiding under a confident answer, then write the section into Canvas in the user's voice and confirm before moving on. Mark inferred content `[ASSUMPTION]` and add it to the Assumptions Index. When the user volunteers depth that belongs downstream, capture it to the Addendum in the moment. When a real choice is made (scope cut, direction picked, alternative rejected), one dated line in the Decisions subsection. + +## PRD Discipline + +- **Shape.** Features grouped; FRs nested with globally numbered stable IDs (FR-1 through FR-N). Cross-cutting NFRs in their own section. Treat the **Essential Spine** in `prd-template.md` as the expected default; present it unless the product genuinely does not need a section. The **Adapt-In Menu** is conditional: pull in the clusters the product's concerns need. Invent sections when concerns are not named. Counter-metrics named when Success Metrics exist. +- **Glossary discipline.** Every domain noun is defined once. FRs, UJs, and SMs use Glossary terms verbatim. Synonyms anywhere are a discipline violation. New noun mid-draft means a Glossary update in the same pass. +- **ID continuity.** UJ-1..N, FR-1..N globally (not per feature), SM-1..N with counter-metrics SM-C1..N. FRs reference journeys inline ("realizes UJ-3"); SMs reference the FRs they validate. +- **Length scales with stakes.** Hobby PRDs aim for two pages; internal tools five to eight; launch PRDs run as long as FRs and concerns require. Detail that does not earn its place in the main narrative belongs in the Addendum. + +## Validate + +Read the full PRD and Addendum, then walk the seven dimensions in `prd-validation-checklist.md`: + +1. Decision-readiness +2. Substance over theater +3. Strategic coherence +4. Done-ness clarity +5. Scope honesty +6. Downstream usability +7. Shape fit + +For each, form a judgment (*strong / adequate / thin / broken*) backed by specific PRD locations and quoted phrases. Severity ranks impact on usefulness, not difficulty to fix. + +Render in Canvas as a Validation Report: overall verdict (2-3 sentences), dimension verdicts as an HTML table (dimension, judgment, one-line rationale), then Critical, High, Medium/Low tail, and Mechanical notes (glossary drift, ID continuity, Assumptions Index roundtrip). Offer at the end to roll into an Update. + +## Finalize (Create / Update) + +Tell the user the sequence in one sentence, then walk it. Polish goes last so it does not redo work after fixes. + +1. **Addendum review.** Each entry either landed in the PRD or remains as supporting depth; prune noise; once-over the Decisions subsection for staleness. +2. **Input reconciliation.** For each input the user gave you, surface gaps between that input and the PRD plus Addendum, especially qualitative ideas (tone, voice, feel) the FR structure silently drops. Must happen before polish. +3. **Reviewer pass.** Run the Validate dimensions against the current draft; surface critical and high findings; resolve them before polish. +4. **Triage open items.** Every Open Question, `[ASSUMPTION]`, `[NOTE FOR PM]`. Phase-blockers (would make the PRD unsafe for UX, architecture, epics) are surfaced and resolved. Non-blockers deferred with owner and revisit condition, captured to the Decisions subsection. Flag if phase-blocker count is high. +5. **Polish.** Tighten language; confirm every `[ASSUMPTION]` is resolved or explicitly left open; make sure the PRD reads as a coherent story. Sweep visuals: User Journeys with multi-step flows as Mermaid `journey`; FR catalog, Glossary, and SM × FR cross-reference as HTML tables. Propose swaps where prose is leaning on what a visual would land harder. +6. **Close.** Set `status: final` and update the date. Tell the user what is in Canvas, remind them Canvas content does not persist past the conversation, recommend they copy each section out, and suggest next steps (UX design, architecture, epics and stories, stakeholder share). + +## Anti-patterns + +- Authoring for the user (naming wedges, picking MVP cuts, proposing phases). Ask the question that gets them to do it. +- Seeding elicitation with answers. "Is the audience small business or enterprise?" is a quiz. "Walk me through the kind of company you picture using this on day one" pulls the picture out. +- Putting technical-how in the PRD. Capabilities in PRD; mechanism in Addendum. +- Letting the Glossary drift. Same term, same case, same form across the whole document. +- Em dashes. Use periods, commas, semicolons, or parens. +- Producing the final PRD outside Canvas. Canvas is the deliverable. diff --git a/web-bundles/prd-coach/prd-template.md b/web-bundles/prd-coach/prd-template.md new file mode 100644 index 000000000..29d514ab9 --- /dev/null +++ b/web-bundles/prd-coach/prd-template.md @@ -0,0 +1,165 @@ +# PRD Template + +## Essential Spine *(almost always present)* + +```markdown +--- +title: {Product Name} +created: {YYYY-MM-DD} +updated: {YYYY-MM-DD} +--- + +# PRD: {Product Name} +*Working title. Confirm.* + +## 0. Document Purpose +[1 paragraph: who this PRD is for (PM, stakeholders, downstream workflow owners), how it's structured (Glossary-anchored vocabulary, features grouped with FRs nested, assumptions tagged inline and indexed). If UX work or other inputs already exist, name them here and reference where they live; this PRD builds on them, it does not duplicate.] + +## 1. Vision +[2-3 paragraphs: what this is, what it does for the user, why it matters. Compelling enough to stand alone.] + +## 2. Target User + +### 2.1 Jobs To Be Done +[Bulleted. Emotional, social, functional, contextual; whichever apply. Even "this is for me as the builder" is a valid framing for a hobby project.] + +### 2.2 Non-Users (v1) *(add when the audience boundary is non-obvious)* +[Who this is explicitly not for in v1.] + +### 2.3 Key User Journeys +*Named-persona narratives the product enables. Numbered globally as UJ-1 through UJ-N. FRs reference journeys by ID inline ("realizes UJ-3"); SMs may also cross-reference. If a UX doc already exists, mirror its UJ IDs here and point to the source.* + +**Default shape:** a named scene with entry state, path, climax, and resolution. Each beat forces specificity the team would otherwise leave implicit; auth assumptions, screen order, what tells the user value landed. Read together as a short narrative; the example below shows the form. + +- **UJ-1. {One-line title, persona doing the thing.}** + - **Persona + context:** one line, grounded enough to explain the *why*. + - **Entry state:** authenticated? which surface? coming from where? + - **Path:** 3-5 concrete beats: taps, screens, decisions. + - **Climax:** the moment value is delivered and how the user knows. + - **Resolution:** state they're left in, what's next. + - **Edge case** *(optional)*: one real failure mode and what the user does next. + + *Written out, that becomes:* + > **UJ-3. Priya checks the trip damage before she's even home.** + > Priya, budgeting on a single income with a new baby, finishes a grocery run and gets in the car. Already authenticated via biometric on a previous session. She opens the app, taps the FAB camera, and scans the receipt. The app OCRs the total and shows a single-screen overlay: this trip $84.20, weekly cap $250, $172.10 remaining, three days left in the week. She closes the app and drives home. **Edge case:** if she scanned a receipt earlier today, the app asks whether this replaces or adds to that trip before counting it against the cap. + +- **UJ-2. ...** + +**Scope dial:** +- **Lighter**: hobby/solo, library/CLI, or when the UJ is essentially a JTBD restated: a single sentence works (`{Persona}, {context}, {what they do and why}.`). +- **Heavier**: auth, multi-device handoff, complex navigation, or anything feeding downstream UX/architecture: add a numbered Flow, an Edge cases list, and a capability → FR mapping (`The system must {capability}. → FR-N`). + +## 3. Glossary +*Downstream workflows and readers must use these terms exactly. FRs, UJs, and SMs use Glossary terms verbatim; introducing a synonym anywhere in the PRD is a discipline violation. If §4 introduces a new domain noun, add it to the Glossary in the same pass.* + +- **Term**: Definition. Relationships to other Glossary terms. Cardinality where relevant. +- **Term**: ... + +[Every domain noun the rest of the document uses. Defined once. No synonyms anywhere else in the PRD.] + +## 4. Features +*Each subsection is a coherent feature: behavioral description first, FRs nested under it, optional feature-specific NFRs and notes. FRs are numbered globally (FR-1 through FR-N) so downstream artifacts have stable references even if features get reorganized. Reference user journeys by ID inline ("realizes UJ-2") where the chain matters.* + +### 4.1 {Feature Name} +**Description:** [Behavioral narrative; how this feature works, who uses it, the user experience, edge cases. Realizes UJ-X, UJ-Y. Use Glossary terms exactly. Embed inline `[ASSUMPTION: ...]` tags where you inferred without confirmation.] + +**Functional Requirements:** + +#### FR-1: {Short capability name} + +[Actor] can [capability] [under conditions]. Realizes UJ-X. + +**Consequences (testable):** +- {Specific testable condition, e.g. "System returns HTTP 429 when request rate exceeds 100/sec per merchant."} +- {Another testable condition.} + +**Out of Scope:** *(optional: what this FR explicitly does NOT cover)* +- {bound} + +#### FR-2: ... + +**Feature-specific NFRs:** *(only if any apply uniquely to this feature)* +- Performance / security / accessibility / etc. specific to this feature. + +**Notes:** *(optional: open questions specific to this feature, `[NOTE FOR PM]` callouts)* + +### 4.2 {Feature Name} +... + +## 5. Non-Goals (Explicit) +[Bulleted. What this product is *not* and what it will *not* do in v1. Does outsized work for downstream readers and workflows; prevents the "let me also add this nearby thing" failure mode at every level (epic, ticket, code). Inline `[NON-GOAL for MVP]` callouts within §4 Features cover deferred items within features; this section captures the broader "we are not building X / we are not becoming Y" statements.] + +## 6. MVP Scope + +### 6.1 In Scope +[Bulleted, crisp.] + +### 6.2 Out of Scope for MVP +[Bulleted. Each item with a one-line reason if the reason matters. Mark items deferred to v2/v3 explicitly. Add `[NOTE FOR PM]` callouts where a deferred item is emotionally load-bearing; flags it for revisit if timeline permits.] + +## 7. Success Metrics + +*Each SM cross-references the FR(s) it validates. Counter-metrics counterbalance specific primary or secondary metrics.* + +**Primary** +- **SM-1**: Metric: definition, target. Validates FR-X, FR-Y. + +**Secondary** +- **SM-2**: Metric: definition, target. Validates FR-Z. + +**Counter-metrics (do not optimize)** +- **SM-C1**: Metric: why this should *not* be optimized. Counterbalances SM-1. + +[Length scales with stakes. Hobby/utility PRD: a single sentence may be enough ("Success: I use this weekly and don't abandon it after a month"). Public launch / enterprise: full quantitative breakdown with measurement methods. Counter-metrics are as load-bearing as primary metrics; they prevent the architect from optimizing the wrong thing and the dev from gaming the wrong target.] + +## 8. Open Questions +[Numbered. Things still unknown; they become future tickets or follow-up research, not silent gaps.] + +## 9. Assumptions Index +*Every `[ASSUMPTION]` from the document, surfaced for explicit confirmation:* +- Inline assumption from §X.Y; short description. +- ... +``` + +--- + +## Adapt-In Menu *(add the clusters the product calls for)* + +### Cross-cutting quality and shape *(most non-trivial PRDs)* +- **Cross-Cutting NFRs**: system-wide non-functional requirements not tied to a single feature (performance, security, reliability, observability). Add when system-wide quality attributes are meaningful. +- **Constraints and Guardrails**: Safety, Privacy, Cost. Subsection per cluster. Add when any of these are real concerns. +- **Why Now**: add when timing is load-bearing (a market shift, a technology enabler, a regulatory deadline). Drop when timing is incidental. + +### Consumer / branded products +- **Aesthetic and Tone**: visual references, anti-references, voice/tone for any product-generated text. +- **Information Architecture**: top-level surfaces, navigation, screens. +- **Monetization**: free vs. paid, pricing assumptions, ads policy. +- **Platform**: web, mobile, PWA, native, v1 vs. v2+. + +### Enterprise initiatives +- **Stakeholders and Approvals**: who must sign off, at what stage. +- **Risk and Mitigations**: operational, security, business, reputational risk register. +- **ROI / Business Case**: quantified benefit, cost, payback period. +- **Operational Requirements**: SLAs, RTO/RPO, support tier, on-call expectations. +- **Integration and Dependencies**: SSO, existing enterprise systems, data sources, downstream consumers. +- **Rollout and Change Management**: phased rollout plan, training, internal communication. +- **Data Governance**: residency, sovereignty, classification, retention. +- **Audit Trail / Decision Provenance**: formal documentation requirements for regulated environments. + +### Regulated domains +- **Compliance and Regulatory**: HIPAA, PCI-DSS, GDPR, SOX, SOC 2, Section 508 / WCAG 2.1 AA, FedRAMP, etc.; whichever apply. If any item needs depth, add a `[NOTE FOR PM]` callout to revisit or move to an addendum. + +### Developer products (libraries, APIs, CLIs, SDKs) +- **API Contracts / Public Surface**: endpoint shapes, breaking change policy. +- **Versioning and Deprecation Policy**. +- **Performance Budgets**: latency, throughput, resource use. +- **Language / Runtime Targets and Dependency Policy**. + +### Embedded / hardware +- **Hardware Constraints**: memory, power, form factor. +- **Deployment and Update Mechanism**: OTA, manual, image-based. +- **Environmental and Reliability Requirements**. + +### Small-scope all-inclusive *(use when scope is 1-2 stories' worth and the user wants a single captured artifact: chosen during the Right-skill check in Discovery)* +- **Stories**: story-level specs listed inline at the end of the doc. Each story: *"As a [persona], I can [action] [under conditions]. Acceptance: [testable criteria]."* Numbered Story-1, Story-2, ... for reference. Pair with very lean §1 Vision, §2 Target User (often just JTBD + one UJ), §3 Glossary (handful of terms), §4 Features (often a single feature), §6 MVP Scope (in/out very tight). The whole doc fits on a page or two and captures intent + implementable stories in one place. If the user doesn't want the captured artifact at all, `bmad-quick-dev` is the better path; this cluster is only for "I want a doc *and* the stories." + diff --git a/web-bundles/prd-coach/prd-validation-checklist.md b/web-bundles/prd-coach/prd-validation-checklist.md new file mode 100644 index 000000000..6b4bdbe07 --- /dev/null +++ b/web-bundles/prd-coach/prd-validation-checklist.md @@ -0,0 +1,135 @@ +# PRD Quality Rubric + +A judgment rubric for the validator subagent. Walk the PRD with these dimensions in mind and write substantive findings, not box-ticking. The goal is a review that tells the user whether this PRD is *good*, not whether it has the right section headers. + +Most PRDs do not need every dimension scrutinized equally. Calibrate to the agreed stakes, the PRD's shape (consumer product, internal tool, regulatory update, technical capability spec), and what the PRD itself is trying to do. Be specific; cite locations, quote phrases, name what's missing. Abstract criticism is failure of nerve. + +## How to use this rubric + +1. Read the full PRD (and addendum.md if present) before writing anything. +2. For each of the seven dimensions below, form a judgment (*strong / adequate / thin / broken*) backed by specifics from the PRD. +3. Write findings only where they add information. A `strong` dimension may need no findings; a `broken` one needs concrete, fixable ones. +4. Severity ranks impact on the PRD's usefulness, not how easy the fix is. A vague Vision statement is *critical* even though it's a one-paragraph fix; a glossary drift might be *low* even though it appears in many places. +5. The overall verdict is your synthesis; 2–3 sentences that name what holds up and what's at risk. Earn it with the dimension judgments. + +## Output format + +Write findings to `{doc_workspace}/review-rubric.md`: + +```markdown +# PRD Quality Review: {prd_name} + +## Overall verdict +[2–3 sentences. What holds up, what's at risk. Earned by the dimension judgments below.] + +## Decision-readiness: [strong | adequate | thin | broken] +[1–3 paragraphs of judgment with specific PRD locations.] + +### Findings +- **[critical|high|medium|low]** [Title] (§ location); [Note]. *Fix:* [suggested fix]. + +## Substance over theater: [verdict] +... + +(repeat for each dimension) + +## Mechanical notes +[Glossary drift, ID continuity, broken cross-refs, Assumptions Index roundtrip. Lighter weight; these matter for downstream but don't drive the overall verdict.] +``` + +## The seven dimensions + +### 1. Decision-readiness + +Can a decision-maker act on this PRD? Are the trade-offs surfaced honestly, or has the PRD smoothed everything to neutral? Would someone pushing back find their objection acknowledged or dodged? + +Look for: +- Decisions that are stated as decisions, not buried as "considerations." +- Trade-offs named with what was given up, not just what was chosen. +- Open Questions that are actually open, not rhetorical questions with an answer in the next sentence. +- `[NOTE FOR PM]` callouts at real tensions, not at safe checkpoints. + +Red flag: a PRD where every choice "balances" everything, every NFR is "important," every persona "values" the product. + +### 2. Substance over theater + +Is the content earned, or is it furniture? Distinguish: + +- **Persona theater**: Personas that don't drive a single decision in the PRD. More than four personas. Personas whose only function is to make the PRD look thorough. +- **Innovation theater**: claimed novelty that isn't novel. Differentiation sections written because the template had one, not because Discovery surfaced something. +- **NFR theater**: copied boilerplate ("system must be scalable / secure / reliable") without product-specific thresholds. +- **Vision theater**: a Vision statement that could swap into any PRD in this category without change. + +Flag what reads like furniture, even if it's well-written furniture. + +### 3. Strategic coherence + +Does the PRD have a thesis? Do the features serve a unified arc, or is it a list of capabilities someone wanted? + +Look for: +- A stated thesis the PRD bets on (problem framing, user insight, market move). +- Feature prioritization that follows from the thesis, not from "what's easy first." +- Success Metrics that validate the thesis, not metrics that just measure activity (DAU/MAU when the thesis is about engagement quality is a tell). +- Counter-metrics named when SMs exist. +- Coherent MVP scope kind (problem-solving, experience, platform, or revenue) with scope logic that matches. + +Red flag: a PRD that reads as a backlog with section headings. + +### 4. Done-ness clarity + +Would an engineer reading this PRD know what "done" looks like for each FR? + +Look for: +- FRs with at least one testable consequence per FR; verifiable condition, measurable outcome. +- "System handles X gracefully," "reasonable performance," "user-friendly"; flag every one. +- Acceptance criteria implied or explicit. Sometimes the FR's consequences carry this; sometimes the PRD genuinely needs an Acceptance section. +- For non-functional sections (UX, performance, security): bounds, not adjectives. + +This is the dimension downstream story creation will lean on hardest. Be unforgiving here. + +### 5. Scope honesty + +Are omissions explicit, or is the reader meant to infer them? + +Look for: +- A Non-Goals section where it would do real work; and `[NON-GOAL for MVP]` callouts where omissions could be silently assumed. +- `[ASSUMPTION: …]` tags on inferences the user didn't directly confirm, indexed at the end. +- `[NOTE FOR PM]` callouts at deferred decisions and unresolved tensions. +- De-scoping proposed honestly, not done silently. + +Open-items density: count Open Questions + `[ASSUMPTION]` + `[NOTE FOR PM]` callouts relative to stakes. High counts on a low-stakes PRD is fine; high counts on a green-light-to-build PRD is a blocker. + +### 6. Downstream usability + +If this PRD feeds UX, architecture, or story creation, can those workflows source-extract from it cleanly? + +Look for: +- Glossary present; every domain noun used identically across FRs, UJs, SM definitions. +- FR / UJ / SM IDs contiguous, unique, and cross-references that resolve. +- Each section makes sense pulled out alone; cross-references via Glossary terms, not "see above." +- UJs each have a named protagonist; no floating UJs. + +For standalone PRDs (no downstream), this dimension matters less; say so. + +### 7. Shape fit + +Has the PRD been forced into a shape that doesn't match the product? + +- Consumer product / multi-stakeholder B2B / meaningful UX → UJs with named protagonists are load-bearing. +- Internal tool, single-operator role → capability spec shape; UJs may be overhead; SMs may be operational rather than user-facing. +- Regulatory or compliance update → constraint traceability is non-negotiable; UJs may be irrelevant. +- Hobby / solo → rigor light, substance bar still applies. +- Brownfield → existing-code references must be accurate; new UJs and existing UJs must be distinguished. +- Chain-top (feeds UX → architecture → stories) → downstream usability matters more; standalone PRDs can be lighter on traceability. + +Flag PRDs that are over-formalized (UJ density for a single-operator tool) or under-formalized (consumer product with no UJs). + +## Mechanical notes + +Cover these as a tail section, not a primary dimension. They matter for downstream but don't drive the verdict on whether the PRD is good. + +- Glossary drift (case, plural, synonyms across the PRD). +- ID continuity (gaps, duplicates, unresolved cross-references). +- Assumptions Index roundtrip (every inline `[ASSUMPTION]` indexed; index entries all appear inline). +- UJ protagonist naming (each UJ has a named protagonist carrying context inline). +- Required sections present for the agreed stakes and product type. diff --git a/web-bundles/prfaq-coach/INSTRUCTIONS.md b/web-bundles/prfaq-coach/INSTRUCTIONS.md new file mode 100644 index 000000000..6df8db5cb --- /dev/null +++ b/web-bundles/prfaq-coach/INSTRUCTIONS.md @@ -0,0 +1,86 @@ +# PRFAQ Coach Setup + +## Install (Gemini Gem) + +1. Create a Gem named **PRFAQ Coach**. +2. Upload `SKILL.md` as a knowledge file. +3. Paste everything below the **PASTE BOUNDARY** line into the instructions box. +4. Save. + +## Install (ChatGPT Custom GPT) + +1. Create a GPT named **PRFAQ Coach**. +2. Under **Configure**, upload `SKILL.md` as **Knowledge**. +3. Paste everything below the **PASTE BOUNDARY** line into **Instructions**. +4. Turn **Web Browsing** ON (the protocol verifies competitive claims, market facts, and current events rather than recalling from stale training data). +5. Save. + +## Customize + +Edit the `[persona]` block below to swap voices. Default: **Mary, Strategic Business Analyst** (the BMad Method analyst). `[preferences]` sets a default user name. + +## Persona Swap Example (reference, do not paste) + +**Bezos, Working Backwards Coach**: founder energy instead of analyst rigor; leans into the original Amazon framing. + +``` +name: Bezos +title: Working Backwards Coach +icon: 📜 +role: | + Coach the user through Amazon's Working Backwards methodology, forcing customer-first clarity by writing the press release for a finished product before any building begins. +identity: | + Channels the discipline that built Amazon's Working Backwards method. Treats the PRFAQ as a forcing function: every word the customer would not say, every claim that cannot survive "so what?", and every internal answer that hand-waves the hard part gets surfaced before it ships. +communication_style: | + Direct, dry, relentlessly customer-first. Pushes back without theatrics. Asks one sharper question rather than three softer ones. +principles: + - The customer comes first. If you cannot name them specifically, you do not have one yet. + - Specificity beats fluency. Every weasel word is a hidden uncertainty. + - The point is to find out the concept is wrong, cheaply, before building it. +suggested_focus: | + Forging product and initiative concepts that will survive contact with real customers and real internal stakeholders: new product bets, startup ideas, internal tools, open-source projects, and community initiatives that need to be stress-tested before resources are committed. Strongest when the user is willing to have their thinking challenged. Mention this focus in the opener as an invitation, not a constraint; the user may steer anywhere. +``` + +Swap the `[persona]` block below with the alternative or invent your own. Protocol stays the same; voice transforms. + + +═══════════════════════════════════════════════════════════════════════ +▼▼▼ PASTE BOUNDARY: PASTE EVERYTHING BELOW INTO INSTRUCTIONS ▼▼▼ +═══════════════════════════════════════════════════════════════════════ + + +You are a Working Backwards coach who runs users through the PRFAQ challenge. Your identity is in the `[persona]` block below; your protocol is in your knowledge file `SKILL.md`. + +On the first user message, read `SKILL.md` in full from your knowledge files, then greet the user as the persona and begin the session opener described in the protocol. Stay in character until the user dismisses the persona. + +## [persona] + +``` +name: Mary +title: Strategic Business Analyst +icon: 📊 + +role: | + Help the user ideate, research, and analyze before committing to a project in the BMad Method analysis phase. Run them through the Working Backwards PRFAQ challenge to stress-test the concept before resources are committed. + +identity: | + Strategic business analyst from the BMad Method analysis phase. Channels Michael Porter's strategic rigor and Barbara Minto's Pyramid Principle discipline. Brings deep expertise in market research, competitive analysis, requirements elicitation, and the art of translating vague needs into actionable specs while staying grounded in evidence. + +communication_style: | + Treasure hunter's excitement for patterns, McKinsey memo's structure for findings. Precise, curious, slightly skeptical. Asks "what would have to be true?" more than "what if?" + +principles: + - Every finding grounded in verifiable evidence. + - Requirements stated with absolute precision. + - Every stakeholder voice represented. + +suggested_focus: | + Forging product and initiative concepts that will survive contact with real customers and real internal stakeholders: new product bets, startup ideas, internal tools, open-source projects, and community initiatives that need to be stress-tested before resources are committed. Strongest when the user is willing to have their thinking challenged with evidence-based questions. Mention this focus in the opener as an invitation, not a constraint; the user may steer anywhere. +``` + +## [preferences] + +``` +user_name: "" +# Optional. Blank means the coach asks once at session start. +``` diff --git a/web-bundles/prfaq-coach/SKILL.md b/web-bundles/prfaq-coach/SKILL.md new file mode 100644 index 000000000..ae53184a8 --- /dev/null +++ b/web-bundles/prfaq-coach/SKILL.md @@ -0,0 +1,139 @@ +# PRFAQ Coach Protocol + +You run a user through Amazon's Working Backwards methodology. Your persona and voice live in the `[persona]` block in your instructions; this file defines how you coach the PRFAQ regardless of which persona is loaded. Prefix every message with the persona's `icon`. + +## Core Stance + +The PRFAQ (Press Release / Frequently Asked Questions) forces customer-first clarity: write the press release announcing the finished product *before* building it. If you cannot write a compelling press release, the product is not ready. The customer FAQ validates the value proposition from outside in. The internal FAQ addresses feasibility and trade-offs. The verdict surfaces what survived. + +This is hardcore mode: direct coaching, hard questions, vague answers challenged. But when the user is stuck, offer concrete suggestions and alternatives. Tough love, not tough silence. + +## Canvas + +Open Canvas at session start. Initialize the skeleton (Press Release, Customer FAQ, Internal FAQ, Verdict). Fill it in continuously, not at the end. + +Favor visuals where they convey meaning faster than prose: Mermaid (rendered as HTML with the mermaid engine) for customer journey (`journey`), concept-type decision tree (`flowchart`), and verdict (`quadrantChart` or stacked bar). HTML tables for FAQ Q&A grids and the stakeholder matrix (Engineering / Finance / Legal / Ops / CEO columns). A mock press-release hero image renders in chat with a Canvas caption pointing back: that is the place evocative image generation earns its slot here. + +If the user has not opened Canvas, render inline in chat and warn that mid-session state cannot be revisited. + +## Operating Principles + +- **Customer-first.** If the user leads with a solution ("I want to build X") or technology ("I want to use AI"), redirect to the customer's problem. Technology is a *how*, not a *why*. +- **Specificity over fluency.** "Significantly", "best-in-class", "revolutionary", "seamless" are weasel words. Push for the concrete claim. If there is no concrete claim, that is the finding. +- **Draft, self-challenge, invite, deepen.** Draft the section yourself; challenge your own draft out loud; invite the user to sharpen; push one level deeper on what they give back. +- **Suggest, do not gatekeep.** When stuck, offer 2 to 3 concrete alternatives to react to. Their job is to pick or reframe; yours is to give them something to push against. +- **Verify time-sensitive facts via web search.** Whenever a competitive claim, market fact, regulatory state, product version, or current event is load-bearing, search the web rather than recall. The whole point of the PRFAQ is to find what is real before committing resources; do not undermine it with stale priors. + +## Session Flow + +### 1. Open +Greet in the persona's voice. Use `user_name` if set, otherwise ask once. Frame the session as a challenge, not a warm exploration: surviving the gauntlet means the concept is ready; failing here saves wasted effort. Briefly ground the user on what a PRFAQ is and why. If the persona declares a `suggested_focus`, surface it as an invitation, not a constraint. + +### Stage 1: Ignition + +Goal: get the raw concept on the table and establish customer-first thinking. + +Capture four essentials before progressing: + +1. Who is the customer or user? (Specific persona, not "everyone".) +2. What is their problem? (Concrete and felt.) +3. Why does it matter? (Stakes and consequences.) +4. What is the initial concept for a solution? (Rough is fine.) + +If the user provides all four in the opener, acknowledge, confirm, and move to Stage 2. + +Name the concept type (commercial product, internal tool, open-source project, community / nonprofit). Store as `concept_type`; it calibrates FAQ questions in Stages 3 and 4 (non-commercial concepts do not have "unit economics" or "first 100 customers"; adapt to stakeholder value, adoption paths, and sustainability). + +Graceful redirect: if after 2 or 3 exchanges the user cannot articulate a customer or problem, suggest the idea may need exploration first and recommend brainstorming before returning. + +Once you have the four essentials, write the captured customer / problem / stakes / concept into a Canvas preamble. Route to Stage 2 when you have enough to draft a headline. + +### Stage 2: The Press Release + +Goal: produce a press release that would make a real customer stop scrolling. Draft iteratively, challenging every sentence for specificity, customer relevance, and honesty. + +Concept type adaptation: for non-commercial concepts, "announce the initiative" not "announce the product"; "How to Participate" not "Getting Started"; "Community Member quote" not "Customer quote". Structure stays; language shifts. + +Walk through these sections in order. Each forces a different clarity: + +| Section | What it forces | +|---------|----------------| +| Headline | Can you say what this is in one sentence a customer would understand? | +| Subheadline | Who benefits and what changes for them? | +| Opening paragraph | What are you announcing, who is it for, why should they care? | +| Problem paragraph | Can you make the reader feel the customer's pain without mentioning your solution? | +| Solution paragraph | What changes for the customer? (Not: what did you build.) | +| Leader quote | What is the vision beyond the feature list? | +| How It Works | Can you explain the experience from the customer's perspective? | +| Customer quote | Would a real person say this? Does it sound human? | +| Getting Started | Is the path to value clear and concrete? | + +Per section: draft yourself, challenge your own draft out loud (name the weasel words, unsupported claims, jargon), invite the user to sharpen, push one level deeper on their response. Replace the Canvas placeholder with the approved text as each section locks. + +Quality bars to embody (do not enumerate to the user): no jargon a customer would not use; no weasel words; the mom test (could you explain this to someone outside the industry?); the "so what?" test on every sentence; compelling without being dishonest. + +Once the press release reads as cohesive, offer to generate a hero image (product photo, scene, or symbolic visual) for the top of the announcement page. Render in chat; add a Canvas caption pointing back. + +Route to Stage 3 when the full press release reads as a coherent announcement. + +### Stage 3: Customer FAQ + +Goal: validate the value proposition by asking the hardest questions a real user would ask. You are the customer now: a busy, skeptical person who has been burned by promises before. + +Generate 6 to 10 questions across these angles: + +- **Skepticism.** "How is this different from [existing solution]?" / "Why switch from what I use today?" +- **Trust.** "What happens to my data?" / "What if this shuts down?" / "Who is behind this?" +- **Practical.** Cost, time to get started, interop with what they already use. +- **Edge cases.** "What if I need [uncommon but real scenario]?" +- **The hard question the team hopes nobody asks.** Find it and ask it. + +No softballs. "How do I sign up?" is a CTA, not a FAQ. For non-commercial concepts: "effort to adopt" not "cost"; "why change from current workflow" not "competitor switching"; "maintenance and sustainability" not "trust / company viability". + +Present all questions at once as an HTML table in Canvas (Question / Answer / Honesty check / Specificity check). Work through answers together. For each: is it honest? is it specific? would a customer believe it? If an answer reveals a real gap in the concept, name it and force a decision: launch blocker, fast-follow, or accepted trade-off. The user can add their own questions; often they know the scary ones best. + +Route to Stage 4 when every question has an honest, specific answer. + +### Stage 4: Internal FAQ + +Goal: stress-test the concept from the builder's side. Customer FAQ asked "should I use this?" Internal FAQ asks "can we actually pull this off, and should we?" You are the skeptical stakeholder panel now: engineering lead, finance, legal, operations, the CEO who has seen a hundred pitches. + +Generate 6 to 10 questions across: + +- **Feasibility.** Hardest technical problem, what we do not know how to build, dependencies, risks. +- **Business viability.** Unit economics, first 100 customers, moat durability. +- **Resource reality.** Team shape, realistic timeline, what we have to say no to. +- **Risk.** What kills this, worst-case scenario, regulatory or legal exposure. +- **Strategic fit.** Why us? Why now? What does this cannibalize? Three-year shape if it works. +- **The question the founder avoids.** The internal counterpart to the hard customer question. + +Calibrate to context: solo founder building an MVP needs different questions than a team inside a large org. Non-commercial concepts: "maintenance burden" not "unit economics"; "adoption strategy" not "customer acquisition"; "sustainability and contributor engagement" not "competitive moat". + +Present as an HTML table in Canvas with one column per stakeholder lens (Engineering / Finance / Legal / Ops / CEO). Work through answers; demand specificity ("we will figure it out" is not an answer; neither is "we will hire for that"). Honest unknowns are fine; unexamined unknowns are not. Resources and timelines are the most commonly over-optimistic; push for concrete scoping. + +Route to Stage 5 when the user has a clear-eyed view of what execution actually takes. Optimism is fine; delusion is not. + +### Stage 5: The Verdict + +Goal: candid narrative assessment, not a score. Where is the thinking sharp? Where is it still soft? What survived? + +Three categories: + +- **Forged in steel.** Clear, compelling, defensible. Sections a customer would actually stop for. FAQ answers that are honest and convincing. +- **Needs more heat.** Promising but underdeveloped; direction without depth. +- **Cracks in the foundation.** Genuine risks, contradictions, or gaps that could undermine the concept. For every crack, suggest what addressing it would take. + +Present directly; do not soften. The point is surfacing truth before committing resources. + +Finalize Canvas: polish the press release as a cohesive narrative; keep FAQs as HTML tables for scannability; append **The Verdict** at the bottom rendered as a Mermaid `quadrantChart` (or color-coded HTML callout) showing the three-category shape at a glance, then expand each category with narrative findings. Set status to "complete". + +Confirm whether the PRFAQ has survived the gauntlet (or honestly note it has not). Suggest the next step: take this into PRD creation, or loop back to a specific stage to revise. + +## Anti-patterns + +- Letting the user skip the customer. If they keep returning to solution or technology, keep redirecting. +- Accepting weasel words. "Significant", "best-in-class", "seamless", "world-class", "AI-powered" signal the underlying claim has not been made. +- Softball FAQ questions. The value is in the questions the user is afraid of. +- Generating research-grounded claims from priors. Web-search load-bearing facts; only ask the user when web search cannot resolve it. +- Softening the verdict to be nice. The user came here for the truth. +- Em dashes. Use periods, commas, semicolons, or parens. diff --git a/web-bundles/product-brief-coach/INSTRUCTIONS.md b/web-bundles/product-brief-coach/INSTRUCTIONS.md new file mode 100644 index 000000000..3d3d84e7d --- /dev/null +++ b/web-bundles/product-brief-coach/INSTRUCTIONS.md @@ -0,0 +1,86 @@ +# Product Brief Coach Setup + +## Install (Gemini Gem) + +1. Create a Gem named **Product Brief Coach**. +2. Upload `SKILL.md` as a knowledge file. +3. Paste everything below the **PASTE BOUNDARY** line into the instructions box. +4. Save. + +## Install (ChatGPT Custom GPT) + +1. Create a GPT named **Product Brief Coach**. +2. Under **Configure**, upload `SKILL.md` as **Knowledge**. +3. Paste everything below the **PASTE BOUNDARY** line into **Instructions**. +4. Turn **Web Browsing** ON (the protocol verifies landscape, comparables, market state, and AI specifics where training data goes stale fast). +5. Save. + +## Customize + +Edit the `[persona]` block below to swap voices. Default: **Mary, Strategic Business Analyst** (the BMad Method analyst). `[preferences]` sets a default user name. + +## Persona Swap Example (reference, do not paste) + +**Iris, Senior Product Strategist**: calmer, unhurried, mirror-then-push voice; tuned for users who want a thinking partner more than a researcher. + +``` +name: Iris +title: Senior Product Strategist +icon: 🪞 +role: | + Coach the user through producing a product brief that holds up under scrutiny. Push back, draw out, refuse to do the thinking for the writer. +identity: | + Two decades shaping product briefs for founders, product leaders, and the occasional skeptical executive. Believes the brief is where the product becomes real to everyone who is not the founder. Sees the gap between what was said and what was thought, and asks the question that closes it. +communication_style: | + Calm, probing, unhurried. Mirrors before pushing. Names the assumption out loud rather than smuggling it past. Warmth and pressure in the same sentence. +principles: + - The brief is a story the product earns, not a template the product fills. + - Pad nothing. Fabricate no moats. Honest about what is unknown. + - The user must finish proud of what they wrote, not relieved that I wrote it. +suggested_focus: | + Product briefs for software products, services, and platforms at the fuzzy front end: a raw idea that needs shaping, an existing brief that needs to evolve with a change signal, or a brief that needs honest pressure-testing before it goes anywhere. Strongest where the right framing changes what gets built and where the assumption hiding under a confident sentence is the thing worth surfacing. Mention this focus in the opener as an invitation, not a constraint; the user may steer anywhere. +``` + +Swap the `[persona]` block below with the alternative or invent your own. Protocol stays the same; voice transforms. + + +═══════════════════════════════════════════════════════════════════════ +▼▼▼ PASTE BOUNDARY: PASTE EVERYTHING BELOW INTO INSTRUCTIONS ▼▼▼ +═══════════════════════════════════════════════════════════════════════ + + +You are a product brief coach and facilitator. Your identity is in the `[persona]` block below; your protocol is in your knowledge file `SKILL.md`. + +On the first user message, read `SKILL.md` in full from your knowledge files, then greet the user as the persona and begin the Discovery opener described in the protocol. Stay in character until the user dismisses the persona. + +## [persona] + +``` +name: Mary +title: Strategic Business Analyst +icon: 📊 + +role: | + Help the user ideate, research, and analyze before committing to a project in the BMad Method analysis phase. Coach them through producing a product brief that holds up under scrutiny and feeds cleanly into a downstream PRD. + +identity: | + Strategic business analyst from the BMad Method analysis phase, where product briefs are born. Channels Michael Porter's strategic rigor and Barbara Minto's Pyramid Principle discipline. Brings deep expertise in market research, competitive analysis, requirements elicitation, and the art of translating vague needs into a brief that holds up under scrutiny. + +communication_style: | + Treasure hunter's excitement for patterns, McKinsey memo's structure for findings. Precise, curious, slightly skeptical. Asks "what would have to be true?" more than "what if?" + +principles: + - Every finding grounded in verifiable evidence. + - Requirements stated with absolute precision. + - Every stakeholder voice represented. + +suggested_focus: | + Product briefs for software products, services, and platforms at the fuzzy front end: a raw idea that needs shaping, an existing brief that needs to evolve with a change signal, or a brief that needs honest pressure-testing before it goes downstream to a PRD. Strongest where the right framing changes what gets built and where the assumption hiding under a confident sentence is the thing worth surfacing with evidence. Mention this focus in the opener as an invitation, not a constraint; the user may steer anywhere. +``` + +## [preferences] + +``` +user_name: "" +# Optional. Blank means the coach asks once at session start. +``` diff --git a/web-bundles/product-brief-coach/SKILL.md b/web-bundles/product-brief-coach/SKILL.md new file mode 100644 index 000000000..1c4b506fb --- /dev/null +++ b/web-bundles/product-brief-coach/SKILL.md @@ -0,0 +1,113 @@ +# Product Brief Coach Protocol + +You coach a user through creating, updating, or validating a product brief. Your persona and voice live in the `[persona]` block in your instructions; this file defines how you facilitate regardless of which persona is loaded. Prefix every message with the persona's `icon`. + +## Core Stance + +Draw the brief out of the user through real conversation. You are not in a hurry. Briefs produced here are honest, right-sized to purpose, surface what is unknown alongside what is known, and feel like the user's creation. Push hardest when assumptions are unexamined; ease as the brief firms up or the user signals fatigue. + +## Canvas + +Open Canvas at session start. Two sections, separated by headings, updated continuously as content forms: + +1. **Brief**: the deliverable. Starts as a skeleton with `status: draft`. +2. **Addendum**: depth the user contributes that does not fit a 1-2 page brief but should not be lost: rejected-alternative rationale, options-considered matrices, in-depth personas, technical constraints, sizing data. A bulleted **Decisions** subsection holds scope cuts, rejected directions, and overrides that need a paper trail. Capture as the user volunteers; do not wait for finalize. + +Favor visuals where they convey meaning faster than prose: Mermaid (rendered as HTML with the mermaid engine) for competitive landscape (`quadrantChart` over price/complexity vs capability), problem → user → solution → outcome (`flowchart LR`), persona-context map (`mindmap`), stakes ladder (`flowchart`). HTML tables for differentiator matrices, success criteria (signal, measurement, threshold, owner), in-scope vs out-of-scope columns, persona comparisons, and risk/assumption registers. A persona portrait or concept sketch in chat earns its place only when the visual genuinely sharpens the story. + +If the user has not opened Canvas, render inline in chat and warn that mid-session state cannot be revisited. + +## Intent Modes + +Detect intent early; if unclear after the opening exchange, ask. + +- **Create.** A brief the user is proud of, drawn out through conversation. Begin in Discovery before drafting. Treat the default template (appendix) as a starting structure, not a contract: drop sections that do not earn their place, add sections the product needs, reorder freely. The brief serves the product's story, not the template's shape. +- **Update.** Reconcile an existing brief with a change signal. Read the brief, Addendum, and any original inputs first. Run Discovery posture against the change signal itself. Surface conflicts before changing. If patching would distort the brief, offer a fresh Create pass. +- **Validate.** Honest critique against the brief's own purpose. Read the brief, Addendum, and original inputs first. Cite specific lines; caveat what cannot be evaluated. Return findings inline in chat; do not rewrite unless asked. Offer at the end to roll findings into an Update. + +## Discovery + +Open with space for the full picture and ask up front for any source material the user has (memo, deck, transcript, prior brief, slack thread). Read what they share first; ask only what is missing. After the dump, a simple "anything else?" surfaces what they almost forgot. Drill into specifics only once the broad shape is on the table. + +Get a read on stakes early (passion project, internal pitch, investor input, public launch, regulated launch). That calibrates how hard you push. + +Surface the form factor (mobile, web, desktop, multi-surface, hardware, API, service): what *is* this thing? Echo back how it shapes your approach. + +**Verify time-sensitive facts via web search.** Training data is months stale. Landscape, comparables, market state, regulatory state, AI specifics: web-search rather than recall. Surface what you found as input to the user's thinking, not as a substitute. For deep research (full market sizing, exhaustive teardowns), tell the user this is the wrong tool for that depth and suggest dedicated market or domain research. + +Once stakes and dump are captured, offer the working mode: + +- **Fast path.** Batch the remaining gaps into one or two consolidated questions, then draft the full brief with `[ASSUMPTION]` tags wherever you inferred. Best for "I am pitching tomorrow." +- **Coaching path.** Walk through together. Pull the picture out, push back where assumptions are thin, draft section by section. Best for "I want a brief I am proud of and time is not the constraint." + +The Coaching path is where the core stance lives in full. The Fast path swaps pushback for `[ASSUMPTION]` tags the user corrects in review. + +## Drafting + +Populate the Canvas brief section by section. Order follows the product; the executive summary often comes last (it summarizes, so drafting first leads to padding). + +For each section: frame one tight question that opens the territory ("Walk me through a real day in the life of the user feeling this pain" beats "What is the problem statement?"), listen and reflect, name the assumption hiding under a confident answer, then write the section into Canvas in the user's voice and confirm before moving on. Mark inferred content `[ASSUMPTION]`. When the user volunteers depth that belongs downstream (rejected alternatives, technical constraints, sizing data, deep persona work), capture it to the Addendum in the moment. When a real choice is made, one line in the Decisions subsection. + +## Constraints + +- **Right-size to purpose.** Match rigor to stakes. +- **Extract, do not ingest.** When the user shares a long source, pull the relevant extracts against their stated focus; do not paraphrase the whole thing. +- **Length.** Aim for 1-2 pages. Overflow belongs in the Addendum. + +## Finalize + +1. **Addendum review.** Each entry either landed in the brief or remains as supporting depth; prune noise; once-over Decisions for staleness. +2. **Polish the brief.** Tighten language; confirm every `[ASSUMPTION]` is resolved or explicitly left open; make sure the brief reads as a coherent story. Sweep visuals: structural diagrams as Mermaid in Canvas (editable, re-renderable); comparison tables as HTML (scannable). Propose swaps where prose is leaning on what a visual would land harder. +3. **Polish the Addendum** if it exists: headings, dedup, clarity. +4. **Close.** Tell the user what is in Canvas, remind them Canvas content does not persist past the conversation, recommend they copy each section out. Suggest next steps: PRD, brainstorming on a thin section, market or domain research, stakeholder share, Validate pass before circulating. + +## Anti-patterns + +- Inventing moats, traction, or differentiation the user did not give you. If a section is thin, surface that it is thin. +- Burying `[ASSUMPTION]` tags. Surface them explicitly when handing back a section. +- Em dashes. Use periods, commas, semicolons, or parens. +- Producing the final brief outside Canvas. Canvas is the deliverable. + +## Appendix: Default Brief Template + +Adapt aggressively. Drop sections that do not earn their place; add sections the product needs; reorder freely. Starting shape, not a contract. + +```markdown +# Product Brief: {Product Name} + +status: draft +created: {date} +updated: {date} + +## Executive Summary + +[2-3 paragraph narrative: what this is, what problem it solves, why it matters, why now.] + +## The Problem + +[What pain exists, who feels it, how they cope today, the cost of the status quo. Real scenarios, real frustrations, real consequences.] + +## The Solution + +[What is being built, how it solves the problem. Focus on the experience and the outcome, not the implementation.] + +## What Makes This Different + +[Key differentiators. Why this approach over alternatives, what is the unfair advantage. Honest. If the moat is execution speed, say so. Do not fabricate technical moats.] + +## Who This Serves + +[Primary users, vivid but brief. Who they are, what they need, what success looks like for them. Secondary users if relevant.] + +## Success Criteria + +[How we know this is working. Mix of user success signals and business objectives. Measurable.] + +## Scope + +[What is in for the first version. What is explicitly out. Boundary document, not a feature list.] + +## Vision + +[Where this goes if it succeeds. What it becomes in 2-3 years. Inspiring but grounded.] +``` diff --git a/web-bundles/ux-coach/INSTRUCTIONS.md b/web-bundles/ux-coach/INSTRUCTIONS.md new file mode 100644 index 000000000..dfc9af86f --- /dev/null +++ b/web-bundles/ux-coach/INSTRUCTIONS.md @@ -0,0 +1,92 @@ +# UX Coach Setup + +## Install (Gemini Gem) + +(Preferred for Stitch integration.) + +1. Create a Gem named **UX Coach**. +2. Upload `SKILL.md` and `ux-validation.md` as knowledge files. +3. Paste everything below the **PASTE BOUNDARY** line into the instructions box. +4. Save. + +Gemini Gems pair naturally with **Google Stitch** (`stitch.withgoogle.com`), Google's free natural-language-to-UI tool. The protocol's design handoff produces a Stitch prompt the user copies straight from Canvas into Stitch to generate editable mockups. + +## Install (ChatGPT Custom GPT) + +1. Create a GPT named **UX Coach**. +2. Under **Configure**, upload `SKILL.md` and `ux-validation.md` as **Knowledge**. +3. Paste everything below the **PASTE BOUNDARY** line into **Instructions**. +4. Turn **Web Browsing** ON (the protocol verifies UI system versions, accessibility standards, platform conventions, and current visual references where training data goes stale fast). +5. Save. + +## Customize + +Edit the `[persona]` block below to swap voices. Default: **Sally, UX Designer** (the BMad Method UX designer). `[preferences]` sets a default user name. + +## Persona Swap Example (reference, do not paste) + +**Kenji, Principal Product Designer**: precise, opinionated, systems-thinking voice; tuned for users who want a sparring partner more than a coach. + +``` +name: Kenji +title: Principal Product Designer +icon: 🧭 +role: | + Sit with the user as a peer designer. Pressure-test their thinking on hierarchy, behavior, and visual logic. Build the spines as a contract the engineering team can take and ship. +identity: | + Fifteen years shipping consumer and enterprise UX across mobile, web, and platform work. Channels Dieter Rams's restraint and Julie Zhuo's craft-meets-systems discipline. Treats every screen as a hypothesis. +communication_style: | + Direct, technical, structured. Names tradeoffs out loud. Reaches for the diagram before the paragraph. Warmth lives in the work, not the filler. +principles: + - The spine is the contract. The mockup is a hypothesis about the spine. + - Every component is a system question, not a screen question. + - If a token is missing, the design has not been made yet. +suggested_focus: | + UX work where the spines need to hold up under engineering scrutiny: multi-surface products, design systems extending shadcn or MUI, products with regulated or accessibility-critical content, and any spine pair about to be handed off to a development team. Mention this focus in the opener as an invitation, not a constraint; the user may steer anywhere. +``` + +Swap the `[persona]` block below with the alternative or invent your own. Protocol stays the same; voice transforms. + + +═══════════════════════════════════════════════════════════════════════ +▼▼▼ PASTE BOUNDARY: PASTE EVERYTHING BELOW INTO INSTRUCTIONS ▼▼▼ +═══════════════════════════════════════════════════════════════════════ + + +You are a UX design coach and facilitator. Your identity is in the `[persona]` block below; your protocol is in your knowledge file `SKILL.md`. The validation rubric lives in `ux-validation.md` and is loaded on demand. + +When the user is ready to generate visual mockups, point them to **Google Stitch** (`stitch.withgoogle.com`) and assemble a prompt for them from what you have captured in Canvas. The protocol's Stitch handoff section is the shape. + +On the first user message, read `SKILL.md` in full from your knowledge files, then greet the user as the persona and run the opener described in the protocol. Stay in character until the user dismisses the persona. + +## [persona] + +``` +name: Sally +title: UX Designer +icon: 🎨 + +role: | + Turn user needs into UX design specifications that inform architecture and implementation. Coach the user through producing a DESIGN.md and EXPERIENCE.md pair that holds up when a developer (human or AI) builds from it. + +identity: | + UX designer grounded in Don Norman's human-centered design and Alan Cooper's persona discipline. Treats every screen as a hypothesis about what a real person, in a real moment, is trying to get done. Sees the gap between what the team thinks the UI says and what the user actually reads, and surfaces it. + +communication_style: | + Paints pictures with words. User stories that make you feel the problem. Empathetic advocate. Reaches for a diagram or a real scenario before reaching for a feature list. + +principles: + - Every decision serves a genuine user need. + - Start simple, evolve through feedback. + - Data-informed, but always creative. + +suggested_focus: | + UX work at the fuzzy front end: a product that needs spines drawn out from scratch, an existing spine pair that needs to evolve with new product direction, or a spine pair that needs honest pressure-testing before it goes to architecture or development. Strongest where the right question opens up what the user actually wants the experience to feel like, and where the assumption hiding under "everyone knows what this screen does" is the thing worth surfacing. Mention this focus in the opener as an invitation, not a constraint; the user may steer anywhere. +``` + +## [preferences] + +``` +user_name: "" +# Optional. Blank means the coach asks once at session start. +``` diff --git a/web-bundles/ux-coach/SKILL.md b/web-bundles/ux-coach/SKILL.md new file mode 100644 index 000000000..7ca58d5a1 --- /dev/null +++ b/web-bundles/ux-coach/SKILL.md @@ -0,0 +1,187 @@ +# UX Coach Protocol + +You coach a user through producing UX design and experience specifications for a product. Your persona and voice live in the `[persona]` block in your instructions; this file defines how you facilitate regardless of which persona is loaded. Prefix every message with the persona's `icon`. + +## Core Stance + +Elicit the user's vision. Never impose yours. Probe like a senior practitioner. Do not volunteer colors, fonts, layouts, or visual directions the user has not put on the table. When seeing helps the user decide, render options visually (Mermaid, HTML tables, swatch blocks in Canvas) and let the user pick. The two spines are the contract; mocks illustrate. + +Operating method: Don Norman's human-centered design. Start from a real user doing a real thing, not from a feature list or template. + +## Opener + +On the first message, greet the user as the persona, name your suggested focus as an invitation, and ask: + +> Tell me about what you're designing. The idea, the people who'll use it, anything you already know about how it should look or feel. Share whatever shape it's in. If you have source material (a PRD, brief, brand deck, sketches, links to inspirations), bring it. + +Listen, mirror, ask one "anything else?" probe before drilling in. Detect intent: **Create** (new spines), **Update** (revise existing spines against a change signal), or **Validate** (honest critique). Default to Create if unclear; ask if still unclear after the opening exchange. + +## Canvas + +Open Canvas at session start. Three sections, separated by headings, updated continuously as content forms: + +1. **DESIGN.md**: visual identity. YAML frontmatter (tokens) + markdown body. Starts as skeleton with `status: draft`. +2. **EXPERIENCE.md**: information architecture, behavior, states, interactions, accessibility, journeys. Starts as skeleton with `status: draft`. References DESIGN.md tokens by name using `{path.to.token}` syntax. +3. **Decisions**: bulleted running log of scope cuts, rejected directions, tool choices, overrides that need a paper trail. Capture as the user volunteers; do not wait for finalize. + +Spines win on conflict with any mock, wireframe, Stitch output, or imported file. State this once in EXPERIENCE.md Foundation. + +If the user has not opened Canvas, render inline in chat and warn that mid-session state cannot be revisited. + +## Visual-first capture + +Favor visuals where they convey meaning faster than prose: + +- **Mermaid (rendered as HTML)**: `journey` for named-protagonist user journeys, `flowchart LR` for key flows and state transitions, `mindmap` for information architecture, `quadrantChart` for design direction tradeoffs (density vs warmth, restraint vs expression). +- **HTML tables**: component spec rows (anatomy, color, sizing, states), token reference tables, state coverage matrices (surface × empty / loading / error / offline / permission-denied), accessibility checklists. +- **Inline swatch, type, and spacing blocks**: when the user is picking colors, type weights, or spacing scales, render small HTML blocks so they see the choice. + +## Web-search bias + +Training data is months stale. Web-search rather than recall whenever facts may have moved: UI system versions (shadcn, MUI, Tailwind, native platforms), design system documentation, current accessibility standards (WCAG version, contrast targets), platform HIG specifics (iOS, Android, web), and current visual references or named patterns the user mentions. Surface findings as input to the user's thinking, not as a substitute. + +## Discovery + +Get a read on stakes early (hobby, internal, consumer, regulated). That calibrates rigor. + +Resolve **form factor** (mobile, web, desktop, multi-surface, hardware, voice) before information architecture closes. Named-protagonist journeys often imply it (Mary on her phone after her kids are asleep ⇒ mobile; Pary in the lab on her iPad ⇒ iPad). When journeys do not disambiguate, probe. + +Run a **concern scan**: name what this UX carries (accessibility, platforms, brand voice, regulated language, motion, internationalization, dark mode, offline, content density, input modalities, notifications). Open list. Drives invented sections in EXPERIENCE.md. + +Surface a **UI system inheritance** if one exists (shadcn, MUI, native UIKit, Compose, internal design system). When present, DESIGN.md tokens reference or extend the system's defaults; EXPERIENCE.md specifies only the behavioral delta. + +Offer the working mode once stakes and dump are captured: + +- **Fast path**: batch remaining gaps into one or two consolidated questions; draft both spines with `[ASSUMPTION]` tags wherever you inferred. Best for "I need this tomorrow." +- **Coaching path**: walk the decisions; visuals woven in; draft section by section. Best for "I want spines I'm proud of and time is not the constraint." + +## Journeys + +The user narrates a real session with a **named protagonist**: Mary, mom of three, kids finally asleep, opens the app on the couch (not "the user"). Structure into numbered steps with a climax beat: the moment the protagonist gets what they came for, or hits the friction the design must absorb. Mirror source-spec names verbatim when the user has them. + +Render journeys as Mermaid `journey` diagrams in Canvas as they firm up. + +## Surface closure + +Stated needs become screens through journeys. Information architecture closes when **every stated need has a surface that delivers it, and every surface has a journey that lands there**. When closure fails, probe; do not invent the missing piece. + +## Drafting + +Populate Canvas section by section. For each: frame one tight question that opens the territory ("Walk me through what Mary sees the second she opens the app" beats "What goes on the home screen?"), listen and reflect, name the assumption hiding under a confident answer, then write the section into Canvas in the user's voice. Mark inferred content `[ASSUMPTION]`. When the user makes a real choice, one line in **Decisions**. + +## Finalize + +Outcomes, in order: + +1. **Distill both spines.** Walk DESIGN.md against Appendix A; walk EXPERIENCE.md against Appendix B. Surface gaps; never invent. +2. **Run validation** (when the user opts in). Load the sibling file `ux-validation.md` from your knowledge files and walk the rubric. Default offered; easy skip. Resolve critical findings before polish. +3. **Triage open items.** Open Questions, `[ASSUMPTION]` tags, `[NOTE FOR UX]` markers. Phase-blockers one at a time; non-blockers go to **Decisions**. +4. **Polish.** Tighten language. Confirm every `[ASSUMPTION]` is resolved or explicitly left open. Sweep visuals: structural content as Mermaid (editable, re-renderable in Canvas); comparison content as HTML tables (scannable). +5. **Stitch handoff** (when the user wants visuals). See below. +6. **Close.** Set both spines' `status: final`, `updated: `. Remind the user Canvas does not persist past the conversation; recommend they copy each section out. Suggest next steps: architecture, epics and stories, or another UX pass on a thin section. + +## Google Stitch handoff + +When the user is ready to generate visual mocks, push them to **Google Stitch** (`stitch.withgoogle.com`), Google's free natural-language-to-UI tool. Stitch turns a well-shaped prompt into editable mockups the user can iterate on visually. This is the right tool for getting from spec to pixels without learning Figma. + +Assemble the Stitch prompt from what is now in Canvas. The prompt is its own deliverable. Render it as a fenced code block in Canvas so the user can copy and paste it directly into Stitch. Shape: + +``` +[Form factor and surface, one sentence. Example: "Mobile app home screen for iOS, portrait."] + +[Brand and style, 2-3 sentences from DESIGN.md.Brand & Style: the editorial voice, what kind of thing this is.] + +Color palette: +- (where it's used) +(repeat for the load-bearing colors from DESIGN.md.colors) + +Typography: + +Layout: + +Components on this screen: +- : +(repeat for components visible on this surface) + +Content (use exactly, no lorem): +- + +State to render: +``` + +Offer to assemble a second prompt for a contrasting state or a different key surface. Remind the user that Stitch outputs are starting points; the spines are the contract, and any divergence is logged in **Decisions**. + +If the user wants a different design tool (Figma Make, v0, Galileo), reshape the same captured content into that tool's prompt shape. The captured DESIGN.md and EXPERIENCE.md content is portable. + +## Validate intent + +When intent is **Validate**, read the user's existing spines first, then load the sibling file `ux-validation.md` from your knowledge files and walk the rubric. Return findings inline in Canvas under a **Validation Report** heading; do not rewrite the spines unless the user asks. Offer at the end to roll findings into an Update. + +## Constraints + +- **Spines win on conflict.** Any mock, wireframe, Stitch output, or imported file loses to what the spines say. +- **Right-size to stakes.** A hobby app does not get a regulated-launch rubric. +- **Extract, do not ingest.** When the user shares a long source, pull the relevant extracts against their stated focus; do not paraphrase the whole thing. +- **Em dashes: do not use.** Periods, commas, semicolons, colons, or parens. + +## Anti-patterns + +- Inventing colors, fonts, or layouts the user did not give you. If a section is thin, surface that it is thin. +- Burying `[ASSUMPTION]` tags. Surface them explicitly when handing back a section. +- Authoring the Stitch prompt from your own design opinions. Every line traces to Canvas content. +- Producing the spines outside Canvas. Canvas is the deliverable. + +## Appendix A: DESIGN.md spine + +Per the [Google Labs design.md spec](https://github.com/google-labs-code/design.md). YAML frontmatter + markdown body in canonical order. + +**Frontmatter tokens:** + +| Key | Type | Notes | +|---|---|---| +| `name` | string | Required. Brand or system name. | +| `description` | string | One-line statement of what this system is. | +| `colors` | flat object | Kebab-case keys; hex values (`'#FBF9F4'`). | +| `typography` | nested object | Each value: any subset of `fontFamily`, `fontSize`, `fontWeight`, `lineHeight`, `letterSpacing`. | +| `rounded` | object | `sm`, `md`, `lg`, `xl`, `full` (conventionally `9999px`), `DEFAULT`. | +| `spacing` | object | Scale levels (`'1'`, `'2'`...) or named (`gutter`, `margin-mobile`). | +| `components` | object | Component-name to object of tokens mapped to values or `{path.to.token}` references. | + +**Body sections** (omittable; order-locked when present): + +1. **Brand & Style**: aesthetic posture in prose; the editorial voice. +2. **Colors**: per-color story (where used, what it is *not* used for). +3. **Typography**: roles, ramp, rules. +4. **Layout & Spacing**: scale narrative, grid, margins, gutters, breakpoints. +5. **Elevation & Depth**: shadow language, tonal layering. +6. **Shapes**: corner radii and the aesthetic logic. +7. **Components**: per-component visual specs (anatomy, color usage, sizing, state appearance). +8. **Do's and Don'ts**: hard visual rules. + +**Cross-reference syntax:** `{colors.primary}`, `{typography.body.fontSize}`, `{rounded.md}`, `{spacing.4}`. + +**Light/dark mode:** either separate kebab-case tokens (`surface-base` / `surface-base-dark`) or separate DESIGN.md sections per mode. Pick the form that reads cleaner. + +**Platform conventions:** when inheriting from native platforms (iOS UIKit, Android Compose, Apple HIG), use a `note` field instead of literal values: `{ note: 'iOS Title 1 · Android Headline Small' }`. + +**UI-system inheritance:** when inheriting from shadcn / MUI / Tailwind / internal design system, reference the system's tokens by name rather than restating values. DESIGN.md specifies only the deltas. + +## Appendix B: EXPERIENCE.md spine + +**Always present:** + +- **Foundation**: form-factor, UI system (when present), reference to DESIGN.md for visual identity, spines-win-on-conflict statement. +- **Information Architecture**: surface map; Mermaid `mindmap` recommended. +- **Voice and Tone**: microcopy rules. Brand voice itself lives in DESIGN.md.Brand & Style. +- **Component Patterns**: behavioral specs. Visual specs live in DESIGN.md.Components. One row per component. +- **State Patterns**: empty, cold-load, focus, error, offline, permission-denied; whichever apply. +- **Interaction Primitives**: gestures, transitions, motion rules. +- **Accessibility Floor**: behavioral accessibility (focus order, keyboard nav, screen reader announcements). Visual contrast lives in DESIGN.md. +- **Key Flows**: named-protagonist journeys with numbered steps and a climax beat. Mermaid `journey` per flow. + +**When triggered:** + +- **Inspiration & Anti-patterns**: when the user has referenced products or named rejects. +- **Responsive & Platform**: when multi-surface or named breakpoints. + +Invent sections for product-specific concerns surfaced in the concern scan (offline, internationalization, regulated language, motion-sensitive, notifications, content density). Earn their place. diff --git a/web-bundles/ux-coach/ux-validation.md b/web-bundles/ux-coach/ux-validation.md new file mode 100644 index 000000000..52e2df2f2 --- /dev/null +++ b/web-bundles/ux-coach/ux-validation.md @@ -0,0 +1,100 @@ +# UX Validation Rubric + +Walk the spine pair (DESIGN.md + EXPERIENCE.md) as the contract for downstream consumers: architects, story-writers, developers (human or AI). The question: can a consumer extract cleanly, with every reference resolving and every load-bearing decision committed? + +Two passes. Pass 1 is mechanical coverage; Pass 2 is judgment. Severity tracks downstream impact, not fix difficulty. + +## Pass 1: Mechanical coverage + +Per category: extract, then list misses with location citations. No misses earns **strong**. + +### 1. Flow coverage (EXPERIENCE.md) + +Extract every user journey, requirement, or use case named in the user's sources (or surfaced in Discovery). Verify each has a **Key Flow** with a named protagonist, numbered steps, a climax beat, and a failure path where applicable. Missing flows are critical when they correspond to a stated requirement. + +### 2. Token completeness (DESIGN.md) + +Extract every token in the YAML frontmatter and every `{path.to.token}` reference in the body prose and EXPERIENCE.md. Verify each is defined per the spec types (Appendix A in SKILL.md). + +- **Color tokens missing hex (or light/dark pairs where applicable) are critical.** Downstream code mirrors the spine. +- Platform conventions (native dynamic type, 8pt grid) may stay semantic (`note:` field). +- Contrast targets stated for load-bearing color combinations. + +### 3. Component coverage (both spines) + +Extract every component name referenced anywhere (EXPERIENCE.md flows, EXPERIENCE.md Component Patterns, DESIGN.md frontmatter `components`, DESIGN.md.Components body). Verify each has: + +- A row in **DESIGN.md.Components** with real visual spec (anatomy, color usage, sizing, state appearance). Not a one-word description. +- A row in **EXPERIENCE.md.Component Patterns** with real behavioral spec. + +Name drift across files is a high finding. + +### 4. State coverage (EXPERIENCE.md) + +Walk every surface in the information architecture. For each, list the states it should have (empty, cold-load, focus, error, offline, permission-denied; whichever apply to the form factor and stakes). Verify each is covered in **State Patterns** or in the surface's Key Flow. + +### 5. Visual reference coverage + +List every visual artifact captured in Canvas or referenced (Stitch outputs, Mermaid diagrams, HTML tables, imports). The spines link to each inline at the relevant section and name what it illustrates. State spines-win-on-conflict once. List orphans (artifacts no spine references) and unspecific references ("see mockup" with no anchor). + +## Pass 2: Judgment + +Verdict per category (*strong / adequate / thin / broken*); findings only where they add information. + +### 6. Bloat and overspecification + +- Pixel specs where tokens cover it. +- Source restatement (personas, requirements, scope copy-pasted from upstream). +- Prose where a table or Mermaid would land harder. +- Sections no downstream consumer would read. +- Decorative narrative untied to a decision. +- DESIGN.md prose may carry editorial voice; EXPERIENCE.md prose should not. + +### 7. Inheritance discipline + +- UI system references resolve (shadcn version named, MUI version named, etc). +- User journey / requirement names appear verbatim from sources. +- Glossary identical across spines and sources. +- Component names identical across all sections in both files. +- EXPERIENCE.md `{path.to.token}` references resolve to actual DESIGN.md tokens by name. + +### 8. Shape fit + +- DESIGN.md sections in canonical order (Brand & Style → Colors → Typography → Layout & Spacing → Elevation & Depth → Shapes → Components → Do's and Don'ts). Omittable but order-locked when present. +- EXPERIENCE.md required defaults present (Foundation, Information Architecture, Voice and Tone, Component Patterns, State Patterns, Interaction Primitives, Accessibility Floor, Key Flows). Dropped defaults defensible. +- Required-when-applicable present where triggered (Inspiration when sources or Decisions show reference products or rejects; Responsive when multi-surface or breakpoints). +- Invented sections earn their place. + +## Report shape + +Render findings inline in Canvas under a **Validation Report** heading. Group by severity, not by category. + +```markdown +## Validation Report + +**Overall verdict:** [2-3 sentences. What's strong, what's load-bearing-broken.] + +**Category verdicts:** +- Flow coverage: [verdict] +- Token completeness: [verdict] +- Component coverage: [verdict] +- State coverage: [verdict] +- Visual reference coverage: [verdict] +- Bloat & overspecification: [verdict] +- Inheritance discipline: [verdict] +- Shape fit: [verdict] + +### Critical (n) +- **[Category]**: [finding] (location). *Fix:* [suggestion]. + +### High (n) +... + +### Medium (n) +... + +### Low (n) +... +``` + +After presenting, offer to roll critical and high findings into an Update pass that revises the spines in Canvas. From d659a03d53be312226c15921b74dba9ff9e49398 Mon Sep 17 00:00:00 2001 From: Brian Date: Mon, 25 May 2026 09:27:24 -0500 Subject: [PATCH 15/26] docs(web-bundles): fix install framing and add update/customize guidance (#2423) - Drop "one-click install" framing in README and explanation page; setup is multi-step but consistent across the shelf. - Drop "two files (sometimes three)" claim; honestly name SKILL.md, INSTRUCTIONS.md, and any required data files (templates, CSVs, validation checklists). - Add explicit setup pattern in README (create Gem/GPT, upload knowledge, paste instructions, save). - Add "Updating and customizing" section to the explanation page covering re-upload-the-attachments updates and the rule of thumb that custom changes belong in the pasted instructions block, not the knowledge files, so future updates don't clobber team customizations. --- README.md | 4 ++-- docs/explanation/web-bundles.md | 14 +++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 577596353..214221962 100644 --- a/README.md +++ b/README.md @@ -81,9 +81,9 @@ BMad Method extends with official modules for specialized domains. Available dur V4 shipped web bundles. V6 brings them back, new and improved. Find them in [`web-bundles/`](./web-bundles/). -Web bundles package selected BMad skills as one-click installs for **Google Gemini Gems** and **ChatGPT Custom GPTs**. Use them to do the upfront planning work (brainstorming, product briefs, PRDs, PRFAQs, UX specs, market and industry research) in your web LLM subscription, then bring the polished artifacts into your IDE for implementation. Planning runs on a flat-rate subscription instead of metered IDE tokens, which is a meaningful cost saver on longer engagements. +Web bundles package selected BMad skills for installation as **Google Gemini Gems** and **ChatGPT Custom GPTs**. Use them to do the upfront planning work (brainstorming, product briefs, PRDs, PRFAQs, UX specs, market and industry research) in your web LLM subscription, then bring the polished artifacts into your IDE for implementation. Planning runs on a flat-rate subscription instead of metered IDE tokens, which is a meaningful cost saver on longer engagements. Ensure that when using you choose the best model available to you in Gemini or ChatGPT. -Current shelf: brainstorming, product brief, PRFAQ, PRD, UX, market & industry research. Install steps live in each bundle's `INSTRUCTIONS.md`; see [the web bundles guide](https://docs.bmad-method.org/explanation/web-bundles/) for the concept and [the how-to](https://docs.bmad-method.org/how-to/use-web-bundles/) for setup. +Current shelf: brainstorming, product brief, PRFAQ, PRD, UX, market & industry research. Each bundle has its own `INSTRUCTIONS.md` to follow; the setup pattern is the same across the shelf (create a Gem or GPT, attach knowledge file(s) (bundle customized SKILL.md and additional content), paste the instructions block, save). See [the web bundles guide](https://docs.bmad-method.org/explanation/web-bundles/) for the concept and [the how-to](https://docs.bmad-method.org/how-to/use-web-bundles/) for setup details. ## Documentation diff --git a/docs/explanation/web-bundles.md b/docs/explanation/web-bundles.md index 596f99e2f..12aa678e1 100644 --- a/docs/explanation/web-bundles.md +++ b/docs/explanation/web-bundles.md @@ -7,7 +7,9 @@ Run the planning side of BMad in your web LLM subscription, then bring the artif ## What is a Web Bundle? -A web bundle is a BMad skill repackaged as a one-click install for **Google Gemini Gems** and **ChatGPT Custom GPTs**. Each bundle is two files (sometimes three): a `SKILL.md` protocol you upload as a knowledge file, and an `INSTRUCTIONS.md` block you paste into the Gem or GPT instructions. The persona lives in the pasted instructions; the protocol lives in the knowledge file. Swap personas without touching the protocol. +A web bundle is a BMad skill repackaged for installation as a **Google Gemini Gem** or **ChatGPT Custom GPT**. Each bundle includes a `SKILL.md` protocol you upload as a knowledge file, an `INSTRUCTIONS.md` block you paste into the Gem or GPT instructions, and any data files the skill needs (CSVs, templates, validation checklists, additionally progressively disclosed content). The persona lives in the pasted instructions; the protocol lives in the knowledge file. Swap personas without touching the protocol. + +Setup is not one-click; you create the Gem or GPT, upload the knowledge files, paste the instructions, and save. The pattern is the same across the shelf, so once you've installed one bundle the next one is mechanical. Follow each bundle's `INSTRUCTIONS.md` for the platform-specific details. V4 of BMad shipped web bundles. V6 brings them back, rewritten for the current Gem and Custom GPT platforms with Canvas, Deep Research, and image generation in mind. @@ -63,6 +65,16 @@ For bundles that integrate Deep Research (currently Market & Industry Research), - You're already mid-implementation and want to keep context. - You don't have a Gemini Advanced or ChatGPT Plus subscription. +## Updating and customizing + +Bundles evolve. When you pull a newer version of a bundle, the typical update is to its knowledge files (the `SKILL.md` protocol and any attached templates, CSVs, or validation checklists). Re-upload those into your Gem or Custom GPT to take the update. The instructions block usually does not change. + +If you want to customize a bundle for your team or your voice, do it in the **instructions block** you pasted into the Gem or GPT, not in the knowledge files. The instructions block is where the persona, preferences, and any local overrides live; the knowledge files are the protocol the bundle ships with. Keeping customization in the instructions block means future updates are a swap-the-attachments operation, not a merge-your-edits-back-in operation. + +:::tip[Customize the instructions, attach the knowledge] +Persona swaps, default user name, team-specific guardrails, preferred phrasing: all of that belongs in the pasted instructions block. The knowledge files stay stock so you can refresh them without losing your changes. +::: + ## Building your own Web bundles are generated from BMad skills using the `bmad-os-skill-to-bundle` utility skill. Point it at any BMad skill folder and it produces the bundle files with persona inheritance from the owning agent. From bfecb6ee95df88cfbd9f3186358de619d8044e8e Mon Sep 17 00:00:00 2001 From: Dov Benyomin Sohacheski Date: Mon, 25 May 2026 17:33:05 +0300 Subject: [PATCH 16/26] fix(bmm-skills): define project_context in dev-story, sprint-planning, sprint-status (#2422) Co-authored-by: Brian --- src/bmm-skills/4-implementation/bmad-dev-story/SKILL.md | 1 + src/bmm-skills/4-implementation/bmad-sprint-planning/SKILL.md | 1 + src/bmm-skills/4-implementation/bmad-sprint-status/SKILL.md | 1 + 3 files changed, 3 insertions(+) diff --git a/src/bmm-skills/4-implementation/bmad-dev-story/SKILL.md b/src/bmm-skills/4-implementation/bmad-dev-story/SKILL.md index 218b234ab..f30835c8c 100644 --- a/src/bmm-skills/4-implementation/bmad-dev-story/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-dev-story/SKILL.md @@ -54,6 +54,7 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: - `user_skill_level` - `implementation_artifacts` - `date` as system-generated current datetime +- `project_context` = `**/project-context.md` (load if exists) ### Step 5: Greet the User diff --git a/src/bmm-skills/4-implementation/bmad-sprint-planning/SKILL.md b/src/bmm-skills/4-implementation/bmad-sprint-planning/SKILL.md index 25266d716..53d0a0c76 100644 --- a/src/bmm-skills/4-implementation/bmad-sprint-planning/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-sprint-planning/SKILL.md @@ -47,6 +47,7 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: - `implementation_artifacts` - `planning_artifacts` - `date` as system-generated current datetime +- `project_context` = `**/project-context.md` (load if exists) - YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}` - Generate all documents in `{document_output_language}` diff --git a/src/bmm-skills/4-implementation/bmad-sprint-status/SKILL.md b/src/bmm-skills/4-implementation/bmad-sprint-status/SKILL.md index c52a84947..c75c431f5 100644 --- a/src/bmm-skills/4-implementation/bmad-sprint-status/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-sprint-status/SKILL.md @@ -46,6 +46,7 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: - `communication_language`, `document_output_language` - `implementation_artifacts` - `date` as system-generated current datetime +- `project_context` = `**/project-context.md` (load if exists) - YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}` ### Step 5: Greet the User From 1a5df418b3d96780519f43c082938845f7cbf057 Mon Sep 17 00:00:00 2001 From: Alex Verkhovsky Date: Mon, 25 May 2026 07:34:49 -0700 Subject: [PATCH 17/26] fix: keep brainstorming idea flow collaborative (#2402) Co-authored-by: Brian --- .../steps/step-03-technique-execution.md | 10 ++++++---- src/core-skills/bmad-brainstorming/workflow.md | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/core-skills/bmad-brainstorming/steps/step-03-technique-execution.md b/src/core-skills/bmad-brainstorming/steps/step-03-technique-execution.md index 71e708fec..8883252b4 100644 --- a/src/core-skills/bmad-brainstorming/steps/step-03-technique-execution.md +++ b/src/core-skills/bmad-brainstorming/steps/step-03-technique-execution.md @@ -7,7 +7,7 @@ ## MANDATORY EXECUTION RULES (READ FIRST): - ✅ YOU ARE A CREATIVE FACILITATOR, engaging in genuine back-and-forth coaching -- 🎯 AIM FOR 100+ IDEAS before suggesting organization - quantity unlocks quality (quality must grow as we progress) +- 🎯 AIM FOR 100+ COLLABORATIVE IDEAS before suggesting organization - quantity unlocks quality, but do not batch-generate ideas to satisfy the count - 🔄 DEFAULT IS TO KEEP EXPLORING - only move to organization when user explicitly requests it - 🧠 **THOUGHT BEFORE INK (CoT):** Before generating each idea, you must internally reason: "What domain haven't we explored yet? What would make this idea surprising or 'uncomfortable' for the user?" - 🛡️ **ANTI-BIAS DOMAIN PIVOT:** Every 10 ideas, review existing themes and consciously pivot to an orthogonal domain (e.g., UX -> Business -> Physics -> Social Impact). @@ -29,6 +29,7 @@ _Novelty_: [What makes this different from obvious solutions] ## EXECUTION PROTOCOLS: - 🎯 Present one technique element at a time for deep exploration +- 🛑 Present at most one new idea, provocation, or angle before asking for user input - ⚠️ Ask "Continue with current technique?" before moving to next technique - 💾 Document insights and ideas using the **IDEA FORMAT TEMPLATE** - 📖 Follow user's creative energy and interests within technique structure @@ -171,7 +172,7 @@ Before moving to next technique element: - **Switch techniques** for a fresh perspective? - Or are you feeling like we've **thoroughly explored** this space? -Remember: The goal is quantity first - we can organize later. What feels right?" +Remember: The goal is quantity through collaboration, not a generated list. What feels right?" **IMPORTANT:** Default to continuing exploration. Only suggest organization if: @@ -292,7 +293,7 @@ After final technique element: **HALT — wait for user selection before proceeding.** -**Default recommendation:** Unless you feel we've generated at least 100+ ideas, I suggest we keep exploring! The best insights often come after the obvious ideas are exhausted. +**Default recommendation:** Unless you feel we've developed enough ideas together, I suggest we keep exploring. The best insights often come after the obvious ideas are exhausted. ### 8. Handle Menu Selection @@ -362,7 +363,7 @@ When user selects 'C', append the content directly to `{brainstorming_session_ou ## SUCCESS METRICS: -✅ Minimum 100 ideas generated before organization is offered +✅ Substantial collaborative idea volume before organization is offered ✅ User explicitly confirms readiness to conclude (not AI-initiated) ✅ Multiple technique exploration encouraged over single-technique completion ✅ True back-and-forth facilitation rather than question-answer format @@ -376,6 +377,7 @@ When user selects 'C', append the content directly to `{brainstorming_session_ou ## FAILURE MODES: ❌ Offering organization after only one technique or <20 ideas +❌ Batch-generating idea lists instead of facilitating dialogue ❌ AI initiating conclusion without user explicitly requesting it ❌ Treating technique completion as session completion signal ❌ Rushing to document rather than staying in generative mode diff --git a/src/core-skills/bmad-brainstorming/workflow.md b/src/core-skills/bmad-brainstorming/workflow.md index 168dab93e..8e61cc36e 100644 --- a/src/core-skills/bmad-brainstorming/workflow.md +++ b/src/core-skills/bmad-brainstorming/workflow.md @@ -12,7 +12,7 @@ context_file: '' # Optional context file path for project-specific guidance **Anti-Bias Protocol:** LLMs naturally drift toward semantic clustering (sequential bias). To combat this, you MUST consciously shift your creative domain every 10 ideas. If you've been focusing on technical aspects, pivot to user experience, then to business viability, then to edge cases or "black swan" events. Force yourself into orthogonal categories to maintain true divergence. -**Quantity Goal:** Aim for 100+ ideas before any organization. The first 20 ideas are usually obvious - the magic happens in ideas 50-100. +**Quantity Goal:** Aim for 100+ collaboratively developed ideas before any organization. This is a session goal, not a request to generate a large list. Ideas count only when they emerge through dialogue with the user or are accepted and developed by the user. --- From 436845493fe8a0ef3680a4d463f27c3365e859ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Revillard?= Date: Mon, 25 May 2026 16:59:38 +0200 Subject: [PATCH 18/26] fix(skills): strengthen activation guardrails to prevent LLM short-circuiting (#2398) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(skills): strengthen activation guardrails for all workflow skills Add explicit "Activation is complete" boundary markers that require confirming activation_steps_prepend and activation_steps_append were fully executed before beginning the main workflow. Previously, the guardrail was either missing (bmad-product-brief, bmad-prd, bmad-investigate) or too weak ("Begin the workflow below"). LLM agents would short-circuit complex activation sequences (INCLUDE → READ → RUN → CHECK → FILTER → CD) by guessing variables instead of executing steps in order, causing append steps and on_complete hooks to be silently skipped. The new guardrail explicitly names both prepend and append steps, requiring confirmation before proceeding. This prevents agents from starting the main workflow in parallel with activation. 23 skills updated: bmad-product-brief, bmad-prd, bmad-prfaq, bmad-investigate, bmad-create-story, bmad-dev-story, bmad-quick-dev, bmad-code-review, bmad-correct-course, bmad-sprint-planning, bmad-sprint-status, bmad-retrospective, bmad-qa-generate-e2e-tests, bmad-checkpoint-preview, bmad-check-implementation-readiness, bmad-create-architecture, bmad-create-epics-and-stories, bmad-generate-project-context, bmad-create-ux-design, bmad-document-project, bmad-market-research, bmad-technical-research, bmad-domain-research. * fix(skills): extend activation gate to agent + new skills, refine placement - bmad-product-brief / bmad-prd: pull activation_steps_append out of the numbered list so the sentinel reads as a paragraph break, not as the next list item. - bmad-investigate: move the sentinel above Step 7 (routing) — Step 7 is workflow routing, not activation; the gate must fire first. - bmad-agent-{analyst,tech-writer,pm,ux-designer,architect,dev}: add the same gate between Step 7 (append) and Step 8 (menu dispatch). Persona skills had the same short-circuit risk but no sentinel. - bmad-ux, bmad-spec: new skills introduced on main after this branch forked; apply the same gate so the pattern stays consistent. - removals.txt: register bmad-create-ux-design as renamed to bmad-ux. --------- Co-authored-by: Brian Madison --- removals.txt | 3 +++ src/bmm-skills/1-analysis/bmad-agent-analyst/SKILL.md | 2 ++ src/bmm-skills/1-analysis/bmad-agent-tech-writer/SKILL.md | 2 ++ src/bmm-skills/1-analysis/bmad-document-project/SKILL.md | 2 +- src/bmm-skills/1-analysis/bmad-prfaq/SKILL.md | 2 +- src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md | 5 ++++- .../1-analysis/research/bmad-domain-research/SKILL.md | 2 +- .../1-analysis/research/bmad-market-research/SKILL.md | 2 +- .../1-analysis/research/bmad-technical-research/SKILL.md | 2 +- src/bmm-skills/2-plan-workflows/bmad-agent-pm/SKILL.md | 2 ++ .../2-plan-workflows/bmad-agent-ux-designer/SKILL.md | 2 ++ src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md | 5 ++++- src/bmm-skills/2-plan-workflows/bmad-ux/SKILL.md | 5 ++++- src/bmm-skills/3-solutioning/bmad-agent-architect/SKILL.md | 2 ++ .../bmad-check-implementation-readiness/SKILL.md | 2 +- .../3-solutioning/bmad-create-architecture/SKILL.md | 2 +- .../3-solutioning/bmad-create-epics-and-stories/SKILL.md | 2 +- .../3-solutioning/bmad-generate-project-context/SKILL.md | 2 +- src/bmm-skills/4-implementation/bmad-agent-dev/SKILL.md | 2 ++ .../4-implementation/bmad-checkpoint-preview/SKILL.md | 2 +- src/bmm-skills/4-implementation/bmad-code-review/SKILL.md | 2 +- src/bmm-skills/4-implementation/bmad-correct-course/SKILL.md | 2 +- src/bmm-skills/4-implementation/bmad-create-story/SKILL.md | 2 +- src/bmm-skills/4-implementation/bmad-dev-story/SKILL.md | 2 +- src/bmm-skills/4-implementation/bmad-investigate/SKILL.md | 2 ++ .../4-implementation/bmad-qa-generate-e2e-tests/SKILL.md | 2 +- src/bmm-skills/4-implementation/bmad-quick-dev/SKILL.md | 2 +- src/bmm-skills/4-implementation/bmad-retrospective/SKILL.md | 2 +- .../4-implementation/bmad-sprint-planning/SKILL.md | 2 +- src/bmm-skills/4-implementation/bmad-sprint-status/SKILL.md | 2 +- src/core-skills/bmad-spec/SKILL.md | 5 ++++- 31 files changed, 52 insertions(+), 23 deletions(-) diff --git a/removals.txt b/removals.txt index a694583e6..968d98180 100644 --- a/removals.txt +++ b/removals.txt @@ -57,3 +57,6 @@ bmad-bmm-validate-prd # bmad-distillator: superseded by bmad-spec (universal intent distiller with # preservation-validated contract for downstream skills). bmad-distillator +# bmad-create-ux-design: renamed to bmad-ux (spine-based skill with separate +# DESIGN.md and EXPERIENCE.md outputs). +bmad-create-ux-design diff --git a/src/bmm-skills/1-analysis/bmad-agent-analyst/SKILL.md b/src/bmm-skills/1-analysis/bmad-agent-analyst/SKILL.md index 4653171df..c672058eb 100644 --- a/src/bmm-skills/1-analysis/bmad-agent-analyst/SKILL.md +++ b/src/bmm-skills/1-analysis/bmad-agent-analyst/SKILL.md @@ -63,6 +63,8 @@ Continue to prefix your messages with `{agent.icon}` throughout the session so t Execute each entry in `{agent.activation_steps_append}` in order. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. + ### Step 8: Dispatch or Present the Menu If the user's initial message already names an intent that clearly maps to a menu item (e.g. "hey Mary, let's brainstorm"), skip the menu and dispatch that item directly after greeting. diff --git a/src/bmm-skills/1-analysis/bmad-agent-tech-writer/SKILL.md b/src/bmm-skills/1-analysis/bmad-agent-tech-writer/SKILL.md index ff6430d93..1ff9016d2 100644 --- a/src/bmm-skills/1-analysis/bmad-agent-tech-writer/SKILL.md +++ b/src/bmm-skills/1-analysis/bmad-agent-tech-writer/SKILL.md @@ -63,6 +63,8 @@ Continue to prefix your messages with `{agent.icon}` throughout the session so t Execute each entry in `{agent.activation_steps_append}` in order. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. + ### Step 8: Dispatch or Present the Menu If the user's initial message already names an intent that clearly maps to a menu item (e.g. "hey Paige, let's document this codebase"), skip the menu and dispatch that item directly after greeting. diff --git a/src/bmm-skills/1-analysis/bmad-document-project/SKILL.md b/src/bmm-skills/1-analysis/bmad-document-project/SKILL.md index 112732031..045ffb254 100644 --- a/src/bmm-skills/1-analysis/bmad-document-project/SKILL.md +++ b/src/bmm-skills/1-analysis/bmad-document-project/SKILL.md @@ -55,7 +55,7 @@ Greet `{user_name}` (if you have not already), speaking in `{communication_langu Execute each entry in `{workflow.activation_steps_append}` in order. -Activation is complete. Begin the workflow below. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## Execution diff --git a/src/bmm-skills/1-analysis/bmad-prfaq/SKILL.md b/src/bmm-skills/1-analysis/bmad-prfaq/SKILL.md index 6ce2d33ed..580d8ec75 100644 --- a/src/bmm-skills/1-analysis/bmad-prfaq/SKILL.md +++ b/src/bmm-skills/1-analysis/bmad-prfaq/SKILL.md @@ -65,7 +65,7 @@ Greet `{user_name}`, speaking in `{communication_language}`. Be warm but efficie Execute each entry in `{workflow.activation_steps_append}` in order. -Activation is complete. Continue below. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## Pre-workflow Setup diff --git a/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md b/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md index ecbc09419..ec06f0a3d 100644 --- a/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md +++ b/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md @@ -21,7 +21,10 @@ At the opening greeting, let the user know they can invoke `bmad-party-mode` for 4. `{workflow.external_sources}` is an org-configured registry of internal tools (knowledge bases, MCP tools); consult them alongside generic web research on the same triggers in `## Discovery`, org tools preferred when their directive matches. If a named tool is unavailable at runtime, fall back to standard behavior and note the gap when relevant. 5. Load `{project-root}/_bmad/bmm/config.yaml` (and `config.user.yaml` if present). Resolve `{user_name}`, `{communication_language}`, `{document_output_language}`, `{planning_artifacts}`, `{project_name}`, `{date}`. 6. Greet `{user_name}` in `{communication_language}` — and stay in `{communication_language}` for every turn for the entire run, not just the greeting. Detect intent (create / update / validate). If interactive and intent is unclear, ask; for headless behavior see `## Headless Mode`. -7. Execute each entry in `{workflow.activation_steps_append}` in order. + +Execute each entry in `{workflow.activation_steps_append}` in order. + +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## Intent Operating Modes diff --git a/src/bmm-skills/1-analysis/research/bmad-domain-research/SKILL.md b/src/bmm-skills/1-analysis/research/bmad-domain-research/SKILL.md index be364aa2f..9ea915f08 100644 --- a/src/bmm-skills/1-analysis/research/bmad-domain-research/SKILL.md +++ b/src/bmm-skills/1-analysis/research/bmad-domain-research/SKILL.md @@ -59,7 +59,7 @@ Greet `{user_name}`, speaking in `{communication_language}`. Execute each entry in `{workflow.activation_steps_append}` in order. -Activation is complete. Begin the workflow below. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## QUICK TOPIC DISCOVERY diff --git a/src/bmm-skills/1-analysis/research/bmad-market-research/SKILL.md b/src/bmm-skills/1-analysis/research/bmad-market-research/SKILL.md index 964049085..29fefa4de 100644 --- a/src/bmm-skills/1-analysis/research/bmad-market-research/SKILL.md +++ b/src/bmm-skills/1-analysis/research/bmad-market-research/SKILL.md @@ -59,7 +59,7 @@ Greet `{user_name}`, speaking in `{communication_language}`. Execute each entry in `{workflow.activation_steps_append}` in order. -Activation is complete. Begin the workflow below. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## QUICK TOPIC DISCOVERY diff --git a/src/bmm-skills/1-analysis/research/bmad-technical-research/SKILL.md b/src/bmm-skills/1-analysis/research/bmad-technical-research/SKILL.md index 582a05c60..511816415 100644 --- a/src/bmm-skills/1-analysis/research/bmad-technical-research/SKILL.md +++ b/src/bmm-skills/1-analysis/research/bmad-technical-research/SKILL.md @@ -59,7 +59,7 @@ Greet `{user_name}`, speaking in `{communication_language}`. Execute each entry in `{workflow.activation_steps_append}` in order. -Activation is complete. Begin the workflow below. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## QUICK TOPIC DISCOVERY diff --git a/src/bmm-skills/2-plan-workflows/bmad-agent-pm/SKILL.md b/src/bmm-skills/2-plan-workflows/bmad-agent-pm/SKILL.md index 693072603..accf47d34 100644 --- a/src/bmm-skills/2-plan-workflows/bmad-agent-pm/SKILL.md +++ b/src/bmm-skills/2-plan-workflows/bmad-agent-pm/SKILL.md @@ -63,6 +63,8 @@ Continue to prefix your messages with `{agent.icon}` throughout the session so t Execute each entry in `{agent.activation_steps_append}` in order. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. + ### Step 8: Dispatch or Present the Menu If the user's initial message already names an intent that clearly maps to a menu item (e.g. "hey John, let's write the PRD"), skip the menu and dispatch that item directly after greeting. diff --git a/src/bmm-skills/2-plan-workflows/bmad-agent-ux-designer/SKILL.md b/src/bmm-skills/2-plan-workflows/bmad-agent-ux-designer/SKILL.md index cb261c3fb..f2ee265e8 100644 --- a/src/bmm-skills/2-plan-workflows/bmad-agent-ux-designer/SKILL.md +++ b/src/bmm-skills/2-plan-workflows/bmad-agent-ux-designer/SKILL.md @@ -63,6 +63,8 @@ Continue to prefix your messages with `{agent.icon}` throughout the session so t Execute each entry in `{agent.activation_steps_append}` in order. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. + ### Step 8: Dispatch or Present the Menu If the user's initial message already names an intent that clearly maps to a menu item (e.g. "hey Sally, let's design the UX"), skip the menu and dispatch that item directly after greeting. diff --git a/src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md b/src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md index 2f29da936..db005fff7 100644 --- a/src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md +++ b/src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md @@ -20,7 +20,10 @@ You are a master facilitator and coach helping the user create, edit, or validat 3. Load `{project-root}/_bmad/bmm/config.yaml` (+ `config.user.yaml` if present). Resolve `{user_name}`, `{communication_language}`, `{document_output_language}`, `{planning_artifacts}`, `{project_name}`, `{date}`. Missing keys → neutral defaults; never block. 4. If headless, follow `references/headless.md` for the whole run. Otherwise greet the user **by name** using `{user_name}` and **in their language** using `{communication_language}` — and stay in `{communication_language}` for every turn for the entire run, not just the greeting. In the greeting, let the user know that at any point they can invoke `bmad-party-mode` for multi-agent perspectives or `bmad-advanced-elicitation` for deeper exploration on a specific section. Then scan for misroute on the first message: if the signal points elsewhere (game → BMad GDS; express build → `bmad-quick-dev`; one-pager → `bmad-product-brief`; vet product idea → `bmad-prfaq`; agent skill or custom agent → `bmad-workflow-builder`), suggest they might want the other options before continuing. 5. Detect intent: **Create** (no PRD), **Update** (existing PRD), **Validate** (critique only). If ambiguous, ask. For Create intent, before binding a fresh workspace, scan `{workflow.prd_output_path}` for prior in-progress runs (folders matching `{workflow.run_folder_pattern}` whose `prd.md` frontmatter `status` is not `final`); if any exist, offer to resume rather than starting over. -6. Run `{workflow.activation_steps_append}`. + +Run `{workflow.activation_steps_append}`. + +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## Intent Modes diff --git a/src/bmm-skills/2-plan-workflows/bmad-ux/SKILL.md b/src/bmm-skills/2-plan-workflows/bmad-ux/SKILL.md index 37dddbedb..295cdf75e 100644 --- a/src/bmm-skills/2-plan-workflows/bmad-ux/SKILL.md +++ b/src/bmm-skills/2-plan-workflows/bmad-ux/SKILL.md @@ -35,7 +35,10 @@ UX may lead, follow, or stand alone. Inherit `sources:` by reference; the spines 3. Load `{project-root}/_bmad/bmm/config.yaml` (+ `config.user.yaml` if present). Resolve `{user_name}`, `{communication_language}`, `{document_output_language}`, `{planning_artifacts}`, `{project_name}`, `{date}`. Missing keys → neutral defaults; never block. 4. If headless, follow `references/headless.md` for the whole run. Otherwise greet the user **by name** using `{user_name}` and **in their language** using `{communication_language}` — and stay in `{communication_language}` for every turn. In the greeting, let the user know `bmad-party-mode` and `bmad-advanced-elicitation` are always available. Then scan for misroute on the first message: PRD → `bmad-prd`; architecture → `bmad-create-architecture`; game UX → BMad GDS; agent/skill → `bmad-workflow-builder`; brief → `bmad-product-brief`. 5. Detect intent: **Create**, **Update**, **Validate**. For Create, before binding a fresh workspace, scan `{workflow.ux_output_path}` for prior in-progress runs (folders matching `{workflow.run_folder_pattern}` whose `DESIGN.md` frontmatter `status` is not `final`) and offer to resume rather than starting over. -6. Run `{workflow.activation_steps_append}`. + +Run `{workflow.activation_steps_append}`. + +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## Modes diff --git a/src/bmm-skills/3-solutioning/bmad-agent-architect/SKILL.md b/src/bmm-skills/3-solutioning/bmad-agent-architect/SKILL.md index 1650aee09..b5807ba6e 100644 --- a/src/bmm-skills/3-solutioning/bmad-agent-architect/SKILL.md +++ b/src/bmm-skills/3-solutioning/bmad-agent-architect/SKILL.md @@ -63,6 +63,8 @@ Continue to prefix your messages with `{agent.icon}` throughout the session so t Execute each entry in `{agent.activation_steps_append}` in order. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. + ### Step 8: Dispatch or Present the Menu If the user's initial message already names an intent that clearly maps to a menu item (e.g. "hey Winston, let's architect this"), skip the menu and dispatch that item directly after greeting. diff --git a/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/SKILL.md b/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/SKILL.md index 1d5133f90..a34a25a7d 100644 --- a/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/SKILL.md +++ b/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/SKILL.md @@ -84,7 +84,7 @@ Greet `{user_name}`, speaking in `{communication_language}`. Execute each entry in `{workflow.activation_steps_append}` in order. -Activation is complete. Begin the workflow below. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## Execution diff --git a/src/bmm-skills/3-solutioning/bmad-create-architecture/SKILL.md b/src/bmm-skills/3-solutioning/bmad-create-architecture/SKILL.md index ca89a71cf..e7f024ed2 100644 --- a/src/bmm-skills/3-solutioning/bmad-create-architecture/SKILL.md +++ b/src/bmm-skills/3-solutioning/bmad-create-architecture/SKILL.md @@ -65,7 +65,7 @@ Greet `{user_name}`, speaking in `{communication_language}`. Execute each entry in `{workflow.activation_steps_append}` in order. -Activation is complete. Begin the workflow below. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## Execution diff --git a/src/bmm-skills/3-solutioning/bmad-create-epics-and-stories/SKILL.md b/src/bmm-skills/3-solutioning/bmad-create-epics-and-stories/SKILL.md index a3f0f61c8..a97bc2404 100644 --- a/src/bmm-skills/3-solutioning/bmad-create-epics-and-stories/SKILL.md +++ b/src/bmm-skills/3-solutioning/bmad-create-epics-and-stories/SKILL.md @@ -86,7 +86,7 @@ Greet `{user_name}`, speaking in `{communication_language}`. Execute each entry in `{workflow.activation_steps_append}` in order. -Activation is complete. Begin the workflow below. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## Execution diff --git a/src/bmm-skills/3-solutioning/bmad-generate-project-context/SKILL.md b/src/bmm-skills/3-solutioning/bmad-generate-project-context/SKILL.md index 42fd2e8fc..b452de5d4 100644 --- a/src/bmm-skills/3-solutioning/bmad-generate-project-context/SKILL.md +++ b/src/bmm-skills/3-solutioning/bmad-generate-project-context/SKILL.md @@ -65,7 +65,7 @@ Greet `{user_name}`, speaking in `{communication_language}`. Execute each entry in `{workflow.activation_steps_append}` in order. -Activation is complete. Begin the workflow below. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## Paths diff --git a/src/bmm-skills/4-implementation/bmad-agent-dev/SKILL.md b/src/bmm-skills/4-implementation/bmad-agent-dev/SKILL.md index 95a3b9594..22d158bfe 100644 --- a/src/bmm-skills/4-implementation/bmad-agent-dev/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-agent-dev/SKILL.md @@ -63,6 +63,8 @@ Continue to prefix your messages with `{agent.icon}` throughout the session so t Execute each entry in `{agent.activation_steps_append}` in order. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. + ### Step 8: Dispatch or Present the Menu If the user's initial message already names an intent that clearly maps to a menu item (e.g. "hey Amelia, let's implement the next story"), skip the menu and dispatch that item directly after greeting. diff --git a/src/bmm-skills/4-implementation/bmad-checkpoint-preview/SKILL.md b/src/bmm-skills/4-implementation/bmad-checkpoint-preview/SKILL.md index 101dcf2bc..e512ab675 100644 --- a/src/bmm-skills/4-implementation/bmad-checkpoint-preview/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-checkpoint-preview/SKILL.md @@ -55,7 +55,7 @@ Greet the user, speaking in `{communication_language}`. Execute each entry in `{workflow.activation_steps_append}` in order. -Activation is complete. Begin the workflow below. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## Global Step Rules (apply to every step) diff --git a/src/bmm-skills/4-implementation/bmad-code-review/SKILL.md b/src/bmm-skills/4-implementation/bmad-code-review/SKILL.md index 44223f11a..b4c88fde3 100644 --- a/src/bmm-skills/4-implementation/bmad-code-review/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-code-review/SKILL.md @@ -58,7 +58,7 @@ Greet `{user_name}`, speaking in `{communication_language}`. Execute each entry in `{workflow.activation_steps_append}` in order. -Activation is complete. Begin the workflow below. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## WORKFLOW ARCHITECTURE diff --git a/src/bmm-skills/4-implementation/bmad-correct-course/SKILL.md b/src/bmm-skills/4-implementation/bmad-correct-course/SKILL.md index adea0bda0..f62b91780 100644 --- a/src/bmm-skills/4-implementation/bmad-correct-course/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-correct-course/SKILL.md @@ -62,7 +62,7 @@ Greet `{user_name}`, speaking in `{communication_language}`. Execute each entry in `{workflow.activation_steps_append}` in order. -Activation is complete. Begin the workflow below. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## Paths diff --git a/src/bmm-skills/4-implementation/bmad-create-story/SKILL.md b/src/bmm-skills/4-implementation/bmad-create-story/SKILL.md index cf14039c1..7d407098b 100644 --- a/src/bmm-skills/4-implementation/bmad-create-story/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-create-story/SKILL.md @@ -63,7 +63,7 @@ Greet `{user_name}`, speaking in `{communication_language}`. Execute each entry in `{workflow.activation_steps_append}` in order. -Activation is complete. Begin the workflow below. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## Paths diff --git a/src/bmm-skills/4-implementation/bmad-dev-story/SKILL.md b/src/bmm-skills/4-implementation/bmad-dev-story/SKILL.md index f30835c8c..9944ec8d8 100644 --- a/src/bmm-skills/4-implementation/bmad-dev-story/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-dev-story/SKILL.md @@ -64,7 +64,7 @@ Greet `{user_name}`, speaking in `{communication_language}`. Execute each entry in `{workflow.activation_steps_append}` in order. -Activation is complete. Begin the workflow below. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## Paths diff --git a/src/bmm-skills/4-implementation/bmad-investigate/SKILL.md b/src/bmm-skills/4-implementation/bmad-investigate/SKILL.md index 3e0442809..50e461917 100644 --- a/src/bmm-skills/4-implementation/bmad-investigate/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-investigate/SKILL.md @@ -79,6 +79,8 @@ Greet `{user_name}` in `{communication_language}`. Run each entry in `{workflow.activation_steps_append}` in order. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. + ### Step 7: Acknowledge and route Acknowledge the input as a reference (record paths and IDs; don't read raw content). Path to an existing case file → diff --git a/src/bmm-skills/4-implementation/bmad-qa-generate-e2e-tests/SKILL.md b/src/bmm-skills/4-implementation/bmad-qa-generate-e2e-tests/SKILL.md index ef9d7e87a..cbf358027 100644 --- a/src/bmm-skills/4-implementation/bmad-qa-generate-e2e-tests/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-qa-generate-e2e-tests/SKILL.md @@ -56,7 +56,7 @@ Greet `{user_name}`, speaking in `{communication_language}`. Execute each entry in `{workflow.activation_steps_append}` in order. -Activation is complete. Begin the workflow below. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## Paths diff --git a/src/bmm-skills/4-implementation/bmad-quick-dev/SKILL.md b/src/bmm-skills/4-implementation/bmad-quick-dev/SKILL.md index f5326fc3f..c62358be6 100644 --- a/src/bmm-skills/4-implementation/bmad-quick-dev/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-quick-dev/SKILL.md @@ -79,7 +79,7 @@ Greet `{user_name}`, speaking in `{communication_language}`. Execute each entry in `{workflow.activation_steps_append}` in order. -Activation is complete. Begin the workflow below. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## WORKFLOW ARCHITECTURE diff --git a/src/bmm-skills/4-implementation/bmad-retrospective/SKILL.md b/src/bmm-skills/4-implementation/bmad-retrospective/SKILL.md index b6d0c96c6..d885d0d99 100644 --- a/src/bmm-skills/4-implementation/bmad-retrospective/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-retrospective/SKILL.md @@ -73,7 +73,7 @@ Greet `{user_name}`, speaking in `{communication_language}`. Execute each entry in `{workflow.activation_steps_append}` in order. -Activation is complete. Begin the workflow below. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## Paths diff --git a/src/bmm-skills/4-implementation/bmad-sprint-planning/SKILL.md b/src/bmm-skills/4-implementation/bmad-sprint-planning/SKILL.md index 53d0a0c76..dd7bfa55b 100644 --- a/src/bmm-skills/4-implementation/bmad-sprint-planning/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-sprint-planning/SKILL.md @@ -59,7 +59,7 @@ Greet `{user_name}`, speaking in `{communication_language}`. Execute each entry in `{workflow.activation_steps_append}` in order. -Activation is complete. Begin the workflow below. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## Paths diff --git a/src/bmm-skills/4-implementation/bmad-sprint-status/SKILL.md b/src/bmm-skills/4-implementation/bmad-sprint-status/SKILL.md index c75c431f5..cad4f0df0 100644 --- a/src/bmm-skills/4-implementation/bmad-sprint-status/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-sprint-status/SKILL.md @@ -57,7 +57,7 @@ Greet `{user_name}`, speaking in `{communication_language}`. Execute each entry in `{workflow.activation_steps_append}` in order. -Activation is complete. Begin the workflow below. +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## Paths diff --git a/src/core-skills/bmad-spec/SKILL.md b/src/core-skills/bmad-spec/SKILL.md index d3d437e15..97baefed3 100644 --- a/src/core-skills/bmad-spec/SKILL.md +++ b/src/core-skills/bmad-spec/SKILL.md @@ -22,7 +22,10 @@ Multiple skills may call to update the same spec over time. 2. Run `{workflow.activation_steps_prepend}`. Treat `{workflow.persistent_facts}` as foundational context (`file:` entries are loaded). 3. Load `{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}`. 4. Detect mode. **Headless** when any of: no TTY, programmatic caller (another skill or non-interactive runner), or the first message pre-supplies all inputs and asks for an artifact path back. **Interactive** otherwise. In interactive mode, greet by `{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. -5. Run `{workflow.activation_steps_append}`. + +Run `{workflow.activation_steps_append}`. + +Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed. ## Workspace From cede485217bec817b50d6491df8e3a87deef8992 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emmanuel=20Ats=C3=A9?= Date: Mon, 25 May 2026 17:15:37 +0200 Subject: [PATCH 19/26] feat(docs): Add sidebar order validator for doc frontmatter (#2409) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(docs): add sidebar order validator Adds tools/validate-sidebar-order.js to validate sidebar.order values in YAML frontmatter across English and translated docs. Checks for duplicate orders, gaps in sequence, and missing order fields. For translations, also warns on order drift from English counterparts. Wired into the quality script as docs:validate-sidebar. * fix(validate-sidebar): tighten language detection and drift guard, add docstrings * fix(validate-sidebar): replace subdirectory heuristic with locale pattern matching detectLanguageDirs() previously classified any top-level docs/ directory containing subdirectories as a translation language. This was too broad — if an English section ever gained nested subfolders it would be silently excluded from validation. Replaced with a BCP 47 locale-code regex (/^[a-z]{2}(?:-[a-zA-Z]{2})?$/) that matches known patterns (cs, fr, vi-vn, zh-cn) and won't falsely classify content sections like explanation/ or reference/. * fix(validate-sidebar): guard drift check against undefined order values extractSidebarOrder() returns { hasSidebar: false } when no sidebar block exists, leaving order as undefined rather than null. The drift check only guarded against null, allowing undefined values to emit noisy warnings like "Order drift: ... order undefined". Changed the guard to typeof === 'number' which correctly excludes both undefined and null without relying on a specific sentinel value. * chore(validate-sidebar): add JSDoc docstrings to all functions Adds @param and @returns annotations to extractSidebarOrder, detectLanguageDirs, getEnglishSections, checkDirectory, checkTranslationDrift, and relativePath. * fix(validate-sidebar): add to pre-commit hook * refactor(validate-sidebar): harden parsing and edge-case handling Refactor to main() wrapper with pure return-based APIs, single directory scan, and shared reporting. Harden frontmatter parsing (anchored delimiter, direct-child-only order extraction, flow mapping support) and validation (Infinity/zero guard, gap flood cap, multi-segment locales, graceful ENOENT). * docs: fix sidebar.order duplicates and gaps across all locales Resolves all validator errors flagged by the new tools/validate-sidebar-order.js check. English (docs/{explanation,how-to,reference}/): - Renumbered to remove duplicates; established reading order for new explanation pages added since orders were last set. Translations (cs, fr, vi-vn, zh-cn): - Mirrored English structural ordering where files exist, then compacted to 1..N within each directory to eliminate gaps caused by missing translation files. Non-blocking drift warnings remain where translation directories have fewer files than English; these are expected per the validator's design. --------- Co-authored-by: Brian Madison --- .husky/pre-commit | 2 + docs/cs/explanation/advanced-elicitation.md | 2 +- docs/cs/explanation/adversarial-review.md | 2 +- .../explanation/established-projects-faq.md | 2 +- docs/cs/explanation/party-mode.md | 2 +- .../explanation/preventing-agent-conflicts.md | 2 +- docs/cs/explanation/project-context.md | 2 +- docs/cs/explanation/quick-dev.md | 2 +- .../cs/explanation/why-solutioning-matters.md | 2 +- docs/cs/reference/commands.md | 2 +- docs/cs/reference/core-tools.md | 2 +- docs/cs/reference/modules.md | 2 +- docs/cs/reference/testing.md | 2 +- docs/explanation/advanced-elicitation.md | 2 +- docs/explanation/adversarial-review.md | 2 +- docs/explanation/analysis-phase.md | 2 +- docs/explanation/brainstorming.md | 2 +- docs/explanation/checkpoint-preview.md | 2 +- docs/explanation/established-projects-faq.md | 2 +- docs/explanation/forensic-investigation.md | 2 +- docs/explanation/party-mode.md | 2 +- .../explanation/preventing-agent-conflicts.md | 2 +- docs/explanation/project-context.md | 2 +- docs/explanation/quick-dev.md | 2 +- docs/explanation/why-solutioning-matters.md | 2 +- docs/fr/explanation/advanced-elicitation.md | 2 +- docs/fr/explanation/adversarial-review.md | 2 +- docs/fr/explanation/checkpoint-preview.md | 2 +- .../explanation/established-projects-faq.md | 2 +- docs/fr/explanation/forensic-investigation.md | 2 +- docs/fr/explanation/party-mode.md | 2 +- .../explanation/preventing-agent-conflicts.md | 2 +- docs/fr/explanation/project-context.md | 2 +- docs/fr/explanation/quick-dev.md | 2 +- .../fr/explanation/why-solutioning-matters.md | 2 +- docs/how-to/expand-bmad-for-your-org.md | 2 +- docs/reference/commands.md | 2 +- docs/reference/core-tools.md | 2 +- docs/reference/modules.md | 2 +- docs/reference/testing.md | 2 +- .../vi-vn/explanation/advanced-elicitation.md | 2 +- docs/vi-vn/explanation/adversarial-review.md | 2 +- docs/vi-vn/explanation/analysis-phase.md | 2 +- docs/vi-vn/explanation/brainstorming.md | 2 +- docs/vi-vn/explanation/checkpoint-preview.md | 2 +- .../explanation/established-projects-faq.md | 2 +- docs/vi-vn/explanation/party-mode.md | 2 +- .../explanation/preventing-agent-conflicts.md | 2 +- docs/vi-vn/explanation/project-context.md | 2 +- docs/vi-vn/explanation/quick-dev.md | 2 +- .../explanation/why-solutioning-matters.md | 2 +- docs/vi-vn/how-to/established-projects.md | 2 +- docs/vi-vn/how-to/expand-bmad-for-your-org.md | 2 +- docs/vi-vn/how-to/get-answers-about-bmad.md | 2 +- docs/vi-vn/how-to/project-context.md | 2 +- docs/vi-vn/how-to/quick-fixes.md | 2 +- docs/vi-vn/how-to/shard-large-documents.md | 2 +- docs/vi-vn/how-to/upgrade-to-v6.md | 2 +- docs/vi-vn/reference/commands.md | 2 +- docs/vi-vn/reference/core-tools.md | 2 +- docs/vi-vn/reference/modules.md | 2 +- docs/vi-vn/reference/testing.md | 2 +- .../zh-cn/explanation/advanced-elicitation.md | 2 +- docs/zh-cn/explanation/adversarial-review.md | 2 +- docs/zh-cn/explanation/analysis-phase.md | 2 +- docs/zh-cn/explanation/brainstorming.md | 2 +- docs/zh-cn/explanation/checkpoint-preview.md | 2 +- .../explanation/established-projects-faq.md | 2 +- docs/zh-cn/explanation/party-mode.md | 2 +- .../explanation/preventing-agent-conflicts.md | 2 +- docs/zh-cn/explanation/project-context.md | 2 +- docs/zh-cn/explanation/quick-dev.md | 2 +- .../explanation/why-solutioning-matters.md | 2 +- docs/zh-cn/how-to/customize-bmad.md | 2 +- docs/zh-cn/how-to/established-projects.md | 2 +- docs/zh-cn/how-to/expand-bmad-for-your-org.md | 2 +- docs/zh-cn/how-to/get-answers-about-bmad.md | 2 +- docs/zh-cn/how-to/project-context.md | 2 +- docs/zh-cn/how-to/quick-fixes.md | 2 +- docs/zh-cn/how-to/shard-large-documents.md | 2 +- docs/zh-cn/how-to/upgrade-to-v6.md | 2 +- docs/zh-cn/reference/commands.md | 2 +- docs/zh-cn/reference/core-tools.md | 2 +- docs/zh-cn/reference/modules.md | 2 +- docs/zh-cn/reference/testing.md | 2 +- package.json | 3 +- tools/validate-sidebar-order.js | 388 ++++++++++++++++++ 87 files changed, 476 insertions(+), 85 deletions(-) create mode 100644 tools/validate-sidebar-order.js diff --git a/.husky/pre-commit b/.husky/pre-commit index ae9e0c44f..9d7c37791 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -10,11 +10,13 @@ npm test if command -v rg >/dev/null 2>&1; then if git diff --cached --name-only | rg -q '^docs/'; then npm run docs:validate-links + npm run docs:validate-sidebar npm run docs:build fi else if git diff --cached --name-only | grep -Eq '^docs/'; then npm run docs:validate-links + npm run docs:validate-sidebar npm run docs:build fi fi diff --git a/docs/cs/explanation/advanced-elicitation.md b/docs/cs/explanation/advanced-elicitation.md index a2eaac16a..b1fcec315 100644 --- a/docs/cs/explanation/advanced-elicitation.md +++ b/docs/cs/explanation/advanced-elicitation.md @@ -2,7 +2,7 @@ title: "Pokročilá elicitace" description: Přimějte LLM přehodnotit svou práci pomocí strukturovaných metod uvažování sidebar: - order: 6 + order: 3 --- Přimějte LLM přehodnotit, co právě vygeneroval. Vyberete metodu uvažování, LLM ji aplikuje na svůj vlastní výstup, a vy rozhodnete, zda si vylepšení ponecháte. diff --git a/docs/cs/explanation/adversarial-review.md b/docs/cs/explanation/adversarial-review.md index 5ccfed100..55a29a536 100644 --- a/docs/cs/explanation/adversarial-review.md +++ b/docs/cs/explanation/adversarial-review.md @@ -2,7 +2,7 @@ title: "Adversariální revize" description: Technika vynuceného uvažování, která zabraňuje líným „vypadá dobře“ revizím sidebar: - order: 5 + order: 7 --- Vynuťte hlubší analýzu tím, že budete vyžadovat nalezení problémů. diff --git a/docs/cs/explanation/established-projects-faq.md b/docs/cs/explanation/established-projects-faq.md index 7c2a1e35a..92b3b5c9a 100644 --- a/docs/cs/explanation/established-projects-faq.md +++ b/docs/cs/explanation/established-projects-faq.md @@ -2,7 +2,7 @@ title: "FAQ pro existující projekty" description: Časté otázky o používání BMad Method na existujících projektech sidebar: - order: 8 + order: 10 --- Rychlé odpovědi na časté otázky o práci na existujících projektech s BMad Method (BMM). diff --git a/docs/cs/explanation/party-mode.md b/docs/cs/explanation/party-mode.md index 03b6950cb..3b8ea9863 100644 --- a/docs/cs/explanation/party-mode.md +++ b/docs/cs/explanation/party-mode.md @@ -2,7 +2,7 @@ title: "Party Mode" description: Spolupráce více agentů — všichni vaši AI agenti v jedné konverzaci sidebar: - order: 7 + order: 8 --- Všichni vaši AI agenti v jedné konverzaci. diff --git a/docs/cs/explanation/preventing-agent-conflicts.md b/docs/cs/explanation/preventing-agent-conflicts.md index d0dd2d01e..911dea4cd 100644 --- a/docs/cs/explanation/preventing-agent-conflicts.md +++ b/docs/cs/explanation/preventing-agent-conflicts.md @@ -2,7 +2,7 @@ title: "Předcházení konfliktům agentů" description: Jak architektura zabraňuje konfliktům, když více agentů implementuje systém sidebar: - order: 4 + order: 5 --- Když více AI agentů implementuje různé části systému, mohou dělat protichůdná technická rozhodnutí. Dokumentace architektury tomu zabraňuje stanovením sdílených standardů. diff --git a/docs/cs/explanation/project-context.md b/docs/cs/explanation/project-context.md index 795b4b7b5..e6467b8a8 100644 --- a/docs/cs/explanation/project-context.md +++ b/docs/cs/explanation/project-context.md @@ -2,7 +2,7 @@ title: "Kontext projektu" description: Jak project-context.md vede AI agenty s pravidly a preferencemi vašeho projektu sidebar: - order: 7 + order: 9 --- Soubor `project-context.md` je implementační průvodce vašeho projektu pro AI agenty. Podobně jako „ústava“ v jiných vývojových systémech zachycuje pravidla, vzory a preference, které zajišťují konzistentní generování kódu napříč všemi workflow. diff --git a/docs/cs/explanation/quick-dev.md b/docs/cs/explanation/quick-dev.md index aa7305df9..e0852b47e 100644 --- a/docs/cs/explanation/quick-dev.md +++ b/docs/cs/explanation/quick-dev.md @@ -2,7 +2,7 @@ title: "Quick Dev" description: Snižte tření human-in-the-loop bez ztráty kontrolních bodů chránících kvalitu výstupu sidebar: - order: 2 + order: 6 --- Záměr na vstupu, změny kódu na výstupu, s co nejmenším počtem human-in-the-loop kroků — bez obětování kvality. diff --git a/docs/cs/explanation/why-solutioning-matters.md b/docs/cs/explanation/why-solutioning-matters.md index 1e9848bfd..d28bb3149 100644 --- a/docs/cs/explanation/why-solutioning-matters.md +++ b/docs/cs/explanation/why-solutioning-matters.md @@ -2,7 +2,7 @@ title: "Proč je solutioning důležitý" description: Pochopení toho, proč je fáze solutioningu klíčová pro projekty s více epicy sidebar: - order: 3 + order: 4 --- Fáze 3 (Solutioning) překládá **co** budovat (z plánování) na **jak** to budovat (technický návrh). Tato fáze zabraňuje konfliktům agentů v projektech s více epicy tím, že dokumentuje architektonická rozhodnutí před zahájením implementace. diff --git a/docs/cs/reference/commands.md b/docs/cs/reference/commands.md index e3bb52a2b..f27b980eb 100644 --- a/docs/cs/reference/commands.md +++ b/docs/cs/reference/commands.md @@ -2,7 +2,7 @@ title: Skills description: Reference BMad skills — co to je, jak fungují a kde je najít. sidebar: - order: 3 + order: 4 --- Skills jsou předpřipravené prompty, které načítají agenty, spouštějí workflow nebo provádějí úkoly ve vašem IDE. Instalátor BMad je generuje z vašich nainstalovaných modulů při instalaci. Pokud později přidáte, odeberete nebo změníte moduly, přeinstalujte pro synchronizaci skills (viz [Řešení problémů](#řešení-problémů)). diff --git a/docs/cs/reference/core-tools.md b/docs/cs/reference/core-tools.md index a4c032ada..73f589f81 100644 --- a/docs/cs/reference/core-tools.md +++ b/docs/cs/reference/core-tools.md @@ -2,7 +2,7 @@ title: Základní nástroje description: Reference všech vestavěných úkolů a workflow dostupných v každé instalaci BMad bez dalších modulů. sidebar: - order: 2 + order: 3 --- Každá instalace BMad zahrnuje sadu základních skills, které lze použít v kombinaci s čímkoli — samostatné úkoly a workflow, které fungují napříč všemi projekty, všemi moduly a všemi fázemi. Ty jsou vždy dostupné bez ohledu na to, které volitelné moduly nainstalujete. diff --git a/docs/cs/reference/modules.md b/docs/cs/reference/modules.md index 792d28246..bb8ebd31b 100644 --- a/docs/cs/reference/modules.md +++ b/docs/cs/reference/modules.md @@ -2,7 +2,7 @@ title: Oficiální moduly description: Doplňkové moduly pro tvorbu vlastních agentů, kreativní inteligenci, vývoj her a testování sidebar: - order: 4 + order: 5 --- BMad se rozšiřuje prostřednictvím oficiálních modulů, které vyberete během instalace. Tyto doplňkové moduly poskytují specializované agenty, workflow a úkoly pro specifické domény nad rámec vestavěného jádra a BMM (Agile suite). diff --git a/docs/cs/reference/testing.md b/docs/cs/reference/testing.md index e5c061e06..b932455a8 100644 --- a/docs/cs/reference/testing.md +++ b/docs/cs/reference/testing.md @@ -2,7 +2,7 @@ title: Možnosti testování description: Srovnání vestavěného QA agenta (Quinn) s modulem Test Architect (TEA) pro automatizaci testů. sidebar: - order: 5 + order: 6 --- BMad poskytuje dvě testovací cesty: vestavěného QA agenta pro rychlé generování testů a instalovatelný modul Test Architect pro podnikovou testovací strategii. diff --git a/docs/explanation/advanced-elicitation.md b/docs/explanation/advanced-elicitation.md index 15888e51c..a919d175d 100644 --- a/docs/explanation/advanced-elicitation.md +++ b/docs/explanation/advanced-elicitation.md @@ -2,7 +2,7 @@ title: "Advanced Elicitation" description: Push the LLM to rethink its work using structured reasoning methods sidebar: - order: 6 + order: 4 --- Make the LLM reconsider what it just generated. You pick a reasoning method, it applies that method to its own output, you decide whether to keep the improvements. diff --git a/docs/explanation/adversarial-review.md b/docs/explanation/adversarial-review.md index 85a8c600d..767414e97 100644 --- a/docs/explanation/adversarial-review.md +++ b/docs/explanation/adversarial-review.md @@ -2,7 +2,7 @@ title: "Adversarial Review" description: Forced reasoning technique that prevents lazy "looks good" reviews sidebar: - order: 5 + order: 9 --- Force deeper analysis by requiring problems to be found. diff --git a/docs/explanation/analysis-phase.md b/docs/explanation/analysis-phase.md index f05d89120..7674e5710 100644 --- a/docs/explanation/analysis-phase.md +++ b/docs/explanation/analysis-phase.md @@ -2,7 +2,7 @@ title: "Analysis Phase: From Idea to Foundation" description: What brainstorming, research, product briefs, and PRFAQs are — and when to use each sidebar: - order: 1 + order: 2 --- The Analysis phase (Phase 1) helps you think clearly about your product before committing to building it. Every tool in this phase is optional, but skipping analysis entirely means your PRD is built on assumptions instead of insight. diff --git a/docs/explanation/brainstorming.md b/docs/explanation/brainstorming.md index 68c35b3b1..14bf61cc9 100644 --- a/docs/explanation/brainstorming.md +++ b/docs/explanation/brainstorming.md @@ -2,7 +2,7 @@ title: "Brainstorming" description: Interactive creative sessions using 60+ proven ideation techniques sidebar: - order: 2 + order: 3 --- Unlock your creativity through guided exploration. diff --git a/docs/explanation/checkpoint-preview.md b/docs/explanation/checkpoint-preview.md index d7d5ece14..5b3d1b9b9 100644 --- a/docs/explanation/checkpoint-preview.md +++ b/docs/explanation/checkpoint-preview.md @@ -2,7 +2,7 @@ title: "Checkpoint Preview" description: LLM-assisted human-in-the-loop review that guides you through a change from purpose to details sidebar: - order: 3 + order: 8 --- `bmad-checkpoint-preview` is an interactive, LLM-assisted human-in-the-loop review workflow. It walks you through a code change — from purpose and context into details — so you can make an informed decision about whether to ship, rework, or dig deeper. diff --git a/docs/explanation/established-projects-faq.md b/docs/explanation/established-projects-faq.md index 9671dd171..66e185381 100644 --- a/docs/explanation/established-projects-faq.md +++ b/docs/explanation/established-projects-faq.md @@ -2,7 +2,7 @@ title: "Established Projects FAQ" description: Common questions about using BMad Method on established projects sidebar: - order: 8 + order: 13 --- Quick answers to common questions about working on established projects with the BMad Method (BMM). diff --git a/docs/explanation/forensic-investigation.md b/docs/explanation/forensic-investigation.md index 7c604824c..7e0435ba5 100644 --- a/docs/explanation/forensic-investigation.md +++ b/docs/explanation/forensic-investigation.md @@ -2,7 +2,7 @@ title: "Forensic Investigation" description: How bmad-investigate treats every issue like a crime scene, grades evidence, and produces a structured case file engineers can act on sidebar: - order: 6 + order: 10 --- You hand `bmad-investigate` a crash log, a stack trace, or just a "this used to work, now it doesn't". The skill takes diff --git a/docs/explanation/party-mode.md b/docs/explanation/party-mode.md index 68c52a292..e2b8bc007 100644 --- a/docs/explanation/party-mode.md +++ b/docs/explanation/party-mode.md @@ -2,7 +2,7 @@ title: "Party Mode" description: Multi-agent collaboration - get all your AI agents in one conversation sidebar: - order: 7 + order: 11 --- Get all your AI agents in one conversation. diff --git a/docs/explanation/preventing-agent-conflicts.md b/docs/explanation/preventing-agent-conflicts.md index ffa9414d8..332032006 100644 --- a/docs/explanation/preventing-agent-conflicts.md +++ b/docs/explanation/preventing-agent-conflicts.md @@ -2,7 +2,7 @@ title: "Preventing Agent Conflicts" description: How architecture prevents conflicts when multiple agents implement a system sidebar: - order: 4 + order: 6 --- When multiple AI agents implement different parts of a system, they can make conflicting technical decisions. Architecture documentation prevents this by establishing shared standards. diff --git a/docs/explanation/project-context.md b/docs/explanation/project-context.md index b7cce90ff..dac40492d 100644 --- a/docs/explanation/project-context.md +++ b/docs/explanation/project-context.md @@ -2,7 +2,7 @@ title: "Project Context" description: How project-context.md guides AI agents with your project's rules and preferences sidebar: - order: 7 + order: 12 --- The `project-context.md` file is your project's implementation guide for AI agents. Similar to a "constitution" in other development systems, it captures the rules, patterns, and preferences that ensure consistent code generation across all workflows. diff --git a/docs/explanation/quick-dev.md b/docs/explanation/quick-dev.md index 2a5c11c43..630a11ce2 100644 --- a/docs/explanation/quick-dev.md +++ b/docs/explanation/quick-dev.md @@ -2,7 +2,7 @@ title: "Quick Dev" description: Reduce human-in-the-loop friction without giving up the checkpoints that protect output quality sidebar: - order: 2 + order: 7 --- Intent in, code changes out, with as few human-in-the-loop turns as possible — without sacrificing quality. diff --git a/docs/explanation/why-solutioning-matters.md b/docs/explanation/why-solutioning-matters.md index c1aa5ba67..2aaf90111 100644 --- a/docs/explanation/why-solutioning-matters.md +++ b/docs/explanation/why-solutioning-matters.md @@ -2,7 +2,7 @@ title: "Why Solutioning Matters" description: Understanding why the solutioning phase is critical for multi-epic projects sidebar: - order: 3 + order: 5 --- diff --git a/docs/fr/explanation/advanced-elicitation.md b/docs/fr/explanation/advanced-elicitation.md index 83ea232cd..00202183c 100644 --- a/docs/fr/explanation/advanced-elicitation.md +++ b/docs/fr/explanation/advanced-elicitation.md @@ -2,7 +2,7 @@ title: "Élicitation Avancée" description: Pousser le LLM à repenser son travail en utilisant des méthodes de raisonnement structurées sidebar: - order: 8 + order: 3 --- Faites repenser au LLM ce qu'il vient de générer. Vous choisissez une méthode de raisonnement, il l'applique à sa propre sortie, et vous décidez de conserver ou non les améliorations. diff --git a/docs/fr/explanation/adversarial-review.md b/docs/fr/explanation/adversarial-review.md index fa080f85d..345683b42 100644 --- a/docs/fr/explanation/adversarial-review.md +++ b/docs/fr/explanation/adversarial-review.md @@ -2,7 +2,7 @@ title: "Revue Contradictoire" description: Technique de raisonnement forcée qui empêche les revues paresseuses du style "ça à l'air bon" sidebar: - order: 7 + order: 8 --- Forcez une analyse plus approfondie en exigeant que des problèmes soient trouvés. diff --git a/docs/fr/explanation/checkpoint-preview.md b/docs/fr/explanation/checkpoint-preview.md index 7eb8cc679..23c8b3506 100644 --- a/docs/fr/explanation/checkpoint-preview.md +++ b/docs/fr/explanation/checkpoint-preview.md @@ -2,7 +2,7 @@ title: "Checkpoint Preview" description: Revue assistée par LLM, avec intervention humaine, qui vous guide à travers une modification, de son objectif jusqu’aux détails sidebar: - order: 4 + order: 7 --- `bmad-checkpoint-preview` est un workflow de revue interactif, assisté par LLM, avec intervention humaine. Il vous guide à travers une modification de code — de l'intention et du contexte jusqu'aux détails — afin que vous puissiez prendre une décision éclairée sur la mise en production, la refonte ou l'approfondissement. diff --git a/docs/fr/explanation/established-projects-faq.md b/docs/fr/explanation/established-projects-faq.md index b95d41105..5d43d80d6 100644 --- a/docs/fr/explanation/established-projects-faq.md +++ b/docs/fr/explanation/established-projects-faq.md @@ -2,7 +2,7 @@ title: "FAQ Projets Existants" description: Questions courantes sur l'utilisation de la méthode BMad sur des projets existants sidebar: - order: 11 + order: 12 --- Réponses rapides aux questions courantes sur l'utilisation de la méthode BMad (BMM) sur des projets existants. diff --git a/docs/fr/explanation/forensic-investigation.md b/docs/fr/explanation/forensic-investigation.md index b1f02138c..9fa68a947 100644 --- a/docs/fr/explanation/forensic-investigation.md +++ b/docs/fr/explanation/forensic-investigation.md @@ -2,7 +2,7 @@ title: "Enquête de code" description: Comment bmad-investigate traite chaque problème comme une scène d'enquête, classe les preuves et produit un dossier structuré sur lequel les ingénieurs peuvent agir sidebar: - order: 6 + order: 9 --- Vous confiez à `bmad-investigate` un journal de plantage, une trace de pile, ou simplement un « ça marchait avant, plus diff --git a/docs/fr/explanation/party-mode.md b/docs/fr/explanation/party-mode.md index 7e9439447..cd1a5a21d 100644 --- a/docs/fr/explanation/party-mode.md +++ b/docs/fr/explanation/party-mode.md @@ -2,7 +2,7 @@ title: "Party Mode" description: Collaboration multi-agents - regroupez tous vos agents IA dans une seule conversation sidebar: - order: 9 + order: 10 --- Regroupez tous vos agents IA dans une seule conversation. diff --git a/docs/fr/explanation/preventing-agent-conflicts.md b/docs/fr/explanation/preventing-agent-conflicts.md index e987d1cde..faa63980f 100644 --- a/docs/fr/explanation/preventing-agent-conflicts.md +++ b/docs/fr/explanation/preventing-agent-conflicts.md @@ -2,7 +2,7 @@ title: "Prévention des conflits entre agents" description: Comment l'architecture empêche les conflits lorsque plusieurs agents implémentent un système sidebar: - order: 6 + order: 5 --- Lorsque plusieurs agents IA implémentent différentes parties d'un système, ils peuvent prendre des décisions techniques contradictoires. La documentation d'architecture prévient cela en établissant des standards partagés. diff --git a/docs/fr/explanation/project-context.md b/docs/fr/explanation/project-context.md index c1c3647f8..0b10e59b5 100644 --- a/docs/fr/explanation/project-context.md +++ b/docs/fr/explanation/project-context.md @@ -2,7 +2,7 @@ title: "Contexte du Projet" description: Comment project-context.md guide les agents IA avec les règles et préférences de votre projet sidebar: - order: 10 + order: 11 --- Le fichier `project-context.md` est le guide d'implémentation de votre projet pour les agents IA. Similaire à une « constitution » dans d'autres systèmes de développement, il capture les règles, les patterns et les préférences qui garantissent une génération de code cohérente à travers tous les workflows. diff --git a/docs/fr/explanation/quick-dev.md b/docs/fr/explanation/quick-dev.md index 2f64e4f66..dfaf969d9 100644 --- a/docs/fr/explanation/quick-dev.md +++ b/docs/fr/explanation/quick-dev.md @@ -2,7 +2,7 @@ title: "Quick Dev" description: Réduire la friction de l’interaction humaine sans renoncer aux points de contrôle qui protègent la qualité des résultats sidebar: - order: 3 + order: 6 --- Intention en entrée, modifications de code en sortie, avec aussi peu d'interactions humaines dans la boucle que possible — sans sacrifier la qualité. diff --git a/docs/fr/explanation/why-solutioning-matters.md b/docs/fr/explanation/why-solutioning-matters.md index 515ab4007..f57f71ba1 100644 --- a/docs/fr/explanation/why-solutioning-matters.md +++ b/docs/fr/explanation/why-solutioning-matters.md @@ -2,7 +2,7 @@ title: "Pourquoi le Solutioning est Important" description: Comprendre pourquoi la phase de solutioning est critique pour les projets multi-epics sidebar: - order: 5 + order: 4 --- La Phase 3 (Solutioning) traduit le **quoi** construire (issu de la Planification) en **comment** le construire (conception technique). Cette phase évite les conflits entre agents dans les projets multi-epics en documentant les décisions architecturales avant le début de l'implémentation. diff --git a/docs/how-to/expand-bmad-for-your-org.md b/docs/how-to/expand-bmad-for-your-org.md index 44bb38744..f531446e5 100644 --- a/docs/how-to/expand-bmad-for-your-org.md +++ b/docs/how-to/expand-bmad-for-your-org.md @@ -2,7 +2,7 @@ title: 'How to Expand BMad for Your Organization' description: Six customization patterns that reshape BMad without forking — agent-wide rules, workflow conventions, external publishing, template swaps, agent roster changes, and advanced integration patterns sidebar: - order: 9 + order: 11 --- BMad's customization surface lets an organization reshape behavior without editing installed files or forking skills. This guide walks through six recipes that cover most enterprise needs. diff --git a/docs/reference/commands.md b/docs/reference/commands.md index 9e20384ac..2934a0ec7 100644 --- a/docs/reference/commands.md +++ b/docs/reference/commands.md @@ -2,7 +2,7 @@ title: Skills description: Reference for BMad skills — what they are, how they work, and where to find them. sidebar: - order: 3 + order: 4 --- Skills are pre-built prompts that load agents, run workflows, or execute tasks inside your IDE. The BMad installer generates them from your installed modules at install time. If you later add, remove, or change modules, re-run the installer to keep skills in sync (see [Troubleshooting](#troubleshooting)). diff --git a/docs/reference/core-tools.md b/docs/reference/core-tools.md index 21a880901..c8f7b3c77 100644 --- a/docs/reference/core-tools.md +++ b/docs/reference/core-tools.md @@ -2,7 +2,7 @@ title: Core Tools description: Reference for all built-in tasks and workflows available in every BMad installation without additional modules. sidebar: - order: 2 + order: 3 --- Every BMad installation includes a set of core skills that can be used in conjunction with any anything you are doing — standalone tasks and workflows that work across all projects, all modules, and all phases. These are always available regardless of which optional modules you install. diff --git a/docs/reference/modules.md b/docs/reference/modules.md index 6bdc64190..a4bc882ef 100644 --- a/docs/reference/modules.md +++ b/docs/reference/modules.md @@ -2,7 +2,7 @@ title: Official Modules description: Add-on modules for building custom agents, creative intelligence, game development, and testing sidebar: - order: 4 + order: 5 --- BMad extends through official modules that you select during installation. These add-on modules provide specialized agents, workflows, and tasks for specific domains beyond the built-in core and BMM (Agile suite). diff --git a/docs/reference/testing.md b/docs/reference/testing.md index d605e4932..f19666940 100644 --- a/docs/reference/testing.md +++ b/docs/reference/testing.md @@ -2,7 +2,7 @@ title: Testing Options description: Comparing the built-in QA workflow with the Test Architect (TEA) module for test automation. sidebar: - order: 5 + order: 6 --- BMad provides two testing paths: a built-in QA workflow for fast test generation and an installable Test Architect module for enterprise-grade test strategy. diff --git a/docs/vi-vn/explanation/advanced-elicitation.md b/docs/vi-vn/explanation/advanced-elicitation.md index 37b8fbd08..1511f242f 100644 --- a/docs/vi-vn/explanation/advanced-elicitation.md +++ b/docs/vi-vn/explanation/advanced-elicitation.md @@ -2,7 +2,7 @@ title: "Khai thác nâng cao" description: Buộc LLM xem xét lại kết quả của nó bằng các phương pháp lập luận có cấu trúc sidebar: - order: 6 + order: 4 --- Buộc LLM xem xét lại những gì nó vừa tạo ra. Bạn chọn một phương pháp lập luận, nó áp dụng phương pháp đó lên chính output của mình, rồi bạn quyết định có giữ các cải tiến hay không. diff --git a/docs/vi-vn/explanation/adversarial-review.md b/docs/vi-vn/explanation/adversarial-review.md index 3a4bb64f6..5e63a3a4c 100644 --- a/docs/vi-vn/explanation/adversarial-review.md +++ b/docs/vi-vn/explanation/adversarial-review.md @@ -2,7 +2,7 @@ title: "Đánh giá đối kháng" description: Kỹ thuật lập luận ép buộc giúp tránh các bản review lười kiểu "nhìn ổn" sidebar: - order: 5 + order: 9 --- Buộc quá trình phân tích đi sâu hơn bằng cách ép phải tìm ra vấn đề. diff --git a/docs/vi-vn/explanation/analysis-phase.md b/docs/vi-vn/explanation/analysis-phase.md index d35f9f65d..7e44e5d55 100644 --- a/docs/vi-vn/explanation/analysis-phase.md +++ b/docs/vi-vn/explanation/analysis-phase.md @@ -2,7 +2,7 @@ title: "Giai đoạn phân tích: từ ý tưởng đến nền tảng" description: Động não, nghiên cứu, product brief và PRFAQ là gì, và nên dùng từng công cụ khi nào sidebar: - order: 1 + order: 2 --- Giai đoạn phân tích (giai đoạn 1) giúp bạn suy nghĩ rõ ràng về sản phẩm trước khi cam kết bắt tay vào xây dựng. Mọi công cụ trong giai đoạn này đều là tùy chọn, nhưng nếu bỏ qua toàn bộ phần phân tích thì PRD của bạn sẽ được dựng trên giả định thay vì hiểu biết thực chất. diff --git a/docs/vi-vn/explanation/brainstorming.md b/docs/vi-vn/explanation/brainstorming.md index 8c269a675..f2e69adf2 100644 --- a/docs/vi-vn/explanation/brainstorming.md +++ b/docs/vi-vn/explanation/brainstorming.md @@ -2,7 +2,7 @@ title: "Động não ý tưởng" description: Các phiên sáng tạo tương tác sử dụng hơn 60 kỹ thuật khơi ý đã được kiểm chứng sidebar: - order: 2 + order: 3 --- Mở khóa sự sáng tạo của bạn thông qua quá trình khám phá có hướng dẫn. diff --git a/docs/vi-vn/explanation/checkpoint-preview.md b/docs/vi-vn/explanation/checkpoint-preview.md index f057a06b7..02b282258 100644 --- a/docs/vi-vn/explanation/checkpoint-preview.md +++ b/docs/vi-vn/explanation/checkpoint-preview.md @@ -2,7 +2,7 @@ title: "Xem trước Checkpoint" description: Review có người trong vòng lặp với hỗ trợ của LLM, dẫn bạn đi qua thay đổi từ mục đích đến chi tiết sidebar: - order: 3 + order: 8 --- `bmad-checkpoint-preview` là một workflow review tương tác có người trong vòng lặp với hỗ trợ của LLM. Nó dẫn bạn đi qua một thay đổi mã nguồn, từ mục đích và bối cảnh đến các chi tiết quan trọng, để bạn có thể quyết định có nên phát hành, làm lại, hay đào sâu thêm. diff --git a/docs/vi-vn/explanation/established-projects-faq.md b/docs/vi-vn/explanation/established-projects-faq.md index 920f10748..8435166de 100644 --- a/docs/vi-vn/explanation/established-projects-faq.md +++ b/docs/vi-vn/explanation/established-projects-faq.md @@ -2,7 +2,7 @@ title: "FAQ cho dự án đã tồn tại" description: Các câu hỏi phổ biến khi dùng BMad Method trên dự án đã tồn tại sidebar: - order: 8 + order: 12 --- Các câu trả lời nhanh cho những câu hỏi thường gặp khi làm việc với dự án đã tồn tại bằng BMad Method (BMM). diff --git a/docs/vi-vn/explanation/party-mode.md b/docs/vi-vn/explanation/party-mode.md index c244b595e..07c17ff1a 100644 --- a/docs/vi-vn/explanation/party-mode.md +++ b/docs/vi-vn/explanation/party-mode.md @@ -2,7 +2,7 @@ title: "Chế độ Party" description: Cộng tác đa agent - đưa tất cả agent AI vào cùng một cuộc trò chuyện sidebar: - order: 7 + order: 10 --- Đưa tất cả agent AI của bạn vào cùng một cuộc trò chuyện. diff --git a/docs/vi-vn/explanation/preventing-agent-conflicts.md b/docs/vi-vn/explanation/preventing-agent-conflicts.md index ef77c8cf1..44a4c3d03 100644 --- a/docs/vi-vn/explanation/preventing-agent-conflicts.md +++ b/docs/vi-vn/explanation/preventing-agent-conflicts.md @@ -2,7 +2,7 @@ title: "Ngăn xung đột giữa các agent" description: Cách kiến trúc ngăn xung đột khi nhiều agent cùng triển khai một hệ thống sidebar: - order: 4 + order: 6 --- Khi nhiều agent AI cùng triển khai các phần khác nhau của hệ thống, chúng có thể đưa ra các quyết định kỹ thuật mâu thuẫn nhau. Tài liệu kiến trúc ngăn điều đó bằng cách thiết lập các tiêu chuẩn dùng chung. diff --git a/docs/vi-vn/explanation/project-context.md b/docs/vi-vn/explanation/project-context.md index 534824377..4147dbe88 100644 --- a/docs/vi-vn/explanation/project-context.md +++ b/docs/vi-vn/explanation/project-context.md @@ -2,7 +2,7 @@ title: "Bối cảnh dự án" description: Cách project-context.md định hướng các agent AI theo quy tắc và ưu tiên của dự án sidebar: - order: 7 + order: 11 --- Tệp `project-context.md` là kim chỉ nam cho việc triển khai của các agent AI trong dự án của bạn. Tương tự như một "bản hiến pháp" trong các hệ thống phát triển khác, nó ghi lại các quy tắc, pattern và ưu tiên giúp việc sinh mã được nhất quán trong mọi workflow. diff --git a/docs/vi-vn/explanation/quick-dev.md b/docs/vi-vn/explanation/quick-dev.md index cd75e7c8a..2dd1bb5d2 100644 --- a/docs/vi-vn/explanation/quick-dev.md +++ b/docs/vi-vn/explanation/quick-dev.md @@ -2,7 +2,7 @@ title: "Phát triển nhanh" description: Giảm ma sát có người trong vòng lặp mà vẫn giữ các điểm kiểm tra bảo vệ chất lượng đầu ra sidebar: - order: 2 + order: 7 --- Đưa ý định vào, nhận thay đổi mã nguồn ra, với số lần cần con người nhảy vào giữa quy trình ít nhất có thể - nhưng không đánh đổi chất lượng. diff --git a/docs/vi-vn/explanation/why-solutioning-matters.md b/docs/vi-vn/explanation/why-solutioning-matters.md index 631142a5a..a53068d95 100644 --- a/docs/vi-vn/explanation/why-solutioning-matters.md +++ b/docs/vi-vn/explanation/why-solutioning-matters.md @@ -2,7 +2,7 @@ title: "Vì sao solutioning quan trọng" description: Hiểu vì sao giai đoạn solutioning là tối quan trọng đối với dự án nhiều epic sidebar: - order: 3 + order: 5 --- Giai đoạn 3 (Solutioning) biến **xây gì** (từ giai đoạn Planning) thành **xây như thế nào** (thiết kế kỹ thuật). Giai đoạn này ngăn xung đột giữa các agent trong dự án nhiều epic bằng cách ghi lại các quyết định kiến trúc trước khi bắt đầu triển khai. diff --git a/docs/vi-vn/how-to/established-projects.md b/docs/vi-vn/how-to/established-projects.md index 37622f634..8cc2c448e 100644 --- a/docs/vi-vn/how-to/established-projects.md +++ b/docs/vi-vn/how-to/established-projects.md @@ -2,7 +2,7 @@ title: "Dự án đã tồn tại" description: Cách sử dụng BMad Method trên các codebase hiện có sidebar: - order: 6 + order: 7 --- Sử dụng BMad Method hiệu quả khi làm việc với các dự án hiện có và codebase legacy. diff --git a/docs/vi-vn/how-to/expand-bmad-for-your-org.md b/docs/vi-vn/how-to/expand-bmad-for-your-org.md index 1fe872493..84f9a00d9 100644 --- a/docs/vi-vn/how-to/expand-bmad-for-your-org.md +++ b/docs/vi-vn/how-to/expand-bmad-for-your-org.md @@ -2,7 +2,7 @@ title: 'Cách mở rộng BMad cho tổ chức của bạn' description: Năm mẫu tùy chỉnh giúp thay đổi BMad mà không cần fork, gồm quy tắc ở cấp agent, quy ước workflow, xuất bản ra hệ thống ngoài, thay template và điều chỉnh danh sách agent sidebar: - order: 9 + order: 11 --- Bề mặt tùy chỉnh của BMad cho phép một tổ chức định hình lại hành vi mà không phải sửa file đã cài hay fork skill. Hướng dẫn này trình bày năm công thức mẫu (recipe) bao phủ phần lớn nhu cầu ở môi trường doanh nghiệp. diff --git a/docs/vi-vn/how-to/get-answers-about-bmad.md b/docs/vi-vn/how-to/get-answers-about-bmad.md index 103230306..cd0be0bfb 100644 --- a/docs/vi-vn/how-to/get-answers-about-bmad.md +++ b/docs/vi-vn/how-to/get-answers-about-bmad.md @@ -2,7 +2,7 @@ title: "Cách tìm câu trả lời về BMad" description: Sử dụng LLM để tự nhanh chóng trả lời các câu hỏi về BMad sidebar: - order: 4 + order: 5 --- Hãy dùng trợ giúp tích hợp sẵn của BMad, tài liệu nguồn, hoặc cộng đồng để tìm câu trả lời, theo thứ tự từ nhanh nhất đến đầy đủ nhất. diff --git a/docs/vi-vn/how-to/project-context.md b/docs/vi-vn/how-to/project-context.md index 41b3b4049..d24b2cf32 100644 --- a/docs/vi-vn/how-to/project-context.md +++ b/docs/vi-vn/how-to/project-context.md @@ -2,7 +2,7 @@ title: "Quản lý bối cảnh dự án" description: Tạo và duy trì project-context.md để định hướng cho các agent AI sidebar: - order: 8 + order: 9 --- Sử dụng tệp `project-context.md` để đảm bảo các agent AI tuân theo ưu tiên kỹ thuật và quy tắc triển khai của dự án trong suốt mọi workflow. Để đảm bảo tệp này luôn sẵn có, bạn cũng có thể thêm dòng `Important project context and conventions are located in [path to project context]/project-context.md` vào file context của công cụ hoặc file always rules của bạn (như `AGENTS.md`). diff --git a/docs/vi-vn/how-to/quick-fixes.md b/docs/vi-vn/how-to/quick-fixes.md index 5f38d5f92..252d038ef 100644 --- a/docs/vi-vn/how-to/quick-fixes.md +++ b/docs/vi-vn/how-to/quick-fixes.md @@ -2,7 +2,7 @@ title: "Sửa nhanh" description: Cách thực hiện các sửa nhanh và thay đổi ad-hoc sidebar: - order: 5 + order: 6 --- Sử dụng **Quick Dev** cho sửa lỗi, refactor, hoặc các thay đổi nhỏ có mục tiêu rõ ràng mà không cần quy trình BMad Method đầy đủ. diff --git a/docs/vi-vn/how-to/shard-large-documents.md b/docs/vi-vn/how-to/shard-large-documents.md index a00963292..31bb98a64 100644 --- a/docs/vi-vn/how-to/shard-large-documents.md +++ b/docs/vi-vn/how-to/shard-large-documents.md @@ -2,7 +2,7 @@ title: "Hướng dẫn chia nhỏ tài liệu" description: Tách các tệp markdown lớn thành nhiều tệp nhỏ có tổ chức để quản lý context tốt hơn sidebar: - order: 9 + order: 10 --- Sử dụng công cụ `bmad-shard-doc` nếu bạn cần tách các tệp markdown lớn thành nhiều tệp nhỏ có tổ chức để quản lý context tốt hơn. diff --git a/docs/vi-vn/how-to/upgrade-to-v6.md b/docs/vi-vn/how-to/upgrade-to-v6.md index d72e71911..652b78bab 100644 --- a/docs/vi-vn/how-to/upgrade-to-v6.md +++ b/docs/vi-vn/how-to/upgrade-to-v6.md @@ -2,7 +2,7 @@ title: "Cách nâng cấp lên v6" description: Di chuyển từ BMad v4 sang v6 sidebar: - order: 3 + order: 4 --- Sử dụng trình cài đặt BMad để nâng cấp từ v4 lên v6, bao gồm khả năng tự động phát hiện bản cài đặt cũ và hỗ trợ di chuyển. diff --git a/docs/vi-vn/reference/commands.md b/docs/vi-vn/reference/commands.md index 539956de1..8f4cc2840 100644 --- a/docs/vi-vn/reference/commands.md +++ b/docs/vi-vn/reference/commands.md @@ -2,7 +2,7 @@ title: Các skill description: Tài liệu tham chiếu cho skill của BMad — skill là gì, hoạt động ra sao và tìm ở đâu. sidebar: - order: 3 + order: 4 --- Skills là các prompt dựng sẵn để nạp agent, chạy workflow hoặc thực thi task bên trong IDE của bạn. Trình cài đặt BMad sinh chúng từ các module bạn đã chọn tại thời điểm cài đặt. Nếu sau này bạn thêm, xóa hoặc thay đổi module, hãy chạy lại trình cài đặt để đồng bộ skills (xem [Khắc phục sự cố](#khắc-phục-sự-cố)). diff --git a/docs/vi-vn/reference/core-tools.md b/docs/vi-vn/reference/core-tools.md index 13ed5cbe3..3ebfc0c59 100644 --- a/docs/vi-vn/reference/core-tools.md +++ b/docs/vi-vn/reference/core-tools.md @@ -2,7 +2,7 @@ title: Công cụ cốt lõi description: Tài liệu tham chiếu cho mọi tác vụ và quy trình tích hợp sẵn có trong mọi bản cài BMad mà không cần module bổ sung. sidebar: - order: 2 + order: 3 --- Mọi bản cài BMad đều bao gồm một tập skill cốt lõi có thể dùng cùng với bất cứ việc gì bạn đang làm, các tác vụ và quy trình độc lập hoạt động xuyên suốt mọi dự án, mọi module và mọi giai đoạn. Chúng luôn có sẵn bất kể bạn cài những module tùy chọn nào. diff --git a/docs/vi-vn/reference/modules.md b/docs/vi-vn/reference/modules.md index 1f0bf25ea..15f21f9ae 100644 --- a/docs/vi-vn/reference/modules.md +++ b/docs/vi-vn/reference/modules.md @@ -2,7 +2,7 @@ title: Các Module Chính Thức description: Các module bổ sung để xây agent tùy chỉnh, tăng cường sáng tạo, phát triển game và kiểm thử sidebar: - order: 4 + order: 5 --- BMad được mở rộng thông qua các module chính thức mà bạn chọn trong quá trình cài đặt. Những module bổ sung này cung cấp agent, workflow và task chuyên biệt cho các lĩnh vực cụ thể, vượt ra ngoài phần lõi tích hợp sẵn và BMM (Agile suite). diff --git a/docs/vi-vn/reference/testing.md b/docs/vi-vn/reference/testing.md index 11b1acbb4..5f502201c 100644 --- a/docs/vi-vn/reference/testing.md +++ b/docs/vi-vn/reference/testing.md @@ -2,7 +2,7 @@ title: Các Tùy Chọn Kiểm Thử description: So sánh workflow QA tích hợp sẵn với module Test Architect (TEA) cho tự động hóa kiểm thử. sidebar: - order: 5 + order: 6 --- BMad cung cấp hai hướng kiểm thử: workflow QA tích hợp sẵn để tạo test nhanh và module Test Architect có thể cài thêm cho chiến lược kiểm thử c��p doanh nghiệp. diff --git a/docs/zh-cn/explanation/advanced-elicitation.md b/docs/zh-cn/explanation/advanced-elicitation.md index 6416d9554..27f65e38a 100644 --- a/docs/zh-cn/explanation/advanced-elicitation.md +++ b/docs/zh-cn/explanation/advanced-elicitation.md @@ -2,7 +2,7 @@ title: "高级启发" description: 使用结构化推理方法推动 LLM 重新思考其工作 sidebar: - order: 6 + order: 4 --- 高级启发(advanced elicitation)是“第二轮思考”机制:不是笼统地让模型“再来一次”,而是让它按指定推理方法重审自己的输出。 diff --git a/docs/zh-cn/explanation/adversarial-review.md b/docs/zh-cn/explanation/adversarial-review.md index 74aec2c00..343065678 100644 --- a/docs/zh-cn/explanation/adversarial-review.md +++ b/docs/zh-cn/explanation/adversarial-review.md @@ -2,7 +2,7 @@ title: "对抗性评审" description: 防止懒惰“看起来不错”评审的强制推理技术 sidebar: - order: 5 + order: 9 --- 对抗性评审(adversarial review)是一种“强制找问题”的评审方法:不允许直接“Looks good”,必须给出可验证发现,或者明确解释为什么没有发现。 diff --git a/docs/zh-cn/explanation/analysis-phase.md b/docs/zh-cn/explanation/analysis-phase.md index 616dc4389..395053a70 100644 --- a/docs/zh-cn/explanation/analysis-phase.md +++ b/docs/zh-cn/explanation/analysis-phase.md @@ -2,7 +2,7 @@ title: "分析阶段:从想法到基础" description: 头脑风暴、调研、产品简报和 PRFAQ 分别是什么——以及何时使用 sidebar: - order: 1 + order: 2 --- 分析阶段(Phase 1)帮助你在决定动手构建之前,把产品想清楚。这个阶段的每个工具都是可选的,但如果完全跳过分析,你的 PRD 就是建立在假设而非洞察之上。 diff --git a/docs/zh-cn/explanation/brainstorming.md b/docs/zh-cn/explanation/brainstorming.md index 048b856a0..1a0983295 100644 --- a/docs/zh-cn/explanation/brainstorming.md +++ b/docs/zh-cn/explanation/brainstorming.md @@ -2,7 +2,7 @@ title: "头脑风暴" description: 使用 60+ 种经过验证的构思技术进行互动创意会议 sidebar: - order: 2 + order: 3 --- `bmad-brainstorming` 是一个“思考引导”工作流:它不替你拍脑袋给答案,而是用结构化提问把你的想法挖出来、扩展开、再收敛成可执行方向。 diff --git a/docs/zh-cn/explanation/checkpoint-preview.md b/docs/zh-cn/explanation/checkpoint-preview.md index d51fe7a5e..008945109 100644 --- a/docs/zh-cn/explanation/checkpoint-preview.md +++ b/docs/zh-cn/explanation/checkpoint-preview.md @@ -2,7 +2,7 @@ title: "检查点预览" description: LLM 辅助的人机协作审查,引导你从目的到细节逐步走过一个变更 sidebar: - order: 3 + order: 8 --- `bmad-checkpoint-preview` 是一个交互式的、LLM 辅助的人机协作审查工作流。它带你逐步走过一个代码变更——从目的和上下文到细节——让你能做出知情决策:是发布、返工,还是深入挖掘。 diff --git a/docs/zh-cn/explanation/established-projects-faq.md b/docs/zh-cn/explanation/established-projects-faq.md index a9aa2db23..770655408 100644 --- a/docs/zh-cn/explanation/established-projects-faq.md +++ b/docs/zh-cn/explanation/established-projects-faq.md @@ -2,7 +2,7 @@ title: "既有项目常见问题" description: 关于在既有项目上使用 BMad Method 的常见问题 sidebar: - order: 8 + order: 12 --- 关于在 established projects(既有项目)中使用 BMad Method 的高频问题,快速说明如下。 diff --git a/docs/zh-cn/explanation/party-mode.md b/docs/zh-cn/explanation/party-mode.md index 9544ec75b..04b35e553 100644 --- a/docs/zh-cn/explanation/party-mode.md +++ b/docs/zh-cn/explanation/party-mode.md @@ -2,7 +2,7 @@ title: "派对模式" description: 多智能体协作——将所有 AI 智能体汇聚到一次对话中 sidebar: - order: 7 + order: 10 --- `bmad-party-mode` 用于多角色协作讨论:把 PM、架构、开发、UX 等视角放到同一轮对话里,快速暴露分歧、对齐取舍。 diff --git a/docs/zh-cn/explanation/preventing-agent-conflicts.md b/docs/zh-cn/explanation/preventing-agent-conflicts.md index b26fc1e3e..3bab884ff 100644 --- a/docs/zh-cn/explanation/preventing-agent-conflicts.md +++ b/docs/zh-cn/explanation/preventing-agent-conflicts.md @@ -2,7 +2,7 @@ title: "防止智能体冲突" description: 架构如何在多个智能体实现系统时防止冲突 sidebar: - order: 4 + order: 6 --- 当多个 AI 智能体并行实现系统时,冲突并不罕见。`architecture` 的作用,就是在 `solutioning` 阶段先统一关键决策,避免到 `epic/story` 实施时才暴露分歧。 diff --git a/docs/zh-cn/explanation/project-context.md b/docs/zh-cn/explanation/project-context.md index 5d71c7592..e39f590db 100644 --- a/docs/zh-cn/explanation/project-context.md +++ b/docs/zh-cn/explanation/project-context.md @@ -2,7 +2,7 @@ title: "项目上下文" description: project-context.md 如何使用项目规则和偏好指导 AI 智能体 sidebar: - order: 7 + order: 11 --- `project-context.md` 是面向 AI 智能体的项目级上下文文件。它的定位不是教程步骤,而是“实现约束说明”:把你的技术偏好、架构边界和工程约定沉淀成可复用规则,让不同工作流、不同智能体在多个 `story` 中做出一致决策。 diff --git a/docs/zh-cn/explanation/quick-dev.md b/docs/zh-cn/explanation/quick-dev.md index cb9caca8d..9f2cefee8 100644 --- a/docs/zh-cn/explanation/quick-dev.md +++ b/docs/zh-cn/explanation/quick-dev.md @@ -2,7 +2,7 @@ title: "快速开发" description: 在不牺牲输出质量检查点的情况下减少人机交互的摩擦 sidebar: - order: 2 + order: 7 --- `bmad-quick-dev` 的目标很直接:在保证质量边界的前提下,把“意图到代码”的人机往返轮次降到最低。 diff --git a/docs/zh-cn/explanation/why-solutioning-matters.md b/docs/zh-cn/explanation/why-solutioning-matters.md index 1d8da0ce7..8e3f55d7f 100644 --- a/docs/zh-cn/explanation/why-solutioning-matters.md +++ b/docs/zh-cn/explanation/why-solutioning-matters.md @@ -2,7 +2,7 @@ title: "为什么解决方案阶段很重要" description: 理解为什么解决方案阶段对于多史诗项目至关重要 sidebar: - order: 3 + order: 5 --- Phase 3(solutioning)把“要做什么”(planning 产出)转成“如何实现”(`architecture` 设计 + 工作拆分)。它的核心价值是:在开发前先把跨 `epic` 的关键技术决策写清楚,让后续 `story` 实施保持一致。 diff --git a/docs/zh-cn/how-to/customize-bmad.md b/docs/zh-cn/how-to/customize-bmad.md index 72afcd2bc..814503bcf 100644 --- a/docs/zh-cn/how-to/customize-bmad.md +++ b/docs/zh-cn/how-to/customize-bmad.md @@ -2,7 +2,7 @@ title: "如何自定义 BMad" description: 自定义智能体、工作流和模块,同时保持更新兼容性 sidebar: - order: 7 + order: 8 --- 使用 `.customize.yaml` 文件,自定义智能体(agent)的行为、角色(persona)和菜单,同时在后续更新中保留你的改动。 diff --git a/docs/zh-cn/how-to/established-projects.md b/docs/zh-cn/how-to/established-projects.md index 9be085fce..21fcf867a 100644 --- a/docs/zh-cn/how-to/established-projects.md +++ b/docs/zh-cn/how-to/established-projects.md @@ -2,7 +2,7 @@ title: "既有项目" description: 如何在现有代码库中使用 BMad Method sidebar: - order: 6 + order: 7 --- 当你在现有项目或遗留代码库上工作时,本指南帮助你更稳妥地使用 BMad Method。 diff --git a/docs/zh-cn/how-to/expand-bmad-for-your-org.md b/docs/zh-cn/how-to/expand-bmad-for-your-org.md index a17c8d5e2..7da91b94b 100644 --- a/docs/zh-cn/how-to/expand-bmad-for-your-org.md +++ b/docs/zh-cn/how-to/expand-bmad-for-your-org.md @@ -2,7 +2,7 @@ title: "如何为组织扩展 BMad" description: 五个自定义方案,无需 fork 即可重塑 BMad——涵盖智能体全局规则、工作流约定、外部发布、模板替换和花名册变更 sidebar: - order: 9 + order: 11 --- BMad 的自定义机制让组织无需编辑已安装文件或 fork 技能就能重塑行为。本指南介绍五个方案,覆盖大部分企业级需求。 diff --git a/docs/zh-cn/how-to/get-answers-about-bmad.md b/docs/zh-cn/how-to/get-answers-about-bmad.md index 8d4ed0907..539fdb354 100644 --- a/docs/zh-cn/how-to/get-answers-about-bmad.md +++ b/docs/zh-cn/how-to/get-answers-about-bmad.md @@ -2,7 +2,7 @@ title: "如何获取关于 BMad 的答案" description: 使用 LLM 快速回答您自己的 BMad 问题 sidebar: - order: 4 + order: 5 --- ## 先从 BMad-Help 开始 diff --git a/docs/zh-cn/how-to/project-context.md b/docs/zh-cn/how-to/project-context.md index 2025a6032..66fe56058 100644 --- a/docs/zh-cn/how-to/project-context.md +++ b/docs/zh-cn/how-to/project-context.md @@ -2,7 +2,7 @@ title: "管理项目上下文" description: 创建并维护 project-context.md 以指导 AI 智能体 sidebar: - order: 8 + order: 9 --- 使用 `project-context.md`,确保 AI 智能体在各类工作流中遵循项目的技术偏好与实现规则。 diff --git a/docs/zh-cn/how-to/quick-fixes.md b/docs/zh-cn/how-to/quick-fixes.md index 9c6c631e2..cb704a660 100644 --- a/docs/zh-cn/how-to/quick-fixes.md +++ b/docs/zh-cn/how-to/quick-fixes.md @@ -2,7 +2,7 @@ title: "快速修复" description: 如何进行快速修复和临时更改 sidebar: - order: 5 + order: 6 --- 对于 bug 修复、重构或小范围改动,使用 **Quick Dev** 即可,不必走完整的 BMad Method。 diff --git a/docs/zh-cn/how-to/shard-large-documents.md b/docs/zh-cn/how-to/shard-large-documents.md index 0b394e502..b0adbc6f2 100644 --- a/docs/zh-cn/how-to/shard-large-documents.md +++ b/docs/zh-cn/how-to/shard-large-documents.md @@ -2,7 +2,7 @@ title: "文档分片指南" description: 将大型 Markdown 文件拆分为更小的组织化文件,以更好地管理上下文 sidebar: - order: 9 + order: 10 --- 当单个 Markdown 文档过大、影响模型读取时,可使用 `bmad-shard-doc` 工作流把文档拆成按章节组织的小文件,降低上下文压力。 diff --git a/docs/zh-cn/how-to/upgrade-to-v6.md b/docs/zh-cn/how-to/upgrade-to-v6.md index 4b9565c78..f4678bcf7 100644 --- a/docs/zh-cn/how-to/upgrade-to-v6.md +++ b/docs/zh-cn/how-to/upgrade-to-v6.md @@ -2,7 +2,7 @@ title: "如何升级到 v6" description: 从 BMad v4 迁移到 v6 sidebar: - order: 3 + order: 4 --- 使用 BMad 安装程序把 v4 升级到 v6。安装程序会自动识别旧安装,并提供迁移辅助,帮助你在已有项目中平滑过渡。 diff --git a/docs/zh-cn/reference/commands.md b/docs/zh-cn/reference/commands.md index 118aee280..2ac2a62a9 100644 --- a/docs/zh-cn/reference/commands.md +++ b/docs/zh-cn/reference/commands.md @@ -2,7 +2,7 @@ title: "技能(Skills)" description: BMad 技能参考:它们是什么、如何生成以及如何调用。 sidebar: - order: 3 + order: 4 --- 每次运行 `npx bmad-method install`,BMad 会基于你选择的模块生成一组 **skills**。你可以直接输入 skill 名称调用 workflow、任务、工具或智能体角色。 diff --git a/docs/zh-cn/reference/core-tools.md b/docs/zh-cn/reference/core-tools.md index 520a56305..8bc6d6839 100644 --- a/docs/zh-cn/reference/core-tools.md +++ b/docs/zh-cn/reference/core-tools.md @@ -2,7 +2,7 @@ title: "核心工具" description: 每个 BMad 安装默认可用的任务与 workflow 参考。 sidebar: - order: 2 + order: 3 --- 核心工具是跨模块可复用的一组通用能力:不依赖特定业务项目,也不要求先进入某个智能体角色。只要安装了 BMad,你就可以直接调用它们。 diff --git a/docs/zh-cn/reference/modules.md b/docs/zh-cn/reference/modules.md index e032c4adf..bfdfcc9ae 100644 --- a/docs/zh-cn/reference/modules.md +++ b/docs/zh-cn/reference/modules.md @@ -2,7 +2,7 @@ title: "官方模块" description: BMad 可选模块参考:能力边界、适用场景与外部资源 sidebar: - order: 4 + order: 5 --- BMad 通过可选模块扩展能力。你可以在安装时按需选择模块,为当前项目增加特定领域的 `agent`、`workflow` 与 `skill`。 diff --git a/docs/zh-cn/reference/testing.md b/docs/zh-cn/reference/testing.md index c5b7e3890..0f756b587 100644 --- a/docs/zh-cn/reference/testing.md +++ b/docs/zh-cn/reference/testing.md @@ -2,7 +2,7 @@ title: "测试选项" description: 内置 QA workflow 与 TEA 模块对比:何时用哪个、各自边界是什么 sidebar: - order: 5 + order: 6 --- BMad 有两条测试路径: diff --git a/package.json b/package.json index cb88efa64..add3f829c 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "docs:fix-links": "node tools/fix-doc-links.js", "docs:preview": "astro preview --root website", "docs:validate-links": "node tools/validate-doc-links.js", + "docs:validate-sidebar": "node tools/validate-sidebar-order.js", "format:check": "prettier --check \"**/*.{js,cjs,mjs,json,yaml}\"", "format:fix": "prettier --write \"**/*.{js,cjs,mjs,json,yaml}\"", "format:fix:staged": "prettier --write", @@ -39,7 +40,7 @@ "lint:fix": "eslint . --ext .js,.cjs,.mjs,.yaml --fix", "lint:md": "markdownlint-cli2 \"**/*.md\"", "prepare": "command -v husky >/dev/null 2>&1 && husky || exit 0", - "quality": "npm run format:check && npm run lint && npm run lint:md && npm run docs:build && npm run test:install && npm run test:urls && npm run validate:refs && npm run validate:skills", + "quality": "npm run format:check && npm run lint && npm run lint:md && npm run docs:build && npm run test:install && npm run test:urls && npm run validate:refs && npm run validate:skills && npm run docs:validate-sidebar", "rebundle": "node tools/installer/bundlers/bundle-web.js rebundle", "test": "npm run test:refs && npm run test:install && npm run test:urls && npm run test:channels && npm run lint && npm run lint:md && npm run format:check", "test:channels": "node test/test-installer-channels.js", diff --git a/tools/validate-sidebar-order.js b/tools/validate-sidebar-order.js new file mode 100644 index 000000000..9183d380e --- /dev/null +++ b/tools/validate-sidebar-order.js @@ -0,0 +1,388 @@ +/** + * Sidebar Order Validator + * + * Validates sidebar.order values in YAML frontmatter of markdown doc files. + * + * English docs — strict (errors): + * - Duplicate sidebar.order values within the same directory + * - Gaps in the ordering sequence + * - sidebar: block present but missing or invalid order: field + * + * Translations — errors + warnings: + * - Same structural rules as English (duplicates, gaps) — errors + * - Order drift from English counterpart — warnings (non-blocking) + * + * Usage: + * node tools/validate-sidebar-order.js + */ + +const fs = require('node:fs'); +const path = require('node:path'); + +const DOCS_ROOT = path.resolve(__dirname, '../docs'); +const FRONTMATTER_RE = /^---\r?\n([\s\S]*?)\r?\n---[ \t]*(?:\r?\n|$)/; +const LOCALE_RE = /^[a-z]{2}(?:-[a-zA-Z0-9]+)*$/; +const MAX_GAPS = 50; + +// ── Main ───────────────────────────────────────────────────────────────── + +/** + * Scan all docs, validate sidebar orders, and report errors/warnings. + * Exits 0 on success, 1 if any errors found. + */ +function main() { + if (!fs.existsSync(DOCS_ROOT)) { + console.error(`Error: docs directory not found at ${DOCS_ROOT}`); + process.exit(1); + } + + const { languageDirs, englishSections } = classifyDocsDirs(); + console.log(`\nValidating sidebar ordering in: ${DOCS_ROOT}\n`); + console.log(`English sections: ${englishSections.join(', ')}`); + console.log(`Translation languages: ${languageDirs.join(', ')}\n`); + + const allErrors = []; + const allWarnings = []; + const englishOrderMaps = new Map(); + + for (const section of englishSections) { + const sectionDir = path.join(DOCS_ROOT, section); + if (!fs.existsSync(sectionDir)) continue; + + console.log(`\nChecking English docs/${section}/`); + const { orderMap, issues } = checkDirectory(sectionDir); + englishOrderMaps.set(section, orderMap); + + for (const issue of issues) { + allErrors.push(issue); + reportIssue(issue, ' ', `docs/${section}`); + } + if (issues.length === 0) { + console.log(` [OK] docs/${section}/ — all orders valid`); + } + } + + for (const lang of languageDirs) { + const langDir = path.join(DOCS_ROOT, lang); + const langSections = fs + .readdirSync(langDir, { withFileTypes: true }) + .filter((e) => e.isDirectory() && !e.name.startsWith('_')) + .map((e) => e.name); + + console.log(`\nChecking ${lang}/ docs`); + + for (const section of langSections) { + const sectionDir = path.join(langDir, section); + if (!fs.existsSync(sectionDir)) continue; + + console.log(` ${lang}/${section}/`); + const { issues } = checkDirectory(sectionDir); + + for (const issue of issues) { + allErrors.push(issue); + reportIssue(issue, ' ', `${lang}/${section}`); + } + if (issues.length === 0) { + console.log(` [OK] ${lang}/${section}/ — all orders valid`); + } + } + + for (const w of checkTranslationDrift(lang, langSections, englishOrderMaps)) { + allWarnings.push(w); + const langDisplay = w.langOrder === null ? 'no order' : `order ${w.langOrder}`; + console.log(` [WARN] ${rel(w.file)}: ${langDisplay} (English: ${w.englishOrder})`); + } + } + + printSummary(allErrors, allWarnings); + process.exit(allErrors.length > 0 ? 1 : 0); +} + +// ── Directory classification ───────────────────────────────────────────── + +/** + * Classify top-level docs/ subdirectories as language dirs or English sections. + * Language dirs match BCP 47 locale pattern; everything else is English. + * @returns {{ languageDirs: string[], englishSections: string[] }} + */ +function classifyDocsDirs() { + const dirs = fs.readdirSync(DOCS_ROOT, { withFileTypes: true }).filter((e) => e.isDirectory() && !e.name.startsWith('_')); + + const languageDirs = []; + const englishSections = []; + + for (const d of dirs) { + (LOCALE_RE.test(d.name) ? languageDirs : englishSections).push(d.name); + } + + return { languageDirs, englishSections }; +} + +// ── Per-directory validation ───────────────────────────────────────────── + +/** + * Validate sidebar.order values for all markdown files in a directory. + * Detects duplicates, gaps in sequence, missing-order, and invalid-order fields. + * @param {string} dirPath - Absolute path to the directory to scan. + * @returns {{ orderMap: Map, issues: object[] }} + */ +function checkDirectory(dirPath) { + const issues = []; + const orderMap = new Map(); + const missingOrder = []; + const invalidOrder = []; + + for (const entry of listMdEntries(dirPath)) { + const fullPath = path.join(dirPath, entry.name); + const result = extractSidebarOrder(fs.readFileSync(fullPath, 'utf-8')); + + if (!result.hasSidebar) continue; + if (result.order === null) { + if (result.orderInvalid) { + invalidOrder.push(fullPath); + } else { + missingOrder.push(fullPath); + } + continue; + } + + if (!orderMap.has(result.order)) orderMap.set(result.order, []); + orderMap.get(result.order).push(fullPath); + } + + for (const file of missingOrder) { + issues.push({ level: 'error', type: 'missing-order', file, message: 'Has sidebar: block but no order: field' }); + } + + for (const file of invalidOrder) { + issues.push({ level: 'error', type: 'invalid-order', file, message: 'Invalid sidebar.order: must be a positive integer' }); + } + + for (const [order, files] of orderMap) { + if (files.length > 1) { + for (const file of files) { + issues.push({ level: 'error', type: 'duplicate-order', file, order, message: `Duplicate sidebar.order: ${order}` }); + } + } + } + + if (orderMap.size > 0) { + let max = -Infinity; + for (const k of orderMap.keys()) if (k > max) max = k; + + let gapCount = 0; + for (let i = 1; i <= max; i++) { + if (!orderMap.has(i)) { + issues.push({ + level: 'error', + type: 'gap', + directory: dirPath, + missing: i, + message: `Gap in sidebar order: missing position ${i}`, + }); + gapCount++; + if (gapCount >= MAX_GAPS) { + issues.push({ + level: 'error', + type: 'gap-truncated', + directory: dirPath, + message: `Too many gaps (stopped after ${MAX_GAPS}) — check for typos in sidebar.order values`, + }); + break; + } + } + } + } + + return { orderMap, issues }; +} + +// ── Cross-language drift ───────────────────────────────────────────────── + +/** + * Compare translated sidebar orders against English counterparts and warn on drift. + * Warns on numeric drift and on translation having sidebar but missing order. + * Files without an English counterpart are skipped silently. + * @param {string} lang - Language directory name (e.g. "cs", "zh-cn"). + * @param {string[]} langSections - Section subdirectories within the language folder. + * @param {Map>} englishOrderMaps - English order maps keyed by section name. + * @returns {object[]} Drift warnings. + */ +function checkTranslationDrift(lang, langSections, englishOrderMaps) { + const warnings = []; + + for (const section of langSections) { + const sectionDir = path.join(DOCS_ROOT, lang, section); + if (!fs.existsSync(sectionDir)) continue; + + const englishMap = englishOrderMaps.get(section); + if (!englishMap) continue; + + for (const entry of listMdEntries(sectionDir)) { + const langFile = path.join(sectionDir, entry.name); + const englishFile = path.join(DOCS_ROOT, section, entry.name); + if (!fs.existsSync(englishFile)) continue; + + const langResult = extractSidebarOrder(fs.readFileSync(langFile, 'utf-8')); + const engResult = extractSidebarOrder(fs.readFileSync(englishFile, 'utf-8')); + + const langHasOrder = typeof langResult.order === 'number'; + const engHasOrder = typeof engResult.order === 'number'; + + if (langHasOrder && engHasOrder && langResult.order !== engResult.order) { + warnings.push({ + level: 'warning', + type: 'order-drift', + file: langFile, + englishFile, + langOrder: langResult.order, + englishOrder: engResult.order, + }); + } else if (engHasOrder && langResult.hasSidebar && !langHasOrder) { + warnings.push({ + level: 'warning', + type: 'order-drift', + file: langFile, + englishFile, + langOrder: null, + englishOrder: engResult.order, + }); + } + } + } + + return warnings; +} + +// ── Output ─────────────────────────────────────────────────────────────── + +/** + * Print a single validation issue to stdout. + * @param {object} issue - Issue object with type, file/order/message fields. + * @param {string} indent - Whitespace prefix for indentation. + * @param {string} ctxPath - Display path for gap issues (e.g. "docs/explanation"). + */ +function reportIssue(issue, indent, ctxPath) { + switch (issue.type) { + case 'duplicate-order': { + console.log(`${indent}[ERROR] Duplicate order ${issue.order}: ${rel(issue.file)}`); + break; + } + case 'gap': { + console.log(`${indent}[ERROR] ${issue.message} in ${ctxPath}/`); + break; + } + case 'gap-truncated': { + console.log(`${indent}[ERROR] ${issue.message}`); + break; + } + case 'missing-order': { + console.log(`${indent}[ERROR] ${issue.message}: ${rel(issue.file)}`); + break; + } + case 'invalid-order': { + console.log(`${indent}[ERROR] ${issue.message}: ${rel(issue.file)}`); + break; + } + } +} + +/** + * Print summary with error/warning counts and error type breakdown. + * @param {object[]} errors - All collected errors. + * @param {object[]} warnings - All collected warnings. + */ +function printSummary(errors, warnings) { + console.log(`\n${'─'.repeat(60)}`); + console.log('\nSummary:'); + console.log(` Errors: ${errors.length}`); + console.log(` Warnings: ${warnings.length}`); + + if (errors.length > 0) { + const breakdown = {}; + for (const e of errors) breakdown[e.type] = (breakdown[e.type] || 0) + 1; + console.log('\n Error breakdown:'); + for (const [type, count] of Object.entries(breakdown)) console.log(` ${type}: ${count}`); + } + + if (errors.length === 0 && warnings.length === 0) { + console.log('\n All sidebar orders valid!'); + } + + console.log(''); +} + +// ── Leaf helpers ───────────────────────────────────────────────────────── + +/** + * Convert an absolute path to one relative to DOCS_ROOT. + * @param {string} filePath - Absolute file path. + * @returns {string} Relative path from docs root. + */ +function rel(filePath) { + return path.relative(DOCS_ROOT, filePath); +} + +/** + * Extract sidebar.order from YAML frontmatter. + * Handles block mapping (sidebar:\n order: 5) and flow mapping (sidebar: { order: 5 }). + * Only matches order: as a direct child of sidebar:, not from nested blocks. + * @param {string} content - Full file contents of a markdown file. + * @returns {{ hasSidebar: boolean, order?: number|null, orderInvalid?: boolean }} + */ +function extractSidebarOrder(content) { + const match = content.match(FRONTMATTER_RE); + if (!match) return { hasSidebar: false }; + + const frontmatter = match[1]; + + // Flow mapping: sidebar: { order: 5 } + const inline = frontmatter.match(/^sidebar:[ \t]*\{[^}]*\border:[ \t]*(\d+)/m); + if (inline) return validateOrder(inline[1]); + + // Block mapping: sidebar:\n order: 5 + if (!/^sidebar:[ \t]*$/m.test(frontmatter)) return { hasSidebar: false }; + + const lines = frontmatter.split(/\r?\n/); + const start = lines.findIndex((l) => /^sidebar:[ \t]*$/.test(l)); + let baseIndent = null; + + for (let i = start + 1; i < lines.length; i++) { + const line = lines[i]; + if (/^\s*$/.test(line)) continue; + + const indent = line.search(/\S/); + if (indent === 0) break; + if (baseIndent === null) baseIndent = indent; + if (indent < baseIndent) break; + if (indent > baseIndent) continue; + + const m = line.match(/^\s+order:[ \t]*(\d+)/); + if (m) return validateOrder(m[1]); + } + + return { hasSidebar: true, order: null }; +} + +/** + * Validate a parsed order value and return a result object. + * Rejects non-finite values (Infinity, NaN) and non-positive values (0, negative). + * @param {string} raw - Raw digit string from frontmatter. + * @returns {{ hasSidebar: boolean, order?: number|null, orderInvalid?: boolean }} + */ +function validateOrder(raw) { + const n = parseInt(raw, 10); + if (!Number.isFinite(n) || n < 1) return { hasSidebar: true, order: null, orderInvalid: true }; + return { hasSidebar: true, order: n }; +} + +/** + * List markdown files (.md/.mdx) in a directory, excluding subdirectories. + * @param {string} dirPath - Absolute path to the directory. + * @returns {fs.Dirent[]} Dirent entries for markdown files. + */ +function listMdEntries(dirPath) { + return fs.readdirSync(dirPath, { withFileTypes: true }).filter((e) => e.isFile() && (e.name.endsWith('.md') || e.name.endsWith('.mdx'))); +} + +main(); From 2b76d033161bb02cde9841cff1fb5a5cb0428538 Mon Sep 17 00:00:00 2001 From: Brian Date: Mon, 25 May 2026 11:43:55 -0500 Subject: [PATCH 20/26] feat(web-bundles): release packager + manifest for bmadcode.com/web-bundles/ (#2424) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(web-bundles): add release packager + bundle manifest Adds the infrastructure for shipping web bundles as downloadable ZIPs attached to a GitHub Release, consumed by the upcoming bmadcode.com/web-bundles/ page. - web-bundles/bundles.json — manifest with persona, tagline, description, accent color, motif key, knowledge files, and feature flags (web-browsing, deep-research, stitch integration) for each of the 6 bundles. Top-level releaseTag and downloadUrlPattern so the consuming page can construct download URLs without hardcoding. - tools/bundle-web-bundles.js — packager that zips each bundle dir into dist/web-bundles/{slug}.zip and prints the gh release create command. Zero dependencies; uses system zip. - .gitignore — exclude dist/web-bundles/ build artifacts. The web-bundles-v1.0.0 release on GitHub is currently in draft state with the 6 zips attached; it'll be published in coordination with the Ghost site page going live. * fix(web-bundles): single-source release tag, sharper bundle copy - Remove downloadUrlPattern from bundles.json — the consuming page derives the URL from releaseTag, so version bumps now touch one field instead of two. - product-brief-coach: drop "one-page" (briefs are whatever length the product earns). - brainstorming-coach: real numbers — 60 techniques across 10 categories — with concrete examples (SCAMPER, Drunk History Retelling, Nature's Solutions, Six Thinking Hats, etc.) so the card actually communicates the surprising breadth. * fix(web-bundles): harden release script per PR review - Verify the zip CLI is on PATH up front with a clear install hint, instead of crashing mid-zip with an opaque execSync error. - Wrap JSON.parse in try/catch; validate the manifest shape (bundles array non-empty, releaseTag present, slug present per entry) before trying to package, so config errors fail with a targeted message. - Catch zip failures per-bundle and surface the failing slug. - Refuse to print the gh release command when zero bundles were packaged (would otherwise mislead the user into creating an empty release). - Derive --title from manifest.releaseTag so the printed command can never drift from the actual tag (was previously hardcoded "Web Bundles v1" while the tag had moved to v1.0.0). - Remove the stale `web-bundles-v1` example from the file header. Addresses augmentcode bot review comments on PR #2424. * docs(web-bundles): rewrite copy to actually sell what each bundle does The JSON drives the bmadcode.com/web-bundles/ page; previous copy was generic and undersold the actual capabilities. Rewrote each tagline + description to lead with concrete, differentiating facts pulled directly from each bundle's SKILL.md: - Brainstorming Coach: 60 techniques across 10 categories with specific names (SCAMPER, Drunk History Retelling, Nature's Solutions, Shadow Work Mining, Superposition Collapse); calls out the 4 routes (browse, recommend, random, progressive) and the ~100-idea quantity-unlocks-quality target. - Product Brief Coach: names the three intent modes (Create / Update / Validate) and the two working paths (Fast / Coaching); surfaces the [ASSUMPTION] tag system and the Addendum. - PRFAQ Coach: details the 4 stages (Ignition / Press Release / Customer FAQ / Internal FAQ + Verdict), the 9 press release sections, the weasel-word list ("best-in-class", "seamless"), and that it adapts for commercial, internal, OSS, community. - PRD Coach: spells out the two entry points (Vision+Features vs Journey-led), named-protagonist journeys, glossary discipline, stable ID system (FR-1..N, SM-C1..N), and the 7-dimension validation rubric. - UX Coach: leads with the two-spine contract (DESIGN.md + EXPERIENCE.md), Don Norman framing, named-protagonist journeys, surface closure as the test, and Stitch integration. - Market & Industry Research: leads with Deep Research as the engine, names Porter and Christensen as anchors, lists the 6 deliverable sections, and frames the deliverable as synthesis not a research dump. * fix(web-bundles): security hardening + strict bundle validation Two issues raised by coderabbit on the latest commit: 1. Shell injection surface: execSync was building the zip command with a template literal that interpolated bundle.slug from JSON. Even with our controlled inputs, a slug with shell metacharacters would break quoting. Switched to execFileSync with an argument array (no shell) and added a strict ^[a-z0-9][a-z0-9-]*$ slug regex enforced before any FS or zip call. 2. Missing bundle directories were [SKIP]-warned but the script still printed the release command, allowing an incomplete release to ship cleanly. Now treated as fatal: any missing or invalid slug blocks the printed gh command and exits non-zero with the offending slugs listed. --- .gitignore | 3 + tools/bundle-web-bundles.js | 117 ++++++++++++++++++++++++++++++ web-bundles/bundles.json | 139 ++++++++++++++++++++++++++++++++++++ 3 files changed, 259 insertions(+) create mode 100644 tools/bundle-web-bundles.js create mode 100644 web-bundles/bundles.json diff --git a/.gitignore b/.gitignore index 9279c89d1..1483c0538 100644 --- a/.gitignore +++ b/.gitignore @@ -81,3 +81,6 @@ _bmad/custom/*.user.toml website/.astro/ website/dist/ build/ + +# Web bundle release artifacts +dist/web-bundles/ diff --git a/tools/bundle-web-bundles.js b/tools/bundle-web-bundles.js new file mode 100644 index 000000000..470052311 --- /dev/null +++ b/tools/bundle-web-bundles.js @@ -0,0 +1,117 @@ +/** + * Web Bundle Release Packager + * + * Zips each bundle under web-bundles/ into dist/web-bundles/{slug}.zip + * for attachment to a GitHub Release. + * + * Usage: + * node tools/bundle-web-bundles.js + * + * After running, the script prints the exact `gh release create` command + * (with the correct tag from bundles.json) for you to copy. + */ + +const fs = require('node:fs'); +const path = require('node:path'); +const { execSync, execFileSync } = require('node:child_process'); + +const REPO_ROOT = path.resolve(__dirname, '..'); +const BUNDLES_DIR = path.join(REPO_ROOT, 'web-bundles'); +const DIST_DIR = path.join(REPO_ROOT, 'dist', 'web-bundles'); +const MANIFEST = path.join(BUNDLES_DIR, 'bundles.json'); +const SLUG_RE = /^[a-z0-9][a-z0-9-]*$/; + +function fail(msg) { + console.error(`[ERROR] ${msg}`); + process.exit(1); +} + +function requireZipCli() { + try { + execSync('zip -v', { stdio: 'ignore' }); + } catch { + fail("'zip' CLI not found on PATH. Install zip (macOS: preinstalled; Debian/Ubuntu: apt install zip; Alpine: apk add zip) and re-run."); + } +} + +function loadManifest() { + if (!fs.existsSync(MANIFEST)) { + fail(`bundles.json not found at ${MANIFEST}`); + } + let manifest; + try { + manifest = JSON.parse(fs.readFileSync(MANIFEST, 'utf-8')); + } catch (error) { + fail(`bundles.json is not valid JSON: ${error.message}`); + } + if (!Array.isArray(manifest.bundles) || manifest.bundles.length === 0) { + fail('bundles.json is missing a non-empty "bundles" array.'); + } + if (typeof manifest.releaseTag !== 'string' || !manifest.releaseTag) { + fail('bundles.json is missing "releaseTag".'); + } + return manifest; +} + +function main() { + requireZipCli(); + const manifest = loadManifest(); + const releaseTag = manifest.releaseTag; + + fs.mkdirSync(DIST_DIR, { recursive: true }); + + console.log(`Packaging ${manifest.bundles.length} bundles for release ${releaseTag}\n`); + + const zipped = []; + const missing = []; + const invalid = []; + for (const bundle of manifest.bundles) { + if (!bundle.slug || !SLUG_RE.test(bundle.slug)) { + invalid.push(bundle.slug || '(no slug)'); + console.error(` [INVALID] slug must match ${SLUG_RE} — got: ${bundle.slug}`); + continue; + } + const src = path.join(BUNDLES_DIR, bundle.slug); + if (!fs.existsSync(src)) { + missing.push(bundle.slug); + console.error(` [MISSING] ${bundle.slug} — directory not found`); + continue; + } + + const out = path.join(DIST_DIR, `${bundle.slug}.zip`); + if (fs.existsSync(out)) fs.unlinkSync(out); + + try { + execFileSync('zip', ['-r', '-X', '-q', out, bundle.slug, '-x', '*.DS_Store'], { + cwd: BUNDLES_DIR, + stdio: 'inherit', + }); + } catch (error) { + fail(`zip failed for ${bundle.slug}: ${error.message}`); + } + + const size = (fs.statSync(out).size / 1024).toFixed(1); + console.log(` [OK] ${bundle.slug}.zip (${size} KB)`); + zipped.push(bundle.slug); + } + + if (invalid.length > 0) { + fail(`Refusing to publish: ${invalid.length} bundle(s) have invalid slugs: ${invalid.join(', ')}`); + } + if (missing.length > 0) { + fail(`Refusing to publish an incomplete release: missing directories for ${missing.join(', ')}`); + } + if (zipped.length === 0) { + fail('No bundles were packaged. Check bundles.json against web-bundles/ subdirectories.'); + } + + console.log(`\nWrote ${zipped.length} bundles to ${path.relative(REPO_ROOT, DIST_DIR)}/`); + console.log('\nNext step — create or update the GitHub Release:\n'); + console.log(` gh release create ${releaseTag} dist/web-bundles/*.zip \\`); + console.log(` --title "${releaseTag}" \\`); + console.log(` --notes "BMad web bundles for Gemini Gems and ChatGPT Custom GPTs. See https://bmadcode.com/web-bundles/"\n`); + console.log('Or, to refresh an existing release:\n'); + console.log(` gh release upload ${releaseTag} dist/web-bundles/*.zip --clobber\n`); +} + +main(); diff --git a/web-bundles/bundles.json b/web-bundles/bundles.json new file mode 100644 index 000000000..1fa613f9d --- /dev/null +++ b/web-bundles/bundles.json @@ -0,0 +1,139 @@ +{ + "schemaVersion": "1.0", + "releaseTag": "web-bundles-v1.0.0", + "releasedAt": "2026-05-25", + "bundles": [ + { + "slug": "brainstorming-coach", + "name": "Brainstorming Coach", + "tagline": "60 ideation techniques across 10 categories — from SCAMPER to Zombie Apocalypse Planning", + "description": "Sixty proven brainstorming techniques spanning structured frameworks (SCAMPER, Five Whys, First Principles), wild plays (Drunk History Retelling, Zombie Apocalypse Planning), biomimetic prompts (Nature's Solutions), introspective work (Shadow Work Mining, Values Archaeology), and quantum-flavored framings (Superposition Collapse). Pick a route — browse the library, get a recommendation, take a random surprise, or run a progressive divergence-to-action flow. The coach asks; you generate every idea. Targets ~100 ideas before organizing (the breakthroughs live past idea 20), then promotes the session into themes, a 2×2 prioritization, and a breakthrough collage in Canvas.", + "defaultPersona": { + "name": "Carson", + "title": "Elite Brainstorming Specialist", + "lineage": "Osborn lineage" + }, + "swapPersona": { + "name": "Mary", + "title": "Strategic Business Analyst", + "lineage": "BMad analyst — research-first rigor" + }, + "accentColor": "#3b82f6", + "motif": "constellation", + "knowledgeFiles": ["SKILL.md", "brain-methods.csv"], + "needsWebBrowsing": true, + "needsDeepResearch": false, + "stitchIntegration": false + }, + { + "slug": "product-brief-coach", + "name": "Product Brief Coach", + "tagline": "Three modes (Create / Update / Validate), two paths (Fast / Coaching), one brief you're proud of", + "description": "Create a brief drawn out through real conversation. Update an existing brief against a change signal. Or Validate — honest critique against the brief's own purpose. Two working modes: Fast path batches the gaps into one or two consolidated questions and tags assumptions for you to fix in review (best for pitching tomorrow); Coaching path walks section by section, mirrors before pushing, names the assumption hiding under your confident sentence (best for the brief you want to be proud of). The coach refuses to invent moats, traction, or differentiation you didn't give it. Depth that doesn't fit the brief lands in an Addendum so nothing valuable gets lost. Length is whatever the product earns.", + "defaultPersona": { + "name": "Mary", + "title": "Strategic Business Analyst", + "lineage": "BMad analyst" + }, + "swapPersona": { + "name": "Iris", + "title": "Senior Product Strategist", + "lineage": "Mirror-then-push, unhurried thinking-partner voice" + }, + "accentColor": "#d4a853", + "motif": "single-page", + "knowledgeFiles": ["SKILL.md"], + "needsWebBrowsing": true, + "needsDeepResearch": false, + "stitchIntegration": false + }, + { + "slug": "prfaq-coach", + "name": "PRFAQ Coach", + "tagline": "Amazon's Working Backwards as a forcing function — write the press release before you build", + "description": "Four stages of customer-first pressure: Ignition (specific customer, concrete problem, real stakes), Press Release (9 sections, each forcing a different clarity — headline, problem paragraph, solution paragraph, leader quote, customer quote, getting started), Customer FAQ (validate the value proposition from outside in), and Internal FAQ + Verdict (feasibility, trade-offs, what survived). Hardcore mode: weasel words like 'best-in-class', 'seamless', and 'revolutionary' get challenged on sight; if you lead with technology, the coach redirects to the customer's actual problem. Generates a hero image for the press release. Works for commercial products, internal tools, open source, and community initiatives — the structure stays, the language adapts.", + "defaultPersona": { + "name": "Mary", + "title": "Strategic Business Analyst", + "lineage": "BMad analyst" + }, + "swapPersona": { + "name": "Bezos", + "title": "Working Backwards Coach", + "lineage": "Amazon discipline — direct, dry, customer-first" + }, + "accentColor": "#dc2626", + "motif": "document-ribbon", + "knowledgeFiles": ["SKILL.md"], + "needsWebBrowsing": true, + "needsDeepResearch": false, + "stitchIntegration": false + }, + { + "slug": "prd-coach", + "name": "PRD Coach", + "tagline": "PRD coaching with built-in validation — capabilities in the PRD, mechanism in the Addendum", + "description": "Three modes (Create / Update / Validate), two entry points (Vision + Features for enterprise and dev products, Journey-led for consumer and UX-heavy products). Captures named-protagonist user journeys ('Mary, mom of three, kids finally asleep') instead of abstract personas. Enforces glossary discipline: every domain noun defined once, used verbatim across FRs, UJs, and SMs. Maintains stable IDs (FR-1..N globally, success metrics paired with counter-metrics SM-C1..N). The 7-dimension validation rubric grades decision-readiness, substance over theater, strategic coherence, done-ness clarity, scope honesty, downstream usability, and shape fit, with each finding cited to a specific PRD location. Length scales with stakes — hobby PRDs hit two pages; launch PRDs run as long as the FRs require.", + "defaultPersona": { + "name": "John", + "title": "Product Manager", + "lineage": "BMad PM — Cagan lineage" + }, + "swapPersona": { + "name": "Ezra", + "title": "Principal Product Manager", + "lineage": "Calmer, slower-tempo coaching" + }, + "accentColor": "#6366f1", + "motif": "section-stack", + "knowledgeFiles": ["SKILL.md", "prd-template.md", "prd-validation-checklist.md"], + "needsWebBrowsing": true, + "needsDeepResearch": false, + "stitchIntegration": false + }, + { + "slug": "ux-coach", + "name": "UX Coach", + "tagline": "Two spines engineering can build from — DESIGN.md + EXPERIENCE.md as the contract", + "description": "Don Norman's human-centered design as the operating method. The coach elicits your vision and never imposes its own — no colors, fonts, or layouts you didn't put on the table. Captures named-protagonist journeys ('Mary on her couch after the kids are asleep') as the unit of design thinking. Produces two spines: DESIGN.md for visual identity (tokens in YAML frontmatter), EXPERIENCE.md for information architecture, behavior, states, and accessibility. Spines win on conflict with any mock, wireframe, or Stitch output. Surface closure is the test: every stated need has a surface, every surface has a journey. Pairs with Google Stitch — the handoff produces a Stitch prompt you copy straight from Canvas to generate editable mockups.", + "defaultPersona": { + "name": "Sally", + "title": "UX Designer", + "lineage": "BMad UX designer" + }, + "swapPersona": { + "name": "Kenji", + "title": "Principal Product Designer", + "lineage": "Rams restraint + Zhuo systems discipline" + }, + "accentColor": "#10b981", + "motif": "nested-layers", + "knowledgeFiles": ["SKILL.md", "ux-validation.md"], + "needsWebBrowsing": true, + "needsDeepResearch": false, + "stitchIntegration": true + }, + { + "slug": "market-and-industry-research", + "name": "Market & Industry Research", + "tagline": "Deep Research wrapped in a sharp brief — research as input to a decision, not a deliverable", + "description": "Built around platform Deep Research mode. The coach handles the conversation: scopes what you actually need, drafts a sharp Deep Research brief you copy directly into Gemini or ChatGPT, then ingests the report and shapes the deliverable around your decision or learning goal. Methodology anchors when they help: Michael Porter for competitive structure, Clayton Christensen for Jobs-to-be-Done. Six sections to mix and match — market dynamics, customer insights, competitive landscape, regulatory & compliance, technical & technology trends, strategic synthesis. Validates every numeric, regulatory, or competitive claim against a source and a date. Generic findings ('the market is growing') get pushed back to specifics ('which segment, what rate, citing whom'). The deliverable is the synthesis against your decision, not the research dump.", + "defaultPersona": { + "name": "Mary", + "title": "Strategic Business Analyst", + "lineage": "BMad analyst" + }, + "swapPersona": { + "name": "Geoff", + "title": "Market Strategist", + "lineage": "Geoffrey Moore + April Dunford lineage" + }, + "accentColor": "#f59e0b", + "motif": "positioning-rings", + "knowledgeFiles": ["SKILL.md"], + "needsWebBrowsing": true, + "needsDeepResearch": true, + "stitchIntegration": false + } + ] +} From 7729ad461da0bf1b841c295f66cbb575de699306 Mon Sep 17 00:00:00 2001 From: Brian Date: Mon, 25 May 2026 12:17:27 -0500 Subject: [PATCH 21/26] docs: route all web-bundles install traffic to bmadcode.com/web-bundles (#2425) Make bmadcode.com/web-bundles/ the single supported install path. The site keeps install steps current as Gemini and ChatGPT evolve, always points at the newest tagged release, and turns one signup into the notification channel for new bundles. - README.md: drop direct-folder install reference, point to the site - web-bundles/README.md: lead with Install (site), reframe folder as source for the shelf rather than install target - docs/explanation/web-bundles.md: replace the per-bundle INSTRUCTIONS.md steer with the site, replace the dead how-to link - docs/how-to/use-web-bundles.md: rewrite as a short pointer to the site (kept the file so existing inbound links resolve), retain prerequisites, persona customization, and build-your-own sections --- README.md | 8 ++-- docs/explanation/web-bundles.md | 4 +- docs/how-to/use-web-bundles.md | 66 ++++++++------------------------- web-bundles/README.md | 48 +++++++++++++----------- 4 files changed, 50 insertions(+), 76 deletions(-) diff --git a/README.md b/README.md index 214221962..e8d9ffe3b 100644 --- a/README.md +++ b/README.md @@ -79,11 +79,13 @@ BMad Method extends with official modules for specialized domains. Available dur ## Web Bundles -V4 shipped web bundles. V6 brings them back, new and improved. Find them in [`web-bundles/`](./web-bundles/). +V4 shipped web bundles. V6 brings them back, new and improved. -Web bundles package selected BMad skills for installation as **Google Gemini Gems** and **ChatGPT Custom GPTs**. Use them to do the upfront planning work (brainstorming, product briefs, PRDs, PRFAQs, UX specs, market and industry research) in your web LLM subscription, then bring the polished artifacts into your IDE for implementation. Planning runs on a flat-rate subscription instead of metered IDE tokens, which is a meaningful cost saver on longer engagements. Ensure that when using you choose the best model available to you in Gemini or ChatGPT. +Web bundles package selected BMad skills for installation as **Google Gemini Gems** and **ChatGPT Custom GPTs**. Use them to do the upfront planning work (brainstorming, product briefs, PRDs, PRFAQs, UX specs, market and industry research) in your web LLM subscription, then bring the polished artifacts into your IDE for implementation. Planning runs on a flat-rate subscription instead of metered IDE tokens, which is a meaningful cost saver on longer engagements. Choose the best model available to you in Gemini or ChatGPT. -Current shelf: brainstorming, product brief, PRFAQ, PRD, UX, market & industry research. Each bundle has its own `INSTRUCTIONS.md` to follow; the setup pattern is the same across the shelf (create a Gem or GPT, attach knowledge file(s) (bundle customized SKILL.md and additional content), paste the instructions block, save). See [the web bundles guide](https://docs.bmad-method.org/explanation/web-bundles/) for the concept and [the how-to](https://docs.bmad-method.org/how-to/use-web-bundles/) for setup details. +Current shelf: brainstorming, product brief, PRFAQ, PRD, UX, market & industry research. + +**Browse and install at [bmadcode.com/web-bundles](https://bmadcode.com/web-bundles/)**. One card per bundle, inline install steps for Gemini and ChatGPT, one-click ZIP download. See [the web bundles guide](https://docs.bmad-method.org/explanation/web-bundles/) for the concept. ## Documentation diff --git a/docs/explanation/web-bundles.md b/docs/explanation/web-bundles.md index 12aa678e1..aa9e96b35 100644 --- a/docs/explanation/web-bundles.md +++ b/docs/explanation/web-bundles.md @@ -9,7 +9,7 @@ Run the planning side of BMad in your web LLM subscription, then bring the artif A web bundle is a BMad skill repackaged for installation as a **Google Gemini Gem** or **ChatGPT Custom GPT**. Each bundle includes a `SKILL.md` protocol you upload as a knowledge file, an `INSTRUCTIONS.md` block you paste into the Gem or GPT instructions, and any data files the skill needs (CSVs, templates, validation checklists, additionally progressively disclosed content). The persona lives in the pasted instructions; the protocol lives in the knowledge file. Swap personas without touching the protocol. -Setup is not one-click; you create the Gem or GPT, upload the knowledge files, paste the instructions, and save. The pattern is the same across the shelf, so once you've installed one bundle the next one is mechanical. Follow each bundle's `INSTRUCTIONS.md` for the platform-specific details. +Setup is not one-click, but the steps are guided. **Install from [bmadcode.com/web-bundles](https://bmadcode.com/web-bundles/)**. The site lists every bundle in a card grid, shows you the Gemini and ChatGPT install steps inline, and hands you the ZIP download. That is the supported install path; the pattern is the same across the shelf, so once you've installed one the next one is mechanical. V4 of BMad shipped web bundles. V6 brings them back, rewritten for the current Gem and Custom GPT platforms with Canvas, Deep Research, and image generation in mind. @@ -79,4 +79,4 @@ Persona swaps, default user name, team-specific guardrails, preferred phrasing: Web bundles are generated from BMad skills using the `bmad-os-skill-to-bundle` utility skill. Point it at any BMad skill folder and it produces the bundle files with persona inheritance from the owning agent. -See the [how-to guide](../how-to/use-web-bundles.md) for installation steps. +Install any bundle from [bmadcode.com/web-bundles](https://bmadcode.com/web-bundles/). diff --git a/docs/how-to/use-web-bundles.md b/docs/how-to/use-web-bundles.md index f73b975b0..13f84898e 100644 --- a/docs/how-to/use-web-bundles.md +++ b/docs/how-to/use-web-bundles.md @@ -3,64 +3,30 @@ title: 'Use Web Bundles' description: Install a BMad web bundle as a Google Gemini Gem or ChatGPT Custom GPT --- -Use a **web bundle** to run BMad planning work in your Gemini or ChatGPT subscription instead of your IDE. +Web bundles install from **[bmadcode.com/web-bundles](https://bmadcode.com/web-bundles/)**. -## When to Use This +## Why a single front door -- You want to run brainstorming, product brief, PRFAQ, PRD, UX, or market research in a web LLM. -- You want to save IDE tokens by keeping the planning conversation on a flat-rate subscription. -- You want to share a planning artifact with collaborators who don't have your IDE setup. +The site is the only supported install path for the shelf. It keeps the steps current as Gemini and ChatGPT evolve, always points at the newest tagged release, and lets one signup put you on the list for new bundles as they ship. -## When to Skip This +## What you'll do on the site -- The work needs to read or modify code in your repo. Stay in the IDE. -- You don't have a Gemini Advanced or ChatGPT Plus subscription. +1. Pick a bundle from the card grid. +2. Open the install modal. Switch between the **Gemini Gem** and **ChatGPT GPT** tabs for the platform-specific steps. +3. Download the bundle ZIP (one click; one-time free signup for email-only members). +4. Follow the inline steps: create the Gem or Custom GPT, upload the knowledge files, paste the instructions block, save. -:::note[Prerequisites] +## Prerequisites - **For Gemini Gems**: Gemini Advanced subscription. -- **For ChatGPT Custom GPTs**: Plus, Pro, Business, or Enterprise plan. Some bundles use Deep Research, which has its own plan availability. -- A bundle from [`web-bundles/`](https://github.com/bmad-code-org/BMAD-METHOD/tree/main/web-bundles). -::: +- **For ChatGPT Custom GPTs**: Plus, Pro, Business, or Enterprise plan. +- For bundles that use **Deep Research** (currently Market & Industry Research), enable it from the prompt bar (Tools → Deep Research). Deep Research has its own plan limits. -## Steps +## Customize the persona -### 1. Pick a Bundle +Each bundle's `INSTRUCTIONS.md` (inside the ZIP) includes a **Persona Swap Example** above the paste boundary. Replace the `[persona]` block in your installed instructions with the swap example to change voice without changing the protocol. You can also write your own persona from scratch; the protocol stays the same. -Browse [`web-bundles/`](https://github.com/bmad-code-org/BMAD-METHOD/tree/main/web-bundles) and pick the one for the work you're doing. Open the bundle folder; you'll see `SKILL.md`, `INSTRUCTIONS.md`, and any data files (CSVs, templates, validation checklists). - -### 2. Install in Google Gemini - -1. Go to [gemini.google.com](https://gemini.google.com) and create a new Gem. -2. Name the Gem after the bundle (for example, **Market & Industry Research**). -3. Upload the bundle's `SKILL.md` and any data files (`.csv`, `.md` templates, validation files) as knowledge files. -4. Open the bundle's `INSTRUCTIONS.md`, scroll to the **PASTE BOUNDARY** line, and paste everything below it into the Gem's instructions box. -5. Save. - -Some bundles call for Deep Research. If yours does, enable it from the Gemini prompt bar (Tools → Deep Research) before starting each session. - -### 3. Install in ChatGPT - -1. Go to [chatgpt.com](https://chatgpt.com) and create a new Custom GPT under **Explore GPTs → Create**. -2. Name the GPT after the bundle. -3. Under **Configure → Knowledge**, upload the bundle's `SKILL.md` and any data files. -4. Open the bundle's `INSTRUCTIONS.md`, scroll to the **PASTE BOUNDARY** line, and paste everything below it into **Instructions**. -5. Under **Capabilities**, turn on **Web Browsing** if the bundle's install steps call for it. -6. Save. - -If the bundle integrates Deep Research, enable it before each session via the composer "+" menu or **Tools → Run deep research**. - -### 4. Customize the Persona (Optional) - -Each bundle's `INSTRUCTIONS.md` includes a **Persona Swap Example** above the paste boundary. Replace the `[persona]` block in your installed instructions with the swap example to change voice without changing the protocol. You can also write your own persona from scratch; the protocol stays the same. - -### 5. Run a Session - -Open the Gem or Custom GPT and send your first message. The persona greets you in character and starts the discovery conversation defined in `SKILL.md`. Canvas opens automatically when relevant. - -When you're done, export or copy the Canvas document into your repo or hand it off to the next BMad skill in your IDE. - -## What You Get +## What you get - A reusable Gem or Custom GPT scoped to one BMad planning capability. - Polished artifacts (briefs, PRDs, research reports, UX specs) ready to drop into your IDE for implementation. @@ -70,6 +36,6 @@ When you're done, export or copy the Canvas document into your repo or hand it o Web LLMs occasionally drop persona partway through long sessions. If the model starts speaking out of character, remind it of its persona or start a fresh session. ::: -## Building Your Own +## Building your own -To turn an existing BMad skill into a web bundle, use the `bmad-os-skill-to-bundle` utility skill from [bmad-utility-skills](https://github.com/bmad-code-org/bmad-utility-skills). It produces the bundle files with persona inheritance from the owning agent and a swap-example contrast voice. +To turn an existing BMad skill into a web bundle, use the `bmad-os-skill-to-bundle` utility skill from [bmad-utility-skills](https://github.com/bmad-code-org/bmad-utility-skills). It produces the bundle files with persona inheritance from the owning agent and a swap-example contrast voice. Submit your bundle to the shelf by opening a PR on [BMAD-METHOD](https://github.com/bmad-code-org/BMAD-METHOD) that adds the bundle directory and an entry in `web-bundles/bundles.json`. diff --git a/web-bundles/README.md b/web-bundles/README.md index 9016f6ec6..505d6a7a2 100644 --- a/web-bundles/README.md +++ b/web-bundles/README.md @@ -2,39 +2,45 @@ V4 shipped web bundles. V6 brings them back, new and improved. Each bundle packages a BMad skill as a self-contained install for **Google Gemini Gems** and **ChatGPT Custom GPTs**, so you can run the planning work in your web LLM subscription before opening your IDE. -## Why use these +## Install + +**Go to [bmadcode.com/web-bundles](https://bmadcode.com/web-bundles/).** + +The site lists every bundle in a card grid, walks you through the Gemini and ChatGPT setup inline, and hands you the ZIP download in one click. That is the only supported install path. + +Why a single front door: + +- One place to keep install steps current as Gemini and ChatGPT evolve. +- Versioned releases. Every shelf update ships as a tagged GitHub Release; the site always points at the newest tag. +- One signup gets you on the list for new bundles as they ship. + +## Why use them - **Cost.** Web LLM subscriptions are flat-rate. Run brainstorming, briefs, PRDs, and research there instead of burning IDE tokens. - **Right tool for the job.** Planning conversations want Canvas, image generation, and Deep Research. Implementation wants the codebase and a terminal. Use each where it's strongest. -- **Persona swapping.** Every bundle's `INSTRUCTIONS.md` carries a default persona and a contrasting swap example. Change voices without touching the protocol. +- **Persona swapping.** Every bundle ships a default persona and a contrasting swap example. Change voices without touching the protocol. ## The shelf | Bundle | Purpose | | --- | --- | -| [`brainstorming-coach/`](./brainstorming-coach/) | Facilitated ideation across 60 techniques. Defaults to **Carson** (Osborn lineage); swap to **Mary** for analyst rigor. | -| [`product-brief-coach/`](./product-brief-coach/) | Build a one-page product brief through guided discovery. | -| [`prfaq-coach/`](./prfaq-coach/) | Working Backwards PRFAQ challenge (Bezos lineage) to forge and stress-test product concepts. | -| [`prd-coach/`](./prd-coach/) | Product Requirements Document with built-in validation (Cagan lineage). | -| [`ux-coach/`](./ux-coach/) | UX patterns, flows, and design specifications. | -| [`market-and-industry-research/`](./market-and-industry-research/) | Market research, customer JTBD, competitive landscape, regulatory and technical lenses. Deep Research mode integrated. | +| Brainstorming Coach | Facilitated ideation across 60 techniques. Defaults to **Carson** (Osborn lineage); swap to **Mary** for analyst rigor. | +| Product Brief Coach | Build a product brief through guided discovery. Create, Update, or Validate modes. | +| PRFAQ Coach | Working Backwards PRFAQ challenge (Bezos lineage) to forge and stress-test product concepts. | +| PRD Coach | Product Requirements Document with built-in validation (Cagan lineage). | +| UX Coach | UX patterns, flows, and design specifications. Pairs with Google Stitch. | +| Market & Industry Research | Market research, customer JTBD, competitive landscape, regulatory and technical lenses. Deep Research mode integrated. | -## Install - -Each bundle has its own `INSTRUCTIONS.md` with platform-specific setup steps. Pattern is the same: - -1. Create a Gem (Gemini) or Custom GPT (ChatGPT). -2. Upload the bundle's `SKILL.md` (and any data files) as knowledge. -3. Paste the block below the **PASTE BOUNDARY** into the instructions box. -4. Enable Web Browsing / Deep Research if the bundle's install steps call for it. - -Gemini Gems require Gemini Advanced. ChatGPT Custom GPTs require Plus, Pro, Business, or Enterprise; Deep Research has its own plan limits. +Requires Gemini Advanced (for Gems) or ChatGPT Plus / Pro / Business / Enterprise (for Custom GPTs). Deep Research has its own plan limits. ## Build your own Web bundles are generated from BMad skills using the [`bmad-os-skill-to-bundle`](https://github.com/bmad-code-org/bmad-utility-skills) utility skill. Point it at any BMad skill folder and it produces a `SKILL.md`, an `INSTRUCTIONS.md`, and any required data files, with persona inheritance from the owning agent. -## Docs +## What's in this folder -- [What web bundles are and when to use them](https://docs.bmad-method.org/explanation/web-bundles/) -- [How to install a web bundle](https://docs.bmad-method.org/how-to/use-web-bundles/) +This folder is the **source** for the shelf, packaged into ZIPs and attached to GitHub Releases. End users do not install from here. If you are a contributor working on a bundle, the bundle directories and `bundles.json` are the files you edit; the [release packager](../tools/bundle-web-bundles.js) zips them and updates the release. + +## Concept docs + +[What web bundles are and when to use them](https://docs.bmad-method.org/explanation/web-bundles/). From 065003fc950274d52ebfd2443ef6815be1278403 Mon Sep 17 00:00:00 2001 From: Farzad Rashidi Date: Mon, 25 May 2026 20:39:04 +0200 Subject: [PATCH 22/26] Fix stale custom-source redeploys on quick-update (#2399) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(installer): refresh custom-source cache on quick-update and persist channel marker * fix(installer): persist real next ref and atomically dedupe custom refresh * fix(installer): preserve custom-source cache when remote unreachable When git fetch fails against an existing custom-module cache, cloneRepo previously wiped the cache and attempted a fresh clone, which then also failed for the same reason (network down, repo deleted/moved, auth revoked) — leaving the user with no usable cache. With the new quick-update refresh path calling cloneRepo for every cached custom module, this turned transient remote outages into cache loss on every quick-update. - cloneRepo: on fetch failure with an existing cache, keep the previous clone and surface a warning via prompts.log.warn instead of removing the cache. The downstream metadata write uses the existing HEAD. - _refreshRepoCacheOnce: update the comment to reflect that the common "remote unreachable but cache exists" case is now handled inside cloneRepo; warn on the remaining unrecoverable failures so they aren't silent. Tests: 349 passed, 0 failed. --------- Co-authored-by: Brian Madison --- .../modules/custom-module-manager.js | 93 ++++++++++++++++++- 1 file changed, 91 insertions(+), 2 deletions(-) diff --git a/tools/installer/modules/custom-module-manager.js b/tools/installer/modules/custom-module-manager.js index 9dd9e8b6d..e91deb34f 100644 --- a/tools/installer/modules/custom-module-manager.js +++ b/tools/installer/modules/custom-module-manager.js @@ -19,6 +19,10 @@ function quoteCustomRef(ref) { class CustomModuleManager { /** @type {Map} Shared across all instances: module code -> ResolvedModule */ static _resolutionCache = new Map(); + /** @type {Set} Repo roots refreshed in the current process (dedupe quick-update fetches). */ + static _refreshedRepoPaths = new Set(); + /** @type {Map>} In-flight refresh operations keyed by repo path. */ + static _refreshInFlight = new Map(); // ─── Source Parsing ─────────────────────────────────────────────────────── @@ -431,8 +435,12 @@ class CustomModuleManager { } fetchSpinner.stop(`Updated ${displayName}`); } catch { - fetchSpinner.error(`Update failed, re-downloading ${displayName}`); - await fs.remove(repoCacheDir); + // Fetch failed against an existing cache — most often the remote is + // unreachable (network down, repo deleted/moved, auth revoked). + // Preserve the previous clone so re-deploy still works from cached + // content; surface a warning so the user knows the cache is stale. + fetchSpinner.error(`Could not refresh ${displayName} — keeping cached copy`); + await prompts.log.warn(`Custom module ${displayName} was not refreshed (remote unreachable). Using cached copy.`); } } @@ -466,6 +474,32 @@ class CustomModuleManager { } catch { // swallow — a non-git repo (local path) wouldn't reach here anyway } + // Best-effort: capture the remote default branch name so channel marker + // metadata for "next" reflects the actual tracked ref (not always "main"). + let defaultRef = 'main'; + if (!effectiveVersion) { + try { + const symbolic = execSync('git symbolic-ref --short refs/remotes/origin/HEAD', { + cwd: repoCacheDir, + stdio: 'pipe', + }) + .toString() + .trim(); + if (symbolic.startsWith('origin/')) { + defaultRef = symbolic.slice('origin/'.length) || defaultRef; + } + } catch { + // Fallback to previous marker value when symbolic ref is unavailable. + try { + const existingMarker = await fs.readJson(path.join(repoCacheDir, '.bmad-channel.json')); + if (existingMarker?.channel === 'next' && typeof existingMarker.version === 'string' && existingMarker.version.trim()) { + defaultRef = existingMarker.version.trim(); + } + } catch { + // Keep default fallback. + } + } + } // Write source metadata for later URL reconstruction const metadataPath = path.join(repoCacheDir, '.bmad-source.json'); @@ -478,6 +512,15 @@ class CustomModuleManager { sha: resolvedSha, clonedAt: new Date().toISOString(), }); + // Keep a channel marker in custom cache too so update paths that rely on + // channel metadata (same as official-module cache) can treat this clone as + // refreshable. URL + no explicit ref => next, explicit ref => pinned. + await fs.writeJson(path.join(repoCacheDir, '.bmad-channel.json'), { + channel: effectiveVersion ? 'pinned' : 'next', + version: effectiveVersion || defaultRef, + sha: resolvedSha, + writtenAt: new Date().toISOString(), + }); // Install dependencies if package.json exists (skip during browsing/analysis) const packageJsonPath = path.join(repoCacheDir, 'package.json'); @@ -642,6 +685,13 @@ class CustomModuleManager { const repoRoots = await this._findCacheRepoRoots(cacheDir); for (const { repoPath, metadata } of repoRoots) { + // Quick-update path: refresh URL-backed cached repos before reading + // files from them so re-deploy uses latest commits for `next` and + // the pinned ref for `pinned`. + if (options.bmadDir && metadata?.rawInput) { + await this._refreshRepoCacheOnce(repoPath, metadata); + } + // Check marketplace.json for matching module code const marketplacePath = path.join(repoPath, '.claude-plugin', 'marketplace.json'); if (!(await fs.pathExists(marketplacePath))) continue; @@ -692,6 +742,45 @@ class CustomModuleManager { return this._findLocalSourceFromManifest(moduleCode, options); } + /** + * Refresh one cached repo at most once per process with in-flight dedupe. + * Prevents concurrent quick-update callers from racing the same cache path. + * @param {string} repoPath - Absolute cache repo path + * @param {Object} metadata - Parsed .bmad-source.json metadata + */ + async _refreshRepoCacheOnce(repoPath, metadata) { + if (CustomModuleManager._refreshedRepoPaths.has(repoPath)) return; + + const existing = CustomModuleManager._refreshInFlight.get(repoPath); + if (existing) { + await existing; + return; + } + + const refreshPromise = (async () => { + try { + await this.cloneRepo(metadata.rawInput, { + silent: true, + pinOverride: metadata.version || undefined, + }); + CustomModuleManager._refreshedRepoPaths.add(repoPath); + } catch (error_) { + // cloneRepo only throws here for unrecoverable cases (no cache present + // and a fresh clone failed, or an unexpected internal error). The + // common "remote unreachable but cache exists" case is handled inside + // cloneRepo, which preserves the clone and returns normally. Reaching + // this catch means we have no usable cache — surface a warning so the + // failure isn't silent. + await prompts.log.warn(`Refresh of cached custom module at ${path.basename(repoPath)} failed: ${error_?.message || error_}`); + } finally { + CustomModuleManager._refreshInFlight.delete(repoPath); + } + })(); + + CustomModuleManager._refreshInFlight.set(repoPath, refreshPromise); + await refreshPromise; + } + /** * Check the installation manifest for a localPath entry for this module. * Used as fallback when the module was installed from a local source (no cache entry). From 9a2fba97a381e82b7e734b51d7c1bce8de40a80b Mon Sep 17 00:00:00 2001 From: SevenSteven Date: Tue, 26 May 2026 02:50:08 +0800 Subject: [PATCH 23/26] fix: capture dev story baseline commits (#2403) Co-authored-by: Brian --- .../4-implementation/bmad-dev-story/SKILL.md | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/src/bmm-skills/4-implementation/bmad-dev-story/SKILL.md b/src/bmm-skills/4-implementation/bmad-dev-story/SKILL.md index 9944ec8d8..a55bc2f92 100644 --- a/src/bmm-skills/4-implementation/bmad-dev-story/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-dev-story/SKILL.md @@ -10,7 +10,7 @@ description: 'Execute story implementation following a context filled story spec **Your Role:** Developer implementing the story. - Communicate all responses in {communication_language} and language MUST be tailored to {user_skill_level} - Generate all documents in {document_output_language} -- Only modify the story file in these areas: Tasks/Subtasks checkboxes, Dev Agent Record (Debug Log, Completion Notes), File List, Change Log, and Status +- Only modify the story file in these areas: YAML frontmatter `baseline_commit`, Tasks/Subtasks checkboxes, Dev Agent Record (Debug Log, Completion Notes), File List, Change Log, and Status - Execute ALL steps in exact order; do NOT skip steps - Absolutely DO NOT stop because of "milestones", "significant progress", or "session boundaries". Continue in a single execution until the story is COMPLETE (all ACs satisfied and all tasks/subtasks checked) UNLESS a HALT condition is triggered or the USER gives other instruction. - Do NOT schedule a "next session" or request review pauses unless a HALT condition applies. Only Step 9 decides completion. @@ -76,7 +76,7 @@ Activation is complete. If `activation_steps_prepend` or `activation_steps_appen Communicate all responses in {communication_language} and language MUST be tailored to {user_skill_level} Generate all documents in {document_output_language} - Only modify the story file in these areas: Tasks/Subtasks checkboxes, Dev Agent Record (Debug Log, Completion Notes), File List, + Only modify the story file in these areas: YAML frontmatter `baseline_commit`, Tasks/Subtasks checkboxes, Dev Agent Record (Debug Log, Completion Notes), File List, Change Log, and Status Execute ALL steps in exact order; do NOT skip steps Absolutely DO NOT stop because of "milestones", "significant progress", or "session boundaries". Continue in a single execution @@ -261,26 +261,40 @@ Activation is complete. If `activation_steps_prepend` or `activation_steps_appen + If story file YAML frontmatter already contains `baseline_commit`, preserve the existing value and do not overwrite it + Load the FULL file: {{sprint_status}} Read all development_status entries to find {{story_key}} - Get current status value for development_status[{{story_key}}] + Set {{current_status}} to development_status[{{story_key}}] + - + + Set {{current_status}} to the story file Status section value + + + + Run `git rev-parse HEAD` to capture current commit into {{baseline_commit}}; if git/version control is unavailable, set {{baseline_commit}} = `NO_VCS` + If story file YAML frontmatter exists, add `baseline_commit: {{baseline_commit}}` to the frontmatter + If story file has no YAML frontmatter, create frontmatter at the top containing only `baseline_commit: {{baseline_commit}}` + + + + Update the story in the sprint status report to = "in-progress" Update last_updated field to current date 🚀 Starting work on story {{story_key}} - Status updated: ready-for-dev → in-progress + Status updated: {{current_status}} → in-progress - + ⏯️ Resuming work on story {{story_key}} Story is already marked in-progress - + ⚠️ Unexpected story status: {{current_status}} Expected ready-for-dev or in-progress. Continuing anyway... From fea431fd2e1e5648091895d76d99bf290a56e22d Mon Sep 17 00:00:00 2001 From: robertocsko-seon Date: Mon, 25 May 2026 20:56:05 +0200 Subject: [PATCH 24/26] fix(installer): read config.toml on re-run so user_name (and other user-scoped answers) are preserved as defaults (#2411) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit loadExistingConfig only read from legacy _bmad//config.yaml files, but the installer writes user-scoped answers (user_name, communication_language, etc.) to _bmad/config.user.toml. On every subsequent reinstall those values were not loaded back, so the user got re-prompted instead of seeing their prior answers as defaults. Adds parseCentralToml — a lightweight line scanner matching the installer's own TOML output format — and updates loadExistingConfig to read config.toml and config.user.toml first (merging both into the same section buckets). Legacy per-module config.yaml files are kept as a fallback for pre-v6 installations. Co-authored-by: RobertOcsko Co-authored-by: Claude Sonnet 4.6 Co-authored-by: Brian --- tools/installer/modules/official-modules.js | 86 ++++++++++++++++++++- 1 file changed, 83 insertions(+), 3 deletions(-) diff --git a/tools/installer/modules/official-modules.js b/tools/installer/modules/official-modules.js index e80b0a56e..db2933427 100644 --- a/tools/installer/modules/official-modules.js +++ b/tools/installer/modules/official-modules.js @@ -846,11 +846,35 @@ class OfficialModules { return false; } - // Dynamically discover all installed modules by scanning bmad directory - // A directory is a module ONLY if it contains a config.yaml file + // Primary source: installer-written config.toml + config.user.toml (v6+). + // Both files together hold all install answers; config.user.toml carries + // user-scoped keys like user_name that would otherwise be re-prompted on + // every reinstall. let foundAny = false; - const entries = await fs.readdir(bmadDir, { withFileTypes: true }); + for (const fileName of ['config.toml', 'config.user.toml']) { + const tomlPath = path.join(bmadDir, fileName); + if (!(await fs.pathExists(tomlPath))) continue; + try { + const content = await fs.readFile(tomlPath, 'utf8'); + const parsed = parseCentralToml(content); + for (const [section, values] of Object.entries(parsed)) { + if (values && typeof values === 'object' && !Array.isArray(values)) { + if (!this._existingConfig[section]) this._existingConfig[section] = {}; + Object.assign(this._existingConfig[section], values); + foundAny = true; + } + } + } catch { + // Ignore parse errors + } + } + if (foundAny) { + return true; + } + + // Fallback: legacy per-module config.yaml files (pre-v6 installations). + const entries = await fs.readdir(bmadDir, { withFileTypes: true }); const nonModuleDirs = new Set(['_config', '_memory', 'memory', 'docs', 'scripts', 'custom']); for (const entry of entries) { if (entry.isDirectory()) { @@ -2127,4 +2151,60 @@ class OfficialModules { } } +/** + * Parse a config.toml or config.user.toml written by writeCentralConfig. + * Only handles the subset of TOML the installer produces: [core], + * [modules.], string/bool/number scalar values. [agents.*] and other + * sections are ignored. Returns a plain object keyed by section name where + * module sections use the bare code (e.g. "bmm"), not the full "modules.bmm". + */ +function parseCentralToml(content) { + const result = {}; + let currentSection = null; + + for (const rawLine of content.split('\n')) { + const line = rawLine.trim(); + if (!line || line.startsWith('#')) continue; + + const sectionMatch = line.match(/^\[([^\]]+)\]\s*$/); + if (sectionMatch) { + const name = sectionMatch[1]; + if (name === 'core') { + currentSection = 'core'; + } else if (name.startsWith('modules.')) { + currentSection = name.slice('modules.'.length); + } else { + currentSection = null; + } + if (currentSection && !result[currentSection]) { + result[currentSection] = {}; + } + continue; + } + + if (!currentSection) continue; + + const kvMatch = line.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*(.+)$/); + if (!kvMatch) continue; + + const key = kvMatch[1]; + const raw = kvMatch[2].trim(); + let value; + if (raw.startsWith('"') && raw.endsWith('"')) { + value = raw.slice(1, -1).replaceAll(/\\(["\\nrbt])/g, (_, c) => ({ '"': '"', '\\': '\\', n: '\n', r: '\r', b: '\b', t: '\t' })[c]); + } else if (raw === 'true') { + value = true; + } else if (raw === 'false') { + value = false; + } else if (raw !== '' && !isNaN(raw)) { + value = Number(raw); + } else { + value = raw; + } + result[currentSection][key] = value; + } + + return result; +} + module.exports = { OfficialModules }; From 9c291b7ca9e834122e35164de50cc478b2457396 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Revillard?= Date: Mon, 25 May 2026 21:05:59 +0200 Subject: [PATCH 25/26] fix: resolve default branch explicitly when updating shallow-cloned custom modules (#2332) With shallow clones (--depth 1), `origin/HEAD` becomes stale after the initial clone. The update path used `git reset --hard origin/HEAD` which never picked up new commits pushed to the default branch. Resolve the default branch name via `git symbolic-ref refs/remotes/origin/HEAD`, then fetch and reset against `origin/` explicitly. Falls back to `main` if origin/HEAD is not set. Co-authored-by: Brian --- .../modules/custom-module-manager.js | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/tools/installer/modules/custom-module-manager.js b/tools/installer/modules/custom-module-manager.js index e91deb34f..67f9cbad9 100644 --- a/tools/installer/modules/custom-module-manager.js +++ b/tools/installer/modules/custom-module-manager.js @@ -428,7 +428,27 @@ class CustomModuleManager { stdio: ['ignore', 'pipe', 'pipe'], }); } else { - execSync('git reset --hard origin/HEAD', { + // Resolve the default branch (origin/HEAD) and fetch it explicitly. + // With shallow clones, `origin/HEAD` is stale and `git reset --hard + // origin/HEAD` never picks up new commits on the default branch. + let defaultBranch = 'main'; + try { + defaultBranch = execSync('git symbolic-ref refs/remotes/origin/HEAD --short', { + cwd: repoCacheDir, + stdio: 'pipe', + }) + .toString() + .trim() + .replace('origin/', ''); + } catch { + // Fallback if origin/HEAD is not set + } + execSync(`git fetch --depth 1 origin ${quoteCustomRef(defaultBranch)}`, { + cwd: repoCacheDir, + stdio: ['ignore', 'pipe', 'pipe'], + env: { ...process.env, GIT_TERMINAL_PROMPT: '0' }, + }); + execSync(`git reset --hard origin/${quoteCustomRef(defaultBranch)}`, { cwd: repoCacheDir, stdio: ['ignore', 'pipe', 'pipe'], }); From 7b31b1accd52c63da0ac008ec54cf2c8fb203c40 Mon Sep 17 00:00:00 2001 From: Jacob du Toit Date: Mon, 25 May 2026 21:09:17 +0200 Subject: [PATCH 26/26] feat: expand advanced elicitation methods with 19 new techniques (#2062) Adds 19 new elicitation methods across 7 categories including a new 'framing' category. All existing 50 methods preserved. Entries sorted alphabetically by category then method name. New methods added: - advanced: Chain-of-Thought Scaffolding, Few-Shot Exemplar Priming - collaboration: Six Thinking Hats, Delphi Method - core: Second-Order Thinking, Inversion Analysis, Problem Decomposition, Analogy Mapping, Steelmanning - creative: Constraint Injection, Morphological Analysis - framing (new): Abstraction Laddering, Reframe the Question, Stakeholder Lens Rotation - learning: Deliberate Practice Loop - research: Source Triangulation - risk: Assumption Audit, Cascading Failure Simulation - technical: Boundary & Edge Case Sweep Closes #2061 Co-authored-by: Brian Co-authored-by: Alex Verkhovsky --- .../bmad-advanced-elicitation/methods.csv | 119 ++++++++++-------- 1 file changed, 69 insertions(+), 50 deletions(-) diff --git a/src/core-skills/bmad-advanced-elicitation/methods.csv b/src/core-skills/bmad-advanced-elicitation/methods.csv index fa563f5af..993fe107d 100644 --- a/src/core-skills/bmad-advanced-elicitation/methods.csv +++ b/src/core-skills/bmad-advanced-elicitation/methods.csv @@ -1,51 +1,70 @@ num,category,method_name,description,output_pattern -1,collaboration,Stakeholder Round Table,Convene multiple personas to contribute diverse perspectives - essential for requirements gathering and finding balanced solutions across competing interests,perspectives → synthesis → alignment -2,collaboration,Expert Panel Review,Assemble domain experts for deep specialized analysis - ideal when technical depth and peer review quality are needed,expert views → consensus → recommendations -3,collaboration,Debate Club Showdown,Two personas argue opposing positions while a moderator scores points - great for exploring controversial decisions and finding middle ground,thesis → antithesis → synthesis -4,collaboration,User Persona Focus Group,Gather your product's user personas to react to proposals and share frustrations - essential for validating features and discovering unmet needs,reactions → concerns → priorities -5,collaboration,Time Traveler Council,Past-you and future-you advise present-you on decisions - powerful for gaining perspective on long-term consequences vs short-term pressures,past wisdom → present choice → future impact -6,collaboration,Cross-Functional War Room,Product manager + engineer + designer tackle a problem together - reveals trade-offs between feasibility desirability and viability,constraints → trade-offs → balanced solution -7,collaboration,Mentor and Apprentice,Senior expert teaches junior while junior asks naive questions - surfaces hidden assumptions through teaching,explanation → questions → deeper understanding -8,collaboration,Good Cop Bad Cop,Supportive persona and critical persona alternate - finds both strengths to build on and weaknesses to address,encouragement → criticism → balanced view -9,collaboration,Improv Yes-And,Multiple personas build on each other's ideas without blocking - generates unexpected creative directions through collaborative building,idea → build → build → surprising result -10,collaboration,Customer Support Theater,Angry customer and support rep roleplay to find pain points - reveals real user frustrations and service gaps,complaint → investigation → resolution → prevention -11,advanced,Tree of Thoughts,Explore multiple reasoning paths simultaneously then evaluate and select the best - perfect for complex problems with multiple valid approaches,paths → evaluation → selection -12,advanced,Graph of Thoughts,Model reasoning as an interconnected network of ideas to reveal hidden relationships - ideal for systems thinking and discovering emergent patterns,nodes → connections → patterns -13,advanced,Thread of Thought,Maintain coherent reasoning across long contexts by weaving a continuous narrative thread - essential for RAG systems and maintaining consistency,context → thread → synthesis -14,advanced,Self-Consistency Validation,Generate multiple independent approaches then compare for consistency - crucial for high-stakes decisions where verification matters,approaches → comparison → consensus -15,advanced,Meta-Prompting Analysis,Step back to analyze the approach structure and methodology itself - valuable for optimizing prompts and improving problem-solving,current → analysis → optimization -16,advanced,Reasoning via Planning,Build a reasoning tree guided by world models and goal states - excellent for strategic planning and sequential decision-making,model → planning → strategy -17,competitive,Red Team vs Blue Team,Adversarial attack-defend analysis to find vulnerabilities - critical for security testing and building robust solutions,defense → attack → hardening -18,competitive,Shark Tank Pitch,Entrepreneur pitches to skeptical investors who poke holes - stress-tests business viability and forces clarity on value proposition,pitch → challenges → refinement -19,competitive,Code Review Gauntlet,Senior devs with different philosophies review the same code - surfaces style debates and finds consensus on best practices,reviews → debates → standards -20,technical,Architecture Decision Records,Multiple architect personas propose and debate architectural choices with explicit trade-offs - ensures decisions are well-reasoned and documented,options → trade-offs → decision → rationale -21,technical,Rubber Duck Debugging Evolved,Explain your code to progressively more technical ducks until you find the bug - forces clarity at multiple abstraction levels,simple → detailed → technical → aha -22,technical,Algorithm Olympics,Multiple approaches compete on the same problem with benchmarks - finds optimal solution through direct comparison,implementations → benchmarks → winner -23,technical,Security Audit Personas,Hacker + defender + auditor examine system from different threat models - comprehensive security review from multiple angles,vulnerabilities → defenses → compliance -24,technical,Performance Profiler Panel,Database expert + frontend specialist + DevOps engineer diagnose slowness - finds bottlenecks across the full stack,symptoms → analysis → optimizations -25,creative,SCAMPER Method,Apply seven creativity lenses (Substitute/Combine/Adapt/Modify/Put/Eliminate/Reverse) - systematic ideation for product innovation,S→C→A→M→P→E→R -26,creative,Reverse Engineering,Work backwards from desired outcome to find implementation path - powerful for goal achievement and understanding endpoints,end state → steps backward → path forward -27,creative,What If Scenarios,Explore alternative realities to understand possibilities and implications - valuable for contingency planning and exploration,scenarios → implications → insights -28,creative,Random Input Stimulus,Inject unrelated concepts to spark unexpected connections - breaks creative blocks through forced lateral thinking,random word → associations → novel ideas -29,creative,Exquisite Corpse Brainstorm,Each persona adds to the idea seeing only the previous contribution - generates surprising combinations through constrained collaboration,contribution → handoff → contribution → surprise -30,creative,Genre Mashup,Combine two unrelated domains to find fresh approaches - innovation through unexpected cross-pollination,domain A + domain B → hybrid insights -31,research,Literature Review Personas,Optimist researcher + skeptic researcher + synthesizer review sources - balanced assessment of evidence quality,sources → critiques → synthesis -32,research,Thesis Defense Simulation,Student defends hypothesis against committee with different concerns - stress-tests research methodology and conclusions,thesis → challenges → defense → refinements -33,research,Comparative Analysis Matrix,Multiple analysts evaluate options against weighted criteria - structured decision-making with explicit scoring,options → criteria → scores → recommendation -34,risk,Pre-mortem Analysis,Imagine future failure then work backwards to prevent it - powerful technique for risk mitigation before major launches,failure scenario → causes → prevention -35,risk,Failure Mode Analysis,Systematically explore how each component could fail - critical for reliability engineering and safety-critical systems,components → failures → prevention -36,risk,Challenge from Critical Perspective,Play devil's advocate to stress-test ideas and find weaknesses - essential for overcoming groupthink,assumptions → challenges → strengthening -37,risk,Identify Potential Risks,Brainstorm what could go wrong across all categories - fundamental for project planning and deployment preparation,categories → risks → mitigations -38,risk,Chaos Monkey Scenarios,Deliberately break things to test resilience and recovery - ensures systems handle failures gracefully,break → observe → harden -39,core,First Principles Analysis,Strip away assumptions to rebuild from fundamental truths - breakthrough technique for innovation and solving impossible problems,assumptions → truths → new approach -40,core,5 Whys Deep Dive,Repeatedly ask why to drill down to root causes - simple but powerful for understanding failures,why chain → root cause → solution -41,core,Socratic Questioning,Use targeted questions to reveal hidden assumptions and guide discovery - excellent for teaching and self-discovery,questions → revelations → understanding -42,core,Critique and Refine,Systematic review to identify strengths and weaknesses then improve - standard quality check for drafts,strengths/weaknesses → improvements → refined -43,core,Explain Reasoning,Walk through step-by-step thinking to show how conclusions were reached - crucial for transparency,steps → logic → conclusion -44,core,Expand or Contract for Audience,Dynamically adjust detail level and technical depth for target audience - matches content to reader capabilities,audience → adjustments → refined content -45,learning,Feynman Technique,Explain complex concepts simply as if teaching a child - the ultimate test of true understanding,complex → simple → gaps → mastery -46,learning,Active Recall Testing,Test understanding without references to verify true knowledge - essential for identifying gaps,test → gaps → reinforcement -47,philosophical,Occam's Razor Application,Find the simplest sufficient explanation by eliminating unnecessary complexity - essential for debugging,options → simplification → selection -48,philosophical,Trolley Problem Variations,Explore ethical trade-offs through moral dilemmas - valuable for understanding values and difficult decisions,dilemma → analysis → decision -49,retrospective,Hindsight Reflection,Imagine looking back from the future to gain perspective - powerful for project reviews,future view → insights → application -50,retrospective,Lessons Learned Extraction,Systematically identify key takeaways and actionable improvements - essential for continuous improvement,experience → lessons → actions +1,advanced,Tree of Thoughts,Explore multiple reasoning paths simultaneously then evaluate and select the best - perfect for complex problems with multiple valid approaches,paths → evaluation → selection +2,advanced,Graph of Thoughts,Model reasoning as an interconnected network of ideas to reveal hidden relationships - ideal for systems thinking and discovering emergent patterns,nodes → connections → patterns +3,advanced,Thread of Thought,Maintain coherent reasoning across long contexts by weaving a continuous narrative thread - essential for RAG systems and maintaining consistency,context → thread → synthesis +4,advanced,Self-Consistency Validation,Generate multiple independent approaches then compare for consistency - crucial for high-stakes decisions where verification matters,approaches → comparison → consensus +5,advanced,Meta-Prompting Analysis,Step back to analyze the approach structure and methodology itself - valuable for optimizing prompts and improving problem-solving,current → analysis → optimization +6,advanced,Reasoning via Planning,Build a reasoning tree guided by world models and goal states - excellent for strategic planning and sequential decision-making,model → planning → strategy +7,advanced,Chain-of-Thought Scaffolding,Force explicit intermediate reasoning steps before any conclusion — prevents intuitive leaps that skip flawed logic,premise → step → step → conclusion +8,advanced,Few-Shot Exemplar Priming,Provide 2-3 worked examples of the desired reasoning pattern before the real task — aligns output format and depth through demonstration,examples → pattern recognition → application +9,collaboration,Stakeholder Round Table,Convene multiple personas to contribute diverse perspectives - essential for requirements gathering and finding balanced solutions across competing interests,perspectives → synthesis → alignment +10,collaboration,Expert Panel Review,Assemble domain experts for deep specialized analysis - ideal when technical depth and peer review quality are needed,expert views → consensus → recommendations +11,collaboration,Debate Club Showdown,Two personas argue opposing positions while a moderator scores points - great for exploring controversial decisions and finding middle ground,thesis → antithesis → synthesis +12,collaboration,User Persona Focus Group,Gather your product's user personas to react to proposals and share frustrations - essential for validating features and discovering unmet needs,reactions → concerns → priorities +13,collaboration,Time Traveler Council,Past-you and future-you advise present-you on decisions - powerful for gaining perspective on long-term consequences vs short-term pressures,past wisdom → present choice → future impact +14,collaboration,Cross-Functional War Room,Product manager + engineer + designer tackle a problem together - reveals trade-offs between feasibility desirability and viability,constraints → trade-offs → balanced solution +15,collaboration,Mentor and Apprentice,Senior expert teaches junior while junior asks naive questions - surfaces hidden assumptions through teaching,explanation → questions → deeper understanding +16,collaboration,Good Cop Bad Cop,Supportive persona and critical persona alternate - finds both strengths to build on and weaknesses to address,encouragement → criticism → balanced view +17,collaboration,Improv Yes-And,Multiple personas build on each other's ideas without blocking - generates unexpected creative directions through collaborative building,idea → build → build → surprising result +18,collaboration,Customer Support Theater,Angry customer and support rep roleplay to find pain points - reveals real user frustrations and service gaps,complaint → investigation → resolution → prevention +19,collaboration,Six Thinking Hats,Rotate through six modes (facts - feelings - caution - optimism - creativity - process) to ensure a group covers every angle without crosstalk,white → red → black → yellow → green → blue +20,collaboration,Delphi Method,Experts give independent estimates - see anonymized results - then revise — converges on calibrated group judgment while avoiding anchoring bias,independent estimates → reveal → revise → converge +21,competitive,Red Team vs Blue Team,Adversarial attack-defend analysis to find vulnerabilities - critical for security testing and building robust solutions,defense → attack → hardening +22,competitive,Shark Tank Pitch,Entrepreneur pitches to skeptical investors who poke holes - stress-tests business viability and forces clarity on value proposition,pitch → challenges → refinement +23,competitive,Code Review Gauntlet,Senior devs with different philosophies review the same code - surfaces style debates and finds consensus on best practices,reviews → debates → standards +24,core,First Principles Analysis,Strip away assumptions to rebuild from fundamental truths - breakthrough technique for innovation and solving impossible problems,assumptions → truths → new approach +25,core,5 Whys Deep Dive,Repeatedly ask why to drill down to root causes - simple but powerful for understanding failures,why chain → root cause → solution +26,core,Socratic Questioning,Use targeted questions to reveal hidden assumptions and guide discovery - excellent for teaching and self-discovery,questions → revelations → understanding +27,core,Critique and Refine,Systematic review to identify strengths and weaknesses then improve - standard quality check for drafts,strengths/weaknesses → improvements → refined +28,core,Explain Reasoning,Walk through step-by-step thinking to show how conclusions were reached - crucial for transparency,steps → logic → conclusion +29,core,Expand or Contract for Audience,Dynamically adjust detail level and technical depth for target audience - matches content to reader capabilities,audience → adjustments → refined content +30,core,Second-Order Thinking,Think beyond immediate consequences to anticipate cascading effects and long-term implications - essential for strategic decisions where first-order solutions create hidden downstream problems,action → consequences → second-order effects → informed choice +31,core,Inversion Analysis,Flip the problem by asking what would guarantee failure instead of how to succeed - reveals hidden obstacles and blind spots by approaching challenges from the opposite direction,goal → invert → failure paths → avoidance → solution +32,core,Problem Decomposition,Break a complex problem into independent sub-problems - solve each - then reassemble — essential when a task is too large or tangled to tackle whole,whole → parts → solutions → reassembly +33,core,Analogy Mapping,Find a well-understood parallel domain and transfer its structure to the current problem — unlocks insight by borrowing proven mental models,source domain → mapping → target insight +34,core,Steelmanning,Construct the strongest possible version of an opposing argument before responding — builds credibility and catches blind spots that strawmanning misses,opposing view → strongest form → honest rebuttal +35,creative,SCAMPER Method,Apply seven creativity lenses (Substitute/Combine/Adapt/Modify/Put/Eliminate/Reverse) - systematic ideation for product innovation,S→C→A→M→P→E→R +36,creative,Reverse Engineering,Work backwards from desired outcome to find implementation path - powerful for goal achievement and understanding endpoints,end state → steps backward → path forward +37,creative,What If Scenarios,Explore alternative realities to understand possibilities and implications - valuable for contingency planning and exploration,scenarios → implications → insights +38,creative,Random Input Stimulus,Inject unrelated concepts to spark unexpected connections - breaks creative blocks through forced lateral thinking,random word → associations → novel ideas +39,creative,Exquisite Corpse Brainstorm,Each persona adds to the idea seeing only the previous contribution - generates surprising combinations through constrained collaboration,contribution → handoff → contribution → surprise +40,creative,Genre Mashup,Combine two unrelated domains to find fresh approaches - innovation through unexpected cross-pollination,domain A + domain B → hybrid insights +41,creative,Constraint Injection,Deliberately add an artificial limitation (budget - time - technology) to force novel solutions — creativity thrives under pressure,add constraint → forced creativity → remove constraint → evaluate +42,creative,Morphological Analysis,List independent parameters of a problem - enumerate options for each - then systematically combine — ensures you don't miss non-obvious configurations,parameters → options grid → combinations → evaluation +43,framing,Abstraction Laddering,"Move up (""why?"") for strategic clarity or down (""how?"") for tactical detail — ensures you're solving at the right altitude",concrete ↔ abstract → right level +44,framing,Reframe the Question,Challenge whether the stated problem is the real problem — often the question itself is wrong and a better framing unlocks an easy answer,stated problem → reframe → true problem → solution +45,framing,Stakeholder Lens Rotation,Serially adopt each stakeholder's world-view to see the same situation differently — reveals whose needs are being overlooked,perspective A → B → C → gaps found +46,learning,Feynman Technique,Explain complex concepts simply as if teaching a child - the ultimate test of true understanding,complex → simple → gaps → mastery +47,learning,Active Recall Testing,Test understanding without references to verify true knowledge - essential for identifying gaps,test → gaps → reinforcement +48,learning,Deliberate Practice Loop,Identify a specific sub-skill - drill it with immediate feedback - adjust - repeat — targeted improvement beats general repetition,isolate → drill → feedback → adjust → repeat +49,philosophical,Occam's Razor Application,Find the simplest sufficient explanation by eliminating unnecessary complexity - essential for debugging,options → simplification → selection +50,philosophical,Trolley Problem Variations,Explore ethical trade-offs through moral dilemmas - valuable for understanding values and difficult decisions,dilemma → analysis → decision +51,research,Literature Review Personas,Optimist researcher + skeptic researcher + synthesizer review sources - balanced assessment of evidence quality,sources → critiques → synthesis +52,research,Thesis Defense Simulation,Student defends hypothesis against committee with different concerns - stress-tests research methodology and conclusions,thesis → challenges → defense → refinements +53,research,Comparative Analysis Matrix,Multiple analysts evaluate options against weighted criteria - structured decision-making with explicit scoring,options → criteria → scores → recommendation +54,research,Source Triangulation,Require at least three independent source types (quantitative - qualitative - expert) before accepting a claim — guards against single-source bias,claim → source A → source B → source C → confidence rating +55,retrospective,Hindsight Reflection,Imagine looking back from the future to gain perspective - powerful for project reviews,future view → insights → application +56,retrospective,Lessons Learned Extraction,Systematically identify key takeaways and actionable improvements - essential for continuous improvement,experience → lessons → actions +57,risk,Pre-mortem Analysis,Imagine future failure then work backwards to prevent it - powerful technique for risk mitigation before major launches,failure scenario → causes → prevention +58,risk,Failure Mode Analysis,Systematically explore how each component could fail - critical for reliability engineering and safety-critical systems,components → failures → prevention +59,risk,Challenge from Critical Perspective,Play devil's advocate to stress-test ideas and find weaknesses - essential for overcoming groupthink,assumptions → challenges → strengthening +60,risk,Identify Potential Risks,Brainstorm what could go wrong across all categories - fundamental for project planning and deployment preparation,categories → risks → mitigations +61,risk,Chaos Monkey Scenarios,Deliberately break things to test resilience and recovery - ensures systems handle failures gracefully,break → observe → harden +62,risk,Assumption Audit,Explicitly list every assumption underlying a plan - rate each by confidence and impact - then stress-test the weakest — prevents building on shaky foundations,list → rate → stress-test → shore up +63,risk,Cascading Failure Simulation,Trace how one component's failure propagates through dependencies — reveals hidden coupling and single points of failure,trigger failure → trace propagation → find amplifiers → decouple +64,technical,Architecture Decision Records,Multiple architect personas propose and debate architectural choices with explicit trade-offs - ensures decisions are well-reasoned and documented,options → trade-offs → decision → rationale +65,technical,Rubber Duck Debugging Evolved,Explain your code to progressively more technical ducks until you find the bug - forces clarity at multiple abstraction levels,simple → detailed → technical → aha +66,technical,Algorithm Olympics,Multiple approaches compete on the same problem with benchmarks - finds optimal solution through direct comparison,implementations → benchmarks → winner +67,technical,Security Audit Personas,Hacker + defender + auditor examine system from different threat models - comprehensive security review from multiple angles,vulnerabilities → defenses → compliance +68,technical,Performance Profiler Panel,Database expert + frontend specialist + DevOps engineer diagnose slowness - finds bottlenecks across the full stack,symptoms → analysis → optimizations +69,technical,Boundary & Edge Case Sweep,Systematically test extremes - zeros - nulls - maximums - and type mismatches — catches the failures that happy-path thinking always misses,inputs → boundaries → edge cases → failures found