diff --git a/.augment/code_review_guidelines.yaml b/.augment/code_review_guidelines.yaml index 02e4f2b95..d2b33ef4d 100644 --- a/.augment/code_review_guidelines.yaml +++ b/.augment/code_review_guidelines.yaml @@ -56,17 +56,13 @@ areas: - "src/**/workflows/**" rules: - id: "workflow_entry_point_required" - description: "Every workflow folder must have workflow.yaml, workflow.md, or workflow.xml as entry point" + description: "Every workflow folder must have workflow.md as entry point" severity: "high" - id: "sharded_workflow_steps_folder" description: "Sharded workflows (using workflow.md) must have steps/ folder with numbered files (step-01-*.md, step-02-*.md)" severity: "high" - - id: "standard_workflow_instructions" - description: "Standard workflows using workflow.yaml must include instructions.md for execution guidance" - severity: "medium" - - id: "workflow_step_limit" description: "Workflows should have 5-10 steps maximum to prevent context loss in LLM execution" severity: "medium" @@ -75,11 +71,9 @@ areas: # WORKFLOW ENTRY FILE RULES # ============================================ workflow_definitions: - description: "Workflow entry files (workflow.yaml, workflow.md, workflow.xml)" + description: "Workflow entry files (workflow.md)" globs: - - "src/**/workflows/**/workflow.yaml" - "src/**/workflows/**/workflow.md" - - "src/**/workflows/**/workflow.xml" rules: - id: "workflow_name_required" description: "Workflow entry files must define 'name' field in frontmatter or root element" @@ -89,10 +83,6 @@ areas: description: "Workflow entry files must include 'description' explaining the workflow's purpose" severity: "high" - - id: "workflow_config_source" - description: "Workflows should reference config_source for variable resolution (e.g., {project-root}/_bmad/module/config.yaml)" - severity: "medium" - - id: "workflow_installed_path" description: "Workflows should define installed_path for relative file references within the workflow" severity: "medium" @@ -149,35 +139,6 @@ areas: description: "Steps presenting user menus ([C] Continue, [a] Advanced, etc.) must HALT and wait for response" severity: "high" - # ============================================ - # XML WORKFLOW/TASK RULES - # ============================================ - xml_workflows: - description: "XML-based workflows and tasks" - globs: - - "src/**/workflows/**/*.xml" - - "src/**/tasks/**/*.xml" - rules: - - id: "xml_task_id_required" - description: "XML tasks must have unique 'id' attribute on root task element" - severity: "high" - - - id: "xml_llm_instructions" - description: "XML workflows should include section with critical execution instructions for the agent" - severity: "medium" - - - id: "xml_step_numbering" - description: "XML steps should use n='X' attribute for sequential numbering" - severity: "medium" - - - id: "xml_action_tags" - description: "Use for required actions, for user input (must HALT), for jumps, for conditionals" - severity: "medium" - - - id: "xml_ask_must_halt" - description: " tags require agent to HALT and wait for user response before continuing" - severity: "high" - # ============================================ # WORKFLOW CONTENT QUALITY # ============================================ @@ -185,7 +146,6 @@ areas: description: "Content quality and consistency rules for all workflow files" globs: - "src/**/workflows/**/*.md" - - "src/**/workflows/**/*.yaml" rules: - id: "communication_language_variable" description: "Workflows should use {communication_language} variable for agent output language consistency" diff --git a/.claude/skills/bmad-os-audit-file-refs/SKILL.md b/.claude/skills/bmad-os-audit-file-refs/SKILL.md deleted file mode 100644 index 637bcfd33..000000000 --- a/.claude/skills/bmad-os-audit-file-refs/SKILL.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -name: bmad-os-audit-file-refs -description: Audit BMAD source files for file-reference convention violations using parallel Haiku subagents. Use when users requests an "audit file references" for a skill, workflow or task. ---- - -Read `prompts/instructions.md` and execute. diff --git a/.claude/skills/bmad-os-audit-file-refs/prompts/instructions.md b/.claude/skills/bmad-os-audit-file-refs/prompts/instructions.md deleted file mode 100644 index cf9e3d6e8..000000000 --- a/.claude/skills/bmad-os-audit-file-refs/prompts/instructions.md +++ /dev/null @@ -1,59 +0,0 @@ -# audit-file-refs - -Audit new-format BMAD source files for file-reference convention violations using parallel Haiku subagents. - -## Convention - -In new-format BMAD workflow and task files (`src/bmm/`, `src/core/`, `src/utility/`), every file path reference must use one of these **valid** forms: - -- `{project-root}/_bmad/path/to/file.ext` — canonical form, always correct -- `{installed_path}/relative/path` — valid in new-format step files (always defined by workflow.md before any step is reached) -- Template/runtime variables: `{nextStepFile}`, `{workflowFile}`, `{{mustache}}`, `{output_folder}`, `{communication_language}`, etc. — skip these, they are substituted at runtime - -**Flag any reference that uses:** - -- `./step-NN.md` or `../something.md` — relative paths -- `step-NN.md` — bare filename with no path prefix -- `steps/step-NN.md` — bare steps-relative path (missing `{project-root}/_bmad/...` prefix) -- `` `_bmad/core/tasks/help.md` `` — bare `_bmad/` path (missing `{project-root}/`) -- `/Users/...`, `/home/...`, `C:\...` — absolute system paths - -References inside fenced code blocks (``` ``` ```) are examples — skip them. - -Old-format files in `src/bmm/workflows/4-implementation/` use `{installed_path}` by design within the XML calling chain — exclude that directory entirely. - -## Steps - -1. Run this command to get the file list: - ``` - find src/bmm src/core src/utility -type f \( -name "*.md" -o -name "*.yaml" \) | grep -v "4-implementation" | sort - ``` - -2. Divide the resulting file paths into batches of roughly 20 files each. - -3. For each batch, spawn a subagent (`subagent_type: "Explore"`, `model: "haiku"`) with this prompt (fill in the actual file paths): - - > Read each of these files (use the Read tool on each): - > [list the file paths from this batch] - > - > For each file, identify every line that contains a file path reference that violates the convention described below. Skip references inside fenced code blocks. Skip template variables (anything containing `{` that isn't `{project-root}` or `{installed_path}`). - > - > **Valid references:** `{project-root}/_bmad/...`, `{installed_path}/...`, template variables. - > **Flag:** bare filenames (`step-NN.md`), `./` or `../` relative paths, bare `steps/` paths, bare `_bmad/` paths (without `{project-root}/`), absolute system paths. - > - > Return findings as a list: - > `path/to/file.md:LINE_NUMBER | VIOLATION_TYPE | offending text` - > - > If a file has no violations, include it as: `path/to/file.md | clean` - > - > End your response with a single line: `FILES CHECKED: N` where N is the exact number of files you read. - -4. Collect all findings from all subagents. - -5. **Self-check before reporting:** Count the total number of files returned by the `find` command. Sum the `FILES CHECKED: N` values across all subagent responses. If the totals do not match, identify which files are missing and re-run subagents for those files before proceeding. Do not produce the final report until all files are accounted for. - -6. Output a final report: - - Group findings by violation type - - List each finding as `file:line — offending text` - - Show total count of violations and number of affected files - - If nothing found, say "All files conform to the convention." diff --git a/.claude/skills/bmad-os-changelog-social/SKILL.md b/.claude/skills/bmad-os-changelog-social/SKILL.md deleted file mode 100644 index d2e5cda29..000000000 --- a/.claude/skills/bmad-os-changelog-social/SKILL.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -name: bmad-os-changelog-social -description: Generate social media announcements for Discord, Twitter, and LinkedIn from the latest changelog entry. Use when user asks to 'create release announcement' or 'create social posts' or share changelog updates. ---- - -# Changelog Social - -Generate engaging social media announcements from changelog entries. - -## Workflow - -### Step 1: Extract Changelog Entry - -Read `./CHANGELOG.md` and extract the latest version entry. The changelog follows this format: - -```markdown -## [VERSION] - -### 🎁 Features -* **Title** — Description - -### 🐛 Bug Fixes -* **Title** — Description - -### 📚 Documentation -* **Title** — Description - -### 🔧 Maintenance -* **Title** — Description -``` - -Parse: -- **Version number** (e.g., `6.0.0-Beta.5`) -- **Features** - New functionality, enhancements -- **Bug Fixes** - Fixes users will care about -- **Documentation** - New or improved docs -- **Maintenance** - Dependency updates, tooling improvements - -### Step 2: Get Git Contributors - -Use git log to find contributors since the previous version. Get commits between the current version tag and the previous one: - -```bash -# Find the previous version tag first -git tag --sort=-version:refname | head -5 - -# Get commits between versions with PR numbers and authors -git log .. --pretty=format:"%h|%s|%an" --grep="#" -``` - -Extract PR numbers from commit messages that contain `#` followed by digits. Compile unique contributors. - -### Step 3: Generate Discord Announcement - -**Limit: 2,000 characters per message.** Split into multiple messages if needed. - -Use this template style: - -```markdown -🚀 **BMad vVERSION RELEASED!** - -🎉 [Brief hype sentence] - -🪥 **KEY HIGHLIGHT** - [One-line summary] - -🎯 **CATEGORY NAME** -• Feature one - brief description -• Feature two - brief description -• Coming soon: Future teaser - -🔧 **ANOTHER CATEGORY** -• Fix or feature -• Another item - -📚 **DOCS OR OTHER** -• Item -• Item with link - -🌟 **COMMUNITY PHILOSOPHY** (optional - include for major releases) -• Everything is FREE - No paywalls -• Knowledge shared, not sold - -📊 **STATS** -X commits | Y PRs merged | Z files changed - -🙏 **CONTRIBUTORS** -@username1 (X PRs!), @username2 (Y PRs!) -@username3, @username4, username5 + dependabot 🛡️ -Community-driven FTW! 🌟 - -📦 **INSTALL:** -`npx bmad-method@VERSION install` - -⭐ **SUPPORT US:** -🌟 GitHub: github.com/bmad-code-org/BMAD-METHOD/ -📺 YouTube: youtube.com/@BMadCode -☕ Donate: buymeacoffee.com/bmad - -🔥 **Next version tease!** -``` - -**Content Strategy:** -- Focus on **user impact** - what's better for them? -- Highlight **annoying bugs fixed** that frustrated users -- Show **new capabilities** that enable workflows -- Keep it **punchy** - use emojis and short bullets -- Add **personality** - excitement, humor, gratitude - -### Step 4: Generate Twitter Post - -**Limit: 25,000 characters per tweet (Premium).** With Premium, use a single comprehensive post matching the Discord style (minus Discord-specific formatting). Aim for 1,500-3,000 characters for better engagement. - -**Threads are optional** — only use for truly massive releases where you want multiple engagement points. - -See `examples/twitter-example.md` for the single-post Premium format. - -## Content Selection Guidelines - -**Include:** -- New features that change workflows -- Bug fixes for annoying/blocking issues -- Documentation that helps users -- Performance improvements -- New agents or workflows -- Breaking changes (call out clearly) - -**Skip/Minimize:** -- Internal refactoring -- Dependency updates (unless user-facing) -- Test improvements -- Minor style fixes - -**Emphasize:** -- "Finally fixed" issues -- "Faster" operations -- "Easier" workflows -- "Now supports" capabilities - -## Examples - -Reference example posts in `examples/` for tone and formatting guidance: - -- **discord-example.md** — Full Discord announcement with emojis, sections, contributor shout-outs -- **twitter-example.md** — Twitter thread format (5 tweets max for major releases) -- **linkedin-example.md** — Professional post for major/minor releases with significant features - -**When to use LinkedIn:** -- Major version releases (e.g., v6.0.0 Beta, v7.0.0) -- Minor releases with exceptional new features -- Community milestone announcements - -Read the appropriate example file before generating to match the established style and voice. - -## Output Format - -**CRITICAL: ALWAYS write to files** - Create files in `_bmad-output/social/` directory: - -1. `{repo-name}-discord-{version}.md` - Discord announcement -2. `{repo-name}-twitter-{version}.md` - Twitter post -3. `{repo-name}-linkedin-{version}.md` - LinkedIn post (if applicable) - -Also present a preview in the chat: - -```markdown -## Discord Announcement - -[paste Discord content here] - -## Twitter Post - -[paste Twitter content here] -``` - -Files created: -- `_bmad-output/social/{filename}` - -Offer to make adjustments if the user wants different emphasis, tone, or content. diff --git a/.claude/skills/bmad-os-changelog-social/examples/discord-example.md b/.claude/skills/bmad-os-changelog-social/examples/discord-example.md deleted file mode 100644 index 325e8824e..000000000 --- a/.claude/skills/bmad-os-changelog-social/examples/discord-example.md +++ /dev/null @@ -1,53 +0,0 @@ -🚀 **BMad v6.0.0-alpha.23 RELEASED!** - -🎉 Huge update - almost beta! - -🪟 **WINDOWS INSTALLER FIXED** - Menu arrows issue should be fixed! CRLF & ESM problems resolved. - -🎯 **PRD WORKFLOWS IMPROVED** -• Validation & Edit workflows added! -• PRD Cohesion check ensures document flows beautifully -• Coming soon: Use of subprocess optimization (context saved!) -• Coming soon: Final format polish step in all workflows - Human consumption OR hyper-optimized LLM condensed initially! - -🔧 **WORKFLOW CREATOR & VALIDATOR** -• Subprocess support for advanced optimization -• Path violation checks ensure integrity -• Beyond error checking - offers optimization & flow suggestions! - -📚 **NEW DOCS SITE** - docs.bmad-method.org -• Diataxis framework: Tutorials, How-To, Explanations, References -• Current docs still being revised -• Tutorials, blogs & explainers coming soon! - -💡 **BRAINSTORMING REVOLUTION** -• 100+ idea goal (quantity-first!) -• Anti-bias protocol (pivot every 10 ideas) -• Chain-of-thought + simulated temperature prompts -• Coming soon: SubProcessing (on-the-fly sub agents) - -🌟 **COMMUNITY PHILOSOPHY** -• Everything is FREE - No paywalls, no gated content -• Knowledge shared, not sold -• No premium tiers - full access to our ideas - -📊 **27 commits | 217 links converted | 42+ docs created** - -🙏 **17 Community PR Authors in this release!** -@lum (6 PRs!), @q00 (3 PRs!), @phil (2 PRs!) -@mike, @alex, @ramiz, @sjennings + dependabot 🛡️ -Community-driven FTW! 🌟 - -📦 **INSTALL ALPHA:** -`npx bmad-method install` - -⭐ **SUPPORT US:** -🌟 GitHub: github.com/bmad-code-org/BMAD-METHOD/ -📺 YouTube: youtube.com/@BMadCode - -🎤 **SPEAKING & MEDIA** -Available for conferences, podcasts, media appearances! -Topics: AI-Native Organizations (Any Industry), BMad Method -DM on Discord for inquiries! - -🔥 **V6 Beta is DAYS away!** January 22nd ETA - new features such as xyz and abc bug fixes! diff --git a/.claude/skills/bmad-os-changelog-social/examples/linkedin-example.md b/.claude/skills/bmad-os-changelog-social/examples/linkedin-example.md deleted file mode 100644 index dc5919e65..000000000 --- a/.claude/skills/bmad-os-changelog-social/examples/linkedin-example.md +++ /dev/null @@ -1,49 +0,0 @@ -🚀 **Announcing BMad Method v6.0.0 Beta - AI-Native Agile Development Framework** - -I'm excited to share that BMad Method, the open-source AI-driven agile development framework, is entering Beta! After 27 alpha releases and countless community contributions, we're approaching a major milestone. - -**What's New in v6.0.0-alpha.23** - -🪟 **Windows Compatibility Fixed** -We've resolved the installer issues that affected Windows users. The menu arrows problem, CRLF handling, and ESM compatibility are all resolved. - -🎯 **Enhanced PRD Workflows** -Our Product Requirements Document workflows now include validation and editing capabilities, with a new cohesion check that ensures your documents flow beautifully. Subprocess optimization is coming soon to save even more context. - -🔧 **Workflow Creator & Validator** -New tools for creating and validating workflows with subprocess support, path violation checks, and optimization suggestions that go beyond simple error checking. - -📚 **New Documentation Platform** -We've launched docs.bmad-method.org using the Diataxis framework - providing clear separation between tutorials, how-to guides, explanations, and references. Our documentation is being continuously revised and expanded. - -💡 **Brainstorming Revolution** -Our brainstorming workflows now use research-backed techniques: 100+ idea goals, anti-bias protocols, chain-of-thought reasoning, and simulated temperature prompts for higher divergence. - -**Our Philosophy** - -Everything in BMad Method is FREE. No paywalls, no gated content, no premium tiers. We believe knowledge should be shared, not sold. This is community-driven development at its finest. - -**The Stats** -- 27 commits in this release -- 217 documentation links converted -- 42+ new documents created -- 17 community PR authors contributed - -**Get Started** - -``` -npx bmad-method@alpha install -``` - -**Learn More** -- GitHub: github.com/bmad-code-org/BMAD-METHOD -- YouTube: youtube.com/@BMadCode -- Docs: docs.bmad-method.org - -**What's Next?** - -Beta is just days away with an ETA of January 22nd. We're also available for conferences, podcasts, and media appearances to discuss AI-Native Organizations and the BMad Method. - -Have you tried BMad Method yet? I'd love to hear about your experience in the comments! - -#AI #SoftwareDevelopment #Agile #OpenSource #DevTools #LLM #AgentEngineering diff --git a/.claude/skills/bmad-os-changelog-social/examples/twitter-example.md b/.claude/skills/bmad-os-changelog-social/examples/twitter-example.md deleted file mode 100644 index d8a0feaed..000000000 --- a/.claude/skills/bmad-os-changelog-social/examples/twitter-example.md +++ /dev/null @@ -1,55 +0,0 @@ -🚀 **BMad v6.0.0-alpha.23 RELEASED!** - -Huge update - we're almost at Beta! 🎉 - -🪟 **WINDOWS INSTALLER FIXED** - Menu arrows issue should be fixed! CRLF & ESM problems resolved. - -🎯 **PRD WORKFLOWS IMPROVED** -• Validation & Edit workflows added! -• PRD Cohesion check ensures document flows beautifully -• Coming soon: Subprocess optimization (context saved!) -• Coming soon: Final format polish step in all workflows - -🔧 **WORKFLOW CREATOR & VALIDATOR** -• Subprocess support for advanced optimization -• Path violation checks ensure integrity -• Beyond error checking - offers optimization & flow suggestions! - -📚 **NEW DOCS SITE** - docs.bmad-method.org -• Diataxis framework: Tutorials, How-To, Explanations, References -• Current docs still being revised -• Tutorials, blogs & explainers coming soon! - -💡 **BRAINSTORMING REVOLUTION** -• 100+ idea goal (quantity-first!) -• Anti-bias protocol (pivot every 10 ideas) -• Chain-of-thought + simulated temperature prompts -• Coming soon: SubProcessing (on-the-fly sub agents) - -🌟 **COMMUNITY PHILOSOPHY** -• Everything is FREE - No paywalls, no gated content -• Knowledge shared, not sold -• No premium tiers - full access to our ideas - -📊 **27 commits | 217 links converted | 42+ docs created** - -🙏 **17 Community PR Authors in this release!** -@lum (6 PRs!), @q00 (3 PRs!), @phil (2 PRs!) -@mike, @alex, @ramiz, @sjennings + dependabot 🛡️ -Community-driven FTW! 🌟 - -📦 **INSTALL ALPHA:** -`npx bmad-method install` - -⭐ **SUPPORT US:** -🌟 GitHub: github.com/bmad-code-org/BMAD-METHOD/ -📺 YouTube: youtube.com/@BMadCode - -🎤 **SPEAKING & MEDIA** -Available for conferences, podcasts, media appearances! -Topics: AI-Native Organizations (Any Industry), BMad Method -DM on Discord for inquiries! - -🔥 **V6 Beta is DAYS away!** January 22nd ETA! - -#AI #DevTools #Agile #OpenSource #LLM #AgentEngineering diff --git a/.claude/skills/bmad-os-diataxis-style-fix/SKILL.md b/.claude/skills/bmad-os-diataxis-style-fix/SKILL.md deleted file mode 100644 index 8a4f69ae6..000000000 --- a/.claude/skills/bmad-os-diataxis-style-fix/SKILL.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -name: bmad-os-diataxis-style-fix -description: Fixes documentation to comply with Diataxis framework and BMad Method style guide rules. Use when user asks to check or fix style of files under the docs folder. ---- - -Read `prompts/instructions.md` and execute. diff --git a/.claude/skills/bmad-os-diataxis-style-fix/prompts/instructions.md b/.claude/skills/bmad-os-diataxis-style-fix/prompts/instructions.md deleted file mode 100644 index 827e39115..000000000 --- a/.claude/skills/bmad-os-diataxis-style-fix/prompts/instructions.md +++ /dev/null @@ -1,229 +0,0 @@ -# Diataxis Style Fixer - -Automatically fixes documentation to comply with the Diataxis framework and BMad Method style guide. - -## CRITICAL RULES - -- **NEVER commit or push changes** — let the user review first -- **NEVER make destructive edits** — preserve all content, only fix formatting -- **Use Edit tool** — make targeted fixes, not full file rewrites -- **Show summary** — after fixing, list all changes made - -## Input - -Documentation file path or directory to fix. Defaults to `docs/` if not specified. - -## Step 1: Understand Diataxis Framework - -**Diataxis** is a documentation framework that categorizes content into four types based on two axes: - -| | **Learning** (oriented toward future) | **Doing** (oriented toward present) | -| -------------- | ----------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| **Practical** | **Tutorials** — lessons that guide learners through achieving a specific goal | **How-to guides** — step-by-step instructions for solving a specific problem | -| **Conceptual** | **Explanation** — content that clarifies and describes underlying concepts | **Reference** — technical descriptions, organized for lookup | - -**Key principles:** -- Each document type serves a distinct user need -- Don't mix types — a tutorial shouldn't explain concepts deeply -- Focus on the user's goal, not exhaustive coverage -- Structure follows purpose (tutorials are linear, reference is scannable) - -## Step 2: Read the Style Guide - -Read the project's style guide at `docs/_STYLE_GUIDE.md` to understand all project-specific conventions. - -## Step 3: Detect Document Type - -Based on file location, determine the document type: - -| Location | Diataxis Type | -| -------------------- | -------------------- | -| `/docs/tutorials/` | Tutorial | -| `/docs/how-to/` | How-to guide | -| `/docs/explanation/` | Explanation | -| `/docs/reference/` | Reference | -| `/docs/glossary/` | Reference (glossary) | - -## Step 4: Find and Fix Issues - -For each markdown file, scan for issues and fix them: - -### Universal Fixes (All Doc Types) - -**Horizontal Rules (`---`)** -- Remove any `---` outside of YAML frontmatter -- Replace with `##` section headers or admonitions as appropriate - -**`####` Headers** -- Replace with bold text: `#### Header` → `**Header**` -- Or convert to admonition if it's a warning/notice - -**"Related" or "Next:" Sections** -- Remove entire section including links -- The sidebar handles navigation - -**Deeply Nested Lists** -- Break into sections with `##` headers -- Flatten to max 3 levels - -**Code Blocks for Dialogue/Examples** -- Convert to admonitions: - ``` - :::note[Example] - [content] - ::: - ``` - -**Bold Paragraph Callouts** -- Convert to admonitions with appropriate type - -**Too Many Admonitions** -- Limit to 1-2 per section (tutorials allow 3-4 per major section) -- Consolidate related admonitions -- Remove less critical ones if over limit - -**Table Cells / List Items > 2 Sentences** -- Break into multiple rows/cells -- Or shorten to 1-2 sentences - -**Header Budget Exceeded** -- Merge related sections -- Convert some `##` to `###` subsections -- Goal: 8-12 `##` per doc; 2-3 `###` per section - -### Type-Specific Fixes - -**Tutorials** (`/docs/tutorials/`) -- Ensure hook describes outcome in 1-2 sentences -- Add "What You'll Learn" bullet section if missing -- Add `:::note[Prerequisites]` if missing -- Add `:::tip[Quick Path]` TL;DR at top if missing -- Use tables for phases, commands, agents -- Add "What You've Accomplished" section if missing -- Add Quick Reference table if missing -- Add Common Questions section if missing -- Add Getting Help section if missing -- Add `:::tip[Key Takeaways]` at end if missing - -**How-To** (`/docs/how-to/`) -- Ensure hook starts with "Use the `X` workflow to..." -- Add "When to Use This" with 3-5 bullets if missing -- Add `:::note[Prerequisites]` if missing -- Ensure steps are numbered `###` with action verbs -- Add "What You Get" describing outputs if missing - -**Explanation** (`/docs/explanation/`) -- Ensure hook states what document explains -- Organize content into scannable `##` sections -- Add comparison tables for 3+ options -- Link to how-to guides for procedural questions -- Limit to 2-3 admonitions per document - -**Reference** (`/docs/reference/`) -- Ensure hook states what document references -- Ensure structure matches reference type -- Use consistent item structure throughout -- Use tables for structured/comparative data -- Link to explanation docs for conceptual depth -- Limit to 1-2 admonitions per document - -**Glossary** (`/docs/glossary/` or glossary files) -- Ensure categories as `##` headers -- Ensure terms in tables (not individual headers) -- Definitions 1-2 sentences max -- Bold term names in cells - -## Step 5: Apply Fixes - -For each file with issues: -1. Read the file -2. Use Edit tool for each fix -3. Track what was changed - -## Step 6: Summary - -After processing all files, output a summary: - -```markdown -# Style Fixes Applied - -**Files processed:** N -**Files modified:** N - -## Changes Made - -### `path/to/file.md` -- Removed horizontal rule at line 45 -- Converted `####` headers to bold text -- Added `:::tip[Quick Path]` admonition -- Consolidated 3 admonitions into 2 - -### `path/to/other.md` -- Removed "Related:" section -- Fixed table cell length (broke into 2 rows) - -## Review Required - -Please review the changes. When satisfied, commit and push as needed. -``` - -## Common Patterns - -**Converting `####` to bold:** -```markdown -#### Important Note -Some text here. -``` -→ -```markdown -**Important Note** - -Some text here. -``` - -**Removing horizontal rule:** -```markdown -Some content above. - ---- - -Some content below. -``` -→ -```markdown -Some content above. - -## [Descriptive Section Header] - -Some content below. -``` - -**Converting code block to admonition:** -```markdown -``` -User: What should I do? - -Agent: Run the workflow. -``` -``` -→ -```markdown -:::note[Example] - -**User:** What should I do? - -**Agent:** Run the workflow. - -::: -``` - -**Converting bold paragraph to admonition:** -```markdown -**IMPORTANT:** This is critical that you read this before proceeding. -``` -→ -```markdown -:::caution[Important] -This is critical that you read this before proceeding. -::: -``` diff --git a/.claude/skills/bmad-os-draft-changelog/SKILL.md b/.claude/skills/bmad-os-draft-changelog/SKILL.md deleted file mode 100644 index aab75dd98..000000000 --- a/.claude/skills/bmad-os-draft-changelog/SKILL.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -name: bmad-os-draft-changelog -description: "Analyzes changes since last release and updates CHANGELOG.md ONLY. Use when users requests 'update the changelog' or 'prepare changelog release notes'" ---- - -Read `prompts/instructions.md` and execute. diff --git a/.claude/skills/bmad-os-draft-changelog/prompts/instructions.md b/.claude/skills/bmad-os-draft-changelog/prompts/instructions.md deleted file mode 100644 index ef3feccef..000000000 --- a/.claude/skills/bmad-os-draft-changelog/prompts/instructions.md +++ /dev/null @@ -1,82 +0,0 @@ -# Draft Changelog Execution - -## ⚠️ IMPORTANT - READ FIRST - -**This skill ONLY updates CHANGELOG.md. That is its entire purpose.** - -- **DO** update CHANGELOG.md with the new version entry -- **DO** present the draft for user review before editing -- **DO NOT** trigger any GitHub release workflows -- **DO NOT** run any other skills or workflows automatically -- **DO NOT** make any commits - -After the changelog is complete, you may suggest the user can run `/release-module` if they want to proceed with the actual release — but NEVER trigger it yourself. - -## Input -Project path (or run from project root) - -## Step 1: Identify Current State -- Get the latest released tag -- Get current version -- Verify there are commits since the last release - -## Step 2: Launch Explore Agent - -Use `thoroughness: "very thorough"` to analyze all changes since the last release tag. - -**Key: For each merge commit, look up the merged PR/issue that was closed.** -- Use `gh pr view` or git commit body to find the PR number -- Read the PR description and comments to understand full context -- Don't rely solely on commit merge messages - they lack context - -**Analyze:** - -1. **All merges/commits** since the last tag -2. **For each merge, read the original PR/issue** that was closed -3. **Files changed** with statistics -4. **Categorize changes:** - - 🎁 **Features** - New functionality, new agents, new workflows - - 🐛 **Bug Fixes** - Fixed bugs, corrected issues - - ♻️ **Refactoring** - Code improvements, reorganization - - 📚 **Documentation** - Docs updates, README changes - - 🔧 **Maintenance** - Dependency updates, tooling, infrastructure - - 💥 **Breaking Changes** - Changes that may affect users - -**Provide:** -- Comprehensive summary of ALL changes with PR context -- Categorization of each change -- Identification of breaking changes -- Significance assessment (major/minor/trivial) - -## Step 3: Generate Draft Changelog - -Format: -```markdown -## v0.X.X - [Date] - -* [Change 1 - categorized by type] -* [Change 2] -``` - -Guidelines: -- Present tense ("Fix bug" not "Fixed bug") -- Most significant changes first -- Group related changes -- Clear, concise language -- For breaking changes, clearly indicate impact - -## Step 4: Present Draft & Update CHANGELOG.md - -Show the draft with current version, last tag, commit count, and options to edit/retry. - -When user accepts: -1. Update CHANGELOG.md with the new entry (insert at top, after `# Changelog` header) -2. STOP. That's it. You're done. - -You may optionally suggest: *"When ready, you can run `/release-module` to create the actual release."* - -**DO NOT:** -- Trigger any GitHub workflows -- Run any other skills -- Make any commits -- Do anything beyond updating CHANGELOG.md diff --git a/.claude/skills/bmad-os-findings-triage/SKILL.md b/.claude/skills/bmad-os-findings-triage/SKILL.md deleted file mode 100644 index 4dd0afe72..000000000 --- a/.claude/skills/bmad-os-findings-triage/SKILL.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -name: bmad-os-findings-triage -description: Orchestrate HITL triage of review findings using parallel agents. Use when the user says 'triage these findings' or 'run findings triage' or has a batch of review findings to process. ---- - -Read `prompts/instructions.md` and execute. diff --git a/.claude/skills/bmad-os-findings-triage/prompts/agent-prompt.md b/.claude/skills/bmad-os-findings-triage/prompts/agent-prompt.md deleted file mode 100644 index 8bc6c2dca..000000000 --- a/.claude/skills/bmad-os-findings-triage/prompts/agent-prompt.md +++ /dev/null @@ -1,104 +0,0 @@ -# Finding Agent: {{TASK_ID}} — {{TASK_SUBJECT}} - -You are a finding agent in the `{{TEAM_NAME}}` triage team. You own exactly one finding and will shepherd it through research, planning, human conversation, and a final decision. - -## Your Assignment - -- **Task:** `{{TASK_ID}}` -- **Finding:** `{{FINDING_ID}}` — {{FINDING_TITLE}} -- **Severity:** {{SEVERITY}} -- **Team:** `{{TEAM_NAME}}` -- **Team Lead:** `{{TEAM_LEAD_NAME}}` - -## Phase 1 — Research (autonomous) - -1. Read your task details with `TaskGet("{{TASK_ID}}")`. -2. Read the relevant source files to understand the finding in context: -{{FILE_LIST}} - If no specific files are listed above, use codebase search to locate code relevant to the finding. - -If a context document was provided: -- Also read this context document for background: {{CONTEXT_DOC}} - -If an initial triage was provided: -- **Note:** The team lead triaged this as **{{INITIAL_TRIAGE}}** — {{TRIAGE_RATIONALE}}. Evaluate whether this triage is correct and incorporate your assessment into your plan. - -**Rules for research:** -- Work autonomously. Do not ask the team lead or the human for help during research. -- Use `Read`, `Grep`, `Glob`, and codebase search tools to understand the codebase. -- Trace call chains, check tests, read related code — be thorough. -- Form your own opinion on whether this finding is real, a false positive, or somewhere in between. - -## Phase 2 — Plan (display only) - -Prepare a plan for dealing with this finding. The plan MUST cover: - -1. **Assessment** — Is this finding real? What is the actual risk or impact? -2. **Recommendation** — One of: fix it, accept the risk (wontfix), dismiss as not a real issue, or reject as a false positive. -3. **If recommending a fix:** Describe the specific changes — which files, what modifications, why this approach. -4. **If recommending against fixing:** Explain the reasoning — existing mitigations, acceptable risk, false positive rationale. - -**Display the plan in your output.** Write it clearly so the human can read it directly. Follow the plan with a 2-5 line summary of the finding itself. - -**CRITICAL: Do NOT send your plan or analysis to the team lead.** The team lead does not need your plan — the human reads it from your output stream. Sending full plans to the team lead wastes its context window. - -## Phase 3 — Signal Ready - -After displaying your plan, send exactly this to the team lead: - -``` -SendMessage({ - type: "message", - recipient: "{{TEAM_LEAD_NAME}}", - content: "{{FINDING_ID}} ready for HITL", - summary: "{{FINDING_ID}} ready for review" -}) -``` - -Then **stop and wait**. Do not proceed until the human engages with you. - -## Phase 4 — HITL Conversation - -The human will review your plan and talk to you directly. This is a real conversation, not a rubber stamp: - -- The human may agree immediately, push back, ask questions, or propose alternatives. -- Answer questions thoroughly. Refer back to specific code you read. -- If the human wants a fix, **apply it** — edit the source files, verify the change makes sense. -- If the human disagrees with your assessment, update your recommendation. -- Stay focused on THIS finding only. Do not discuss other findings. -- **Do not send a decision until the human explicitly states a verdict.** Acknowledging your plan is NOT a decision. Wait for clear direction like "fix it", "dismiss", "reject", "skip", etc. - -## Phase 5 — Report Decision - -When the human reaches a decision, send exactly ONE message to the team lead: - -``` -SendMessage({ - type: "message", - recipient: "{{TEAM_LEAD_NAME}}", - content: "DECISION {{FINDING_ID}} {{TASK_ID}} [CATEGORY] | [one-sentence summary]", - summary: "{{FINDING_ID}} [CATEGORY]" -}) -``` - -Where `[CATEGORY]` is one of: - -| Category | Meaning | -|----------|---------| -| **SKIP** | Human chose to skip without full review. | -| **DEFER** | Human chose to defer to a later session. | -| **FIX** | Change applied. List the file paths changed and what each change was (use a parseable format: `files: path1, path2`). | -| **WONTFIX** | Real finding, not worth fixing now. State why. | -| **DISMISS** | Not a real finding or mitigated by existing design. State the mitigation. | -| **REJECT** | False positive from the reviewer. State why it is wrong. | - -After sending the decision, **go idle and wait for shutdown**. Do not take any further action. The team lead will send you a shutdown request — approve it. - -## Rules - -- You own ONE finding. Do not touch files unrelated to your finding unless required for the fix. -- Your plan is for the human's eyes — display it in your output, never send it to the team lead. -- Your only messages to the team lead are: (1) ready for HITL, (2) final decision. Nothing else. -- If you cannot form a confident plan (ambiguous finding, missing context), still signal ready for HITL and explain what you are unsure about. The HITL conversation will resolve it. -- If the human tells you to skip or defer, report the decision as `SKIP` or `DEFER` per the category table above. -- When you receive a shutdown request, approve it immediately. diff --git a/.claude/skills/bmad-os-findings-triage/prompts/instructions.md b/.claude/skills/bmad-os-findings-triage/prompts/instructions.md deleted file mode 100644 index 41e4a591b..000000000 --- a/.claude/skills/bmad-os-findings-triage/prompts/instructions.md +++ /dev/null @@ -1,286 +0,0 @@ -# Findings Triage — Team Lead Orchestration - -You are the team lead for a findings triage session. Your job is bookkeeping: parse findings, spawn agents, track status, record decisions, and clean up. You are NOT an analyst — the agents do the analysis and the human makes the decisions. - -**Be minimal.** Short confirmations. No editorializing. No repeating what agents already said. - ---- - -## Phase 1 — Setup - -### 1.1 Determine Input Source - -The human will provide findings in one of three ways: - -1. **A findings report file** — a markdown file with structured findings. Read the file. -2. **A pre-populated task list** — tasks already exist. Call `TaskList` to discover them. - - If tasks are pre-populated: skip section 1.2 (parsing) and section 1.4 (task creation). Extract finding details from existing task subjects and descriptions. Number findings based on task order. Proceed from section 1.3 (pre-spawn checks). -3. **Inline findings** — pasted directly in conversation. Parse them. - -Also accept optional parameters: -- **Working directory / worktree path** — where source files live (default: current working directory). -- **Initial triage** per finding — upstream assessment (real / noise / undecided) with rationale. -- **Context document** — a design doc, plan, or other background file path to pass to agents. - -### 1.2 Parse Findings - -Extract from each finding: -- **Title / description** -- **Severity** (Critical / High / Medium / Low) -- **Relevant file paths** -- **Initial triage** (if provided) - -Number findings sequentially: F1, F2, ... Fn. If severity cannot be determined for a finding, default to `UNKNOWN` and note it in the task subject: `F{n} [UNKNOWN] {title}`. - -**If no findings are extracted** (empty file, blank input), inform the human and halt. Do not proceed to task creation or team setup. - -**If the input is unstructured or ambiguous:** Parse best-effort and display the parsed list to the human. Ask for confirmation before proceeding. Do NOT spawn agents until confirmed. - -### 1.3 Pre-Spawn Checks - -**Large batch (>25 findings):** -HALT. Tell the human: -> "There are {N} findings. Spawning {N} agents at once may overwhelm the system. I recommend processing in waves of ~20. Proceed with all at once, or batch into waves?" - -Wait for the human to decide. If batching, record wave assignments (Wave 1: F1-F20, Wave 2: F21-Fn). - -**Same-file conflicts:** -Scan all findings for overlapping file paths. If two or more findings reference the same file, warn — enumerating ALL findings that share each file: -> "Findings {Fa}, {Fb}, {Fc}, ... all reference `{file}`. Concurrent edits may conflict. Serialize these agents (process one before the other) or proceed in parallel?" - -Wait for the human to decide. If the human chooses to serialize: do not spawn the second (and subsequent) agents for that file until the first has reported its decision and been shut down. Track serialization pairs and spawn the held agent after its predecessor completes. - -### 1.4 Create Tasks - -For each finding, create a task: - -``` -TaskCreate({ - subject: "F{n} [{SEVERITY}] {title}", - description: "{full finding details}\n\nFiles: {file paths}\n\nInitial triage: {triage or 'none'}", - activeForm: "Analyzing F{n}" -}) -``` - -Record the mapping: finding number -> task ID. - -### 1.5 Create Team - -``` -TeamCreate({ - team_name: "{review-type}-triage", - description: "HITL triage of {N} findings from {source}" -}) -``` - -Use a contextual name based on the review type (e.g., `pr-review-triage`, `prompt-audit-triage`, `code-review-triage`). If unsure, use `findings-triage`. - -After creating the team, note your own registered team name for the agent prompt template. Use your registered team name as the value for `{{TEAM_LEAD_NAME}}` when filling the agent prompt. If unsure of your name, read the team config at `~/.claude/teams/{team-name}/config.json` to find your own entry in the members list. - -### 1.6 Spawn Agents - -Read the agent prompt template from `prompts/agent-prompt.md`. - -For each finding, spawn one agent using the Agent tool with these parameters: -- `name`: `f{n}-agent` -- `team_name`: the team name from 1.5 -- `subagent_type`: `general-purpose` -- `model`: `opus` (explicitly set — reasoning-heavy analysis requires a frontier model) -- `prompt`: the agent template with all placeholders filled in: - - `{{TEAM_NAME}}` — the team name - - `{{TEAM_LEAD_NAME}}` — your registered name in the team (from 1.5) - - `{{TASK_ID}}` — the task ID from 1.4 - - `{{TASK_SUBJECT}}` — the task subject - - `{{FINDING_ID}}` — `F{n}` - - `{{FINDING_TITLE}}` — the finding title - - `{{SEVERITY}}` — the severity level - - `{{FILE_LIST}}` — bulleted list of file paths (each prefixed with `- `) - - `{{CONTEXT_DOC}}` — path to context document, or remove the block if none - - `{{INITIAL_TRIAGE}}` — triage assessment, or remove the block if none - - `{{TRIAGE_RATIONALE}}` — rationale for the triage, or remove the block if none - -Spawn ALL agents for the current wave in a single message (parallel). If batching, spawn only the current wave. - -After spawning, print: - -``` -All {N} agents spawned. They will research their findings and signal when ready for your review. -``` - -Initialize the scorecard (internal state): - -``` -Scorecard: -- Total: {N} -- Pending: {N} -- Ready for review: 0 -- Completed: 0 -- Decisions: FIX=0 WONTFIX=0 DISMISS=0 REJECT=0 SKIP=0 DEFER=0 -``` - ---- - -## Phase 2 — HITL Review Loop - -### 2.1 Track Agent Readiness - -Agents will send messages matching: `F{n} ready for HITL` - -When received: -- Note which finding is ready. -- Update the internal status tracker. -- Print a short status line: `F{n} ready. ({ready_count}/{total} ready, {completed}/{total} done)` - -Do NOT print agent plans, analysis, or recommendations. The human reads those directly from the agent output. - -### 2.2 Status Dashboard - -When the human asks for status (or periodically when useful), print: - -``` -=== Triage Status === -Ready for review: F3, F7, F11 -Still analyzing: F1, F5, F9 -Completed: F2 (FIX), F4 (DISMISS), F6 (REJECT) - {completed}/{total} done -=== -``` - -Keep it compact. No decoration beyond what is needed. - -### 2.3 Process Decisions - -Agents will send messages matching: `DECISION F{n} {task_id} [CATEGORY] | [summary]` - -When received: -1. **Update the task** — first call `TaskGet("{task_id}")` to read the current task description, then prepend the decision: - ``` - TaskUpdate({ - taskId: "{task_id}", - status: "completed", - description: "DECISION: {CATEGORY} | {summary}\n\n{existing description}" - }) - ``` -2. **Update the scorecard** — increment the decision category counter. If the decision is FIX, extract the file paths mentioned in the summary (look for the `files:` prefix) and add them to the files-changed list for the final scorecard. -3. **Shut down the agent:** - ``` - SendMessage({ - type: "shutdown_request", - recipient: "f{n}-agent", - content: "Decision recorded. Shutting down." - }) - ``` -4. **Print confirmation:** `F{n} closed: {CATEGORY}. {remaining} remaining.` - -### 2.4 Human-Initiated Skip/Defer - -If the human wants to skip or defer a finding without full engagement: - -1. Send the decision to the agent, replacing `{CATEGORY}` with the human's chosen category (`SKIP` or `DEFER`): - ``` - SendMessage({ - type: "message", - recipient: "f{n}-agent", - content: "Human decision: {CATEGORY} this finding. Report {CATEGORY} as your decision and go idle.", - summary: "F{n} {CATEGORY} directive" - }) - ``` -2. Wait for the agent to report the decision back (it will send `DECISION F{n} ... {CATEGORY}`). -3. Process as a normal decision (2.3). - -If the agent has not yet signaled ready, the message will queue and be processed when it finishes research. - -If the human requests skip/defer for a finding where an HITL conversation is already underway, send the directive to the agent. The agent should end the current conversation and report the directive category as its decision. - -### 2.5 Wave Batching (if >25 findings) - -When the current wave is complete (all findings resolved): -1. Print wave summary. -2. Ask: `"Wave {W} complete. Spawn wave {W+1} ({count} findings)? (y/n)"` -3. If yes, before spawning the next wave, re-run the same-file conflict check (1.3) for the new wave's findings, including against any still-open findings from previous waves. Then repeat Phase 1.4 (task creation) and 1.6 (agent spawning) only. Do NOT call TeamCreate again — the team already exists. -4. If the human declines, treat unspawned findings as not processed. Proceed to Phase 3 wrap-up. Note the count of unprocessed findings in the final scorecard. -5. Carry the scorecard forward across waves. - ---- - -## Phase 3 — Wrap-up - -When all findings across all waves are resolved: - -### 3.1 Final Scorecard - -``` -=== Final Triage Scorecard === - -Total findings: {N} - - FIX: {count} - WONTFIX: {count} - DISMISS: {count} - REJECT: {count} - SKIP: {count} - DEFER: {count} - -Files changed: - - {file1} - - {file2} - ... - -Findings: - F1 [{SEVERITY}] {title} — {DECISION} - F2 [{SEVERITY}] {title} — {DECISION} - ... - -=== End Triage === -``` - -### 3.2 Shutdown Remaining Agents - -Send shutdown requests to any agents still alive (there should be none if all decisions were processed, but handle stragglers): - -``` -SendMessage({ - type: "shutdown_request", - recipient: "f{n}-agent", - content: "Triage complete. Shutting down." -}) -``` - -### 3.3 Offer to Save - -Ask the human: -> "Save the scorecard to a file? (y/n)" - -If yes, write the scorecard to `_bmad-output/triage-reports/triage-{YYYY-MM-DD}-{team-name}.md`. - -### 3.4 Delete Team - -``` -TeamDelete() -``` - ---- - -## Edge Cases Reference - -| Situation | Response | -|-----------|----------| -| >25 findings | HALT, suggest wave batching, wait for human decision | -| Same-file conflict | Warn, suggest serializing, wait for human decision | -| Unstructured input | Parse best-effort, display list, confirm before spawning | -| Agent signals uncertainty | Normal — the HITL conversation resolves it | -| Human skips/defers | Send directive to agent, process decision when reported | -| Agent goes idle unexpectedly | Send a message to check status; agents stay alive until explicit shutdown | -| Human asks to re-open a completed finding | Not supported in this session; suggest re-running triage on that finding | -| All agents spawned but none ready yet | Tell the human agents are still analyzing; no action needed | - ---- - -## Behavioral Rules - -1. **Be minimal.** Short confirmations, compact dashboards. Do not repeat agent analysis. -2. **Never auto-close.** Every finding requires a human decision. No exceptions. -3. **One agent per finding.** Never batch multiple findings into one agent. -4. **Protect your context window.** Agents display plans in their output, not in messages to you. If an agent sends you a long message, acknowledge it briefly and move on. -5. **Track everything.** Finding number, task ID, agent name, decision, files changed. You are the single source of truth for the session. -6. **Respect the human's pace.** They review in whatever order they want. Do not rush them. Do not suggest which finding to review next unless asked. diff --git a/.claude/skills/bmad-os-gh-triage/SKILL.md b/.claude/skills/bmad-os-gh-triage/SKILL.md deleted file mode 100644 index 020fdd4e2..000000000 --- a/.claude/skills/bmad-os-gh-triage/SKILL.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -name: bmad-os-gh-triage -description: Analyze all github issues. Use when the user says 'triage the github issues' or 'analyze open github issues'. ---- - -Read `prompts/instructions.md` and execute. diff --git a/.claude/skills/bmad-os-gh-triage/prompts/agent-prompt.md b/.claude/skills/bmad-os-gh-triage/prompts/agent-prompt.md deleted file mode 100644 index 5c0d7d8d8..000000000 --- a/.claude/skills/bmad-os-gh-triage/prompts/agent-prompt.md +++ /dev/null @@ -1,60 +0,0 @@ -You are analyzing a batch of GitHub issues for deep understanding and triage. - -**YOUR TASK:** -Read the issues in your batch and provide DEEP analysis: - -1. **For EACH issue, analyze:** - - What is this ACTUALLY about? (beyond keywords) - - What component/system does it affect? - - What's the impact and severity? - - Is it a bug, feature request, or something else? - - What specific theme does it belong to? - -2. **PRIORITY ASSESSMENT:** - - CRITICAL: Blocks users, security issues, data loss, broken installers - - HIGH: Major functionality broken, important features missing - - MEDIUM: Workarounds available, minor bugs, nice-to-have features - - LOW: Edge cases, cosmetic issues, questions - -3. **RELATIONSHIPS:** - - Duplicates: Near-identical issues about the same problem - - Related: Issues connected by theme or root cause - - Dependencies: One issue blocks or requires another - -**YOUR BATCH:** -[Paste the batch of issues here - each with number, title, body, labels] - -**OUTPUT FORMAT (JSON only, no markdown):** -{ - "issues": [ - { - "number": 123, - "title": "issue title", - "deep_understanding": "2-3 sentences explaining what this is really about", - "affected_components": ["installer", "workflows", "docs"], - "issue_type": "bug/feature/question/tech-debt", - "priority": "CRITICAL/HIGH/MEDIUM/LOW", - "priority_rationale": "Why this priority level", - "theme": "installation/workflow/integration/docs/ide-support/etc", - "relationships": { - "duplicates_of": [456], - "related_to": [789, 101], - "blocks": [111] - } - } - ], - "cross_repo_issues": [ - {"number": 123, "target_repo": "bmad-builder", "reason": "about agent builder"} - ], - "cleanup_candidates": [ - {"number": 456, "reason": "v4-related/outdated/duplicate"} - ], - "themes_found": { - "Installation Blockers": { - "count": 5, - "root_cause": "Common pattern if identifiable" - } - } -} - -Return ONLY valid JSON. No explanations outside the JSON structure. diff --git a/.claude/skills/bmad-os-gh-triage/prompts/instructions.md b/.claude/skills/bmad-os-gh-triage/prompts/instructions.md deleted file mode 100644 index 782d23268..000000000 --- a/.claude/skills/bmad-os-gh-triage/prompts/instructions.md +++ /dev/null @@ -1,74 +0,0 @@ -# GitHub Issue Triage with AI Analysis - -**CRITICAL RULES:** -- NEVER include time or effort estimates in output or recommendations -- Focus on WHAT needs to be done, not HOW LONG it takes -- Use Bash tool with gh CLI for all GitHub operations - -## Execution - -### Step 1: Fetch Issues -Use `gh issue list --json number,title,body,labels` to fetch all open issues. - -### Step 2: Batch Creation -Split issues into batches of ~10 issues each for parallel analysis. - -### Step 3: Parallel Agent Analysis -For EACH batch, use the Task tool with `subagent_type=general-purpose` to launch an agent with prompt from `prompts/agent-prompt.md` - -### Step 4: Consolidate & Generate Report -After all agents complete, create a comprehensive markdown report saved to `_bmad-output/triage-reports/triage-YYYY-MM-DD.md` - -## Report Format - -### Executive Summary -- Total issues analyzed -- Issue count by priority (CRITICAL, HIGH, MEDIUM, LOW) -- Major themes discovered -- Top 5 critical issues requiring immediate attention - -### Critical Issues (CRITICAL Priority) -For each CRITICAL issue: -- **#123 - [Issue Title](url)** -- **What it's about:** [Deep understanding] -- **Affected:** [Components] -- **Why Critical:** [Rationale] -- **Suggested Action:** [Specific action] - -### High Priority Issues (HIGH Priority) -Same format as Critical, grouped by theme. - -### Theme Clusters -For each major theme: -- **Theme Name** (N issues) -- **What connects these:** [Pattern] -- **Root cause:** [If identifiable] -- **Consolidated actions:** [Bulk actions if applicable] -- **Issues:** #123, #456, #789 - -### Relationships & Dependencies -- **Duplicates:** List pairs with `gh issue close` commands -- **Related Issues:** Groups of related issues -- **Dependencies:** Blocking relationships - -### Cross-Repo Issues -Issues that should be migrated to other repositories. - -For each, provide: -``` -gh issue close XXX --repo CURRENT_REPO --comment "This issue belongs in REPO. Please report at https://github.com/TARGET_REPO/issues/new" -``` - -### Cleanup Candidates -- **v4-related:** Deprecated version issues with close commands -- **Stale:** No activity >30 days -- **Low priority + old:** Low priority issues >60 days old - -### Actionable Next Steps -Specific, prioritized actions: -1. [CRITICAL] Fix broken installer - affects all new users -2. [HIGH] Resolve Windows path escaping issues -3. [HIGH] Address workflow integration bugs -etc. - -Include `gh` commands where applicable for bulk actions. diff --git a/.claude/skills/bmad-os-release-module/SKILL.md b/.claude/skills/bmad-os-release-module/SKILL.md deleted file mode 100644 index 557381ee0..000000000 --- a/.claude/skills/bmad-os-release-module/SKILL.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -name: bmad-os-release-module -description: Perform requested version bump, git tag, npm publish, GitHub release. Use when user requests 'perform a release' only. ---- - -Read `prompts/instructions.md` and execute. diff --git a/.claude/skills/bmad-os-release-module/prompts/instructions.md b/.claude/skills/bmad-os-release-module/prompts/instructions.md deleted file mode 100644 index 157ce0b33..000000000 --- a/.claude/skills/bmad-os-release-module/prompts/instructions.md +++ /dev/null @@ -1,53 +0,0 @@ -# Release BMad Module Execution - -## Input -Project path (or run from project root) - -## Execution Steps - -### Step 1: Get Current State -- Verify git working tree is clean -- Get latest tag and current version -- Check for unpushed commits - -### Step 2: Get Changelog Entry - -Ask the user for the changelog entry (from draft-changelog skill or manual). - -### Step 3: Confirm Changelog - -Show project name, current version, proposed next version, and changelog. Get confirmation. - -### Step 4: Confirm Version Bump Type - -Ask what type of bump: patch, minor, major, prerelease, or custom. - -### Step 5: Update CHANGELOG.md - -Insert new entry at top, commit, and push. - -### Step 6: Bump Version - -Run `npm version` to update package.json, create commit, and create tag. - -### Step 7: Push Tag - -Push the new version tag to GitHub. - -### Step 8: Publish to npm - -Publish the package. - -### Step 9: Create GitHub Release - -Create release with changelog notes using `gh release create`. - -## Error Handling - -Stop immediately on any step failure. Inform user and suggest fix. - -## Important Notes - -- Wait for user confirmation before destructive operations -- Push changelog commit before version bump -- Use explicit directory paths in commands diff --git a/.claude/skills/bmad-os-review-pr/SKILL.md b/.claude/skills/bmad-os-review-pr/SKILL.md deleted file mode 100644 index 8adc6d031..000000000 --- a/.claude/skills/bmad-os-review-pr/SKILL.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -name: bmad-os-review-pr -description: Dual-layer PR review tool (Raven's Verdict). Runs adversarial cynical review and edge case hunter in parallel, merges and deduplicates findings into professional engineering output. Use when user asks to 'review a PR' and provides a PR url or id. ---- - -Read `prompts/instructions.md` and execute. diff --git a/.claude/skills/bmad-os-review-pr/prompts/instructions.md b/.claude/skills/bmad-os-review-pr/prompts/instructions.md deleted file mode 100644 index 74512128e..000000000 --- a/.claude/skills/bmad-os-review-pr/prompts/instructions.md +++ /dev/null @@ -1,288 +0,0 @@ -# Raven's Verdict - Deep PR Review Tool - -A cynical adversarial review, transformed into cold engineering professionalism. - -## CRITICAL: Sandboxed Execution Rules - -Before proceeding, you MUST verify: - -- [ ] PR number or URL was EXPLICITLY provided in the user's message -- [ ] You are NOT inferring the PR from conversation history -- [ ] You are NOT looking at git branches, recent commits, or local state -- [ ] You are NOT guessing or assuming any PR numbers - -**If no explicit PR number/URL was provided, STOP immediately and ask:** -"What PR number or URL should I review?" - -## Preflight Checks - -### 0.1 Parse PR Input - -Extract PR number from user input. Examples of valid formats: - -- `123` (just the number) -- `#123` (with hash) -- `https://github.com/owner/repo/pull/123` (full URL) - -If a URL specifies a different repository than the current one: - -```bash -# Check current repo -gh repo view --json nameWithOwner -q '.nameWithOwner' -``` - -If mismatch detected, ask user: - -> "This PR is from `{detected_repo}` but we're in `{current_repo}`. Proceed with reviewing `{detected_repo}#123`? (y/n)" - -If user confirms, store `{REPO}` for use in all subsequent `gh` commands. - -### 0.2 Ensure Clean Checkout - -Verify the working tree is clean and check out the PR branch. - -```bash -# Check for uncommitted changes -git status --porcelain -``` - -If output is non-empty, STOP and tell user: - -> "You have uncommitted changes. Please commit or stash them before running a PR review." - -If clean, fetch and checkout the PR branch: - -```bash -# Fetch and checkout PR branch -# For cross-repo PRs, include --repo {REPO} -gh pr checkout {PR_NUMBER} [--repo {REPO}] -``` - -If checkout fails, STOP and report the error. - -Now you're on the PR branch with full access to all files as they exist in the PR. - -### 0.3 Check PR Size - -```bash -# For cross-repo PRs, include --repo {REPO} -gh pr view {PR_NUMBER} [--repo {REPO}] --json additions,deletions,changedFiles -q '{"additions": .additions, "deletions": .deletions, "files": .changedFiles}' -``` - -**Size thresholds:** - -| Metric | Warning Threshold | -| ------------- | ----------------- | -| Files changed | > 50 | -| Lines changed | > 5000 | - -If thresholds exceeded, ask user: - -> "This PR has {X} files and {Y} line changes. That's large. -> -> **[f] Focus** - Pick specific files or directories to review -> **[p] Proceed** - Review everything (may be slow/expensive) -> **[a] Abort** - Stop here" - -### 0.4 Note Binary Files - -```bash -# For cross-repo PRs, include --repo {REPO} -gh pr diff {PR_NUMBER} [--repo {REPO}] --name-only | grep -E '\.(png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot|pdf|zip|tar|gz|bin|exe|dll|so|dylib)$' || echo "No binary files detected" -``` - -Store list of binary files to skip. Note them in final output. - -## Review Layers - -**Launch steps 1.1 and 1.2 as parallel subagents.** Both receive the same PR diff and run concurrently. Wait for both to complete before proceeding to step 1.3. - -### 1.1 Run Cynical Review (subagent) - -Spawn a subagent with the following prompt. Pass the full PR diff as context. - -**INTERNAL PERSONA - Never post this directly:** - -Task: You are a cynical, jaded code reviewer with zero patience for sloppy work. This PR was submitted by a clueless weasel and you expect to find problems. Find at least five issues to fix or improve in it. Number them. Be skeptical of everything. - -Output format: - -```markdown -### [NUMBER]. [FINDING TITLE] [likely] - -**Severity:** [EMOJI] [LEVEL] - -[DESCRIPTION - be specific, include file:line references] -``` - -Severity scale: - -| Level | Emoji | Meaning | -| -------- | ----- | ------------------------------------------------------- | -| Critical | 🔴 | Security issue, data loss risk, or broken functionality | -| Moderate | 🟡 | Bug, performance issue, or significant code smell | -| Minor | 🟢 | Style, naming, minor improvement opportunity | - -Likely tag: - -- Add `[likely]` to findings with high confidence, e.g. with direct evidence -- Sort findings by severity (Critical → Moderate → Minor), not by confidence - -### 1.2 Run Edge Case Hunter (subagent) - -Spawn a subagent that executes the task defined in `_bmad/core/tasks/review-edge-case-hunter.xml`. Pass the full PR diff as the `content` input. Omit `also_consider` unless the user specified extra focus areas. - -The task returns a JSON array of objects, each with: `location`, `trigger_condition`, `guard_snippet`, `potential_consequence`. - -**Map each JSON finding to the standard finding format:** - -````markdown -### [NUMBER]. [trigger_condition] [likely] - -**Severity:** [INFERRED_EMOJI] [INFERRED_LEVEL] - -**`[location]`** — [trigger_condition]. [potential_consequence]. - -**Suggested fix:** -``` -[guard_snippet] -``` -```` - -Severity inference rules for edge case findings: - -- **Critical** — data loss, security, or crash conditions (null deref, unhandled throw, auth bypass) -- **Moderate** — logic errors, silent wrong results, race conditions -- **Minor** — cosmetic edge cases, unlikely boundary conditions - -Add `[likely]` to all edge case findings — they are derived from mechanical path tracing, so confidence is inherently high. - -If the edge case hunter returns zero findings or halts, note it internally and proceed — step 1.1 findings still stand. - -### 1.3 Merge and Deduplicate - -Combine the findings from step 1.1 (adversarial) and step 1.2 (edge case hunter) into a single list. - -**Deduplication rules:** - -1. Compare each edge case finding against each adversarial finding -2. Two findings are duplicates if they reference the same file location AND describe the same gap (use description similarity — same function/variable/condition mentioned) -3. When a duplicate is found, keep the version with more specificity (usually the edge case hunter's, since it includes `guard_snippet`) -4. Mark the kept finding with the source that produced it - -**After dedup, renumber all findings sequentially and sort by severity (Critical → Moderate → Minor).** - -Tag each finding with its source: - -- `[Adversarial]` — from step 1.1 only -- `[Edge Case]` — from step 1.2 only -- `[Both]` — flagged by both layers (deduped) - -## Tone Transformation - -**Transform the merged findings into cold engineering professionalism.** - -**Transformation rules:** - -1. Remove all inflammatory language, insults, assumptions about the author -2. Keep all technical substance, file references, severity ratings, likely tag, and **source tags** -3. Replace accusatory phrasing with neutral observations: - - ❌ "The author clearly didn't think about..." - - ✅ "This implementation may not account for..." -4. Preserve skepticism as healthy engineering caution: - - ❌ "This will definitely break in production" - - ✅ "This pattern has historically caused issues in production environments" -5. Add the suggested fixes. -6. Keep suggestions actionable and specific -7. Edge case hunter findings need no persona cleanup, but still apply professional formatting consistently - -Output format after transformation: - -```markdown -## PR Review: #{PR_NUMBER} - -**Title:** {PR_TITLE} -**Author:** @{AUTHOR} -**Branch:** {HEAD} → {BASE} -**Review layers:** Adversarial + Edge Case Hunter - ---- - -### Findings - -[TRANSFORMED FINDINGS HERE — each tagged with source] - ---- - -### Summary - -**Critical:** {COUNT} | **Moderate:** {COUNT} | **Minor:** {COUNT} -**Sources:** {ADVERSARIAL_COUNT} adversarial | {EDGE_CASE_COUNT} edge case | {BOTH_COUNT} both - -[BINARY_FILES_NOTE if any] - ---- - -_Review generated by Raven's Verdict. LLM-produced analysis - findings may be incorrect or lack context. Verify before acting._ -``` - -## Post Review - -### 3.1 Preview - -Display the complete transformed review to the user. - -``` -══════════════════════════════════════════════════════ -PREVIEW - This will be posted to PR #{PR_NUMBER} -══════════════════════════════════════════════════════ - -[FULL REVIEW CONTENT] - -══════════════════════════════════════════════════════ -``` - -### 3.2 Confirm - -Ask user for explicit confirmation: - -> **Ready to post this review to PR #{PR_NUMBER}?** -> -> **[y] Yes** - Post as comment -> **[n] No** - Abort, do not post -> **[e] Edit** - Let me modify before posting -> **[s] Save only** - Save locally, don't post - -### 3.3 Post or Save - -**Write review to a temp file, then post:** - -1. Write the review content to a temp file with a unique name (include PR number to avoid collisions) -2. Post using `gh pr comment {PR_NUMBER} [--repo {REPO}] --body-file {path}` -3. Delete the temp file after successful post - -Do NOT use heredocs or `echo` - Markdown code blocks will break shell parsing. Use your file writing tool instead. - -**If auth fails or post fails:** - -1. Display error prominently: - - ``` - ⚠️ FAILED TO POST REVIEW - Error: {ERROR_MESSAGE} - ``` - -2. Keep the temp file and tell the user where it is, so they can post manually with: - `gh pr comment {PR_NUMBER} [--repo {REPO}] --body-file {path}` - -**If save only (s):** - -Keep the temp file and inform user of location. - -## Notes - -- The "cynical asshole" phase is internal only - never posted -- Tone transform MUST happen before any external output -- When in doubt, ask the user - never assume -- If you're unsure about severity, err toward higher severity -- If you're unsure about confidence, be honest and use Medium or Low diff --git a/.claude/skills/bmad-os-review-prompt/SKILL.md b/.claude/skills/bmad-os-review-prompt/SKILL.md deleted file mode 100644 index bee9c128f..000000000 --- a/.claude/skills/bmad-os-review-prompt/SKILL.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -name: bmad-os-review-prompt -description: Review LLM workflow step prompts for known failure modes (silent ignoring, negation fragility, scope creep, etc). Use when user asks to "review a prompt" or "audit a workflow step". ---- - -# Prompt Review Skill: PromptSentinel v1.2 - -**Version:** v1.2 -**Date:** March 2026 -**Target Models:** Frontier LLMs (Claude 4.6, GPT-5.3, Gemini 3.1 Pro and equivalents) executing autonomous multi-step workflows at million-executions-per-day scale -**Purpose:** Detect and eliminate LLM-specific failure modes that survive generic editing, few-shot examples, and even multi-layer prompting. Output is always actionable, quoted, risk-quantified, and mitigation-ready. - ---- - -### System Role (copy verbatim into reviewer agent) - -You are **PromptSentinel v1.2**, a Prompt Auditor for production-grade LLM agent systems. - -Your sole objective is to prevent silent, non-deterministic, or cascading failures in prompts that will be executed millions of times daily across heterogeneous models, tool stacks, and sub-agent contexts. - -**Core Principles (required for every finding)** -- Every finding must populate all columns of the output table defined in the Strict Output Format section. -- Every finding must include: exact quote/location, failure mode ID or "ADV" (adversarial) / "PATH" (path-trace), production-calibrated risk, and a concrete mitigation with positive, deterministic rewritten example. -- Assume independent sub-agent contexts, variable context-window pressure, and model variance. - ---- - -### Mandatory Review Procedure - -Execute steps in order. Steps 0-1 run sequentially. Steps 2A/2B/2C run in parallel. Steps 3-4 run sequentially after all parallel tracks complete. - ---- - -**Step 0: Input Validation** -If the input is not a clear LLM instruction prompt (raw code, data table, empty, or fewer than 50 tokens), output exactly: -`INPUT_NOT_A_PROMPT: [one-sentence reason]. Review aborted.` -and stop. - -**Step 1: Context & Dependency Inventory** -Parse the entire prompt. Derive the **Prompt Title** as follows: -- First # or ## heading if present, OR -- Filename if provided, OR -- First complete sentence (truncated to 80 characters). - -Build an explicit inventory table listing: -- All numbered/bulleted steps -- All variables, placeholders, file references, prior-step outputs -- All conditionals, loops, halts, tool calls -- All assumptions about persistent memory or ordering - -Flag any unresolved dependencies. -Step 1 is complete when the full inventory table is populated. - -This inventory is shared context for all three parallel tracks below. - ---- - -### Step 2: Three Parallel Review Tracks - -Launch all three tracks concurrently. Each track produces findings in the same table format. Tracks are independent — no track reads another track's output. - ---- - -**Track A: Adversarial Review (sub-agent)** - -Spawn a sub-agent with the following brief and the full prompt text. Give it the Step 1 inventory for reference. Give it NO catalog, NO checklist, and NO further instructions beyond this brief: - -> You are reviewing an LLM prompt that will execute millions of times daily across different models. Find every way this prompt could fail, produce wrong results, or behave inconsistently. For each issue found, provide: exact quote or location, what goes wrong at scale, and a concrete fix. Use only training knowledge — rely on your own judgment, not any external checklist. - -Track A is complete when the sub-agent returns its findings. - ---- - -**Track B: Catalog Scan + Execution Simulation (main agent)** - -**B.1 — Failure Mode Audit** -Scan the prompt against all 17 failure modes in the catalog below. Quote every relevant instance. For modes with zero findings, list them in a single summary line (e.g., "Modes 3, 7, 10, 12: no instances found"). -B.1 is complete when every mode has been explicitly checked. - -**B.2 — Execution Simulation** -Simulate the prompt under 3 scenarios: -- Scenario A: Small-context model (32k window) under load -- Scenario B: Large-context model (200k window), fresh session -- Scenario C: Different model vendor with weaker instruction-following - -For each scenario, produce one row in this table: - -| Scenario | Likely Failure Location | Failure Mode | Expected Symptom | -|----------|-------------------------|--------------|------------------| - -B.2 is complete when the table contains 3 fully populated rows. - -Track B is complete when both B.1 and B.2 are finished. - ---- - -**Track C: Prompt Path Tracer (sub-agent)** - -Spawn a sub-agent with the following brief, the full prompt text, and the Step 1 inventory: - -> You are a mechanical path tracer for LLM prompts. Walk every execution path through this prompt — every conditional, branch, loop, halt, optional step, tool call, and error path. For each path, determine: is the entry condition unambiguous? Is there a defined done-state? Are all required inputs guaranteed to be available? Report only paths with gaps — discard clean paths silently. -> -> For each finding, provide: -> - **Location**: step/section reference -> - **Path**: the specific conditional or branch -> - **Gap**: what is missing (unclear entry, no done-state, unresolved input) -> - **Fix**: concrete rewrite that closes the gap - -Track C is complete when the sub-agent returns its findings. - ---- - -**Step 3: Merge & Deduplicate** - -Collect all findings from Tracks A, B, and C. Tag each finding with its source (ADV, catalog mode number, or PATH). Deduplicate by exact quote — when multiple tracks flag the same issue, keep the finding with the most specific mitigation and note all sources. - -Assign severity to each finding: Critical / High / Medium / Low. - -Step 3 is complete when the merged, deduplicated, severity-scored findings table is populated. - -**Step 4: Final Synthesis** - -Format the entire review using the Strict Output Format below. Emit the complete review only after Step 3 is finished. - ---- - -### Complete Failure Mode Catalog (Track B — scan all 17) - -1. **Silent Ignoring** — Instructions buried mid-paragraph, nested >2-deep conditionals, parentheticals, or "also remember to..." after long text. -2. **Ambiguous Completion** — Steps with no observable done-state or verification criterion ("think about it", "finalize"). -3. **Context Window Assumptions** — References to "previous step output", "the file we created earlier", or variables not re-passed. -4. **Over-specification vs Under-specification** — Wall-of-text detail causing selective attention OR vague verbs inviting hallucination. -5. **Non-deterministic Phrasing** — "Consider", "you may", "if appropriate", "best way", "optionally", "try to". -6. **Negation Fragility** — "Do NOT", "avoid", "never" (especially multiple or under load). -7. **Implicit Ordering** — Step B assumes Step A completed without explicit sequencing or guardrails. -8. **Variable Resolution Gaps** — `{{VAR}}` or "the result from tool X" never initialized upstream. -9. **Scope Creep Invitation** — "Explore", "improve", "make it better", open-ended goals without hard boundaries. -10. **Halt / Checkpoint Gaps** — Human-in-loop required but no explicit `STOP_AND_WAIT_FOR_HUMAN` or output format that forces pause. -11. **Teaching Known Knowledge** — Re-explaining basic facts, tool usage, or reasoning patterns frontier models already know (2026 cutoff). -12. **Obsolete Prompting Techniques** — Outdated patterns (vanilla "think step by step" without modern scaffolding, deprecated few-shot styles). -13. **Missing Strict Output Schema** — No enforced JSON mode or structured output format. -14. **Missing Error Handling** — No recovery instructions for tool failures, timeouts, or malformed inputs. -15. **Missing Success Criteria** — No quality gates or measurable completion standards. -16. **Monolithic Prompt Anti-pattern** — Single large prompt that should be split into specialized sub-agents. -17. **Missing Grounding Instructions** — Factual claims required without explicit requirement to base them on retrieved evidence. - ---- - -### Strict Output Format (use this template exactly as shown) - -```markdown -# PromptSentinel Review: [Derived Prompt Title] - -**Overall Risk Level:** Critical / High / Medium / Low -**Critical Issues:** X | **High:** Y | **Medium:** Z | **Low:** W -**Estimated Production Failure Rate if Unfixed:** ~XX% of runs - -## Critical & High Findings -| # | Source | Failure Mode | Exact Quote / Location | Risk (High-Volume) | Mitigation & Rewritten Example | -|---|--------|--------------|------------------------|--------------------|-------------------------------| -| | | | | | | - -## Medium & Low Findings -(same table format) - -## Positive Observations -(only practices that actively mitigate known failure modes) - -## Recommended Refactor Summary -- Highest-leverage changes (bullets) - -## Revised Prompt Sections (Critical/High items only) -Provide full rewritten paragraphs/sections with changes clearly marked. - -**Reviewer Confidence:** XX/100 -**Review Complete** – ready for re-submission or automated patching. -``` diff --git a/.claude/skills/bmad-os-root-cause-analysis/SKILL.md b/.claude/skills/bmad-os-root-cause-analysis/SKILL.md deleted file mode 100644 index 237f32b4a..000000000 --- a/.claude/skills/bmad-os-root-cause-analysis/SKILL.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -name: bmad-os-root-cause-analysis -description: Analyzes a bug-fix commit or PR and produces a structured Root Cause Analysis report covering what went wrong, why, and what guardrails failed. -license: MIT -disable-model-invocation: true -metadata: - author: bmad-code-org - version: "1.0.0" -compatibility: Requires gh CLI and git repository ---- - -Read `prompts/instructions.md` and execute. diff --git a/.claude/skills/bmad-os-root-cause-analysis/prompts/instructions.md b/.claude/skills/bmad-os-root-cause-analysis/prompts/instructions.md deleted file mode 100644 index e36cfca33..000000000 --- a/.claude/skills/bmad-os-root-cause-analysis/prompts/instructions.md +++ /dev/null @@ -1,74 +0,0 @@ -# Bug-Fix Root Cause Analysis - -Analyze a bug-fix commit or PR and produce a structured Root Cause Analysis report. - -## Principles - -- **Direct attribution.** This report names the individual who introduced the defect. Industry convention advocates blameless postmortems. This skill deliberately deviates: naming the individual and trusting them to own it is more respectful than diffusing accountability into systemic abstraction. Direct, factual, not accusatory. If authorship can't be determined confidently, say so. -- **Pyramid communication.** The executive summary must convey the full picture. A reader who stops after the first paragraph gets the gist. Everything else is supporting evidence. - -## Preflight - -Verify `gh auth status` and that you're in a git repository. Stop with a clear message if either fails. - -## Execution - -1. **Identify the fix.** Accept whatever the user provides — commit SHA, PR, issue, description. Resolve to the specific fix commit/PR using `gh` and `git`. If ambiguous, ask. Confirm the change is actually a bug fix before proceeding. -2. **Gather evidence.** Read the fix diff, PR/issue discussion, and use blame/log to identify the commit that introduced the bug. Collect timeline data. -3. **Analyze.** Apply 5 Whys. Classify the root cause. Identify contributing factors. -4. **Evaluate guardrails.** Inspect the actual repo configuration (CI workflows, linter configs, test setup) — don't assume. For each applicable guardrail, explain specifically why it missed this bug. -5. **Write the report** to `_bmad-output/rca-reports/rca-{YYYY-MM-DD}-{slug}.md`. Present the executive summary in chat. - -## Report Structure - -```markdown -# Root Cause Analysis: {Bug Title} - -**Date:** {today} -**Fix:** {PR link or commit SHA} -**Severity:** {Critical | High | Medium | Low} -**Root Cause Category:** {Requirements | Design | Code Logic | Test Gap | Process | Environment/Config} - -## Executive Summary - -{One paragraph. What the bug was, root cause, who introduced it and when, detection -latency (introduced → detected), severity, and the key preventive recommendation.} - -## What Was the Problem? - -## When Did It Happen? - -| Event | Date | Reference | -|-------|------|-----------| -| Introduced | | | -| Detected | | | -| Fixed | | | -| **Detection Latency** | **{introduced → detected}** | | - -## Who Caused It? - -{Author, commit/PR that introduced the defect, and the context — what were they -trying to do?} - -## How Did It Happen? - -## Why Did It Happen? - -{5 Whys analysis. Root cause category. Contributing factors.} - -## Failed Guardrails Analysis - -| Guardrail | In Place? | Why It Failed | -|-----------|-----------|---------------| -| | | | - -**Most Critical Failure:** {Which one mattered most and why.} - -## Resolution - -## Corrective & Preventive Actions - -| # | Action | Type | Priority | -|---|--------|------|----------| -| | | {Prevent/Detect/Mitigate} | | -``` diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml new file mode 100644 index 000000000..759ea2621 --- /dev/null +++ b/.github/workflows/publish.yaml @@ -0,0 +1,141 @@ +name: Publish + +on: + push: + branches: [main] + paths: + - "src/**" + - "tools/cli/**" + - "package.json" + workflow_dispatch: + inputs: + channel: + description: "Publish channel" + required: true + default: "latest" + type: choice + options: + - latest + - next + bump: + description: "Version bump type (latest channel only)" + required: false + default: "patch" + type: choice + options: + - patch + - minor + - major + +concurrency: + group: publish + cancel-in-progress: ${{ github.event_name == 'push' }} + +permissions: + id-token: write + contents: write + +jobs: + publish: + if: github.repository == 'bmad-code-org/BMAD-METHOD' && (github.event_name != 'workflow_dispatch' || github.ref == 'refs/heads/main') + runs-on: ubuntu-latest + steps: + - name: Generate GitHub App token + id: app-token + if: github.event_name == 'workflow_dispatch' && inputs.channel == 'latest' + uses: actions/create-github-app-token@v2 + with: + app-id: ${{ secrets.RELEASE_APP_ID }} + private-key: ${{ secrets.RELEASE_APP_PRIVATE_KEY }} + + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ steps.app-token.outputs.token || secrets.GITHUB_TOKEN }} + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version-file: ".nvmrc" + cache: "npm" + + - name: Ensure trusted publishing toolchain + run: | + # npm trusted publishing requires Node >= 22.14.0 and npm >= 11.5.1. + npm install --global npm@11.6.2 + + - name: Configure git user + if: github.event_name == 'workflow_dispatch' && inputs.channel == 'latest' + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + + - name: Install dependencies + run: npm ci + + - name: Run tests + run: npm test + + - name: Derive next prerelease version + if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && inputs.channel == 'next') + run: | + NEXT_VER=$(npm view bmad-method@next version 2>/dev/null || echo "") + LATEST_VER=$(npm view bmad-method@latest version 2>/dev/null || echo "") + + # Determine the best base version for the next prerelease. + BASE=$(node -e " + const semver = require('semver'); + const next = process.argv[1] || null; + const latest = process.argv[2] || null; + if (!next && !latest) process.exit(0); + if (!next) { console.log(latest); process.exit(0); } + if (!latest) { console.log(next); process.exit(0); } + const nextBase = next.replace(/-next\.\d+$/, ''); + console.log(semver.gt(latest, nextBase) ? latest : next); + " "$NEXT_VER" "$LATEST_VER") + + if [ -n "$BASE" ]; then + npm version "$BASE" --no-git-tag-version --allow-same-version + fi + npm version prerelease --preid=next --no-git-tag-version + + - name: Bump stable version + if: github.event_name == 'workflow_dispatch' && inputs.channel == 'latest' + run: 'npm version ${{ inputs.bump }} -m "chore(release): v%s [skip ci]"' + + - name: Publish prerelease to npm + if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && inputs.channel == 'next') + run: npm publish --tag next --provenance + + - name: Publish stable release to npm + if: github.event_name == 'workflow_dispatch' && inputs.channel == 'latest' + run: npm publish --tag latest --provenance + + - name: Push version commit and tag + if: github.event_name == 'workflow_dispatch' && inputs.channel == 'latest' + run: git push origin main --follow-tags + + - name: Create GitHub Release + if: github.event_name == 'workflow_dispatch' && inputs.channel == 'latest' + run: | + TAG="v$(node -p 'require("./package.json").version')" + gh release create "$TAG" --generate-notes + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Notify Discord + if: github.event_name == 'workflow_dispatch' && inputs.channel == 'latest' + continue-on-error: true + run: | + set -o pipefail + source .github/scripts/discord-helpers.sh + [ -z "$WEBHOOK" ] && exit 0 + + VERSION=$(node -p 'require("./package.json").version') + RELEASE_URL="${{ github.server_url }}/${{ github.repository }}/releases/tag/v${VERSION}" + MSG=$(printf '📦 **[bmad-method v%s released](<%s>)**' "$VERSION" "$RELEASE_URL" | esc) + + jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @- + env: + WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} diff --git a/.github/workflows/quality.yaml b/.github/workflows/quality.yaml index 78023e466..3c198cc70 100644 --- a/.github/workflows/quality.yaml +++ b/.github/workflows/quality.yaml @@ -7,7 +7,7 @@ name: Quality & Validation # - Schema validation (YAML structure) # - Agent schema tests (fixture-based validation) # - Installation component tests (compilation) -# - Bundle validation (web bundle integrity) +# Keep this workflow aligned with `npm run quality` in `package.json`. "on": pull_request: diff --git a/.gitignore b/.gitignore index 99f1b1ad7..b15ba6c17 100644 --- a/.gitignore +++ b/.gitignore @@ -17,9 +17,15 @@ npm-debug.log* # Build output build/*.txt +design-artifacts/ + # Environment variables .env +# Python +__pycache__/ +.pytest_cache/ + # System files .DS_Store Thumbs.db @@ -56,7 +62,7 @@ _bmad-output .qwen .rovodev .kilocodemodes -.claude/commands +.claude .codex .github/chatmodes .github/agents diff --git a/.npmignore b/.npmignore new file mode 100644 index 000000000..452bb4ba4 --- /dev/null +++ b/.npmignore @@ -0,0 +1,40 @@ +# Development & Testing +test/ +.husky/ +.github/ +.vscode/ +.augment/ +coverage/ +test-output/ + +# Documentation site (users access docs online) +docs/ +website/ + +# Configuration files (development only) +.coderabbit.yaml +.markdownlint-cli2.yaml +.prettierignore +.nvmrc +eslint.config.mjs +prettier.config.mjs + +# Build tools (not needed at runtime) +tools/build-docs.mjs +tools/fix-doc-links.js +tools/validate-doc-links.js +tools/validate-file-refs.js +tools/validate-agent-schema.js + +# Images (branding/marketing only) +banner-bmad-method.png +Wordmark.png + +# Repository metadata +CONTRIBUTING.md +CONTRIBUTORS.md +SECURITY.md +TRADEMARK.md +CHANGELOG.md +CNAME +CODE_OF_CONDUCT.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 000000000..1b68191e5 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,9 @@ +# BMAD-METHOD + +Open source framework for structured, agent-assisted software delivery. + +## Rules + +- Use Conventional Commits for every commit. +- Before pushing, run `npm ci && npm run quality` on `HEAD` in the exact checkout you are about to push. + `quality` mirrors the checks in `.github/workflows/quality.yaml`. diff --git a/CHANGELOG.md b/CHANGELOG.md index 03e191434..de3f388e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,73 @@ # Changelog +## v6.2.0 - 2026-03-15 + +### 🎁 Highlights + +* Fix manifest generation so BMad Builder installs correctly when a module has no agents (#1998) +* Prototype preview of bmad-product-brief-preview skill — try `/bmad-product-brief-preview` and share feedback! (#1959) +* All skills now use native skill directory format for improved modularity and maintainability (#1931, #1945, #1946, #1949, #1950, #1984, #1985, #1988, #1994) + +### 🎁 Features + +* Rewrite code-review skill with sharded step-file architecture and auto-detect review intent from invocation args (#2007, #2013) +* Add inference-based skill validator with comprehensive rules for naming, variables, paths, and invocation syntax (#1981) +* Add REF-03 skill invocation language rule and PATH-05 skill encapsulation rule to validator (#2004) + +### 🐛 Bug Fixes + +* Validation pass 2 — fix path, variable, and sequence issues across 32 files (#2008) +* Replace broken party-mode workflow refs with skill syntax (#2000) +* Improve bmad-help description for accurate trigger matching (#2012) +* Point zh-cn doc links to Chinese pages instead of English (#2010) +* Validation cleanup for bmad-quick-flow (#1997), 6 skills batch (#1996), bmad-sprint-planning (#1995), bmad-retrospective (#1993), bmad-dev-story (#1992), bmad-create-story (#1991), bmad-code-review (#1990), bmad-create-epics-and-stories (#1989), bmad-create-architecture (#1987), bmad-check-implementation-readiness (#1986), bmad-create-ux-design (#1983), bmad-create-product-brief (#1982) + +### 🔧 Maintenance + +* Normalize skill invocation syntax to `Invoke the skill` pattern repo-wide (#2004) + +### 📚 Documentation + +* Add Chinese translation for core-tools reference (#2002) +* Update version hint, TEA module link, and HTTP→HTTPS links in Chinese README (#1922, #1921) + +## [6.1.0] - 2026-03-12 + +### Highlights + +* Whiteport Design Studio (WDS) module enabled in the installer +* Support @next installation channel (`npx bmad-method@next install`) — get the latest tip of main instead of waiting for the next stable published version +* Everything now installs as a skill — all workflows, agents, and tasks converted to markdown with SKILL.md entrypoints (not yet optimized skills, but unified format) +* An experimental preview of the new Quick Dev is available, which will become the main Phase 4 development tool +* Edge Case Hunter added as a parallel code review layer in Phase 4, improving code quality by exhaustively tracing branching paths and boundary conditions (#1791) +* Documentation now available in Chinese (zh-CN) with complete translation (#1822, #1795) + +### 💥 Breaking Changes + +* Convert entire BMAD method to skills-based architecture with unified skill manifests (#1834) +* Convert all core workflows from YAML+instructions to single workflow.md format +* Migrate all remaining platforms to native Agent Skills format (#1841) +* Remove legacy YAML/XML workflow engine plumbing (#1864) + +### 🎁 Features + +* Add Pi coding agent as supported platform (#1854) +* Add unified skill scanner decoupled from legacy collectors (#1859) +* Add continuous delivery workflows for npm publishing with trusted OIDC publishing (#1872) + +### ♻️ Refactoring + +* Update terminology from "commands" to "skills" across all documentation (#1850) + +### 🐛 Bug Fixes + +* Fix code review removing mandatory minimum issue count that caused infinite review loops (#1913) +* Fix silent loss of brainstorming ideas in PRD by adding reconciliation step (#1914) +* Reduce npm tarball from 533 to 348 files (91% size reduction, 6.2 MB → 555 KB) via .npmignore (#1900) +* Fix party-mode skill conversion review findings (#1919) + +--- + ## [6.0.4] ### 🎁 Features @@ -47,7 +115,7 @@ * Add CodeBuddy platform support with installer configuration (#1483) * Add LLM audit prompt for file reference conventions - new audit tool using parallel subagents (#1720) * Migrate Codex installer from `.codex/prompts` to `.agents/skills` format to align with Codex CLI changes (#1729) -* Convert review-pr and audit-file-refs tools to proper bmad-os skills with slash commands `/bmad-os-review-pr` and `/bmad-os-audit-file-refs` (#1732) +* Convert review-pr and audit-file-refs tools to proper bmad-os skills with slash commands `bmad-os-review-pr` and `bmad-os-audit-file-refs` (#1732) ### 🐛 Bug Fixes @@ -365,7 +433,7 @@ V6 Stable Release! The End of Beta! - TEA documentation restructured using Diátaxis framework (25 docs) - Style guide optimized for LLM readers (367 lines, down from 767) - Glossary rewritten using table format (123 lines, down from 373) -- README overhaul with numbered command flows and prominent `/bmad-help` callout +- README overhaul with numbered command flows and prominent `bmad-help` callout - New workflow map diagram with interactive HTML - New editorial review tasks for document quality - E2E testing methodology for Game Dev Studio diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d9c12655f..459195916 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -73,7 +73,7 @@ After searching, use the [feature request template](https://github.com/bmad-code ### Target Branch -Submit PRs to the `main` branch. We use [trunk-based development](https://trunkbaseddevelopment.com/branch-for-release/): `main` is the trunk where all work lands, and stable release branches receive only cherry-picked fixes. +Submit PRs to the `main` branch. We use trunk-based development. Every push to `main` auto-publishes to `npm` under the `next` tag. Stable releases are cut ~weekly to the `latest` tag. ### PR Size diff --git a/README.md b/README.md index d4827e378..d76519c97 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Traditional AI tools do the thinking for you, producing average results. BMad agents and facilitated workflows act as expert collaborators who guide you through a structured process to bring out your best thinking in partnership with the AI. -- **AI Intelligent Help** — Ask `/bmad-help` anytime for guidance on what's next +- **AI Intelligent Help** — Invoke the `bmad-help` skill anytime for guidance on what's next - **Scale-Domain-Adaptive** — Automatically adjusts planning depth based on project complexity - **Structured Workflows** — Grounded in agile best practices across analysis, planning, architecture, and implementation - **Specialized Agents** — 12+ domain experts (PM, Architect, Developer, UX, Scrum Master, and more) @@ -40,7 +40,7 @@ Traditional AI tools do the thinking for you, producing average results. BMad ag npx bmad-method install ``` -> If you are getting a stale beta version, use: `npx bmad-method@6.0.1 install` +> Want the newest prerelease build? Use `npx bmad-method@next install`. Expect higher churn than the default install. Follow the installer prompts, then open your AI IDE (Claude Code, Cursor, etc.) in your project folder. @@ -52,7 +52,7 @@ npx bmad-method install --directory /path/to/project --modules bmm --tools claud [See all installation options](https://docs.bmad-method.org/how-to/non-interactive-installation/) -> **Not sure what to do?** Run `/bmad-help` — it tells you exactly what's next and what's optional. You can also ask questions like `/bmad-help I just finished the architecture, what do I do next?` +> **Not sure what to do?** Ask `bmad-help` — it tells you exactly what's next and what's optional. You can also ask questions like `bmad-help I just finished the architecture, what do I do next?` ## Modules diff --git a/README_CN.md b/README_CN.md index 85b42cb2f..0d7af6ede 100644 --- a/README_CN.md +++ b/README_CN.md @@ -13,14 +13,14 @@ 传统 AI 工具替你思考,产生平庸的结果。BMad 智能体和辅助工作流充当专家协作者,引导你通过结构化流程,与 AI 的合作发挥最佳思维,产出最有效优秀的结果。 -- **AI 智能帮助** — 随时使用 `/bmad-help` 获取下一步指导 +- **AI 智能帮助** — 随时使用 `bmad-help` 获取下一步指导 - **规模-领域自适应** — 根据项目复杂度自动调整规划深度 - **结构化工作流** — 基于分析、规划、架构和实施的敏捷最佳实践 - **专业智能体** — 12+ 领域专家(PM、架构师、开发者、UX、Scrum Master 等) - **派对模式** — 将多个智能体角色带入一个会话进行协作和讨论 - **完整生命周期** — 从想法开始(头脑风暴)到部署发布 -[在 **docs.bmad-method.org** 了解更多](http://docs.bmad-method.org) +[在 **docs.bmad-method.org** 了解更多](https://docs.bmad-method.org/zh-cn/) --- @@ -28,7 +28,7 @@ **V6 已到来,我们才刚刚开始!** BMad 方法正在快速发展,包括跨平台智能体团队和子智能体集成、技能架构、BMad Builder v1、开发循环自动化等优化,以及更多正在开发中的功能。 -**[📍 查看完整路线图 →](http://docs.bmad-method.org/roadmap/)** +**[📍 查看完整路线图 →](https://docs.bmad-method.org/zh-cn/roadmap/)** --- @@ -40,7 +40,7 @@ npx bmad-method install ``` -> 如果你获得的是过时的测试版,请使用:`npx bmad-method@6.0.1 install` +> 想要最新的预发布版本?使用 `npx bmad-method@next install`。相比默认安装,可能会有更多变更。 按照安装程序提示操作,然后在项目文件夹中打开你的 AI IDE(Claude Code、Cursor 等)。 @@ -50,9 +50,9 @@ npx bmad-method install npx bmad-method install --directory /path/to/project --modules bmm --tools claude-code --yes ``` -[查看所有安装选项](http://docs.bmad-method.org/how-to/non-interactive-installation/) +[查看非交互式安装选项](https://docs.bmad-method.org/zh-cn/how-to/non-interactive-installation/) -> **不确定该做什么?** 运行 `/bmad-help` — 它会准确告诉你下一步做什么以及什么是可选的。你也可以问诸如 `/bmad-help 我刚刚完成了架构设计,接下来该做什么?` 之类的问题。 +> **不确定该做什么?** 运行 `bmad-help` — 它会准确告诉你下一步做什么以及什么是可选的。你也可以问诸如 `bmad-help 我刚刚完成了架构设计,接下来该做什么?` 之类的问题。 ## 模块 @@ -62,18 +62,18 @@ BMad 方法通过官方模块扩展到专业领域。可在安装期间或之后 | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | | **[BMad Method (BMM)](https://github.com/bmad-code-org/BMAD-METHOD)** | 包含 34+ 工作流的核心框架 | | **[BMad Builder (BMB)](https://github.com/bmad-code-org/bmad-builder)** | 创建自定义 BMad 智能体和工作流 | -| **[Test Architect (TEA)](https://github.com/bmad-code-org/tea)** | 基于风险的测试策略和自动化 | +| **[Test Architect (TEA)](https://github.com/bmad-code-org/bmad-method-test-architecture-enterprise)** | 基于风险的测试策略和自动化 | | **[Game Dev Studio (BMGD)](https://github.com/bmad-code-org/bmad-module-game-dev-studio)** | 游戏开发工作流(Unity、Unreal、Godot) | | **[Creative Intelligence Suite (CIS)](https://github.com/bmad-code-org/bmad-module-creative-intelligence-suite)** | 创新、头脑风暴、设计思维 | ## 文档 -[BMad 方法文档站点](http://docs.bmad-method.org) — 教程、指南、概念和参考 +[BMad 方法文档站点](https://docs.bmad-method.org/zh-cn/) — 教程、指南、概念和参考 **快速链接:** -- [入门教程](http://docs.bmad-method.org/tutorials/getting-started/) -- [从先前版本升级](http://docs.bmad-method.org/how-to/upgrade-to-v6/) -- [测试架构师文档](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/) +- [入门教程](https://docs.bmad-method.org/zh-cn/tutorials/getting-started/) +- [从先前版本升级](https://docs.bmad-method.org/zh-cn/how-to/upgrade-to-v6/) +- [测试架构师文档(英文)](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/) ## 社区 diff --git a/docs/explanation/quick-dev-new-preview.md b/docs/explanation/quick-dev-new-preview.md new file mode 100644 index 000000000..416fe46a2 --- /dev/null +++ b/docs/explanation/quick-dev-new-preview.md @@ -0,0 +1,73 @@ +--- +title: "Quick Dev New Preview" +description: Reduce human-in-the-loop friction without giving up the checkpoints that protect output quality +sidebar: + order: 2 +--- + +`bmad-quick-dev-new-preview` is an experimental attempt to radically improve Quick Flow: intent in, code changes out, with lower ceremony and fewer human-in-the-loop turns without sacrificing quality. + +It lets the model run longer between checkpoints, then brings the human back only when the task cannot safely continue without human judgment or when it is time to review the end result. + +![Quick Dev New Preview workflow diagram](/diagrams/quick-dev-diagram.png) + +## Why This Exists + +Human-in-the-loop turns are necessary and expensive. + +Current LLMs still fail in predictable ways: they misread intent, fill gaps with confident guesses, drift into unrelated work, and generate noisy review output. At the same time, constant human intervention limits development velocity. Human attention is the bottleneck. + +This experimental version of Quick Flow is an attempt to rebalance that tradeoff. It trusts the model to run unsupervised for longer stretches, but only after the workflow has created a strong enough boundary to make that safe. + +## The Core Design + +### 1. Compress intent first + +The workflow starts by having the human and the model compress the request into one coherent goal. The input can begin as a rough expression of intent, but before the workflow runs autonomously it has to become small enough, clear enough, and contradiction-free enough to execute. + +Intent can come in many forms: a couple of phrases, a bug tracker link, output from plan mode, text copied from a chat session, or even a story number from BMAD's own `epics.md`. In that last case, the workflow will not understand BMAD story-tracking semantics, but it can still take the story itself and run with it. + +This workflow does not eliminate human control. It relocates it to a small number of high-value moments: + +- **Intent clarification** - turning a messy request into one coherent goal without hidden contradictions +- **Spec approval** - confirming that the frozen understanding is the right thing to build +- **Review of the final product** - the primary checkpoint, where the human decides whether the result is acceptable at the end + +### 2. Route to the smallest safe path + +Once the goal is clear, the workflow decides whether this is a true one-shot change or whether it needs the fuller path. Small, zero-blast-radius changes can go straight to implementation. Everything else goes through planning so the model has a stronger boundary before it runs longer on its own. + +### 3. Run longer with less supervision + +After that routing decision, the model can carry more of the work on its own. On the fuller path, the approved spec becomes the boundary the model executes against with less supervision, which is the whole point of the experiment. + +### 4. Diagnose failure at the right layer + +If the implementation is wrong because the intent was wrong, patching the code is the wrong fix. If the code is wrong because the spec was weak, patching the diff is also the wrong fix. The workflow is designed to diagnose where the failure entered the system, go back to that layer, and regenerate from there. + +Review findings are used to decide whether the problem came from intent, spec generation, or local implementation. Only truly local problems get patched locally. + +### 5. Bring the human back only when needed + +The intent interview is human-in-the-loop, but it is not the same kind of interruption as a recurring checkpoint. The workflow tries to keep those recurring checkpoints to a minimum. After the initial shaping of intent, the human mainly comes back when the workflow cannot safely continue without judgment and at the end, when it is time to review the result. + +- **Intent-gap resolution** - stepping back in when review proves the workflow could not safely infer what was meant + +Everything else is a candidate for longer autonomous execution. That tradeoff is deliberate. Older patterns spend more human attention on continuous supervision. Quick Dev New Preview spends more trust on the model, but saves human attention for the moments where human reasoning has the highest leverage. + +## Why the Review System Matters + +The review phase is not just there to find bugs. It is there to route correction without destroying momentum. + +This workflow works best on a platform that can spawn subagents, or at least invoke another LLM through the command line and wait for a result. If your platform does not support that natively, you can add a skill to do it. Context-free subagents are a cornerstone of the review design. + +Agentic reviews often go wrong in two ways: + +- They generate too many findings, forcing the human to sift through noise. +- They derail the current change by surfacing unrelated issues and turning every run into an ad hoc cleanup project. + +Quick Dev New Preview addresses both by treating review as triage. + +Some findings belong to the current change. Some do not. If a finding is incidental rather than causally tied to the current work, the workflow can defer it instead of forcing the human to handle it immediately. That keeps the run focused and prevents random tangents from consuming the budget of attention. + +That triage will sometimes be imperfect. That is acceptable. It is usually better to misjudge some findings than to flood the human with thousands of low-value review comments. The system is optimizing for signal quality, not exhaustive recall. diff --git a/docs/explanation/quick-flow.md b/docs/explanation/quick-flow.md index 53297a36d..25f63affd 100644 --- a/docs/explanation/quick-flow.md +++ b/docs/explanation/quick-flow.md @@ -7,6 +7,10 @@ sidebar: Skip the ceremony. Quick Flow takes you from idea to working code in two skills - no Product Brief, no PRD, no Architecture doc. +:::tip[Want a Unified Variant?] +If you want one workflow to clarify, plan, implement, review, and present in a single run, see [Quick Dev New Preview](./quick-dev-new-preview.md). +::: + ## When to Use It - Bug fixes and patches diff --git a/docs/how-to/get-answers-about-bmad.md b/docs/how-to/get-answers-about-bmad.md index 87cd057ee..8f55ee23d 100644 --- a/docs/how-to/get-answers-about-bmad.md +++ b/docs/how-to/get-answers-about-bmad.md @@ -7,7 +7,7 @@ sidebar: ## Start Here: BMad-Help -**The fastest way to get answers about BMad is `/bmad-help`.** This intelligent guide will answer upwards of 80% of all questions and is available to you directly in your IDE as you work. +**The fastest way to get answers about BMad is the `bmad-help` skill.** This intelligent guide will answer upwards of 80% of all questions and is available to you directly in your IDE as you work. BMad-Help is more than a lookup tool — it: - **Inspects your project** to see what's already been completed @@ -18,19 +18,23 @@ BMad-Help is more than a lookup tool — it: ### How to Use BMad-Help -Run it with just the skill name: +Call it by name in your AI session: ``` -/bmad-help +bmad-help ``` -Or combine it with a natural language query: +:::tip +You can also use `/bmad-help` or `$bmad-help` depending on your platform, but just `bmad-help` should work everywhere. +::: + +Combine it with a natural language query: ``` -/bmad-help I have a SaaS idea and know all the features. Where do I start? -/bmad-help What are my options for UX design? -/bmad-help I'm stuck on the PRD workflow -/bmad-help Show me what's been done so far +bmad-help I have a SaaS idea and know all the features. Where do I start? +bmad-help What are my options for UX design? +bmad-help I'm stuck on the PRD workflow +bmad-help Show me what's been done so far ``` BMad-Help responds with: @@ -38,8 +42,6 @@ BMad-Help responds with: - What the first required task is - What the rest of the process looks like ---- - ## When to Use This Guide Use this section when: diff --git a/docs/how-to/install-bmad.md b/docs/how-to/install-bmad.md index 3c0ca61d1..3789c6fa9 100644 --- a/docs/how-to/install-bmad.md +++ b/docs/how-to/install-bmad.md @@ -29,6 +29,15 @@ If you want to use a non interactive installer and provide all install options o npx bmad-method install ``` +:::tip[Want the newest prerelease build?] +Use the `next` dist-tag: +```bash +npx bmad-method@next install +``` + +This gets you newer changes earlier, with a higher chance of churn than the default install. +::: + :::tip[Bleeding edge] To install the latest from the main branch (may be unstable): ```bash diff --git a/docs/how-to/project-context.md b/docs/how-to/project-context.md index 9196733c8..4ffecca66 100644 --- a/docs/how-to/project-context.md +++ b/docs/how-to/project-context.md @@ -5,7 +5,7 @@ sidebar: order: 7 --- -Use the `project-context.md` file to ensure AI agents follow your project's technical preferences and implementation rules throughout all workflows. +Use the `project-context.md` file to ensure AI agents follow your project's technical preferences and implementation rules throughout all workflows. To make sure this is always available, you can also add the line `Important project context and conventions are located in [path to project context]/project-context.md` to your tools context or always rules file (such as `AGENTS.md`) :::note[Prerequisites] - BMad Method installed @@ -114,20 +114,11 @@ A `project-context.md` file that: ## Tips -:::tip[Focus on the Unobvious] -Document patterns agents might miss such as "Use JSDoc style comments on every public class, function and variable", not universal practices like "use meaningful variable names" which LLMs know at this point. -::: - -:::tip[Keep It Lean] -This file is loaded by every implementation workflow. Long files waste context. Do not include content that only applies to narrow scope or specific stories or features. -::: - -:::tip[Update as Needed] -Edit manually when patterns change, or re-generate after significant architecture changes. -::: - -:::tip[Works for All Project Types] -Just as useful for Quick Flow as for full BMad Method projects. +:::tip[Best Practices] +- **Focus on the unobvious** — Document patterns agents might miss (e.g., "Use JSDoc on every public class"), not universal practices like "use meaningful variable names." +- **Keep it lean** — This file is loaded by every implementation workflow. Long files waste context. Exclude content that only applies to narrow scope or specific stories. +- **Update as needed** — Edit manually when patterns change, or re-generate after significant architecture changes. +- Works for Quick Flow and full BMad Method projects alike. ::: ## Next Steps diff --git a/docs/reference/agents.md b/docs/reference/agents.md index be7ab8ecb..072bdb84e 100644 --- a/docs/reference/agents.md +++ b/docs/reference/agents.md @@ -26,3 +26,33 @@ This page lists the default BMM (Agile suite) agents that install with BMad Meth | Quick Flow Solo Dev (Barry) | `bmad-master` | `QS`, `QD`, `CR` | Quick Spec, Quick Dev, Code Review | | 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 | + +## Trigger Types + +Agent menu triggers use two different invocation types. Knowing which type a trigger uses helps you provide the right input. + +### Workflow triggers (no arguments needed) + +Most triggers load a structured workflow file. Type the trigger code and the agent starts the workflow, prompting you for input at each step. + +Examples: `CP` (Create PRD), `DS` (Dev Story), `CA` (Create Architecture), `QS` (Quick Spec) + +### Conversational triggers (arguments required) + +Some triggers start a free-form conversation instead of a structured workflow. These expect you to describe what you need alongside the trigger code. + +| Agent | Trigger | What to provide | +| --- | --- | --- | +| Technical Writer (Paige) | `WD` | Description of the document to write | +| Technical Writer (Paige) | `US` | Preferences or conventions to add to standards | +| Technical Writer (Paige) | `MG` | Diagram description and type (sequence, flowchart, etc.) | +| Technical Writer (Paige) | `VD` | Document to validate and focus areas | +| Technical Writer (Paige) | `EC` | Concept name to explain | + +**Example:** + +```text +WD Write a deployment guide for our Docker setup +MG Create a sequence diagram showing the auth flow +EC Explain how the module system works +``` diff --git a/docs/reference/commands.md b/docs/reference/commands.md index c61b236a7..7f7894b55 100644 --- a/docs/reference/commands.md +++ b/docs/reference/commands.md @@ -27,7 +27,7 @@ The installer uses templates for each skill type: | Skill type | What the generated file does | | --- | --- | | **Agent launcher** | Loads the agent persona file, activates its menu, and stays in character | -| **Workflow skill** | Loads the workflow engine (`workflow.xml`) and passes the workflow config | +| **Workflow skill** | Loads the workflow config and follows its steps | | **Task skill** | Loads a standalone task file and follows its instructions | | **Tool skill** | Loads a standalone tool file and follows its instructions | @@ -88,7 +88,7 @@ See [Agents](./agents.md) for the full list of default agents and their triggers ### Workflow Skills -Workflow skills run a structured, multi-step process without loading an agent persona first. They load the workflow engine and pass a specific workflow configuration. +Workflow skills run a structured, multi-step process without loading an agent persona first. They load a workflow configuration and follow its steps. | Example skill | Purpose | | --- | --- | @@ -105,32 +105,21 @@ See [Workflow Map](./workflow-map.md) for the complete workflow reference organi Tasks and tools are standalone operations that do not require an agent or workflow context. -#### BMad-Help: Your Intelligent Guide +**BMad-Help: Your Intelligent Guide** -**`bmad-help`** is your primary interface for discovering what to do next. It's not just a lookup tool — it's an intelligent assistant that: - -- **Inspects your project** to see what's already been done -- **Understands natural language queries** — ask questions in plain English -- **Varies by installed modules** — shows options based on what you have -- **Auto-invokes after workflows** — every workflow ends with clear next steps -- **Recommends the first required task** — no guessing where to start - -**Examples:** +`bmad-help` is your primary interface for discovering what to do next. It inspects your project, understands natural language queries, and recommends the next required or optional step based on your installed modules. +:::note[Example] ``` bmad-help bmad-help I have a SaaS idea and know all the features. Where do I start? bmad-help What are my options for UX design? -bmad-help I'm stuck on the PRD workflow ``` +::: -#### Other Tasks and Tools +**Other Core Tasks and Tools** -| Example skill | Purpose | -| --- | --- | -| `bmad-shard-doc` | Split a large markdown file into smaller sections | -| `bmad-index-docs` | Index project documentation | -| `bmad-editorial-review-prose` | Review document prose quality | +The core module includes 11 built-in tools — reviews, compression, brainstorming, document management, and more. See [Core Tools](./core-tools.md) for the complete reference. ## Naming Convention diff --git a/docs/reference/core-tools.md b/docs/reference/core-tools.md new file mode 100644 index 000000000..dbc690826 --- /dev/null +++ b/docs/reference/core-tools.md @@ -0,0 +1,293 @@ +--- +title: Core Tools +description: Reference for all built-in tasks and workflows available in every BMad installation without additional modules. +sidebar: + order: 2 +--- + +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. + +:::tip[Quick Path] +Run any core tool by typing its skill name (e.g., `bmad-help`) in your IDE. No agent session required. +::: + +## Overview + +| Tool | Type | Purpose | +| --- | --- | --- | +| [`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-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 | +| [`bmad-editorial-review-prose`](#bmad-editorial-review-prose) | Task | Clinical copy-editing for communication clarity | +| [`bmad-editorial-review-structure`](#bmad-editorial-review-structure) | Task | Structural editing — cuts, merges, and reorganization | +| [`bmad-shard-doc`](#bmad-shard-doc) | Task | Split large markdown files into organized sections | +| [`bmad-index-docs`](#bmad-index-docs) | Task | Generate or update an index of all docs in a folder | + +## bmad-help + +**Your intelligent guide to what comes next.** — Inspects your project state, detects what's been done, and recommends the next required or optional step. + +**Use it when:** + +- You finished a workflow and want to know what's next +- You're new to BMad and need orientation +- You're stuck and want context-aware advice +- You installed new modules and want to see what's available + +**How it works:** + +1. Scans your project for existing artifacts (PRD, architecture, stories, etc.) +2. Detects which modules are installed and their available workflows +3. Recommends next steps in priority order — required steps first, then optional +4. Presents each recommendation with the skill command and a brief description + +**Input:** Optional query in natural language (e.g., `bmad-help I have a SaaS idea, where do I start?`) + +**Output:** Prioritized list of recommended next steps with skill commands + +## bmad-brainstorming + +**Generate diverse ideas through interactive creative techniques.** — A facilitated brainstorming session that loads proven ideation methods from a technique library and guides you toward 100+ ideas before organizing. + +**Use it when:** + +- You're starting a new project and need to explore the problem space +- You're stuck generating ideas and need structured creativity +- You want to use proven ideation frameworks (SCAMPER, reverse brainstorming, etc.) + +**How it works:** + +1. Sets up a brainstorming session with your topic +2. Loads creative techniques from a method library +3. Guides you through technique after technique, generating ideas +4. Applies anti-bias protocol — shifts creative domain every 10 ideas to prevent clustering +5. Produces an append-only session document with all ideas organized by technique + +**Input:** Brainstorming topic or problem statement, optional context file + +**Output:** `brainstorming-session-{date}.md` with all generated ideas + +:::note[Quantity Target] +The magic happens in ideas 50–100. The workflow encourages generating 100+ ideas before organization. +::: + +## bmad-party-mode + +**Orchestrate multi-agent group discussions.** — Loads all installed BMad agents and facilitates a natural conversation where each agent contributes from their unique expertise and personality. + +**Use it when:** + +- You need multiple expert perspectives on a decision +- You want agents to challenge each other's assumptions +- You're exploring a complex topic that spans multiple domains + +**How it works:** + +1. Loads the agent manifest with all installed agent personalities +2. Analyzes your topic to select 2–3 most relevant agents +3. Agents take turns contributing, with natural cross-talk and disagreements +4. Rotates agent participation to ensure diverse perspectives over time +5. Exit with `goodbye`, `end party`, or `quit` + +**Input:** Discussion topic or question, along with specification of personas you would like to participate (optional) + +**Output:** Real-time multi-agent conversation with maintained agent personalities + +## bmad-distillator + +**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. + +**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 + +**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 + +**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 + +**Output:** Distillate markdown file(s) with compression ratio report (e.g., "3.2:1") + +## bmad-advanced-elicitation + +**Push LLM output through iterative refinement methods.** — Selects from a library of elicitation techniques to systematically improve content through multiple passes. + +**Use it when:** + +- LLM output feels shallow or generic +- You want to explore a topic from multiple analytical angles +- You're refining a critical document and want deeper thinking + +**How it works:** + +1. Loads method registry with 5+ elicitation techniques +2. Selects 5 best-fit methods based on content type and complexity +3. Presents an interactive menu — pick a method, reshuffle, or list all +4. Applies the selected method to enhance the content +5. Re-presents options for iterative improvement until you select "Proceed" + +**Input:** Content section to enhance + +**Output:** Enhanced version of the content with improvements applied + +## bmad-review-adversarial-general + +**Cynical review that assumes problems exist and searches for them.** — Takes a skeptical, jaded reviewer perspective with zero patience for sloppy work. Looks for what's missing, not just what's wrong. + +**Use it when:** + +- You need quality assurance before finalizing a deliverable +- You want to stress-test a spec, story, or document +- You want to find gaps in coverage that optimistic reviews miss + +**How it works:** + +1. Reads the content with a cynical, critical perspective +2. Identifies issues across completeness, correctness, and quality +3. Searches specifically for what's missing — not just what's present and wrong +4. Must find a minimum of 10 issues or re-analyzes deeper + +**Input:** + +- `content` (required) — Diff, spec, story, doc, or any artifact +- `also_consider` (optional) — Additional areas to keep in mind + +**Output:** Markdown list of 10+ findings with descriptions + +## bmad-review-edge-case-hunter + +**Walk every branching path and boundary condition, report only unhandled cases.** — Pure path-tracing methodology that mechanically derives edge classes. Orthogonal to adversarial review — method-driven, not attitude-driven. + +**Use it when:** + +- You want exhaustive edge case coverage for code or logic +- You need a complement to adversarial review (different methodology, different findings) +- You're reviewing a diff or function for boundary conditions + +**How it works:** + +1. Enumerates all branching paths in the content +2. Derives edge classes mechanically: missing else/default, unguarded inputs, off-by-one, arithmetic overflow, implicit type coercion, race conditions, timeout gaps +3. Tests each path against existing guards +4. Reports only unhandled paths — silently discards handled ones + +**Input:** + +- `content` (required) — Diff, full file, or function +- `also_consider` (optional) — Additional areas to keep in mind + +**Output:** JSON array of findings, each with `location`, `trigger_condition`, `guard_snippet`, and `potential_consequence` + +:::note[Complementary Reviews] +Run both `bmad-review-adversarial-general` and `bmad-review-edge-case-hunter` together for orthogonal coverage. The adversarial review catches quality and completeness issues; the edge case hunter catches unhandled paths. +::: + +## bmad-editorial-review-prose + +**Clinical copy-editing focused on communication clarity.** — Reviews text for issues that impede comprehension. Applies Microsoft Writing Style Guide baseline. Preserves author voice. + +**Use it when:** + +- You've drafted a document and want to polish the writing +- You need to ensure clarity for a specific audience +- You want communication fixes without style opinion changes + +**How it works:** + +1. Reads the content, skipping code blocks and frontmatter +2. Identifies communication issues (not style preferences) +3. Deduplicates same issues across multiple locations +4. Produces a three-column fix table + +**Input:** + +- `content` (required) — Markdown, plain text, or XML +- `style_guide` (optional) — Project-specific style guide +- `reader_type` (optional) — `humans` (default) for clarity/flow, or `llm` for precision/consistency + +**Output:** Three-column markdown table: Original Text | Revised Text | Changes + +## bmad-editorial-review-structure + +**Structural editing — proposes cuts, merges, moves, and condensing.** — Reviews document organization and proposes substantive changes to improve clarity and flow before copy editing. + +**Use it when:** + +- A document was produced from multiple subprocesses and needs structural coherence +- You want to reduce document length while preserving comprehension +- You need to identify scope violations or buried critical information + +**How it works:** + +1. Analyzes document against 5 structure models (Tutorial, Reference, Explanation, Prompt, Strategic) +2. Identifies redundancies, scope violations, and buried information +3. Produces prioritized recommendations: CUT, MERGE, MOVE, CONDENSE, QUESTION, PRESERVE +4. Estimates total reduction in words and percentage + +**Input:** + +- `content` (required) — Document to review +- `purpose` (optional) — Intended purpose (e.g., "quickstart tutorial") +- `target_audience` (optional) — Who reads this +- `reader_type` (optional) — `humans` or `llm` +- `length_target` (optional) — Target reduction (e.g., "30% shorter") + +**Output:** Document summary, prioritized recommendation list, and estimated reduction + +## bmad-shard-doc + +**Split large markdown files into organized section files.** — Uses level-2 headers as split points to create a folder of self-contained section files with an index. + +**Use it when:** + +- A markdown document has grown too large to manage effectively (500+ lines) +- You want to break a monolithic doc into navigable sections +- You need separate files for parallel editing or LLM context management + +**How it works:** + +1. Validates the source file exists and is markdown +2. Splits on level-2 (`##`) headers into numbered section files +3. Creates an `index.md` with section manifest and links +4. Prompts you to delete, archive, or keep the original + +**Input:** Source markdown file path, optional destination folder + +**Output:** Folder with `index.md` and `01-{section}.md`, `02-{section}.md`, etc. + +## bmad-index-docs + +**Generate or update an index of all documents in a folder.** — Scans a directory, reads each file to understand its purpose, and produces an organized `index.md` with links and descriptions. + +**Use it when:** + +- You need a lightweight index for quick LLM scanning of available docs +- A documentation folder has grown and needs an organized table of contents +- You want an auto-generated overview that stays current + +**How it works:** + +1. Scans the target directory for all non-hidden files +2. Reads each file to understand its actual purpose +3. Groups files by type, purpose, or subdirectory +4. Generates concise descriptions (3–10 words each) + +**Input:** Target folder path + +**Output:** `index.md` with organized file listings, relative links, and brief descriptions diff --git a/docs/reference/testing.md b/docs/reference/testing.md index c8a73747f..f7832c2e6 100644 --- a/docs/reference/testing.md +++ b/docs/reference/testing.md @@ -95,11 +95,11 @@ TEA also supports P0-P3 risk-based prioritization and optional integrations with ## How Testing Fits into Workflows -Quinn's Automate workflow appears in Phase 4 (Implementation) of the BMad Method workflow map. A typical sequence: +Quinn's Automate workflow appears in Phase 4 (Implementation) of the BMad Method workflow map. It is designed to run **after a full epic is complete** — once all stories in an epic have been implemented and code-reviewed. A typical sequence: -1. Implement a story with the Dev workflow (`DS`) -2. Generate tests with Quinn (`QA`) or TEA's Automate workflow -3. Validate implementation with Code Review (`CR`) +1. For each story in the epic: implement with Dev (`DS`), then validate with Code Review (`CR`) +2. After the epic is complete: generate tests with Quinn (`QA`) or TEA's Automate workflow +3. Run retrospective (`bmad-retrospective`) to capture lessons learned Quinn works directly from source code without loading planning documents (PRD, architecture). TEA workflows can integrate with upstream planning artifacts for traceability. diff --git a/docs/tutorials/getting-started.md b/docs/tutorials/getting-started.md index 1880ed448..43b5ba2e9 100644 --- a/docs/tutorials/getting-started.md +++ b/docs/tutorials/getting-started.md @@ -22,7 +22,7 @@ Build software faster using AI-powered workflows with specialized agents that gu :::tip[The Easiest Path] **Install** → `npx bmad-method install` -**Ask** → `/bmad-help what should I do first?` +**Ask** → `bmad-help what should I do first?` **Build** → Let BMad-Help guide you workflow by workflow ::: @@ -59,7 +59,7 @@ BMad-Help will respond with: BMad-Help doesn't just answer questions — **it automatically runs at the end of every workflow** to tell you exactly what to do next. No guessing, no searching docs — just clear guidance on the next required workflow. :::tip[Start Here] -After installing BMad, run `/bmad-help` immediately. It will detect what modules you have installed and guide you to the right starting point for your project. +After installing BMad, invoke the `bmad-help` skill immediately. It will detect what modules you have installed and guide you to the right starting point for your project. ::: ## Understanding BMad @@ -95,6 +95,8 @@ Open a terminal in your project directory and run: npx bmad-method install ``` +If you want the newest prerelease build instead of the default release channel, use `npx bmad-method@next install`. + When prompted to select modules, choose **BMad Method**. The installer creates two folders: @@ -105,14 +107,14 @@ The installer creates two folders: Open your AI IDE in the project folder and run: ``` -/bmad-help +bmad-help ``` BMad-Help will detect what you've completed and recommend exactly what to do next. You can also ask it questions like "What are my options?" or "I have a SaaS idea, where should I start?" ::: :::note[How to Load Agents and Run Workflows] -Each workflow has a **skill** you invoke in your IDE (e.g., `/bmad-create-prd`). Running a workflow skill automatically loads the appropriate agent — you don't need to load agents separately. You can also invoke an agent directly for general conversation (e.g., `/bmad-pm` for the PM agent). +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-pm` for the PM agent). ::: :::caution[Fresh Chats] @@ -126,35 +128,35 @@ Work through phases 1-3. **Use fresh chats for each workflow.** :::tip[Project Context (Optional)] Before starting, consider creating `project-context.md` to document your technical preferences and implementation rules. This ensures all AI agents follow your conventions throughout the project. -Create it manually at `_bmad-output/project-context.md` or generate it after architecture using `/bmad-generate-project-context`. [Learn more](../explanation/project-context.md). +Create it manually at `_bmad-output/project-context.md` or generate it after architecture using `bmad-generate-project-context`. [Learn more](../explanation/project-context.md). ::: ### Phase 1: Analysis (Optional) All workflows in this phase are optional: -- **brainstorming** (`/bmad-brainstorming`) — Guided ideation -- **research** (`/bmad-research`) — Market and technical research -- **create-product-brief** (`/bmad-create-product-brief`) — Recommended foundation document +- **brainstorming** (`bmad-brainstorming`) — Guided ideation +- **research** (`bmad-research`) — Market and technical research +- **create-product-brief** (`bmad-create-product-brief`) — Recommended foundation document ### Phase 2: Planning (Required) **For BMad Method and Enterprise tracks:** -1. Invoke the **PM agent** (`/bmad-pm`) in a new chat -2. Run the `bmad-create-prd` workflow (`/bmad-create-prd`) +1. Invoke the **PM agent** (`bmad-pm`) in a new chat +2. Run the `bmad-create-prd` workflow (`bmad-create-prd`) 3. Output: `PRD.md` **For Quick Flow track:** -- Use the `bmad-quick-spec` workflow (`/bmad-quick-spec`) instead of PRD, then skip to implementation +- Use the `bmad-quick-spec` workflow (`bmad-quick-spec`) instead of PRD, then skip to implementation :::note[UX Design (Optional)] -If your project has a user interface, invoke the **UX-Designer agent** (`/bmad-ux-designer`) and run the UX design workflow (`/bmad-create-ux-design`) after creating your PRD. +If your project has a user interface, invoke the **UX-Designer agent** (`bmad-ux-designer`) and run the UX design workflow (`bmad-create-ux-design`) after creating your PRD. ::: ### Phase 3: Solutioning (BMad Method/Enterprise) **Create Architecture** -1. Invoke the **Architect agent** (`/bmad-architect`) in a new chat -2. Run `bmad-create-architecture` (`/bmad-create-architecture`) +1. Invoke the **Architect agent** (`bmad-architect`) in a new chat +2. Run `bmad-create-architecture` (`bmad-create-architecture`) 3. Output: Architecture document with technical decisions **Create Epics and Stories** @@ -163,13 +165,13 @@ If your project has a user interface, invoke the **UX-Designer agent** (`/bmad-u 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-pm`) in a new chat -2. Run `bmad-create-epics-and-stories` (`/bmad-create-epics-and-stories`) +1. Invoke the **PM agent** (`bmad-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)* -1. Invoke the **Architect agent** (`/bmad-architect`) in a new chat -2. Run `bmad-check-implementation-readiness` (`/bmad-check-implementation-readiness`) +1. Invoke the **Architect agent** (`bmad-architect`) in a new chat +2. Run `bmad-check-implementation-readiness` (`bmad-check-implementation-readiness`) 3. Validates cohesion across all planning documents ## Step 2: Build Your Project @@ -178,7 +180,7 @@ Once planning is complete, move to implementation. **Each workflow should run in ### Initialize Sprint Planning -Invoke the **SM agent** (`/bmad-sm`) and run `bmad-sprint-planning` (`/bmad-sprint-planning`). This creates `sprint-status.yaml` to track all epics and stories. +Invoke the **SM agent** (`bmad-sm`) and run `bmad-sprint-planning` (`bmad-sprint-planning`). This creates `sprint-status.yaml` to track all epics and stories. ### The Build Cycle @@ -186,11 +188,11 @@ For each story, repeat this cycle with fresh chats: | Step | Agent | Workflow | Command | Purpose | | ---- | ----- | -------------- | -------------------------- | ---------------------------------- | -| 1 | SM | `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)* | +| 1 | SM | `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 **SM agent** (`/bmad-sm`) and run `bmad-retrospective` (`/bmad-retrospective`). +After completing all stories in an epic, invoke the **SM agent** (`bmad-sm`) and run `bmad-retrospective` (`bmad-retrospective`). ## What You've Accomplished @@ -221,16 +223,16 @@ 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-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` | SM | Initialize sprint tracking | -| `bmad-create-story` | `/bmad-create-story` | SM | Create a story file | -| `bmad-dev-story` | `/bmad-dev-story` | DEV | Implement a story | -| `bmad-code-review` | `/bmad-code-review` | DEV | Review implemented code | +| **`bmad-help`** ⭐ | `bmad-help` | Any | **Your intelligent guide — ask anything!** | +| `bmad-create-prd` | `bmad-create-prd` | PM | Create Product Requirements Document | +| `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` | SM | Initialize sprint tracking | +| `bmad-create-story` | `bmad-create-story` | SM | 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 @@ -238,10 +240,10 @@ your-project/ Only for BMad Method and Enterprise tracks. Quick Flow skips from tech-spec to implementation. **Can I change my plan later?** -Yes. The SM agent has a `bmad-correct-course` workflow (`/bmad-correct-course`) for handling scope changes. +Yes. The SM agent has a `bmad-correct-course` workflow (`bmad-correct-course`) for handling scope changes. **What if I want to brainstorm first?** -Invoke the Analyst agent (`/bmad-analyst`) and run `bmad-brainstorming` (`/bmad-brainstorming`) before starting your PRD. +Invoke the Analyst agent (`bmad-analyst`) and run `bmad-brainstorming` (`bmad-brainstorming`) before starting your PRD. **Do I need to follow a strict order?** Not strictly. Once you learn the flow, you can run workflows directly using the Quick Reference above. @@ -249,7 +251,7 @@ Not strictly. Once you learn the flow, you can run workflows directly using the ## Getting Help :::tip[First Stop: BMad-Help] -**Run `/bmad-help` anytime** — it's the fastest way to get unstuck. Ask it anything: +**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?" @@ -264,10 +266,10 @@ 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 +- **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 quick-spec; Method/Enterprise need PRD and architecture - **BMad-Help runs automatically** — Every workflow ends with guidance on what's next ::: -Ready to start? Install BMad, run `/bmad-help`, and let your intelligent guide lead the way. +Ready to start? Install BMad, invoke `bmad-help`, and let your intelligent guide lead the way. diff --git a/docs/zh-cn/explanation/project-context.md b/docs/zh-cn/explanation/project-context.md index c33b3adfc..d43105ea6 100644 --- a/docs/zh-cn/explanation/project-context.md +++ b/docs/zh-cn/explanation/project-context.md @@ -5,7 +5,7 @@ sidebar: order: 7 --- -[`project-context.md`](project-context.md) 文件是您的项目面向 AI 智能体的实施指南。类似于其他开发系统中的"宪法",它记录了确保所有工作流中代码生成一致的规则、模式和偏好。 +`project-context.md` 文件是您的项目面向 AI 智能体的实施指南。类似于其他开发系统中的"宪法",它记录了确保所有工作流中代码生成一致的规则、模式和偏好。 ## 它的作用 @@ -14,11 +14,11 @@ AI 智能体不断做出实施决策——遵循哪些模式、如何组织代 - 在不同的用户故事中做出不一致的决策 - 错过项目特定的需求或约束 -[`project-context.md`](project-context.md) 文件通过以简洁、针对 LLM 优化的格式记录智能体需要了解的内容来解决这个问题。 +`project-context.md` 文件通过以简洁、针对 LLM 优化的格式记录智能体需要了解的内容来解决这个问题。 ## 它的工作原理 -每个实施工作流都会自动加载 [`project-context.md`](project-context.md)(如果存在)。架构师工作流也会加载它,以便在设计架构时尊重您的技术偏好。 +每个实施工作流都会自动加载 `project-context.md`(如果存在)。架构师工作流也会加载它,以便在设计架构时尊重您的技术偏好。 **由以下工作流加载:** - `create-architecture` — 在解决方案设计期间尊重技术偏好 @@ -30,7 +30,7 @@ AI 智能体不断做出实施决策——遵循哪些模式、如何组织代 ## 何时创建 -[`project-context.md`](project-context.md) 文件在项目的任何阶段都很有用: +`project-context.md` 文件在项目的任何阶段都很有用: | 场景 | 何时创建 | 目的 | |----------|----------------|---------| @@ -127,7 +127,7 @@ touch _bmad-output/project-context.md ## 为什么重要 -没有 [`project-context.md`](project-context.md),智能体会做出可能与您的项目不匹配的假设: +没有 `project-context.md`,智能体会做出可能与您的项目不匹配的假设: | 没有上下文 | 有上下文 | |----------------|--------------| @@ -143,7 +143,7 @@ touch _bmad-output/project-context.md ## 编辑和更新 -[`project-context.md`](project-context.md) 文件是一个动态文档。在以下情况下更新它: +`project-context.md` 文件是一个动态文档。在以下情况下更新它: - 架构决策发生变化 - 建立了新的约定 diff --git a/docs/zh-cn/explanation/quick-dev-new-preview.md b/docs/zh-cn/explanation/quick-dev-new-preview.md new file mode 100644 index 000000000..852ccb6a9 --- /dev/null +++ b/docs/zh-cn/explanation/quick-dev-new-preview.md @@ -0,0 +1,73 @@ +--- +title: "快速开发新预览" +description: 在不牺牲输出质量检查点的情况下减少人机交互的摩擦 +sidebar: + order: 2 +--- + +`bmad-quick-dev-new-preview` 是对快速流程(Quick Flow)的一次实验性改进:输入意图,输出代码变更,减少流程仪式和人机交互轮次,同时不牺牲质量。 + +它让模型在检查点之间运行更长时间,只有在任务无法在没有人类判断的情况下安全继续时,或者需要审查最终结果时,才会让人类介入。 + +![快速开发新预览工作流图](/diagrams/quick-dev-diagram.png) + +## 为什么需要这个功能 + +人机交互轮次既必要又昂贵。 + +当前的 LLM 仍然会以可预测的方式失败:它们误读意图、用自信的猜测填补空白、偏离到不相关的工作中,并生成嘈杂的审查输出。与此同时,持续的人工干预限制了开发速度。人类注意力是瓶颈。 + +这个快速流程的实验版本是对这种权衡的重新平衡尝试。它信任模型在更长的时间段内无监督运行,但前提是工作流已经创建了足够强的边界来确保安全。 + +## 核心设计 + +### 1. 首先压缩意图 + +工作流首先让人类和模型将请求压缩成一个连贯的目标。输入可以从粗略的意图表达开始,但在工作流自主运行之前,它必须变得足够小、足够清晰、没有矛盾。 + +意图可以以多种形式出现:几句话、一个错误追踪器链接、计划模式的输出、从聊天会话复制的文本,甚至来自 BMAD 自己的 `epics.md` 的故事编号。在最后一种情况下,工作流不会理解 BMAD 故事跟踪语义,但它仍然可以获取故事本身并继续执行。 + +这个工作流并不会消除人类的控制。它将其重新定位到少数几个高价值时刻: + +- **意图澄清** - 将混乱的请求转化为一个没有隐藏矛盾的连贯目标 +- **规范审批** - 确认冻结的理解是正确要构建的东西 +- **最终产品审查** - 主要检查点,人类在最后决定结果是否可接受 + +### 2. 路由到最小安全路径 + +一旦目标清晰,工作流就会决定这是一个真正的单次变更还是需要更完整的路径。小的、零爆炸半径的变更可以直接进入实现。其他所有内容都需要经过规划,这样模型在独自运行更长时间之前就有更强的边界。 + +### 3. 以更少的监督运行更长时间 + +在那个路由决策之后,模型可以自己承担更多工作。在更完整的路径上,批准的规范成为模型在较少监督下执行的边界,这正是实验的全部意义。 + +### 4. 在正确的层诊断失败 + +如果实现是错误的,因为意图是错误的,修补代码是错误的修复。如果代码是错误的,因为规范太弱,修补差异也是错误的修复。工作流旨在诊断失败从系统的哪个层面进入,回到那个层面,并从那里重新生成。 + +审查发现用于确定问题来自意图、规范生成还是本地实现。只有真正的本地问题才会在本地修补。 + +### 5. 只在需要时让人类回来 + +意图访谈是人机交互,但它不是与重复检查点相同类型的中断。工作流试图将那些重复检查点保持在最低限度。在初始意图塑造之后,人类主要在工作流无法在没有判断的情况下安全继续时,以及在最后需要审查结果时才回来。 + +- **意图差距解决** - 当审查证明工作流无法安全推断出原本意图时重新介入 + +其他一切都是更长自主执行的候选。这种权衡是经过深思熟虑的。旧模式在持续监督上花费更多的人类注意力。快速开发新预览在模型上投入更多信任,但将人类注意力保留在人类推理具有最高杠杆作用的时刻。 + +## 为什么审查系统很重要 + +审查阶段不仅仅是为了发现错误。它是为了在不破坏动力的情况下路由修正。 + +这个工作流在能够生成子智能体的平台上效果最好,或者至少可以通过命令行调用另一个 LLM 并等待结果。如果你的平台本身不支持这一点,你可以添加一个技能来做。无上下文子智能体是审查设计的基石。 + +智能体审查经常以两种方式出错: + +- 它们生成太多发现,迫使人类在噪音中筛选 +- 它们通过提出不相关的问题并使每次运行变成临时清理项目来使当前变更脱轨 + +快速开发新预览通过将审查视为分诊来解决这两个问题。 + +一些发现属于当前变更。一些不属于。如果一个发现是附带的而不是与当前工作有因果关系,工作流可以推迟它,而不是强迫人类立即处理它。这使运行保持专注,并防止随机的分支话题消耗注意力的预算。 + +那个分诊有时会不完美。这是可以接受的。通常,误判一些发现比用成千上万个低价值的审查评论淹没人类要好。系统正在优化信号质量,而不是详尽的召回率。 \ No newline at end of file diff --git a/docs/zh-cn/how-to/established-projects.md b/docs/zh-cn/how-to/established-projects.md index ec7b9d787..5b853e3c2 100644 --- a/docs/zh-cn/how-to/established-projects.md +++ b/docs/zh-cn/how-to/established-projects.md @@ -61,16 +61,16 @@ sidebar: ### BMad-Help:你的起点 -**随时运行 `/bmad-help`,当你不确定下一步该做什么时。** 这个智能指南: +**随时运行 `bmad-help`,当你不确定下一步该做什么时。** 这个智能指南: - 检查你的项目以查看已经完成了什么 - 根据你安装的模块显示选项 - 理解自然语言查询 ``` -/bmad-help 我有一个现有的 Rails 应用,我应该从哪里开始? -/bmad-help quick-flow 和完整方法有什么区别? -/bmad-help 显示我有哪些可用的工作流程 +bmad-help 我有一个现有的 Rails 应用,我应该从哪里开始? +bmad-help quick-flow 和完整方法有什么区别? +bmad-help 显示我有哪些可用的工作流程 ``` BMad-Help 还会在**每个工作流程结束时自动运行**,提供关于下一步该做什么的清晰指导。 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 d40dbbcab..aa96acf60 100644 --- a/docs/zh-cn/how-to/get-answers-about-bmad.md +++ b/docs/zh-cn/how-to/get-answers-about-bmad.md @@ -7,7 +7,7 @@ sidebar: ## 从这里开始:BMad-Help -**获取关于 BMad 答案的最快方式是 `/bmad-help`。** 这个智能指南可以回答超过 80% 的问题,并且直接在您的 IDE 中可用,方便您工作时使用。 +**获取关于 BMad 答案的最快方式是 `bmad-help`。** 这个智能指南可以回答超过 80% 的问题,并且直接在您的 IDE 中可用,方便您工作时使用。 BMad-Help 不仅仅是一个查询工具——它: - **检查您的项目**以查看已完成的内容 @@ -21,16 +21,16 @@ BMad-Help 不仅仅是一个查询工具——它: 只需使用斜杠命令运行它: ``` -/bmad-help +bmad-help ``` 或者结合自然语言查询: ``` -/bmad-help 我有一个 SaaS 想法并且知道所有功能。我应该从哪里开始? -/bmad-help 我在 UX 设计方面有哪些选择? -/bmad-help 我在 PRD 工作流上卡住了 -/bmad-help 向我展示到目前为止已完成的内容 +bmad-help 我有一个 SaaS 想法并且知道所有功能。我应该从哪里开始? +bmad-help 我在 UX 设计方面有哪些选择? +bmad-help 我在 PRD 工作流上卡住了 +bmad-help 向我展示到目前为止已完成的内容 ``` BMad-Help 会回应: diff --git a/docs/zh-cn/how-to/install-bmad.md b/docs/zh-cn/how-to/install-bmad.md index f0e2d436c..e0309d2b9 100644 --- a/docs/zh-cn/how-to/install-bmad.md +++ b/docs/zh-cn/how-to/install-bmad.md @@ -77,7 +77,7 @@ your-project/ ## 验证安装 -运行 `/bmad-help` 来验证一切正常并查看下一步操作。 +运行 `bmad-help` 来验证一切正常并查看下一步操作。 **BMad-Help 是你的智能向导**,它会: - 确认你的安装正常工作 @@ -86,8 +86,8 @@ your-project/ 你也可以向它提问: ``` -/bmad-help 我刚安装完成,应该先做什么? -/bmad-help 对于 SaaS 项目我有哪些选项? +bmad-help 我刚安装完成,应该先做什么? +bmad-help 对于 SaaS 项目我有哪些选项? ``` ## 故障排除 diff --git a/docs/zh-cn/index.md b/docs/zh-cn/index.md index 6e643c34b..5021d18cc 100644 --- a/docs/zh-cn/index.md +++ b/docs/zh-cn/index.md @@ -8,7 +8,7 @@ BMad 方法(**B**reakthrough **M**ethod of **A**gile AI **D**riven Development 如果您熟悉使用 Claude、Cursor 或 GitHub Copilot 等 AI 编码助手,就可以开始使用了。 :::note[🚀 V6 已发布,我们才刚刚起步!] -技能架构、BMad Builder v1、开发循环自动化以及更多功能正在开发中。**[查看路线图 →](/roadmap/)** +技能架构、BMad Builder v1、开发循环自动化以及更多功能正在开发中。**[查看路线图 →](/zh-cn/roadmap/)** ::: ## 新手入门?从教程开始 @@ -19,7 +19,7 @@ BMad 方法(**B**reakthrough **M**ethod of **A**gile AI **D**riven Development - **[工作流地图](./reference/workflow-map.md)** — BMM 阶段、工作流和上下文管理的可视化概览 :::tip[只想直接上手?] -安装 BMad 并运行 `/bmad-help` — 它会根据您的项目和已安装的模块引导您完成所有操作。 +安装 BMad 并运行 `bmad-help` — 它会根据您的项目和已安装的模块引导您完成所有操作。 ::: ## 如何使用本文档 @@ -35,7 +35,7 @@ BMad 方法(**B**reakthrough **M**ethod of **A**gile AI **D**riven Development ## 扩展和自定义 -想要使用自己的智能体、工作流或模块来扩展 BMad 吗?**[BMad Builder](https://bmad-builder-docs.bmad-method.org/)** 提供了创建自定义扩展的框架和工具,无论是为 BMad 添加新功能还是从头开始构建全新的模块。 +想要使用自己的智能体、工作流或模块来扩展 BMad 吗?**[BMad Builder(英文)](https://bmad-builder-docs.bmad-method.org/)** 提供了创建自定义扩展的框架和工具,无论是为 BMad 添加新功能还是从头开始构建全新的模块。 ## 您需要什么 diff --git a/docs/zh-cn/reference/commands.md b/docs/zh-cn/reference/commands.md index 40629e673..773998cfd 100644 --- a/docs/zh-cn/reference/commands.md +++ b/docs/zh-cn/reference/commands.md @@ -13,7 +13,7 @@ BMad 提供两种开始工作的方式,它们服务于不同的目的。 | 机制 | 调用方式 | 发生什么 | | --- | --- | --- | -| **斜杠命令** | 在 IDE 中输入 `/bmad-...` | 直接加载智能体、运行工作流或执行任务 | +| **斜杠命令** | 在 IDE 中输入 `bmad-...` | 直接加载智能体、运行工作流或执行任务 | | **智能体菜单触发器** | 先加载智能体,然后输入简短代码(例如 `DS`) | 智能体解释代码并启动匹配的工作流,同时保持角色设定 | 智能体菜单触发器需要活动的智能体会话。当您知道要使用哪个工作流时,使用斜杠命令。当您已经与智能体一起工作并希望在不离开对话的情况下切换任务时,使用触发器。 @@ -58,13 +58,13 @@ BMad 提供两种开始工作的方式,它们服务于不同的目的。 └── ... ``` -文件名决定了 IDE 中的斜杠命令名称。例如,文件 `bmad-agent-bmm-dev.md` 注册命令 `/bmad-agent-bmm-dev`。 +文件名决定了 IDE 中的技能名称。例如,文件 `bmad-agent-bmm-dev.md` 注册技能 `bmad-agent-bmm-dev`。 ## 如何发现您的命令 在 IDE 中输入 `/bmad` 并使用自动完成功能浏览可用命令。 -运行 `/bmad-help` 获取关于下一步的上下文感知指导。 +运行 `bmad-help` 获取关于下一步的上下文感知指导。 :::tip[快速发现] 项目中生成的命令文件夹是权威列表。在文件资源管理器中打开它们以查看每个命令及其描述。 @@ -78,10 +78,10 @@ BMad 提供两种开始工作的方式,它们服务于不同的目的。 | 示例命令 | 智能体 | 角色 | | --- | --- | --- | -| `/bmad-agent-bmm-dev` | Amelia(开发者) | 严格按照规范实现故事 | -| `/bmad-agent-bmm-pm` | John(产品经理) | 创建和验证 PRD | -| `/bmad-agent-bmm-architect` | Winston(架构师) | 设计系统架构 | -| `/bmad-agent-bmm-sm` | Bob(Scrum Master) | 管理冲刺和故事 | +| `bmad-agent-bmm-dev` | Amelia(开发者) | 严格按照规范实现故事 | +| `bmad-agent-bmm-pm` | John(产品经理) | 创建和验证 PRD | +| `bmad-agent-bmm-architect` | Winston(架构师) | 设计系统架构 | +| `bmad-agent-bmm-sm` | Bob(Scrum Master) | 管理冲刺和故事 | 参见[智能体](./agents.md)获取默认智能体及其触发器的完整列表。 @@ -91,11 +91,11 @@ BMad 提供两种开始工作的方式,它们服务于不同的目的。 | 示例命令 | 目的 | | --- | --- | -| `/bmad-bmm-create-prd` | 创建产品需求文档 | -| `/bmad-bmm-create-architecture` | 设计系统架构 | -| `/bmad-bmm-dev-story` | 实现故事 | -| `/bmad-bmm-code-review` | 运行代码审查 | -| `/bmad-bmm-quick-spec` | 定义临时更改(快速流程) | +| `bmad-bmm-create-prd` | 创建产品需求文档 | +| `bmad-bmm-create-architecture` | 设计系统架构 | +| `bmad-bmm-dev-story` | 实现故事 | +| `bmad-bmm-code-review` | 运行代码审查 | +| `bmad-bmm-quick-spec` | 定义临时更改(快速流程) | 参见[工作流地图](./workflow-map.md)获取按阶段组织的完整工作流参考。 @@ -105,7 +105,7 @@ BMad 提供两种开始工作的方式,它们服务于不同的目的。 #### BMad-Help:您的智能向导 -**`/bmad-help`** 是您发现下一步操作的主要界面。它不仅仅是一个查找工具——它是一个智能助手,可以: +**`bmad-help`** 是您发现下一步操作的主要界面。它不仅仅是一个查找工具——它是一个智能助手,可以: - **检查您的项目**以查看已经完成的工作 - **理解自然语言查询**——用简单的英语提问 @@ -116,19 +116,19 @@ BMad 提供两种开始工作的方式,它们服务于不同的目的。 **示例:** ``` -/bmad-help -/bmad-help 我有一个 SaaS 想法并且知道所有功能。我应该从哪里开始? -/bmad-help 我在 UX 设计方面有哪些选择? -/bmad-help 我在 PRD 工作流上卡住了 +bmad-help +bmad-help 我有一个 SaaS 想法并且知道所有功能。我应该从哪里开始? +bmad-help 我在 UX 设计方面有哪些选择? +bmad-help 我在 PRD 工作流上卡住了 ``` #### 其他任务和工具 | 示例命令 | 目的 | | --- | --- | -| `/bmad-shard-doc` | 将大型 Markdown 文件拆分为较小的部分 | -| `/bmad-index-docs` | 索引项目文档 | -| `/bmad-editorial-review-prose` | 审查文档散文质量 | +| `bmad-shard-doc` | 将大型 Markdown 文件拆分为较小的部分 | +| `bmad-index-docs` | 索引项目文档 | +| `bmad-editorial-review-prose` | 审查文档散文质量 | ## 命名约定 diff --git a/docs/zh-cn/reference/core-tools.md b/docs/zh-cn/reference/core-tools.md new file mode 100644 index 000000000..c5fcd4f75 --- /dev/null +++ b/docs/zh-cn/reference/core-tools.md @@ -0,0 +1,293 @@ +--- +title: "核心工具" +description: 每个 BMad 安装都自带的内置任务和工作流参考。 +sidebar: + order: 2 +--- + +每个 BMad 安装都包含一组核心技能,可以配合你正在做的任何事情使用——跨项目、跨模块、跨阶段的独立任务和工作流。无论安装了哪些可选模块,这些工具始终可用。 + +:::tip[快速上手] +在 IDE 中输入技能名称(如 `bmad-help`)即可运行任意核心工具,无需启动智能体会话。 +::: + +## 概览 + +| 工具 | 类型 | 用途 | +| --- | --- | --- | +| [`bmad-help`](#bmad-help) | 任务 | 根据上下文给出下一步建议 | +| [`bmad-brainstorming`](#bmad-brainstorming) | 工作流 | 引导交互式头脑风暴 | +| [`bmad-party-mode`](#bmad-party-mode) | 工作流 | 编排多智能体群组讨论 | +| [`bmad-distillator`](#bmad-distillator) | 任务 | 无损的 LLM 优化文档压缩 | +| [`bmad-advanced-elicitation`](#bmad-advanced-elicitation) | 任务 | 通过迭代精炼方法提升 LLM 输出质量 | +| [`bmad-review-adversarial-general`](#bmad-review-adversarial-general) | 任务 | 挑刺式审查——找出遗漏和问题 | +| [`bmad-review-edge-case-hunter`](#bmad-review-edge-case-hunter) | 任务 | 穷举分支路径分析,找出未处理的边界情况 | +| [`bmad-editorial-review-prose`](#bmad-editorial-review-prose) | 任务 | 临床式文案编辑,聚焦表达清晰度 | +| [`bmad-editorial-review-structure`](#bmad-editorial-review-structure) | 任务 | 结构编辑——裁剪、合并与重组 | +| [`bmad-shard-doc`](#bmad-shard-doc) | 任务 | 将大型 Markdown 文件拆分为有序章节 | +| [`bmad-index-docs`](#bmad-index-docs) | 任务 | 生成或更新文件夹的文档索引 | + +## bmad-help + +**你的智能向导,告诉你下一步该做什么。** — 检查项目状态,识别已完成的内容,推荐下一个必需或可选步骤。 + +**适用场景:** + +- 完成了一个工作流,想知道接下来做什么 +- 刚接触 BMad,需要快速了解全貌 +- 卡住了,想要根据当前上下文获取建议 +- 安装了新模块,想看看有哪些可用功能 + +**工作原理:** + +1. 扫描项目中已有的产出物(PRD、架构文档、用户故事等) +2. 检测已安装的模块及其可用工作流 +3. 按优先级推荐下一步——必需步骤优先,可选步骤其次 +4. 每条推荐都附带技能命令和简要说明 + +**输入:** 可选的自然语言查询(如 `bmad-help I have a SaaS idea, where do I start?`) + +**输出:** 按优先级排列的下一步推荐列表,附带技能命令 + +## bmad-brainstorming + +**通过交互式创意技法激发多样想法。** — 引导式头脑风暴会话,从技法库中加载经过验证的创意方法,引导你在整理之前先产出 100+ 个想法。 + +**适用场景:** + +- 启动新项目,需要探索问题空间 +- 想法枯竭,需要结构化的创意引导 +- 想使用成熟的创意框架(SCAMPER、反向头脑风暴等) + +**工作原理:** + +1. 围绕你的主题建立头脑风暴会话 +2. 从方法库中加载创意技法 +3. 逐个技法引导你产出想法 +4. 应用反偏差协议——每产出 10 个想法切换一次创意领域,防止想法扎堆 +5. 生成一份只追加的会话文档,所有想法按技法分类整理 + +**输入:** 头脑风暴主题或问题陈述,可选上下文文件 + +**输出:** `brainstorming-session-{date}.md`,包含所有产出的想法 + +:::note[数量目标] +真正的好点子往往出现在第 50-100 个想法之间。工作流鼓励在整理之前先产出 100+ 个想法。 +::: + +## bmad-party-mode + +**编排多智能体群组讨论。** — 加载所有已安装的 BMad 智能体,引导一场自然对话,每个智能体从各自的专业领域和角色特征出发发言。 + +**适用场景:** + +- 需要多个专家视角来评估一个决策 +- 希望智能体互相质疑彼此的假设 +- 正在探索一个横跨多个领域的复杂话题 + +**工作原理:** + +1. 加载智能体清单及所有已安装的智能体角色 +2. 分析你的话题,选出 2-3 个最相关的智能体 +3. 智能体轮流发言,自然地交叉讨论甚至争论 +4. 轮换参与的智能体,确保随时间推移覆盖多样视角 +5. 输入 `goodbye`、`end party` 或 `quit` 退出 + +**输入:** 讨论话题或问题,以及你希望参与的角色(可选) + +**输出:** 实时多智能体对话,各智能体保持各自角色特征 + +## bmad-distillator + +**无损的 LLM 优化文档压缩。** — 生成信息密度高、token 高效的精馏文档,保留全部信息供下游 LLM 消费。可通过往返重构验证无损性。 + +**适用场景:** + +- 文档太大,超出 LLM 的上下文窗口 +- 需要研究资料、规格或规划产出物的 token 高效版本 +- 想验证压缩过程中没有丢失信息 +- 智能体需要频繁引用和检索其中的信息 + +**工作原理:** + +1. **分析** — 读取源文档,识别信息密度和结构 +2. **压缩** — 将散文转为密集的要点格式,剥离装饰性排版 +3. **校验** — 检查完整性,确保原始信息全部保留 +4. **验证**(可选)— 往返重构测试,证明压缩无损 + +**输入:** + +- `source_documents`(必填)— 文件路径、文件夹路径或 glob 模式 +- `downstream_consumer`(可选)— 消费方是什么(如 "PRD creation") +- `token_budget`(可选)— 大致目标大小 +- `--validate`(标志)— 运行往返重构测试 + +**输出:** 精馏 Markdown 文件,附带压缩比报告(如 "3.2:1") + +## bmad-advanced-elicitation + +**通过迭代精炼方法提升 LLM 输出质量。** — 从启发技法库中选取合适的方法,通过多轮迭代系统性地改进内容。 + +**适用场景:** + +- LLM 输出感觉浅薄或千篇一律 +- 想从多个分析角度深挖一个话题 +- 正在打磨关键文档,需要更深层的思考 + +**工作原理:** + +1. 加载包含 5+ 种启发技法的方法注册表 +2. 根据内容类型和复杂度选出 5 个最匹配的方法 +3. 呈现交互菜单——选一个方法、重新洗牌或列出全部 +4. 将选中的方法应用到内容上进行增强 +5. 重新呈现选项,反复迭代改进,直到你选择"继续" + +**输入:** 待增强的内容段落 + +**输出:** 应用改进后的增强版内容 + +## bmad-review-adversarial-general + +**预设问题存在,然后去找出来的挑刺式审查。** — 以怀疑、挑剔的审查者视角,对粗糙工作零容忍。重点找遗漏,而不只是找错误。 + +**适用场景:** + +- 在交付物定稿前需要质量保证 +- 想对规格、用户故事或文档进行压力测试 +- 想找到乐观审查容易忽略的覆盖盲区 + +**工作原理:** + +1. 以挑剔、批判的视角阅读内容 +2. 从完整性、正确性和质量三个维度识别问题 +3. 专门寻找遗漏的内容——不只是已有内容中的错误 +4. 至少找出 10 个问题,否则进行更深层分析 + +**输入:** + +- `content`(必填)— diff、规格、用户故事、文档或任意产出物 +- `also_consider`(可选)— 需要额外关注的领域 + +**输出:** 包含 10+ 条发现及描述的 Markdown 列表 + +## bmad-review-edge-case-hunter + +**遍历每条分支路径和边界条件,只报告未处理的情况。** — 纯路径追踪方法论,机械地推导边界类别。与对抗式审查正交——靠方法驱动,而非靠态度驱动。 + +**适用场景:** + +- 想对代码或逻辑做穷举式边界覆盖 +- 需要与对抗式审查互补(不同方法论,不同发现) +- 正在审查 diff 或函数的边界条件 + +**工作原理:** + +1. 枚举内容中所有分支路径 +2. 机械推导边界类别:缺失的 else/default、未防护的输入、差一错误、算术溢出、隐式类型转换、竞态条件、超时间隙 +3. 逐条路径检查现有防护 +4. 只报告未处理的路径——已处理的静默丢弃 + +**输入:** + +- `content`(必填)— diff、完整文件或函数 +- `also_consider`(可选)— 需要额外关注的领域 + +**输出:** JSON 数组,每条发现包含 `location`、`trigger_condition`、`guard_snippet` 和 `potential_consequence` + +:::note[互补审查] +同时运行 `bmad-review-adversarial-general` 和 `bmad-review-edge-case-hunter` 可获得正交覆盖。对抗式审查捕捉质量和完整性问题;边界猎手捕捉未处理的路径。 +::: + +## bmad-editorial-review-prose + +**聚焦表达清晰度的临床式文案编辑。** — 审查文本中阻碍理解的问题,以 Microsoft 写作风格指南为基准,保留作者个人风格。 + +**适用场景:** + +- 写完初稿想打磨文字 +- 需要确保内容对特定受众足够清晰 +- 只想修表达问题,不想改写风格偏好 + +**工作原理:** + +1. 阅读内容,跳过代码块和 frontmatter +2. 识别表达问题(不是风格偏好) +3. 对多处出现的相同问题去重 +4. 生成三列修改表 + +**输入:** + +- `content`(必填)— Markdown、纯文本或 XML +- `style_guide`(可选)— 项目特定的写作风格指南 +- `reader_type`(可选)— `humans`(默认)注重清晰流畅,`llm` 注重精确一致 + +**输出:** 三列 Markdown 表格:原文 | 修改后 | 变更说明 + +## bmad-editorial-review-structure + +**结构编辑——提出裁剪、合并、移动和精简建议。** — 审查文档组织结构,在文案编辑之前提出实质性调整建议,以改善清晰度和阅读流畅性。 + +**适用场景:** + +- 文档由多个子流程产出,需要结构上的连贯性 +- 想在保持可读性的前提下缩减文档篇幅 +- 需要识别范围越界或关键信息被埋没的情况 + +**工作原理:** + +1. 将文档与 5 种结构模型对照分析(教程、参考、解释、提示词、战略) +2. 识别冗余、范围越界和被埋没的信息 +3. 生成优先级排序的建议:裁剪、合并、移动、精简、质疑、保留 +4. 估算总缩减字数和百分比 + +**输入:** + +- `content`(必填)— 待审查的文档 +- `purpose`(可选)— 预期用途(如 "quickstart tutorial") +- `target_audience`(可选)— 目标读者 +- `reader_type`(可选)— `humans` 或 `llm` +- `length_target`(可选)— 目标缩减量(如 "30% shorter") + +**输出:** 文档摘要、优先级排序的建议列表,以及预估缩减量 + +## bmad-shard-doc + +**将大型 Markdown 文件拆分为有序的章节文件。** — 以二级标题为分割点,创建一个包含独立章节文件和索引的文件夹。 + +**适用场景:** + +- Markdown 文档过大,难以有效管理(500+ 行) +- 想把单体文档拆分成可导航的章节 +- 需要独立文件以支持并行编辑或 LLM 上下文管理 + +**工作原理:** + +1. 验证源文件存在且是 Markdown 格式 +2. 按二级(`##`)标题分割为编号章节文件 +3. 创建 `index.md`,包含章节清单和链接 +4. 提示你选择删除、归档还是保留原文件 + +**输入:** 源 Markdown 文件路径,可选目标文件夹 + +**输出:** 包含 `index.md` 和 `01-{section}.md`、`02-{section}.md` 等文件的文件夹 + +## bmad-index-docs + +**生成或更新文件夹中所有文档的索引。** — 扫描目录,读取每个文件以理解其用途,生成一份带链接和描述的有序 `index.md`。 + +**适用场景:** + +- 需要一个轻量索引供 LLM 快速扫描可用文档 +- 文档文件夹不断增长,需要一个有序的目录 +- 想要一份自动生成、能持续保持最新的概览 + +**工作原理:** + +1. 扫描目标目录中所有非隐藏文件 +2. 读取每个文件以理解其实际用途 +3. 按类型、用途或子目录分组 +4. 生成简洁描述(每条 3-10 个词) + +**输入:** 目标文件夹路径 + +**输出:** `index.md`,包含有序的文件列表、相对链接和简要描述 diff --git a/docs/zh-cn/reference/testing.md b/docs/zh-cn/reference/testing.md index 85fcde0db..30b747754 100644 --- a/docs/zh-cn/reference/testing.md +++ b/docs/zh-cn/reference/testing.md @@ -65,7 +65,7 @@ Quinn 仅生成测试。如需代码审查和故事验证,请改用代码审 TEA 是一个独立模块,提供专家智能体(Murat)和九个结构化工作流,用于企业级测试。它超越了测试生成,涵盖测试策略、基于风险的规划、质量门控和需求可追溯性。 -- **文档:** [TEA 模块文档](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/) +- **文档:** [TEA 模块文档(英文)](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/) - **安装:** `npx bmad-method install` 并选择 TEA 模块 - **npm:** [`bmad-method-test-architecture-enterprise`](https://www.npmjs.com/package/bmad-method-test-architecture-enterprise) diff --git a/docs/zh-cn/reference/workflow-map.md b/docs/zh-cn/reference/workflow-map.md index 23ae70b5b..51a8e2219 100644 --- a/docs/zh-cn/reference/workflow-map.md +++ b/docs/zh-cn/reference/workflow-map.md @@ -9,7 +9,7 @@ BMad Method(BMM)是 BMad 生态系统中的一个模块,旨在遵循上下 其基本原理和概念来自敏捷方法论,这些方法论在整个行业中被广泛用作思维框架,并取得了巨大成功。 -如果您在任何时候不确定该做什么,`/bmad-help` 命令将帮助您保持正轨或了解下一步该做什么。您也可以随时参考此文档以获取参考信息——但如果您已经安装了 BMad Method,`/bmad-help` 是完全交互式的,速度要快得多。此外,如果您正在使用扩展了 BMad Method 或添加了其他互补非扩展模块的不同模块——`/bmad-help` 会不断演进以了解所有可用内容,从而为您提供最佳即时建议。 +如果您在任何时候不确定该做什么,`bmad-help` 命令将帮助您保持正轨或了解下一步该做什么。您也可以随时参考此文档以获取参考信息——但如果您已经安装了 BMad Method,`bmad-help` 是完全交互式的,速度要快得多。此外,如果您正在使用扩展了 BMad Method 或添加了其他互补非扩展模块的不同模块——`bmad-help` 会不断演进以了解所有可用内容,从而为您提供最佳即时建议。 最后的重要说明:以下每个工作流程都可以通过斜杠命令直接使用您选择的工具运行,或者先加载智能体,然后使用智能体菜单中的条目来运行。 @@ -84,7 +84,7 @@ BMad Method(BMM)是 BMad 生态系统中的一个模块,旨在遵循上下 **如何创建它:** - **手动** — 使用您的技术栈和实施规则创建 `_bmad-output/project-context.md` -- **生成它** — 运行 `/bmad-bmm-generate-project-context` 以从您的架构或代码库自动生成 +- **生成它** — 运行 `bmad-bmm-generate-project-context` 以从您的架构或代码库自动生成 [**了解更多关于 project-context.md**](../explanation/project-context.md) diff --git a/docs/zh-cn/tutorials/getting-started.md b/docs/zh-cn/tutorials/getting-started.md index 31a765b33..3bffb4407 100644 --- a/docs/zh-cn/tutorials/getting-started.md +++ b/docs/zh-cn/tutorials/getting-started.md @@ -22,7 +22,7 @@ description: 安装 BMad 并构建你的第一个项目 :::tip[最简单的路径] **安装** → `npx bmad-method install` -**询问** → `/bmad-help 我应该先做什么?` +**询问** → `bmad-help 我应该先做什么?` **构建** → 让 BMad-Help 逐个工作流地引导你 ::: @@ -40,13 +40,13 @@ description: 安装 BMad 并构建你的第一个项目 只需在 AI IDE 中使用斜杠命令运行它: ``` -/bmad-help +bmad-help ``` 或者结合问题以获得上下文感知的指导: ``` -/bmad-help 我有一个 SaaS 产品的想法,我已经知道我想要的所有功能。我应该从哪里开始? +bmad-help 我有一个 SaaS 产品的想法,我已经知道我想要的所有功能。我应该从哪里开始? ``` BMad-Help 将回应: @@ -59,7 +59,7 @@ BMad-Help 将回应: BMad-Help 不仅回答问题 —— **它会在每个工作流结束时自动运行**,告诉你确切地下一步该做什么。无需猜测,无需搜索文档 —— 只需对下一个必需工作流的清晰指导。 :::tip[从这里开始] -安装 BMad 后,立即运行 `/bmad-help`。它将检测你安装了哪些模块,并引导你找到项目的正确起点。 +安装 BMad 后,立即运行 `bmad-help`。它将检测你安装了哪些模块,并引导你找到项目的正确起点。 ::: ## 了解 BMad @@ -105,14 +105,14 @@ npx bmad-method install 在项目文件夹中打开你的 AI IDE 并运行: ``` -/bmad-help +bmad-help ``` BMad-Help 将检测你已完成的内容,并准确推荐下一步该做什么。你也可以问它诸如"我的选项是什么?"或"我有一个 SaaS 想法,我应该从哪里开始?"之类的问题。 ::: :::note[如何加载智能体和运行工作流] -每个工作流都有一个你在 IDE 中运行的**斜杠命令**(例如 `/bmad-bmm-create-prd`)。运行工作流命令会自动加载相应的智能体 —— 你不需要单独加载智能体。你也可以直接加载智能体进行一般对话(例如,加载 PM 智能体使用 `/bmad-agent-bmm-pm`)。 +每个工作流都有一个你在 IDE 中运行的**斜杠命令**(例如 `bmad-bmm-create-prd`)。运行工作流命令会自动加载相应的智能体 —— 你不需要单独加载智能体。你也可以直接加载智能体进行一般对话(例如,加载 PM 智能体使用 `bmad-agent-bmm-pm`)。 ::: :::caution[新对话] @@ -126,35 +126,35 @@ BMad-Help 将检测你已完成的内容,并准确推荐下一步该做什么 :::tip[项目上下文(可选)] 在开始之前,考虑创建 `project-context.md` 来记录你的技术偏好和实现规则。这确保所有 AI 智能体在整个项目中遵循你的约定。 -在 `_bmad-output/project-context.md` 手动创建它,或在架构之后使用 `/bmad-bmm-generate-project-context` 生成它。[了解更多](../explanation/project-context.md)。 +在 `_bmad-output/project-context.md` 手动创建它,或在架构之后使用 `bmad-bmm-generate-project-context` 生成它。[了解更多](../explanation/project-context.md)。 ::: ### 阶段 1:分析(可选) 此阶段中的所有工作流都是可选的: -- **头脑风暴**(`/bmad-brainstorming`) — 引导式构思 -- **研究**(`/bmad-bmm-research`) — 市场和技术研究 -- **创建产品简报**(`/bmad-bmm-create-product-brief`) — 推荐的基础文档 +- **头脑风暴**(`bmad-brainstorming`) — 引导式构思 +- **研究**(`bmad-bmm-research`) — 市场和技术研究 +- **创建产品简报**(`bmad-bmm-create-product-brief`) — 推荐的基础文档 ### 阶段 2:规划(必需) **对于 BMad Method 和 Enterprise 路径:** -1. 在新对话中加载 **PM 智能体**(`/bmad-agent-bmm-pm`) -2. 运行 `prd` 工作流(`/bmad-bmm-create-prd`) +1. 在新对话中加载 **PM 智能体**(`bmad-agent-bmm-pm`) +2. 运行 `prd` 工作流(`bmad-bmm-create-prd`) 3. 输出:`PRD.md` **对于 Quick Flow 路径:** -- 使用 `quick-spec` 工作流(`/bmad-bmm-quick-spec`)代替 PRD,然后跳转到实现 +- 使用 `quick-spec` 工作流(`bmad-bmm-quick-spec`)代替 PRD,然后跳转到实现 :::note[UX 设计(可选)] -如果你的项目有用户界面,在创建 PRD 后加载 **UX-Designer 智能体**(`/bmad-agent-bmm-ux-designer`)并运行 UX 设计工作流(`/bmad-bmm-create-ux-design`)。 +如果你的项目有用户界面,在创建 PRD 后加载 **UX-Designer 智能体**(`bmad-agent-bmm-ux-designer`)并运行 UX 设计工作流(`bmad-bmm-create-ux-design`)。 ::: ### 阶段 3:解决方案设计(BMad Method/Enterprise) **创建架构** -1. 在新对话中加载 **Architect 智能体**(`/bmad-agent-bmm-architect`) -2. 运行 `create-architecture`(`/bmad-bmm-create-architecture`) +1. 在新对话中加载 **Architect 智能体**(`bmad-agent-bmm-architect`) +2. 运行 `create-architecture`(`bmad-bmm-create-architecture`) 3. 输出:包含技术决策的架构文档 **创建史诗和故事** @@ -163,13 +163,13 @@ BMad-Help 将检测你已完成的内容,并准确推荐下一步该做什么 史诗和故事现在在架构*之后*创建。这会产生更高质量的故事,因为架构决策(数据库、API 模式、技术栈)直接影响工作应该如何分解。 ::: -1. 在新对话中加载 **PM 智能体**(`/bmad-agent-bmm-pm`) -2. 运行 `create-epics-and-stories`(`/bmad-bmm-create-epics-and-stories`) +1. 在新对话中加载 **PM 智能体**(`bmad-agent-bmm-pm`) +2. 运行 `create-epics-and-stories`(`bmad-bmm-create-epics-and-stories`) 3. 工作流使用 PRD 和架构来创建技术信息丰富的故事 **实现就绪检查** *(强烈推荐)* -1. 在新对话中加载 **Architect 智能体**(`/bmad-agent-bmm-architect`) -2. 运行 `check-implementation-readiness`(`/bmad-bmm-check-implementation-readiness`) +1. 在新对话中加载 **Architect 智能体**(`bmad-agent-bmm-architect`) +2. 运行 `check-implementation-readiness`(`bmad-bmm-check-implementation-readiness`) 3. 验证所有规划文档之间的一致性 ## 步骤 2:构建你的项目 @@ -178,7 +178,7 @@ BMad-Help 将检测你已完成的内容,并准确推荐下一步该做什么 ### 初始化冲刺规划 -加载 **SM 智能体**(`/bmad-agent-bmm-sm`)并运行 `sprint-planning`(`/bmad-bmm-sprint-planning`)。这将创建 `sprint-status.yaml` 来跟踪所有史诗和故事。 +加载 **SM 智能体**(`bmad-agent-bmm-sm`)并运行 `sprint-planning`(`bmad-bmm-sprint-planning`)。这将创建 `sprint-status.yaml` 来跟踪所有史诗和故事。 ### 构建周期 @@ -186,11 +186,11 @@ BMad-Help 将检测你已完成的内容,并准确推荐下一步该做什么 | 步骤 | 智能体 | 工作流 | 命令 | 目的 | | ---- | ------ | ------------ | ----------------------- | ------------------------------- | -| 1 | SM | `create-story` | `/bmad-bmm-create-story` | 从史诗创建故事文件 | -| 2 | DEV | `dev-story` | `/bmad-bmm-dev-story` | 实现故事 | -| 3 | DEV | `code-review` | `/bmad-bmm-code-review` | 质量验证 *(推荐)* | +| 1 | SM | `create-story` | `bmad-bmm-create-story` | 从史诗创建故事文件 | +| 2 | DEV | `dev-story` | `bmad-bmm-dev-story` | 实现故事 | +| 3 | DEV | `code-review` | `bmad-bmm-code-review` | 质量验证 *(推荐)* | -完成史诗中的所有故事后,加载 **SM 智能体**(`/bmad-agent-bmm-sm`)并运行 `retrospective`(`/bmad-bmm-retrospective`)。 +完成史诗中的所有故事后,加载 **SM 智能体**(`bmad-agent-bmm-sm`)并运行 `retrospective`(`bmad-bmm-retrospective`)。 ## 你已完成的工作 @@ -221,16 +221,16 @@ your-project/ | 工作流 | 命令 | 智能体 | 目的 | | ----------------------------------- | --------------------------------------- | -------- | -------------------------------------------- | -| **`help`** ⭐ | `/bmad-help` | 任意 | **你的智能向导 —— 随时询问任何问题!** | -| `prd` | `/bmad-bmm-create-prd` | PM | 创建产品需求文档 | -| `create-architecture` | `/bmad-bmm-create-architecture` | Architect | 创建架构文档 | -| `generate-project-context` | `/bmad-bmm-generate-project-context` | Analyst | 创建项目上下文文件 | -| `create-epics-and-stories` | `/bmad-bmm-create-epics-and-stories` | PM | 将 PRD 分解为史诗 | -| `check-implementation-readiness` | `/bmad-bmm-check-implementation-readiness` | Architect | 验证规划一致性 | -| `sprint-planning` | `/bmad-bmm-sprint-planning` | SM | 初始化冲刺跟踪 | -| `create-story` | `/bmad-bmm-create-story` | SM | 创建故事文件 | -| `dev-story` | `/bmad-bmm-dev-story` | DEV | 实现故事 | -| `code-review` | `/bmad-bmm-code-review` | DEV | 审查已实现的代码 | +| **`help`** ⭐ | `bmad-help` | 任意 | **你的智能向导 —— 随时询问任何问题!** | +| `prd` | `bmad-bmm-create-prd` | PM | 创建产品需求文档 | +| `create-architecture` | `bmad-bmm-create-architecture` | Architect | 创建架构文档 | +| `generate-project-context` | `bmad-bmm-generate-project-context` | Analyst | 创建项目上下文文件 | +| `create-epics-and-stories` | `bmad-bmm-create-epics-and-stories` | PM | 将 PRD 分解为史诗 | +| `check-implementation-readiness` | `bmad-bmm-check-implementation-readiness` | Architect | 验证规划一致性 | +| `sprint-planning` | `bmad-bmm-sprint-planning` | SM | 初始化冲刺跟踪 | +| `create-story` | `bmad-bmm-create-story` | SM | 创建故事文件 | +| `dev-story` | `bmad-bmm-dev-story` | DEV | 实现故事 | +| `code-review` | `bmad-bmm-code-review` | DEV | 审查已实现的代码 | ## 常见问题 @@ -238,10 +238,10 @@ your-project/ 仅对于 BMad Method 和 Enterprise 路径。Quick Flow 从技术规范跳转到实现。 **我可以稍后更改我的计划吗?** -可以。SM 智能体有一个 `correct-course` 工作流(`/bmad-bmm-correct-course`)用于处理范围变更。 +可以。SM 智能体有一个 `correct-course` 工作流(`bmad-bmm-correct-course`)用于处理范围变更。 **如果我想先进行头脑风暴怎么办?** -在开始 PRD 之前,加载 Analyst 智能体(`/bmad-agent-bmm-analyst`)并运行 `brainstorming`(`/bmad-brainstorming`)。 +在开始 PRD 之前,加载 Analyst 智能体(`bmad-agent-bmm-analyst`)并运行 `brainstorming`(`bmad-brainstorming`)。 **我需要遵循严格的顺序吗?** 不一定。一旦你了解了流程,你可以使用上面的快速参考直接运行工作流。 @@ -249,7 +249,7 @@ your-project/ ## 获取帮助 :::tip[第一站:BMad-Help] -**随时运行 `/bmad-help`** —— 这是摆脱困境的最快方式。问它任何问题: +**随时运行 `bmad-help`** —— 这是摆脱困境的最快方式。问它任何问题: - "安装后我应该做什么?" - "我在工作流 X 上卡住了" - "我在 Y 方面有什么选项?" @@ -264,13 +264,13 @@ BMad-Help 检查你的项目,检测你已完成的内容,并确切地告诉 ## 关键要点 :::tip[记住这些] -- **从 `/bmad-help` 开始** — 你的智能向导,了解你的项目和选项 +- **从 `bmad-help` 开始** — 你的智能向导,了解你的项目和选项 - **始终使用新对话** — 为每个工作流开始新对话 - **路径很重要** — Quick Flow 使用 quick-spec;Method/Enterprise 需要 PRD 和架构 - **BMad-Help 自动运行** — 每个工作流结束时都会提供下一步的指导 ::: -准备好开始了吗?安装 BMad,运行 `/bmad-help`,让你的智能向导为你引路。 +准备好开始了吗?安装 BMad,运行 `bmad-help`,让你的智能向导为你引路。 --- ## 术语说明 diff --git a/package-lock.json b/package-lock.json index 450469c4d..76037a3c5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "bmad-method", - "version": "6.0.4", + "version": "6.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "bmad-method", - "version": "6.0.4", + "version": "6.2.0", "license": "MIT", "dependencies": { "@clack/core": "^1.0.0", diff --git a/package.json b/package.json index f3207f5fa..4340a2fe0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "bmad-method", - "version": "6.0.4", + "version": "6.2.0", "description": "Breakthrough Method of Agile AI-driven Development", "keywords": [ "agile", @@ -39,6 +39,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 validate:schemas && npm run test:schemas && npm run test:install && npm run validate:refs", "rebundle": "node tools/cli/bundlers/bundle-web.js rebundle", "test": "npm run test:schemas && npm run test:refs && npm run test:install && npm run validate:schemas && npm run lint && npm run lint:md && npm run format:check", "test:coverage": "c8 --reporter=text --reporter=html npm run test:schemas", diff --git a/src/bmm/agents/analyst.agent.yaml b/src/bmm/agents/analyst.agent.yaml index 7814ee609..dbb22c8fb 100644 --- a/src/bmm/agents/analyst.agent.yaml +++ b/src/bmm/agents/analyst.agent.yaml @@ -18,26 +18,26 @@ agent: menu: - trigger: BP or fuzzy match on brainstorm-project - exec: "{project-root}/_bmad/core/workflows/brainstorming/workflow.md" + exec: "skill:bmad-brainstorming" data: "{project-root}/_bmad/bmm/data/project-context-template.md" description: "[BP] Brainstorm Project: Expert Guided Facilitation through a single or multiple techniques with a final report" - trigger: MR or fuzzy match on market-research - exec: "{project-root}/_bmad/bmm/workflows/1-analysis/research/workflow-market-research.md" + exec: "skill:bmad-market-research" description: "[MR] Market Research: Market analysis, competitive landscape, customer needs and trends" - trigger: DR or fuzzy match on domain-research - exec: "{project-root}/_bmad/bmm/workflows/1-analysis/research/workflow-domain-research.md" + exec: "skill:bmad-domain-research" description: "[DR] Domain Research: Industry domain deep dive, subject matter expertise and terminology" - trigger: TR or fuzzy match on technical-research - exec: "{project-root}/_bmad/bmm/workflows/1-analysis/research/workflow-technical-research.md" + exec: "skill:bmad-technical-research" description: "[TR] Technical Research: Technical feasibility, architecture options and implementation approaches" - trigger: CB or fuzzy match on product-brief - exec: "{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brief/workflow.md" + exec: "skill:bmad-create-product-brief" description: "[CB] Create Brief: A guided experience to nail down your product idea into an executive brief" - trigger: DP or fuzzy match on document-project - workflow: "{project-root}/_bmad/bmm/workflows/document-project/workflow.md" + exec: "skill:bmad-document-project" description: "[DP] Document Project: Analyze an existing project to produce useful documentation for both human and LLM" diff --git a/src/bmm/agents/architect.agent.yaml b/src/bmm/agents/architect.agent.yaml index d9fc48b9b..ce76a3b49 100644 --- a/src/bmm/agents/architect.agent.yaml +++ b/src/bmm/agents/architect.agent.yaml @@ -21,9 +21,9 @@ agent: menu: - trigger: CA or fuzzy match on create-architecture - exec: "{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/workflow.md" + exec: "skill:bmad-create-architecture" description: "[CA] Create Architecture: Guided Workflow to document technical decisions to keep implementation on track" - trigger: IR or fuzzy match on implementation-readiness - exec: "{project-root}/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md" + exec: "skill:bmad-check-implementation-readiness" description: "[IR] Implementation Readiness: Ensure the PRD, UX, and Architecture and Epics and Stories List are all aligned" diff --git a/src/bmm/agents/dev.agent.yaml b/src/bmm/agents/dev.agent.yaml index 6de3d2c97..cdcf9ea5f 100644 --- a/src/bmm/agents/dev.agent.yaml +++ b/src/bmm/agents/dev.agent.yaml @@ -30,9 +30,9 @@ agent: menu: - trigger: DS or fuzzy match on dev-story - workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/dev-story/workflow.md" + exec: "skill:bmad-dev-story" description: "[DS] Dev Story: Write the next or specified stories tests and code." - trigger: CR or fuzzy match on code-review - workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/code-review/workflow.md" + exec: "skill:bmad-code-review" description: "[CR] Code Review: Initiate a comprehensive code review across multiple quality facets. For best results, use a fresh context and a different quality LLM if available" diff --git a/src/bmm/agents/pm.agent.yaml b/src/bmm/agents/pm.agent.yaml index 267797053..b9e5c4ed3 100644 --- a/src/bmm/agents/pm.agent.yaml +++ b/src/bmm/agents/pm.agent.yaml @@ -20,25 +20,25 @@ agent: menu: - trigger: CP or fuzzy match on create-prd - exec: "{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-create-prd.md" + exec: "skill:bmad-create-prd" description: "[CP] Create PRD: Expert led facilitation to produce your Product Requirements Document" - trigger: VP or fuzzy match on validate-prd - exec: "{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md" + exec: "skill:bmad-validate-prd" description: "[VP] Validate PRD: Validate a Product Requirements Document is comprehensive, lean, well organized and cohesive" - trigger: EP or fuzzy match on edit-prd - exec: "{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-edit-prd.md" + exec: "skill:bmad-edit-prd" description: "[EP] Edit PRD: Update an existing Product Requirements Document" - trigger: CE or fuzzy match on epics-stories - exec: "{project-root}/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md" + exec: "skill:bmad-create-epics-and-stories" description: "[CE] Create Epics and Stories: Create the Epics and Stories Listing, these are the specs that will drive development" - trigger: IR or fuzzy match on implementation-readiness - exec: "{project-root}/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md" + exec: "skill:bmad-check-implementation-readiness" description: "[IR] Implementation Readiness: Ensure the PRD, UX, and Architecture and Epics and Stories List are all aligned" - trigger: CC or fuzzy match on correct-course - workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/correct-course/workflow.md" + exec: "skill:bmad-correct-course" description: "[CC] Course Correction: Use this so we can determine how to proceed if major need for change is discovered mid implementation" diff --git a/src/bmm/agents/qa.agent.yaml b/src/bmm/agents/qa.agent.yaml index 71ff83930..c5aa97fdd 100644 --- a/src/bmm/agents/qa.agent.yaml +++ b/src/bmm/agents/qa.agent.yaml @@ -29,7 +29,7 @@ agent: menu: - trigger: QA or fuzzy match on qa-automate - workflow: "{project-root}/_bmad/bmm/workflows/qa-generate-e2e-tests/workflow.md" + exec: "skill:bmad-qa-generate-e2e-tests" description: "[QA] Automate - Generate tests for existing features (simplified)" prompts: diff --git a/src/bmm/agents/quick-flow-solo-dev.agent.yaml b/src/bmm/agents/quick-flow-solo-dev.agent.yaml index 72f861e8e..6cebb3cf1 100644 --- a/src/bmm/agents/quick-flow-solo-dev.agent.yaml +++ b/src/bmm/agents/quick-flow-solo-dev.agent.yaml @@ -20,11 +20,11 @@ agent: menu: - trigger: QS or fuzzy match on quick-spec - exec: "{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md" + exec: "skill:bmad-quick-spec" description: "[QS] Quick Spec: Architect a quick but complete technical spec with implementation-ready stories/specs" - trigger: QD or fuzzy match on quick-dev - exec: "{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md" + exec: "skill:bmad-quick-dev" description: "[QD] Quick-flow Develop: Implement a story tech spec end-to-end (Core of Quick Flow)" - trigger: QQ or fuzzy match on bmad-quick-dev-new-preview @@ -32,5 +32,5 @@ agent: description: "[QQ] Quick Dev New (Preview): Unified quick flow — clarify intent, plan, implement, review, present (experimental)" - trigger: CR or fuzzy match on code-review - workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/code-review/workflow.md" + exec: "skill:bmad-code-review" description: "[CR] Code Review: Initiate a comprehensive code review across multiple quality facets. For best results, use a fresh context and a different quality LLM if available" diff --git a/src/bmm/agents/sm.agent.yaml b/src/bmm/agents/sm.agent.yaml index 11716df24..614465553 100644 --- a/src/bmm/agents/sm.agent.yaml +++ b/src/bmm/agents/sm.agent.yaml @@ -20,18 +20,18 @@ agent: menu: - trigger: SP or fuzzy match on sprint-planning - workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/sprint-planning/workflow.md" + exec: "skill:bmad-sprint-planning" description: "[SP] Sprint Planning: Generate or update the record that will sequence the tasks to complete the full project that the dev agent will follow" - trigger: CS or fuzzy match on create-story - workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/create-story/workflow.md" + exec: "skill:bmad-create-story" description: "[CS] Context Story: Prepare a story with all required context for implementation for the developer agent" - trigger: ER or fuzzy match on epic-retrospective - workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/retrospective/workflow.md" + exec: "skill:bmad-retrospective" data: "{project-root}/_bmad/_config/agent-manifest.csv" description: "[ER] Epic Retrospective: Party Mode review of all work completed across an epic." - trigger: CC or fuzzy match on correct-course - workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/correct-course/workflow.md" + exec: "skill:bmad-correct-course" description: "[CC] Course Correction: Use this so we can determine how to proceed if major need for change is discovered mid implementation" diff --git a/src/bmm/agents/tech-writer/tech-writer.agent.yaml b/src/bmm/agents/tech-writer/tech-writer.agent.yaml index da3fe9c91..c7bf7acab 100644 --- a/src/bmm/agents/tech-writer/tech-writer.agent.yaml +++ b/src/bmm/agents/tech-writer/tech-writer.agent.yaml @@ -22,7 +22,7 @@ agent: menu: - trigger: DP or fuzzy match on document-project - workflow: "{project-root}/_bmad/bmm/workflows/document-project/workflow.md" + exec: "skill:bmad-document-project" description: "[DP] Document Project: Generate comprehensive project documentation (brownfield analysis, architecture scanning)" - trigger: WD or fuzzy match on write-document diff --git a/src/bmm/agents/ux-designer.agent.yaml b/src/bmm/agents/ux-designer.agent.yaml index 301a07fc6..64f8c3f5f 100644 --- a/src/bmm/agents/ux-designer.agent.yaml +++ b/src/bmm/agents/ux-designer.agent.yaml @@ -23,5 +23,5 @@ agent: menu: - trigger: CU or fuzzy match on ux-design - exec: "{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md" + exec: "skill:bmad-create-ux-design" description: "[CU] Create UX: Guidance through realizing the plan for your UX to inform architecture and implementation. Provides more details than what was discovered in the PRD" diff --git a/src/bmm/module-help.csv b/src/bmm/module-help.csv index 73482ae56..6960a8b31 100644 --- a/src/bmm/module-help.csv +++ b/src/bmm/module-help.csv @@ -1,32 +1,32 @@ module,phase,name,code,sequence,workflow-file,command,required,agent,options,description,output-location,outputs, -bmm,anytime,Document Project,DP,,_bmad/bmm/workflows/document-project/workflow.md,bmad-bmm-document-project,false,analyst,Create Mode,"Analyze an existing project to produce useful documentation",project-knowledge,*, -bmm,anytime,Generate Project Context,GPC,,_bmad/bmm/workflows/generate-project-context/workflow.md,bmad-bmm-generate-project-context,false,analyst,Create Mode,"Scan existing codebase to generate a lean LLM-optimized project-context.md containing critical implementation rules patterns and conventions for AI agents. Essential for brownfield projects and quick-flow.",output_folder,"project context", -bmm,anytime,Quick Spec,QS,,_bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md,bmad-bmm-quick-spec,false,quick-flow-solo-dev,Create Mode,"Do not suggest for potentially very complex things unless requested or if the user complains that they do not want to follow the extensive planning of the bmad method. Quick one-off tasks small changes simple apps brownfield additions to well established patterns utilities without extensive planning",planning_artifacts,"tech spec", -bmm,anytime,Quick Dev,QD,,_bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md,bmad-bmm-quick-dev,false,quick-flow-solo-dev,Create Mode,"Quick one-off tasks small changes simple apps utilities without extensive planning - Do not suggest for potentially very complex things unless requested or if the user complains that they do not want to follow the extensive planning of the bmad method, unless the user is already working through the implementation phase and just requests a 1 off things not already in the plan",,, +bmm,anytime,Document Project,DP,,skill:bmad-document-project,bmad-bmm-document-project,false,analyst,Create Mode,"Analyze an existing project to produce useful documentation",project-knowledge,*, +bmm,anytime,Generate Project Context,GPC,,skill:bmad-generate-project-context,bmad-bmm-generate-project-context,false,analyst,Create Mode,"Scan existing codebase to generate a lean LLM-optimized project-context.md containing critical implementation rules patterns and conventions for AI agents. Essential for brownfield projects and quick-flow.",output_folder,"project context", +bmm,anytime,Quick Spec,QS,,skill:bmad-quick-spec,bmad-bmm-quick-spec,false,quick-flow-solo-dev,Create Mode,"Do not suggest for potentially very complex things unless requested or if the user complains that they do not want to follow the extensive planning of the bmad method. Quick one-off tasks small changes simple apps brownfield additions to well established patterns utilities without extensive planning",planning_artifacts,"tech spec", +bmm,anytime,Quick Dev,QD,,skill:bmad-quick-dev,bmad-bmm-quick-dev,false,quick-flow-solo-dev,Create Mode,"Quick one-off tasks small changes simple apps utilities without extensive planning - Do not suggest for potentially very complex things unless requested or if the user complains that they do not want to follow the extensive planning of the bmad method, unless the user is already working through the implementation phase and just requests a 1 off things not already in the plan",,, bmm,anytime,Quick Dev New Preview,QQ,,skill:bmad-quick-dev-new-preview,bmad-bmm-quick-dev-new-preview,false,quick-flow-solo-dev,Create Mode,"Unified quick flow (experimental): clarify intent plan implement review and present in a single workflow",implementation_artifacts,"tech spec implementation", -bmm,anytime,Correct Course,CC,,_bmad/bmm/workflows/4-implementation/correct-course/workflow.md,bmad-bmm-correct-course,false,sm,Create Mode,"Anytime: Navigate significant changes. May recommend start over update PRD redo architecture sprint planning or correct epics and stories",planning_artifacts,"change proposal", +bmm,anytime,Correct Course,CC,,skill:bmad-correct-course,bmad-bmm-correct-course,false,sm,Create Mode,"Anytime: Navigate significant changes. May recommend start over update PRD redo architecture sprint planning or correct epics and stories",planning_artifacts,"change proposal", bmm,anytime,Write Document,WD,,_bmad/bmm/agents/tech-writer/tech-writer.agent.yaml,,false,tech-writer,,"Describe in detail what you want, and the agent will follow the documentation best practices defined in agent memory. Multi-turn conversation with subprocess for research/review.",project-knowledge,"document", bmm,anytime,Update Standards,US,,_bmad/bmm/agents/tech-writer/tech-writer.agent.yaml,,false,tech-writer,,"Update agent memory documentation-standards.md with your specific preferences if you discover missing document conventions.",_bmad/_memory/tech-writer-sidecar,"standards", bmm,anytime,Mermaid Generate,MG,,_bmad/bmm/agents/tech-writer/tech-writer.agent.yaml,,false,tech-writer,,"Create a Mermaid diagram based on user description. Will suggest diagram types if not specified.",planning_artifacts,"mermaid diagram", bmm,anytime,Validate Document,VD,,_bmad/bmm/agents/tech-writer/tech-writer.agent.yaml,,false,tech-writer,,"Review the specified document against documentation standards and best practices. Returns specific actionable improvement suggestions organized by priority.",planning_artifacts,"validation report", bmm,anytime,Explain Concept,EC,,_bmad/bmm/agents/tech-writer/tech-writer.agent.yaml,,false,tech-writer,,"Create clear technical explanations with examples and diagrams for complex concepts. Breaks down into digestible sections using task-oriented approach.",project_knowledge,"explanation", -bmm,1-analysis,Brainstorm Project,BP,10,_bmad/core/workflows/brainstorming/workflow.md,bmad-brainstorming,false,analyst,data=_bmad/bmm/data/project-context-template.md,"Expert Guided Facilitation through a single or multiple techniques",planning_artifacts,"brainstorming session", -bmm,1-analysis,Market Research,MR,20,_bmad/bmm/workflows/1-analysis/research/workflow-market-research.md,bmad-bmm-market-research,false,analyst,Create Mode,"Market analysis competitive landscape customer needs and trends","planning_artifacts|project-knowledge","research documents", -bmm,1-analysis,Domain Research,DR,21,_bmad/bmm/workflows/1-analysis/research/workflow-domain-research.md,bmad-bmm-domain-research,false,analyst,Create Mode,"Industry domain deep dive subject matter expertise and terminology","planning_artifacts|project_knowledge","research documents", -bmm,1-analysis,Technical Research,TR,22,_bmad/bmm/workflows/1-analysis/research/workflow-technical-research.md,bmad-bmm-technical-research,false,analyst,Create Mode,"Technical feasibility architecture options and implementation approaches","planning_artifacts|project_knowledge","research documents", -bmm,1-analysis,Create Brief,CB,30,_bmad/bmm/workflows/1-analysis/create-product-brief/workflow.md,bmad-bmm-create-product-brief,false,analyst,Create Mode,"A guided experience to nail down your product idea",planning_artifacts,"product brief", -bmm,2-planning,Create PRD,CP,10,_bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-create-prd.md,bmad-bmm-create-prd,true,pm,Create Mode,"Expert led facilitation to produce your Product Requirements Document",planning_artifacts,prd, -bmm,2-planning,Validate PRD,VP,20,_bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md,bmad-bmm-validate-prd,false,pm,Validate Mode,"Validate PRD is comprehensive lean well organized and cohesive",planning_artifacts,"prd validation report", -bmm,2-planning,Edit PRD,EP,25,_bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-edit-prd.md,bmad-bmm-edit-prd,false,pm,Edit Mode,"Improve and enhance an existing PRD",planning_artifacts,"updated prd", -bmm,2-planning,Create UX,CU,30,_bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md,bmad-bmm-create-ux-design,false,ux-designer,Create Mode,"Guidance through realizing the plan for your UX, strongly recommended if a UI is a primary piece of the proposed project",planning_artifacts,"ux design", -bmm,3-solutioning,Create Architecture,CA,10,_bmad/bmm/workflows/3-solutioning/create-architecture/workflow.md,bmad-bmm-create-architecture,true,architect,Create Mode,"Guided Workflow to document technical decisions",planning_artifacts,architecture, -bmm,3-solutioning,Create Epics and Stories,CE,30,_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md,bmad-bmm-create-epics-and-stories,true,pm,Create Mode,"Create the Epics and Stories Listing",planning_artifacts,"epics and stories", -bmm,3-solutioning,Check Implementation Readiness,IR,70,_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md,bmad-bmm-check-implementation-readiness,true,architect,Validate Mode,"Ensure PRD UX Architecture and Epics Stories are aligned",planning_artifacts,"readiness report", -bmm,4-implementation,Sprint Planning,SP,10,_bmad/bmm/workflows/4-implementation/sprint-planning/workflow.md,bmad-bmm-sprint-planning,true,sm,Create Mode,"Generate sprint plan for development tasks - this kicks off the implementation phase by producing a plan the implementation agents will follow in sequence for every story in the plan.",implementation_artifacts,"sprint status", -bmm,4-implementation,Sprint Status,SS,20,_bmad/bmm/workflows/4-implementation/sprint-status/workflow.md,bmad-bmm-sprint-status,false,sm,Create Mode,"Anytime: Summarize sprint status and route to next workflow",,, -bmm,4-implementation,Validate Story,VS,35,_bmad/bmm/workflows/4-implementation/create-story/workflow.md,bmad-bmm-create-story,false,sm,Validate Mode,"Validates story readiness and completeness before development work begins",implementation_artifacts,"story validation report", -bmm,4-implementation,Create Story,CS,30,_bmad/bmm/workflows/4-implementation/create-story/workflow.md,bmad-bmm-create-story,true,sm,Create Mode,"Story cycle start: Prepare first found story in the sprint plan that is next, or if the command is run with a specific epic and story designation with context. Once complete, then VS then DS then CR then back to DS if needed or next CS or ER",implementation_artifacts,story, -bmm,4-implementation,Dev Story,DS,40,_bmad/bmm/workflows/4-implementation/dev-story/workflow.md,bmad-bmm-dev-story,true,dev,Create Mode,"Story cycle: Execute story implementation tasks and tests then CR then back to DS if fixes needed",,, -bmm,4-implementation,Code Review,CR,50,_bmad/bmm/workflows/4-implementation/code-review/workflow.md,bmad-bmm-code-review,false,dev,Create Mode,"Story cycle: If issues back to DS if approved then next CS or ER if epic complete",,, -bmm,4-implementation,QA Automation Test,QA,45,_bmad/bmm/workflows/qa-generate-e2e-tests/workflow.md,bmad-bmm-qa-automate,false,qa,Create Mode,"Generate automated API and E2E tests for implemented code using the project's existing test framework (detects existing well known in use test frameworks). Use after implementation to add test coverage. NOT for code review or story validation - use CR for that.",implementation_artifacts,"test suite", -bmm,4-implementation,Retrospective,ER,60,_bmad/bmm/workflows/4-implementation/retrospective/workflow.md,bmad-bmm-retrospective,false,sm,Create Mode,"Optional at epic end: Review completed work lessons learned and next epic or if major issues consider CC",implementation_artifacts,retrospective, +bmm,1-analysis,Brainstorm Project,BP,10,skill:bmad-brainstorming,bmad-brainstorming,false,analyst,data=_bmad/bmm/data/project-context-template.md,"Expert Guided Facilitation through a single or multiple techniques",planning_artifacts,"brainstorming session", +bmm,1-analysis,Market Research,MR,20,skill:bmad-market-research,bmad-bmm-market-research,false,analyst,Create Mode,"Market analysis competitive landscape customer needs and trends","planning_artifacts|project-knowledge","research documents", +bmm,1-analysis,Domain Research,DR,21,skill:bmad-domain-research,bmad-bmm-domain-research,false,analyst,Create Mode,"Industry domain deep dive subject matter expertise and terminology","planning_artifacts|project_knowledge","research documents", +bmm,1-analysis,Technical Research,TR,22,skill:bmad-technical-research,bmad-bmm-technical-research,false,analyst,Create Mode,"Technical feasibility architecture options and implementation approaches","planning_artifacts|project_knowledge","research documents", +bmm,1-analysis,Create Brief,CB,30,skill:bmad-create-product-brief,bmad-bmm-create-product-brief,false,analyst,Create Mode,"A guided experience to nail down your product idea",planning_artifacts,"product brief", +bmm,2-planning,Create PRD,CP,10,skill:bmad-create-prd,bmad-bmm-create-prd,true,pm,Create Mode,"Expert led facilitation to produce your Product Requirements Document",planning_artifacts,prd, +bmm,2-planning,Validate PRD,VP,20,skill:bmad-validate-prd,bmad-bmm-validate-prd,false,pm,Validate Mode,"Validate PRD is comprehensive lean well organized and cohesive",planning_artifacts,"prd validation report", +bmm,2-planning,Edit PRD,EP,25,skill:bmad-edit-prd,bmad-bmm-edit-prd,false,pm,Edit Mode,"Improve and enhance an existing PRD",planning_artifacts,"updated prd", +bmm,2-planning,Create UX,CU,30,skill:bmad-create-ux-design,bmad-bmm-create-ux-design,false,ux-designer,Create Mode,"Guidance through realizing the plan for your UX, strongly recommended if a UI is a primary piece of the proposed project",planning_artifacts,"ux design", +bmm,3-solutioning,Create Architecture,CA,10,skill:bmad-create-architecture,bmad-bmm-create-architecture,true,architect,Create Mode,"Guided Workflow to document technical decisions",planning_artifacts,architecture, +bmm,3-solutioning,Create Epics and Stories,CE,30,skill:bmad-create-epics-and-stories,bmad-bmm-create-epics-and-stories,true,pm,Create Mode,"Create the Epics and Stories Listing",planning_artifacts,"epics and stories", +bmm,3-solutioning,Check Implementation Readiness,IR,70,skill:bmad-check-implementation-readiness,bmad-bmm-check-implementation-readiness,true,architect,Validate Mode,"Ensure PRD UX Architecture and Epics Stories are aligned",planning_artifacts,"readiness report", +bmm,4-implementation,Sprint Planning,SP,10,skill:bmad-sprint-planning,bmad-bmm-sprint-planning,true,sm,Create Mode,"Generate sprint plan for development tasks - this kicks off the implementation phase by producing a plan the implementation agents will follow in sequence for every story in the plan.",implementation_artifacts,"sprint status", +bmm,4-implementation,Sprint Status,SS,20,skill:bmad-sprint-status,bmad-bmm-sprint-status,false,sm,Create Mode,"Anytime: Summarize sprint status and route to next workflow",,, +bmm,4-implementation,Validate Story,VS,35,skill:bmad-create-story,bmad-bmm-create-story,false,sm,Validate Mode,"Validates story readiness and completeness before development work begins",implementation_artifacts,"story validation report", +bmm,4-implementation,Create Story,CS,30,skill:bmad-create-story,bmad-bmm-create-story,true,sm,Create Mode,"Story cycle start: Prepare first found story in the sprint plan that is next, or if the command is run with a specific epic and story designation with context. Once complete, then VS then DS then CR then back to DS if needed or next CS or ER",implementation_artifacts,story, +bmm,4-implementation,Dev Story,DS,40,skill:bmad-dev-story,bmad-bmm-dev-story,true,dev,Create Mode,"Story cycle: Execute story implementation tasks and tests then CR then back to DS if fixes needed",,, +bmm,4-implementation,Code Review,CR,50,skill:bmad-code-review,bmad-bmm-code-review,false,dev,Create Mode,"Story cycle: If issues back to DS if approved then next CS or ER if epic complete",,, +bmm,4-implementation,QA Automation Test,QA,45,skill:bmad-qa-generate-e2e-tests,bmad-bmm-qa-automate,false,qa,Create Mode,"Generate automated API and E2E tests for implemented code using the project's existing test framework (detects existing well known in use test frameworks). Use after implementation to add test coverage. NOT for code review or story validation - use CR for that.",implementation_artifacts,"test suite", +bmm,4-implementation,Retrospective,ER,60,skill:bmad-retrospective,bmad-bmm-retrospective,false,sm,Create Mode,"Optional at epic end: Review completed work lessons learned and next epic or if major issues consider CC",implementation_artifacts,retrospective, diff --git a/src/bmm/workflows/1-analysis/bmad-create-product-brief/SKILL.md b/src/bmm/workflows/1-analysis/bmad-create-product-brief/SKILL.md new file mode 100644 index 000000000..a66ee7a49 --- /dev/null +++ b/src/bmm/workflows/1-analysis/bmad-create-product-brief/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-create-product-brief +description: 'Create product brief through collaborative discovery. Use when the user says "lets create a product brief" or "help me create a project brief"' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/core/tasks/bmad-review-adversarial-general/bmad-skill-manifest.yaml b/src/bmm/workflows/1-analysis/bmad-create-product-brief/bmad-skill-manifest.yaml similarity index 100% rename from src/core/tasks/bmad-review-adversarial-general/bmad-skill-manifest.yaml rename to src/bmm/workflows/1-analysis/bmad-create-product-brief/bmad-skill-manifest.yaml diff --git a/src/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md b/src/bmm/workflows/1-analysis/bmad-create-product-brief/product-brief.template.md similarity index 79% rename from src/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md rename to src/bmm/workflows/1-analysis/bmad-create-product-brief/product-brief.template.md index d41d5620c..9f6189c2c 100644 --- a/src/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +++ b/src/bmm/workflows/1-analysis/bmad-create-product-brief/product-brief.template.md @@ -1,8 +1,8 @@ --- stepsCompleted: [] inputDocuments: [] -date: { system-date } -author: { user } +date: {{system-date}} +author: {{user_name}} --- # Product Brief: {{project_name}} diff --git a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md b/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01-init.md similarity index 90% rename from src/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md rename to src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01-init.md index 0046af0cc..479811f1b 100644 --- a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +++ b/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01-init.md @@ -1,13 +1,6 @@ --- -name: 'step-01-init' -description: 'Initialize the product brief workflow by detecting continuation state and setting up the document' - # File References -nextStepFile: '{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md' outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md' - -# Template References -productBriefTemplate: '../product-brief.template.md' --- # Step 1: Product Brief Initialization @@ -73,7 +66,7 @@ If the document exists and has frontmatter with `stepsCompleted`: **Continuation Protocol:** -- **STOP immediately** and load `{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md` +- **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 @@ -88,7 +81,7 @@ load context documents using smart discovery. Documents can be in the following - {planning_artifacts}/** - {output_folder}/** - {product_knowledge}/** -- docs/** +- {project-root}/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) @@ -112,7 +105,7 @@ Try to discover the following: **Document Setup:** -- Copy the template from `{productBriefTemplate}` to `{outputFile}`, and update the frontmatter fields +- Copy the template from `../product-brief.template.md` to `{outputFile}`, and update the frontmatter fields #### C. Present Initialization Results @@ -141,7 +134,7 @@ Display: "**Proceeding to product vision discovery...**" #### Menu Handling Logic: -- After setup report is presented, without delay, read fully and follow: {nextStepFile} +- After setup report is presented, without delay, read fully and follow: ./step-02-vision.md #### EXECUTION RULES: @@ -150,7 +143,7 @@ Display: "**Proceeding to product vision discovery...**" ## CRITICAL STEP COMPLETION NOTE -ONLY WHEN [setup completion is achieved and frontmatter properly updated], will you then read fully and follow: `{nextStepFile}` to begin product vision discovery. +ONLY WHEN [setup completion is achieved and frontmatter properly updated], will you then read fully and follow: `./step-02-vision.md` to begin product vision discovery. --- diff --git a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md b/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01b-continue.md similarity index 91% rename from src/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md rename to src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01b-continue.md index bedcfc913..bd2af1be6 100644 --- a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +++ b/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01b-continue.md @@ -1,7 +1,4 @@ --- -name: 'step-01b-continue' -description: 'Resume the product brief workflow from where it was left off, ensuring smooth continuation' - # File References outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md' --- @@ -95,9 +92,9 @@ Does this look right, or do you want to make any adjustments before we proceed?" **Next Step Logic:** Based on `lastStep` value, determine which step to load next: -- If `lastStep = 1` → Load `{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md` -- If `lastStep = 2` → Load `{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md` -- If `lastStep = 3` → Load `{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md` +- If `lastStep = 1` → Load `./step-02-vision.md` +- If `lastStep = 2` → Load `./step-03-users.md` +- If `lastStep = 3` → Load `./step-04-metrics.md` - Continue this pattern for all steps - If `lastStep = 6` → Workflow already complete diff --git a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md b/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-02-vision.md similarity index 88% rename from src/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md rename to src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-02-vision.md index 82dc7e190..0d1e5c543 100644 --- a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +++ b/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-02-vision.md @@ -1,14 +1,7 @@ --- -name: 'step-02-vision' -description: 'Discover and define the core product vision, problem statement, and unique value proposition' - # File References -nextStepFile: '{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md' outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md' -# Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' --- # Step 2: Product Vision Discovery @@ -26,6 +19,7 @@ Conduct comprehensive product vision discovery to define the core problem, solut - 🔄 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: @@ -156,9 +150,9 @@ Prepare the following structure for document append: #### Menu Handling Logic: -- IF A: Read fully and follow: {advancedElicitationTask} with current vision content to dive deeper and refine -- IF P: Read fully and follow: {partyModeWorkflow} to bring different perspectives to positioning and differentiation -- IF C: Save content to {outputFile}, update frontmatter with stepsCompleted: [1, 2], then read fully and follow: {nextStepFile} +- IF A: Invoke the `bmad-advanced-elicitation` skill with current vision content to dive deeper and refine +- IF P: Invoke the `bmad-party-mode` skill to bring different perspectives to positioning and differentiation +- IF C: Save content to {outputFile}, update frontmatter with stepsCompleted: [1, 2], then read fully and follow: ./step-03-users.md - IF Any other comments or queries: help user respond then [Redisplay Menu Options](#7-present-menu-options) #### EXECUTION RULES: @@ -170,7 +164,7 @@ Prepare the following structure for document append: ## CRITICAL STEP COMPLETION NOTE -ONLY WHEN [C continue option] is selected and [vision content finalized and saved to document with frontmatter updated], will you then read fully and follow: `{nextStepFile}` to begin target user discovery. +ONLY WHEN [C continue option] is selected and [vision content finalized and saved to document with frontmatter updated], will you then read fully and follow: `./step-03-users.md` to begin target user discovery. --- diff --git a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md b/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-03-users.md similarity index 89% rename from src/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md rename to src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-03-users.md index 773fbdcd0..84e2b9b7e 100644 --- a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +++ b/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-03-users.md @@ -1,14 +1,7 @@ --- -name: 'step-03-users' -description: 'Define target users with rich personas and map their key interactions with the product' - # File References -nextStepFile: '{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md' outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md' -# Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' --- # Step 3: Target Users Discovery @@ -26,6 +19,7 @@ Define target users with rich personas and map their key interactions with the p - 🔄 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: @@ -159,9 +153,9 @@ Prepare the following structure for document append: #### Menu Handling Logic: -- IF A: Read fully and follow: {advancedElicitationTask} with current user content to dive deeper into personas and journeys -- IF P: Read fully and follow: {partyModeWorkflow} to bring different perspectives to validate user understanding -- IF C: Save content to {outputFile}, update frontmatter with stepsCompleted: [1, 2, 3], then read fully and follow: {nextStepFile} +- IF A: Invoke the `bmad-advanced-elicitation` skill with current user content to dive deeper into personas and journeys +- IF P: Invoke the `bmad-party-mode` skill to bring different perspectives to validate user understanding +- IF C: Save content to {outputFile}, update frontmatter with stepsCompleted: [1, 2, 3], then read fully and follow: ./step-04-metrics.md - IF Any other comments or queries: help user respond then [Redisplay Menu Options](#6-present-menu-options) #### EXECUTION RULES: @@ -173,7 +167,7 @@ Prepare the following structure for document append: ## CRITICAL STEP COMPLETION NOTE -ONLY WHEN [C continue option] is selected and [user personas finalized and saved to document with frontmatter updated], will you then read fully and follow: `{nextStepFile}` to begin success metrics definition. +ONLY WHEN [C continue option] is selected and [user personas finalized and saved to document with frontmatter updated], will you then read fully and follow: `./step-04-metrics.md` to begin success metrics definition. --- diff --git a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md b/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-04-metrics.md similarity index 89% rename from src/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md rename to src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-04-metrics.md index b60be4bc8..7f10705a7 100644 --- a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +++ b/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-04-metrics.md @@ -1,14 +1,7 @@ --- -name: 'step-04-metrics' -description: 'Define comprehensive success metrics that include user success, business objectives, and key performance indicators' - # File References -nextStepFile: '{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md' outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md' -# Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' --- # Step 4: Success Metrics Definition @@ -26,6 +19,7 @@ Define comprehensive success metrics that include user success, business objecti - 🔄 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: @@ -162,9 +156,9 @@ Prepare the following structure for document append: #### Menu Handling Logic: -- IF A: Read fully and follow: {advancedElicitationTask} with current metrics content to dive deeper into success metric insights -- IF P: Read fully and follow: {partyModeWorkflow} to bring different perspectives to validate comprehensive metrics -- IF C: Save content to {outputFile}, update frontmatter with stepsCompleted: [1, 2, 3, 4], then read fully and follow: {nextStepFile} +- IF A: Invoke the `bmad-advanced-elicitation` skill with current metrics content to dive deeper into success metric insights +- IF P: Invoke the `bmad-party-mode` skill to bring different perspectives to validate comprehensive metrics +- IF C: Save content to {outputFile}, update frontmatter with stepsCompleted: [1, 2, 3, 4], then read fully and follow: ./step-05-scope.md - IF Any other comments or queries: help user respond then [Redisplay Menu Options](#7-present-menu-options) #### EXECUTION RULES: @@ -176,7 +170,7 @@ Prepare the following structure for document append: ## CRITICAL STEP COMPLETION NOTE -ONLY WHEN [C continue option] is selected and [success metrics finalized and saved to document with frontmatter updated], will you then read fully and follow: `{nextStepFile}` to begin MVP scope definition. +ONLY WHEN [C continue option] is selected and [success metrics finalized and saved to document with frontmatter updated], will you then read fully and follow: `./step-05-scope.md` to begin MVP scope definition. --- diff --git a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md b/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-05-scope.md similarity index 90% rename from src/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md rename to src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-05-scope.md index 111a0c1f8..52c479c34 100644 --- a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +++ b/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-05-scope.md @@ -1,14 +1,7 @@ --- -name: 'step-05-scope' -description: 'Define MVP scope with clear boundaries and outline future vision while managing scope creep' - # File References -nextStepFile: '{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md' outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md' -# Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' --- # Step 5: MVP Scope Definition @@ -26,6 +19,7 @@ Define MVP scope with clear boundaries and outline future vision through collabo - 🔄 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: @@ -176,9 +170,9 @@ Prepare the following structure for document append: #### Menu Handling Logic: -- IF A: Read fully and follow: {advancedElicitationTask} with current scope content to optimize scope definition -- IF P: Read fully and follow: {partyModeWorkflow} to bring different perspectives to validate MVP scope -- IF C: Save content to {outputFile}, update frontmatter with stepsCompleted: [1, 2, 3, 4, 5], then read fully and follow: {nextStepFile} +- IF A: Invoke the `bmad-advanced-elicitation` skill with current scope content to optimize scope definition +- IF P: Invoke the `bmad-party-mode` skill to bring different perspectives to validate MVP scope +- IF C: Save content to {outputFile}, update frontmatter with stepsCompleted: [1, 2, 3, 4, 5], then read fully and follow: ./step-06-complete.md - IF Any other comments or queries: help user respond then [Redisplay Menu Options](#7-present-menu-options) #### EXECUTION RULES: @@ -190,7 +184,7 @@ Prepare the following structure for document append: ## CRITICAL STEP COMPLETION NOTE -ONLY WHEN [C continue option] is selected and [MVP scope finalized and saved to document with frontmatter updated], will you then read fully and follow: `{nextStepFile}` to complete the product brief workflow. +ONLY WHEN [C continue option] is selected and [MVP scope finalized and saved to document with frontmatter updated], will you then read fully and follow: `./step-06-complete.md` to complete the product brief workflow. --- diff --git a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md b/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-06-complete.md similarity index 96% rename from src/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md rename to src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-06-complete.md index 9e0955b77..f1f5c302c 100644 --- a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +++ b/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-06-complete.md @@ -1,7 +1,4 @@ --- -name: 'step-06-complete' -description: 'Complete the product brief workflow, update status files, and suggest next steps for the project' - # File References outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md' --- @@ -128,7 +125,7 @@ Recap that the brief captures everything needed to guide subsequent product deve ### 5. Suggest next steps -Product Brief complete. Read fully and follow: `{project-root}/_bmad/core/tasks/help.md` +Product Brief complete. Invoke the `bmad-help` skill. --- diff --git a/src/bmm/workflows/1-analysis/create-product-brief/workflow.md b/src/bmm/workflows/1-analysis/bmad-create-product-brief/workflow.md similarity index 88% rename from src/bmm/workflows/1-analysis/create-product-brief/workflow.md rename to src/bmm/workflows/1-analysis/bmad-create-product-brief/workflow.md index c50d325ef..24396361b 100644 --- a/src/bmm/workflows/1-analysis/create-product-brief/workflow.md +++ b/src/bmm/workflows/1-analysis/bmad-create-product-brief/workflow.md @@ -1,8 +1,3 @@ ---- -name: create-product-brief -description: 'Create product brief through collaborative discovery. Use when the user says "lets create a product brief" or "help me create a project brief"' ---- - # Product Brief Workflow **Goal:** Create comprehensive product briefs through collaborative step-by-step discovery as creative Business Analyst working with the user as peers. @@ -52,6 +47,9 @@ Load and read full config from {project-root}/_bmad/bmm/config.yaml and resolve: - `project_name`, `output_folder`, `planning_artifacts`, `user_name`, `communication_language`, `document_output_language`, `user_skill_level` +✅ 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}`. + ### 2. First Step EXECUTION -Read fully and follow: `{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md` to begin the workflow. +Read fully and follow: `./steps/step-01-init.md` to begin the workflow. diff --git a/src/bmm/workflows/1-analysis/bmad-product-brief-preview/SKILL.md b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/SKILL.md new file mode 100644 index 000000000..adeda50f7 --- /dev/null +++ b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/SKILL.md @@ -0,0 +1,88 @@ +--- +name: bmad-product-brief-preview +description: Create or update product briefs through guided or autonomous discovery. Use when the user requests to 'create a product brief', 'help me create a project brief', or 'update my product brief'. +argument-hint: "[optional --create, --edit, --optimize, --distillate, --inputs, --headless] [brief idea]" +--- + +# Create Product Brief + +## Overview + +This skill helps you create compelling product briefs through collaborative discovery, intelligent artifact analysis, and web research. Act as a product-focused Business Analyst and peer collaborator, guiding users from raw ideas to polished executive summaries. Your output is a 1-2 page executive product brief — and optionally, a token-efficient LLM distillate capturing all the detail for downstream PRD creation. + +The user is the domain expert. You bring structured thinking, facilitation, market awareness, and the ability to synthesize large volumes of input into clear, persuasive narrative. Work together as equals. + +**Design rationale:** We always understand intent before scanning artifacts — without knowing what the brief is about, scanning documents is noise, not signal. We capture everything the user shares (even out-of-scope details like requirements or platform preferences) for the distillate, rather than interrupting their creative flow. + +## Activation Mode Detection + +Check activation context immediately: + +1. **Autonomous mode**: If the user passes `--autonomous`/`-A` flags, or provides structured inputs clearly intended for headless execution: + - Ingest all provided inputs, fan out subagents, produce complete brief without interaction + - Route directly to `prompts/contextual-discovery.md` with `{mode}=autonomous` + +2. **Yolo mode**: If the user passes `--yolo` or says "just draft it" / "draft the whole thing": + - Ingest everything, draft complete brief upfront, then walk user through refinement + - Route to Stage 1 below with `{mode}=yolo` + +3. **Guided mode** (default): Conversational discovery with soft gates + - Route to Stage 1 below with `{mode}=guided` + +## On Activation + +1. 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 + +2. **Greet user** as `{user_name}`, speaking in `{communication_language}`. Be warm but efficient — dream builder energy. + +3. **Stage 1: Understand Intent** (handled here in SKILL.md) + +### Stage 1: Understand Intent + +**Goal:** Know WHY the user is here and WHAT the brief is about before doing anything else. + +**Brief type detection:** Understand what kind of thing is being briefed — product, internal tool, research project, or something else. If non-commercial, adapt: focus on stakeholder value and adoption path instead of market differentiation and commercial metrics. + +**Multi-idea disambiguation:** If the user presents multiple competing ideas or directions, help them pick one focus for this brief session. Note that others can be briefed separately. + +**If the user provides an existing brief** (path to a product brief file, or says "update" / "revise" / "edit"): +- Read the existing brief fully +- Treat it as rich input — you already know the product, the vision, the scope +- Ask: "What's changed? What do you want to update or improve?" +- The rest of the workflow proceeds normally — contextual discovery may pull in new research, elicitation focuses on gaps or changes, and draft-and-review produces an updated version + +**If the user already provided context** when launching the skill (description, docs, brain dump): +- Acknowledge what you received — but **DO NOT read document files yet**. Note their paths for Stage 2's subagents to scan contextually. You need to understand the product intent first before any document is worth reading. +- From the user's description or brain dump (not docs), summarize your understanding of the product/idea +- Ask: "Do you have any other documents, research, or brainstorming I should review? Anything else to add before I dig in?" + +**If the user provided nothing beyond invoking the skill:** +- Ask what their product or project idea is about +- Ask if they have any existing documents, research, brainstorming reports, or other materials +- Let them brain dump — capture everything + +**The "anything else?" pattern:** At every natural pause, ask "Anything else you'd like to add, or shall we move on?" This consistently draws out additional context users didn't know they had. + +**Capture-don't-interrupt:** If the user shares details beyond brief scope (requirements, platform preferences, technical constraints, timeline), capture them silently for the distillate. Don't redirect or stop their flow. + +**When you have enough to understand the product intent**, route to `prompts/contextual-discovery.md` with the current mode. + +## Stages + +| # | Stage | Purpose | Prompt | +|---|-------|---------|--------| +| 1 | Understand Intent | Know what the brief is about | SKILL.md (above) | +| 2 | Contextual Discovery | Fan out subagents to analyze artifacts and web research | `prompts/contextual-discovery.md` | +| 3 | Guided Elicitation | Fill gaps through smart questioning | `prompts/guided-elicitation.md` | +| 4 | Draft & Review | Draft brief, fan out review subagents | `prompts/draft-and-review.md` | +| 5 | Finalize | Polish, output, offer distillate | `prompts/finalize.md` | + +## External Skills + +This workflow uses: +- `bmad-init` — Configuration loading (module: bmm) diff --git a/src/bmm/workflows/1-analysis/bmad-product-brief-preview/agents/artifact-analyzer.md b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/agents/artifact-analyzer.md new file mode 100644 index 000000000..72b9888ee --- /dev/null +++ b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/agents/artifact-analyzer.md @@ -0,0 +1,60 @@ +# Artifact Analyzer + +You are a research analyst. Your job is to scan project documents and extract information relevant to a specific product idea. + +## Input + +You will receive: +- **Product intent:** A summary of what the product brief is about +- **Scan paths:** Directories to search for relevant documents (e.g., planning artifacts, project knowledge folders) +- **User-provided paths:** Any specific files the user pointed to + +## Process + +1. **Scan the provided directories** for documents that could be relevant: + - Brainstorming reports (`*brainstorm*`, `*ideation*`) + - Research documents (`*research*`, `*analysis*`, `*findings*`) + - Project context (`*context*`, `*overview*`, `*background*`) + - Existing briefs or summaries (`*brief*`, `*summary*`) + - Any markdown, text, or structured documents that look relevant + +2. **For sharded documents** (a folder with `index.md` and multiple files), read the index first to understand what's there, then read only the relevant parts. + +3. **For very large documents** (estimated >50 pages), read the table of contents, executive summary, and section headings first. Read only sections directly relevant to the stated product intent. Note which sections were skimmed vs read fully. + +4. **Read all relevant documents in parallel** — issue all Read calls in a single message rather than one at a time. Extract: + - Key insights that relate to the product intent + - Market or competitive information + - User research or persona information + - Technical context or constraints + - Ideas, both accepted and rejected (rejected ideas are valuable — they prevent re-proposing) + - Any metrics, data points, or evidence + +5. **Ignore documents that aren't relevant** to the stated product intent. Don't waste tokens on unrelated content. + +## Output + +Return ONLY the following JSON object. No preamble, no commentary. Maximum 8 bullets per section. + +```json +{ + "documents_found": [ + {"path": "file path", "relevance": "one-line summary"} + ], + "key_insights": [ + "bullet — grouped by theme, each self-contained" + ], + "user_market_context": [ + "bullet — users, market, competition found in docs" + ], + "technical_context": [ + "bullet — platforms, constraints, integrations" + ], + "ideas_and_decisions": [ + {"idea": "description", "status": "accepted|rejected|open", "rationale": "brief why"} + ], + "raw_detail_worth_preserving": [ + "bullet — specific details, data points, quotes for the distillate" + ] +} +``` diff --git a/src/bmm/workflows/1-analysis/bmad-product-brief-preview/agents/opportunity-reviewer.md b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/agents/opportunity-reviewer.md new file mode 100644 index 000000000..1ec4db407 --- /dev/null +++ b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/agents/opportunity-reviewer.md @@ -0,0 +1,44 @@ +# Opportunity Reviewer + +You are a strategic advisor reviewing a product brief draft. Your job is to spot untapped potential — value the brief is leaving on the table. + +## Input + +You will receive the complete draft product brief. + +## Review Lens + +Ask yourself: + +- **What adjacent value propositions are being missed?** Are there related problems this solution naturally addresses? +- **What market angles are underemphasized?** Is the positioning leaving opportunities unexplored? +- **What partnerships or integrations could multiply impact?** Who would benefit from aligning with this product? +- **What's the network effect or viral potential?** Is there a growth flywheel the brief doesn't describe? +- **What's underemphasized?** Which strengths deserve more spotlight? +- **What user segments are overlooked?** Could this serve audiences not yet mentioned? +- **What's the bigger story?** If you zoom out, is there a more compelling narrative? +- **What would an investor want to hear more about?** What would make someone lean forward? + +## Output + +Return ONLY the following JSON object. No preamble, no commentary. Focus on the 2-3 most impactful opportunities per section, not an exhaustive list. + +```json +{ + "untapped_value": [ + {"opportunity": "adjacent problem or value prop", "rationale": "why it matters"} + ], + "positioning_opportunities": [ + {"angle": "market angle or narrative", "impact": "how it strengthens the brief"} + ], + "growth_and_scale": [ + "bullet — network effects, viral loops, expansion paths" + ], + "strategic_partnerships": [ + {"partner_type": "who", "value": "why this alliance matters"} + ], + "underemphasized_strengths": [ + {"strength": "what's underplayed", "suggestion": "how to elevate it"} + ] +} +``` diff --git a/src/bmm/workflows/1-analysis/bmad-product-brief-preview/agents/skeptic-reviewer.md b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/agents/skeptic-reviewer.md new file mode 100644 index 000000000..5eb511cd2 --- /dev/null +++ b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/agents/skeptic-reviewer.md @@ -0,0 +1,44 @@ +# Skeptic Reviewer + +You are a critical analyst reviewing a product brief draft. Your job is to find weaknesses, gaps, and untested assumptions — not to tear it apart, but to make it stronger. + +## Input + +You will receive the complete draft product brief. + +## Review Lens + +Ask yourself: + +- **What's missing?** Are there sections that feel thin or glossed over? +- **What assumptions are untested?** Where does the brief assert things without evidence? +- **What could go wrong?** What risks aren't acknowledged? +- **Where is it vague?** Which claims need more specificity? +- **Does the problem statement hold up?** Is this a real, significant problem or a nice-to-have? +- **Are the differentiators actually defensible?** Could a competitor replicate them easily? +- **Do the success metrics make sense?** Are they measurable and meaningful? +- **Is the MVP scope realistic?** Too ambitious? Too timid? + +## Output + +Return ONLY the following JSON object. No preamble, no commentary. Maximum 5 items per section. Prioritize — lead with the most impactful issues. + +```json +{ + "critical_gaps": [ + {"issue": "what's missing", "impact": "why it matters", "suggestion": "how to fix"} + ], + "untested_assumptions": [ + {"assumption": "what's asserted", "risk": "what could go wrong"} + ], + "unacknowledged_risks": [ + {"risk": "potential failure mode", "severity": "high|medium|low"} + ], + "vague_areas": [ + {"section": "where", "issue": "what's vague", "suggestion": "how to sharpen"} + ], + "suggested_improvements": [ + "actionable suggestion" + ] +} +``` diff --git a/src/bmm/workflows/1-analysis/bmad-product-brief-preview/agents/web-researcher.md b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/agents/web-researcher.md new file mode 100644 index 000000000..d7fc8d22b --- /dev/null +++ b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/agents/web-researcher.md @@ -0,0 +1,49 @@ +# Web Researcher + +You are a market research analyst. Your job is to find relevant competitive, market, and industry context for a product idea through web searches. + +## Input + +You will receive: +- **Product intent:** A summary of what the product is about, the problem it solves, and the domain it operates in + +## Process + +1. **Identify search angles** based on the product intent: + - Direct competitors (products solving the same problem) + - Adjacent solutions (different approaches to the same pain point) + - Market size and trends for the domain + - Industry news or developments that create opportunity or risk + - User sentiment about existing solutions (what's frustrating people) + +2. **Execute 3-5 targeted web searches** — quality over quantity. Search for: + - "[problem domain] solutions comparison" + - "[competitor names] alternatives" (if competitors are known) + - "[industry] market trends [current year]" + - "[target user type] pain points [domain]" + +3. **Synthesize findings** — don't just list links. Extract the signal. + +## Output + +Return ONLY the following JSON object. No preamble, no commentary. Maximum 5 bullets per section. + +```json +{ + "competitive_landscape": [ + {"name": "competitor", "approach": "one-line description", "gaps": "where they fall short"} + ], + "market_context": [ + "bullet — market size, growth trends, relevant data points" + ], + "user_sentiment": [ + "bullet — what users say about existing solutions" + ], + "timing_and_opportunity": [ + "bullet — why now, enabling shifts" + ], + "risks_and_considerations": [ + "bullet — market risks, competitive threats, regulatory concerns" + ] +} +``` diff --git a/src/bmm/workflows/1-analysis/bmad-product-brief-preview/bmad-manifest.json b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/bmad-manifest.json new file mode 100644 index 000000000..42ea35c0a --- /dev/null +++ b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/bmad-manifest.json @@ -0,0 +1,17 @@ +{ + "module-code": "bmm", + "replaces-skill": "bmad-create-product-brief", + "capabilities": [ + { + "name": "create-brief", + "menu-code": "CB", + "description": "Produces executive product brief and optional LLM distillate for PRD input.", + "supports-headless": true, + "phase-name": "1-analysis", + "after": ["brainstorming, perform-research"], + "before": ["create-prd"], + "is-required": true, + "output-location": "{planning_artifacts}" + } + ] +} diff --git a/src/bmm/workflows/1-analysis/bmad-product-brief-preview/bmad-skill-manifest.yaml b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/1-analysis/bmad-product-brief-preview/prompts/contextual-discovery.md b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/prompts/contextual-discovery.md new file mode 100644 index 000000000..68e12bfe1 --- /dev/null +++ b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/prompts/contextual-discovery.md @@ -0,0 +1,57 @@ +**Language:** Use `{communication_language}` for all output. +**Output Language:** Use `{document_output_language}` for documents. +**Output Location:** `{planning_artifacts}` + +# Stage 2: Contextual Discovery + +**Goal:** Armed with the user's stated intent, intelligently gather and synthesize all available context — documents, project knowledge, and web research — so later stages work from a rich, relevant foundation. + +## Subagent Fan-Out + +Now that you know what the brief is about, fan out subagents in parallel to gather context. Each subagent receives the product intent summary so it knows what's relevant. + +**Launch in parallel:** + +1. **Artifact Analyzer** (`../agents/artifact-analyzer.md`) — Scans `{planning_artifacts}` and `{project_knowledge}` for relevant documents. Also scans any specific paths the user provided. Returns structured synthesis of what it found. + +2. **Web Researcher** (`../agents/web-researcher.md`) — Searches for competitive landscape, market context, trends, and relevant industry data. Returns structured findings scoped to the product domain. + +### Graceful Degradation + +If subagents are unavailable or fail: +- Read only the most relevant 1-2 documents in the main context and summarize (don't full-read everything — limit context impact in degraded mode) +- Do a few targeted web searches inline +- Never block the workflow because a subagent feature is unavailable + +## Synthesis + +Once subagent results return (or inline scanning completes): + +1. **Merge findings** with what the user already told you +2. **Identify gaps** — what do you still need to know to write a solid brief? +3. **Note surprises** — anything from research that contradicts or enriches the user's assumptions? + +## Mode-Specific Behavior + +**Guided mode:** +- Present a concise summary of what you found: "Here's what I learned from your documents and web research..." +- Highlight anything surprising or worth discussing +- Share the gaps you've identified +- Ask: "Anything else you'd like to add, or shall we move on to filling in the details?" +- Route to `guided-elicitation.md` + +**Yolo mode:** +- Absorb all findings silently +- Skip directly to `draft-and-review.md` — you have enough to draft +- The user will refine later + +**Headless mode:** +- Absorb all findings +- Skip directly to `draft-and-review.md` +- No interaction + +## Stage Complete + +This stage is complete when subagent results (or inline scanning fallback) have returned and findings are merged with user context. Route per mode: +- **Guided** → `guided-elicitation.md` +- **Yolo / Headless** → `draft-and-review.md` diff --git a/src/bmm/workflows/1-analysis/bmad-product-brief-preview/prompts/draft-and-review.md b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/prompts/draft-and-review.md new file mode 100644 index 000000000..e6dd8cf1b --- /dev/null +++ b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/prompts/draft-and-review.md @@ -0,0 +1,86 @@ +**Language:** Use `{communication_language}` for all output. +**Output Language:** Use `{document_output_language}` for documents. +**Output Location:** `{planning_artifacts}` + +# Stage 4: Draft & Review + +**Goal:** Produce the executive product brief and run it through multiple review lenses to catch blind spots before the user sees the final version. + +## Step 1: Draft the Executive Brief + +Use `../resources/brief-template.md` as a guide — adapt structure to fit the product's story. + +**Writing principles:** +- **Executive audience** — persuasive, clear, concise. 1-2 pages. +- **Lead with the problem** — make the reader feel the pain before presenting the solution +- **Concrete over abstract** — specific examples, real scenarios, measurable outcomes +- **Confident voice** — this is a pitch, not a hedge +- Write in `{document_output_language}` + +**Create the output document at:** `{planning_artifacts}/product-brief-{project_name}.md` + +Include YAML frontmatter: +```yaml +--- +title: "Product Brief: {project_name}" +status: "draft" +created: "{timestamp}" +updated: "{timestamp}" +inputs: [list of input files used] +--- +``` + +## Step 2: Fan Out Review Subagents + +Before showing the draft to the user, run it through multiple review lenses in parallel. + +**Launch in parallel:** + +1. **Skeptic Reviewer** (`../agents/skeptic-reviewer.md`) — "What's missing? What assumptions are untested? What could go wrong? Where is the brief vague or hand-wavy?" + +2. **Opportunity Reviewer** (`../agents/opportunity-reviewer.md`) — "What adjacent value propositions are being missed? What market angles or partnerships could strengthen this? What's underemphasized?" + +3. **Contextual Reviewer** — You (the main agent) pick the most useful third lens based on THIS specific product. Choose the lens that addresses the SINGLE BIGGEST RISK that the skeptic and opportunity reviewers won't naturally catch. Examples: + - For healthtech: "Regulatory and compliance risk reviewer" + - For devtools: "Developer experience and adoption friction critic" + - For marketplace: "Network effects and chicken-and-egg problem analyst" + - For enterprise: "Procurement and organizational change management reviewer" + - **When domain is unclear, default to:** "Go-to-market and launch risk reviewer" — examines distribution, pricing, and first-customer acquisition. Almost always valuable, frequently missed. + Describe the lens, run the review yourself inline. + +### Graceful Degradation + +If subagents are unavailable: +- Perform all three review passes yourself, sequentially +- Apply each lens deliberately — don't blend them into one generic review +- The quality of review matters more than the parallelism + +## Step 3: Integrate Review Insights + +After all reviews complete: + +1. **Triage findings** — group by theme, remove duplicates +2. **Apply non-controversial improvements** directly to the draft (obvious gaps, unclear language, missing specifics) +3. **Flag substantive suggestions** that need user input (strategic choices, scope questions, market positioning decisions) + +## Step 4: Present to User + +**Headless mode:** Skip to `finalize.md` — no user interaction. Save the improved draft directly. + +**Yolo and Guided modes:** + +Present the draft brief to the user. Then share the reviewer insights: + +"Here's your product brief draft. Before we finalize, my review panel surfaced some things worth considering: + +**[Grouped reviewer findings — only the substantive ones that need user input]** + +What do you think? Any changes you'd like to make?" + +Present reviewer findings with brief rationale, then offer: "Want me to dig into any of these, or are you ready to make your revisions?" + +**Iterate** as long as the user wants to refine. Use the "anything else, or are we happy with this?" soft gate. + +## Stage Complete + +This stage is complete when: (a) the draft has been reviewed by all three lenses and improvements integrated, AND either (autonomous) save and route directly, or (guided/yolo) the user is satisfied. Route to `finalize.md`. diff --git a/src/bmm/workflows/1-analysis/bmad-product-brief-preview/prompts/finalize.md b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/prompts/finalize.md new file mode 100644 index 000000000..b51c8afd3 --- /dev/null +++ b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/prompts/finalize.md @@ -0,0 +1,75 @@ +**Language:** Use `{communication_language}` for all output. +**Output Language:** Use `{document_output_language}` for documents. +**Output Location:** `{planning_artifacts}` + +# Stage 5: Finalize + +**Goal:** Save the polished brief, offer the LLM distillate, and point the user forward. + +## Step 1: Polish and Save + +Update the product brief document at `{planning_artifacts}/product-brief-{project_name}.md`: +- Update frontmatter `status` to `"complete"` +- Update `updated` timestamp +- Ensure formatting is clean and consistent +- Confirm the document reads well as a standalone 1-2 page executive summary + +## Step 2: Offer the Distillate + +Throughout the discovery process, you likely captured detail that doesn't belong in a 1-2 page executive summary but is valuable for downstream work — requirements hints, platform preferences, rejected ideas, technical constraints, detailed user scenarios, competitive deep-dives, etc. + +**Ask the user:** +"Your product brief is complete. During our conversation, I captured additional detail that goes beyond the executive summary — things like [mention 2-3 specific examples of overflow you captured]. Would you like me to create a detail pack for PRD creation? It distills all that extra context into a concise, structured format optimized for the next phase." + +**If yes, create the distillate** at `{planning_artifacts}/product-brief-{project_name}-distillate.md`: + +```yaml +--- +title: "Product Brief Distillate: {project_name}" +type: llm-distillate +source: "product-brief-{project_name}.md" +created: "{timestamp}" +purpose: "Token-efficient context for downstream PRD creation" +--- +``` + +**Distillate content principles:** +- Dense bullet points, not prose +- Each bullet carries enough context to be understood standalone (don't assume the reader has the full brief loaded) +- Group by theme, not by when it was mentioned +- Include: + - **Rejected ideas** — so downstream workflows don't re-propose them, with brief rationale + - **Requirements hints** — anything the user mentioned that sounds like a requirement + - **Technical context** — platforms, integrations, constraints, preferences + - **Detailed user scenarios** — richer than what fits in the exec summary + - **Competitive intelligence** — specifics from web research worth preserving + - **Open questions** — things surfaced but not resolved during discovery + - **Scope signals** — what the user indicated is in/out/maybe for MVP +- Token-conscious: be concise, but give enough context per bullet so an LLM reading this later understands WHY each point matters + +**Headless mode:** Always create the distillate automatically — unless the session was too brief to capture meaningful overflow (in that case, note this in the completion output instead of creating an empty file). + +## Step 3: Present Completion + +"Your product brief for {project_name} is complete! + +**Executive Brief:** `{planning_artifacts}/product-brief-{project_name}.md` +[If distillate created:] **Detail Pack:** `{planning_artifacts}/product-brief-{project_name}-distillate.md` + +**Recommended next step:** Use the product brief (and detail pack) as input for PRD creation — tell your assistant 'create a PRD' and point it to these files." +[If distillate created:] "The detail pack contains all the overflow context (requirements hints, rejected ideas, technical constraints) specifically structured for the PRD workflow to consume." + +**Headless mode:** Output the file paths as structured JSON and exit: +```json +{ + "status": "complete", + "brief": "{planning_artifacts}/product-brief-{project_name}.md", + "distillate": "{path or null}", + "confidence": "high|medium|low", + "open_questions": ["any unresolved items"] +} +``` + +## Stage Complete + +This is the terminal stage. After delivering the completion message and file paths, the workflow is done. If the user requests further revisions, loop back to `draft-and-review.md`. Otherwise, exit. diff --git a/src/bmm/workflows/1-analysis/bmad-product-brief-preview/prompts/guided-elicitation.md b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/prompts/guided-elicitation.md new file mode 100644 index 000000000..a5d0e3a1b --- /dev/null +++ b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/prompts/guided-elicitation.md @@ -0,0 +1,70 @@ +**Language:** Use `{communication_language}` for all output. +**Output Language:** Use `{document_output_language}` for documents. + +# Stage 3: Guided Elicitation + +**Goal:** Fill the gaps in what you know. By now you have the user's brain dump, artifact analysis, and web research. This stage is about smart, targeted questioning — not rote section-by-section interrogation. + +**Skip this stage entirely in Yolo and Autonomous modes** — go directly to `draft-and-review.md`. + +## Approach + +You are NOT walking through a rigid questionnaire. You're having a conversation that covers the substance of a great product brief. The topics below are your mental checklist, not a script. Adapt to: +- What you already know (don't re-ask what's been covered) +- What the user is excited about (follow their energy) +- What's genuinely unclear (focus questions where they matter) + +## Topics to Cover (flexibly, conversationally) + +### Vision & Problem +- What core problem does this solve? For whom? +- How do people solve this today? What's frustrating about current approaches? +- What would success look like for the people this helps? +- What's the insight or angle that makes this approach different? + +### Users & Value +- Who experiences this problem most acutely? +- Are there different user types with different needs? +- What's the "aha moment" — when does a user realize this is what they needed? +- How does this fit into their existing workflow or life? + +### Market & Differentiation +- What competitive or alternative solutions exist? (Leverage web research findings) +- What's the unfair advantage or defensible moat? +- Why is now the right time for this? + +### Success & Scope +- How will you know this is working? What metrics matter? +- What's the minimum viable version that creates real value? +- What's explicitly NOT in scope for the first version? +- If this is wildly successful, what does it become in 2-3 years? + +## The Flow + +For each topic area where you have gaps: + +1. **Lead with what you know** — "Based on your input and my research, it sounds like [X]. Is that right?" +2. **Ask the gap question** — targeted, specific, not generic +3. **Reflect and confirm** — paraphrase what you heard +4. **"Anything else on this, or shall we move on?"** — the soft gate + +If the user is giving you detail beyond brief scope (requirements, architecture, platform details, timelines), **capture it silently** for the distillate. Acknowledge it briefly ("Good detail, I'll capture that") but don't derail the conversation. + +## When to Move On + +When you have enough substance to draft a compelling 1-2 page executive brief covering: +- Clear problem and who it affects +- Proposed solution and what makes it different +- Target users (at least primary) +- Some sense of success criteria or business objectives +- MVP-level scope thinking + +You don't need perfection — you need enough to draft well. Missing details can be surfaced during the review stage. + +If the user is providing complete, confident answers and you have solid coverage across all four topic areas after fewer than 3-4 exchanges, proactively offer to draft early. + +**Transition:** "I think I have a solid picture. Ready for me to draft the brief, or is there anything else you'd like to add?" + +## Stage Complete + +This stage is complete when sufficient substance exists to draft a compelling brief and the user confirms readiness. Route to `draft-and-review.md`. diff --git a/src/bmm/workflows/1-analysis/bmad-product-brief-preview/resources/brief-template.md b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/resources/brief-template.md new file mode 100644 index 000000000..79c5a40bb --- /dev/null +++ b/src/bmm/workflows/1-analysis/bmad-product-brief-preview/resources/brief-template.md @@ -0,0 +1,60 @@ +# Product Brief Template + +This is a flexible guide for the executive product brief — adapt it to serve the product's story. Merge sections, add new ones, reorder as needed. The product determines the structure, not the template. + +## Sensible Default Structure + +```markdown +# Product Brief: {Product Name} + +## Executive Summary + +[2-3 paragraph narrative: What is this? What problem does it solve? Why does it matter? Why now? +This should be compelling enough to stand alone — if someone reads only this section, they should understand the vision.] + +## The Problem + +[What pain exists? Who feels it? How are they coping today? What's the cost of the status quo? +Be specific — real scenarios, real frustrations, real consequences.] + +## The Solution + +[What are we building? How does it solve the problem? +Focus on the experience and outcome, not the implementation.] + +## What Makes This Different + +[Key differentiators. Why this approach vs alternatives? What's the unfair advantage? +Be honest — if the moat is execution speed, say so. Don't fabricate technical moats.] + +## Who This Serves + +[Primary users — vivid but brief. Who are they, what do they need, what does success look like for them? +Secondary users if relevant.] + +## Success Criteria + +[How do we know this is working? What metrics matter? +Mix of user success signals and business objectives. Be measurable.] + +## Scope + +[What's in for the first version? What's explicitly out? +Keep this tight — it's a boundary document, not a feature list.] + +## Vision + +[Where does this go if it succeeds? What does it become in 2-3 years? +Inspiring but grounded.] +``` + +## Adaptation Guidelines + +- **For B2B products:** Consider adding a "Buyer vs User" section if they're different people +- **For platforms/marketplaces:** Consider a "Network Effects" or "Ecosystem" section +- **For technical products:** May need a brief "Technical Approach" section (keep it high-level) +- **For regulated industries:** Consider a "Compliance & Regulatory" section +- **If scope is well-defined:** Merge "Scope" and "Vision" into "Roadmap Thinking" +- **If the problem is well-known:** Shorten "The Problem" and expand "What Makes This Different" + +The brief should be 1-2 pages. If it's longer, you're putting in too much detail — that's what the distillate is for. diff --git a/src/bmm/workflows/1-analysis/create-product-brief/bmad-skill-manifest.yaml b/src/bmm/workflows/1-analysis/create-product-brief/bmad-skill-manifest.yaml deleted file mode 100644 index cb3969a6e..000000000 --- a/src/bmm/workflows/1-analysis/create-product-brief/bmad-skill-manifest.yaml +++ /dev/null @@ -1,3 +0,0 @@ -canonicalId: bmad-create-product-brief -type: workflow -description: "Create product brief through collaborative discovery" diff --git a/src/bmm/workflows/1-analysis/research/bmad-domain-research/SKILL.md b/src/bmm/workflows/1-analysis/research/bmad-domain-research/SKILL.md new file mode 100644 index 000000000..fcddc7751 --- /dev/null +++ b/src/bmm/workflows/1-analysis/research/bmad-domain-research/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-domain-research +description: 'Conduct domain and industry research. Use when the user says "lets create a research report on [domain or industry]"' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/1-analysis/research/bmad-domain-research/bmad-skill-manifest.yaml b/src/bmm/workflows/1-analysis/research/bmad-domain-research/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/1-analysis/research/bmad-domain-research/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md b/src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-01-init.md similarity index 95% rename from src/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md rename to src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-01-init.md index 50093186e..27d056b1d 100644 --- a/src/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +++ b/src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-01-init.md @@ -78,7 +78,7 @@ For **{{research_topic}}**, I will research: - Document scope confirmation in research file - Update frontmatter: `stepsCompleted: [1]` -- Load: `{project-root}/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md` +- Load: `./step-02-domain-analysis.md` ## APPEND TO DOCUMENT: @@ -132,6 +132,6 @@ When user selects 'C', append scope confirmation: ## NEXT STEP: -After user selects 'C', load `{project-root}/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md` to begin industry analysis. +After user selects 'C', load `./step-02-domain-analysis.md` to begin industry analysis. Remember: This is SCOPE CONFIRMATION ONLY - no actual domain research yet, just confirming the research approach and scope! diff --git a/src/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md b/src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-02-domain-analysis.md similarity index 96% rename from src/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md rename to src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-02-domain-analysis.md index ed5c78f5e..bb4cbb63f 100644 --- a/src/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +++ b/src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-02-domain-analysis.md @@ -171,7 +171,7 @@ _Source: [URL]_ - **CONTENT ALREADY WRITTEN TO DOCUMENT** - Update frontmatter: `stepsCompleted: [1, 2]` -- Load: `{project-root}/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md` +- Load: `./step-03-competitive-landscape.md` ## APPEND TO DOCUMENT: @@ -224,6 +224,6 @@ Content is already written to document when generated in step 4. No additional a ## NEXT STEP: -After user selects 'C', load `{project-root}/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md` to analyze competitive landscape, key players, and ecosystem analysis for {{research_topic}}. +After user selects 'C', load `./step-03-competitive-landscape.md` to analyze competitive landscape, key players, and ecosystem analysis for {{research_topic}}. Remember: Always write research content to document immediately and search the web to verify facts! diff --git a/src/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md b/src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-03-competitive-landscape.md similarity index 96% rename from src/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md rename to src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-03-competitive-landscape.md index 6970ad87b..0dc2de6ea 100644 --- a/src/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +++ b/src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-03-competitive-landscape.md @@ -180,7 +180,7 @@ _Source: [URL]_ - **CONTENT ALREADY WRITTEN TO DOCUMENT** - Update frontmatter: `stepsCompleted: [1, 2, 3]` -- Load: `{project-root}/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md` +- Load: `./step-04-regulatory-focus.md` ## APPEND TO DOCUMENT: @@ -233,6 +233,6 @@ Content is already written to document when generated in step 4. No additional a ## NEXT STEP: -After user selects 'C', load `{project-root}/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md` to analyze regulatory requirements, compliance frameworks, and legal considerations for {{research_topic}}. +After user selects 'C', load `./step-04-regulatory-focus.md` to analyze regulatory requirements, compliance frameworks, and legal considerations for {{research_topic}}. Remember: Always write research content to document immediately and search the web to verify facts! diff --git a/src/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md b/src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-04-regulatory-focus.md similarity index 95% rename from src/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md rename to src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-04-regulatory-focus.md index 3fd24b00b..e98010c7f 100644 --- a/src/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +++ b/src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-04-regulatory-focus.md @@ -155,7 +155,7 @@ Show the generated regulatory analysis and present continue option: - **CONTENT ALREADY WRITTEN TO DOCUMENT** - Update frontmatter: `stepsCompleted: [1, 2, 3, 4]` -- Load: `{project-root}/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md` +- Load: `./step-05-technical-trends.md` ## APPEND TO DOCUMENT: @@ -201,6 +201,6 @@ Content is already written to document when generated in step 5. No additional a ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md` to analyze technical trends and innovations in the domain. +After user selects 'C' and content is saved to document, load `./step-05-technical-trends.md` to analyze technical trends and innovations in the domain. Remember: Search the web to verify regulatory facts and provide practical implementation considerations! diff --git a/src/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md b/src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-05-technical-trends.md similarity index 98% rename from src/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md rename to src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-05-technical-trends.md index caf69e142..55e834cd1 100644 --- a/src/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +++ b/src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-05-technical-trends.md @@ -174,7 +174,7 @@ Show the generated technical analysis and present complete option: - **CONTENT ALREADY WRITTEN TO DOCUMENT** - Update frontmatter: `stepsCompleted: [1, 2, 3, 4, 5]` -- Load: `{project-root}/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md` +- Load: `./step-06-research-synthesis.md` ## APPEND TO DOCUMENT: diff --git a/src/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md b/src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-06-research-synthesis.md similarity index 100% rename from src/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md rename to src/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-06-research-synthesis.md diff --git a/src/bmm/workflows/1-analysis/research/bmad-domain-research/research.template.md b/src/bmm/workflows/1-analysis/research/bmad-domain-research/research.template.md new file mode 100644 index 000000000..1d9952470 --- /dev/null +++ b/src/bmm/workflows/1-analysis/research/bmad-domain-research/research.template.md @@ -0,0 +1,29 @@ +--- +stepsCompleted: [] +inputDocuments: [] +workflowType: 'research' +lastStep: 1 +research_type: '{{research_type}}' +research_topic: '{{research_topic}}' +research_goals: '{{research_goals}}' +user_name: '{{user_name}}' +date: '{{date}}' +web_research_enabled: true +source_verification: true +--- + +# Research Report: {{research_type}} + +**Date:** {{date}} +**Author:** {{user_name}} +**Research Type:** {{research_type}} + +--- + +## Research Overview + +[Research overview and methodology will be appended here] + +--- + + diff --git a/src/bmm/workflows/1-analysis/research/workflow-domain-research.md b/src/bmm/workflows/1-analysis/research/bmad-domain-research/workflow.md similarity index 93% rename from src/bmm/workflows/1-analysis/research/workflow-domain-research.md rename to src/bmm/workflows/1-analysis/research/bmad-domain-research/workflow.md index ec193660d..09976cb9a 100644 --- a/src/bmm/workflows/1-analysis/research/workflow-domain-research.md +++ b/src/bmm/workflows/1-analysis/research/bmad-domain-research/workflow.md @@ -1,8 +1,3 @@ ---- -name: domain-research -description: 'Conduct domain and industry research. Use when the user says "lets create a research report on [domain or industry]"' ---- - # Domain Research Workflow **Goal:** Conduct comprehensive domain/industry research using current web data and verified sources to produce complete research documents with compelling narratives and proper citations. diff --git a/src/bmm/workflows/1-analysis/research/bmad-market-research/SKILL.md b/src/bmm/workflows/1-analysis/research/bmad-market-research/SKILL.md new file mode 100644 index 000000000..44f1a6abe --- /dev/null +++ b/src/bmm/workflows/1-analysis/research/bmad-market-research/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-market-research +description: 'Conduct market research on competition and customers. Use when the user says "create a market research report about [business idea]".' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/1-analysis/research/bmad-market-research/bmad-skill-manifest.yaml b/src/bmm/workflows/1-analysis/research/bmad-market-research/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/1-analysis/research/bmad-market-research/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/1-analysis/research/bmad-market-research/research.template.md b/src/bmm/workflows/1-analysis/research/bmad-market-research/research.template.md new file mode 100644 index 000000000..1d9952470 --- /dev/null +++ b/src/bmm/workflows/1-analysis/research/bmad-market-research/research.template.md @@ -0,0 +1,29 @@ +--- +stepsCompleted: [] +inputDocuments: [] +workflowType: 'research' +lastStep: 1 +research_type: '{{research_type}}' +research_topic: '{{research_topic}}' +research_goals: '{{research_goals}}' +user_name: '{{user_name}}' +date: '{{date}}' +web_research_enabled: true +source_verification: true +--- + +# Research Report: {{research_type}} + +**Date:** {{date}} +**Author:** {{user_name}} +**Research Type:** {{research_type}} + +--- + +## Research Overview + +[Research overview and methodology will be appended here] + +--- + + diff --git a/src/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-01-init.md b/src/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-01-init.md new file mode 100644 index 000000000..4cf627634 --- /dev/null +++ b/src/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-01-init.md @@ -0,0 +1,184 @@ +# Market Research Step 1: Market Research Initialization + +## MANDATORY EXECUTION RULES (READ FIRST): + +- 🛑 NEVER generate research content in init step +- ✅ ALWAYS confirm understanding of user's research goals +- 📋 YOU ARE A MARKET RESEARCH FACILITATOR, not content generator +- 💬 FOCUS on clarifying scope and approach +- 🔍 NO WEB RESEARCH in init - that's for later steps +- 📖 CRITICAL: ALWAYS read the complete step file before taking any action - partial understanding leads to incomplete research +- 🔄 CRITICAL: When loading next step with 'C', ensure the entire file is read and understood before proceeding +- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` + +## EXECUTION PROTOCOLS: + +- 🎯 Confirm research understanding before proceeding +- ⚠️ Present [C] continue option after scope clarification +- 💾 Write initial scope document immediately +- 📖 Update frontmatter `stepsCompleted: [1]` before loading next step +- 🚫 FORBIDDEN to load next step until C is selected + +## CONTEXT BOUNDARIES: + +- Current document and frontmatter from main workflow discovery are available +- Research type = "market" is already set +- **Research topic = "{{research_topic}}"** - discovered from initial discussion +- **Research goals = "{{research_goals}}"** - captured from initial discussion +- Focus on market research scope clarification +- Web search capabilities are enabled for later steps + +## YOUR TASK: + +Initialize market research by confirming understanding of {{research_topic}} and establishing clear research scope. + +## MARKET RESEARCH INITIALIZATION: + +### 1. Confirm Research Understanding + +**INITIALIZE - DO NOT RESEARCH YET** + +Start with research confirmation: +"I understand you want to conduct **market research** for **{{research_topic}}** with these goals: {{research_goals}} + +**My Understanding of Your Research Needs:** + +- **Research Topic**: {{research_topic}} +- **Research Goals**: {{research_goals}} +- **Research Type**: Market Research +- **Approach**: Comprehensive market analysis with source verification + +**Market Research Areas We'll Cover:** + +- Market size, growth dynamics, and trends +- Customer insights and behavior analysis +- Competitive landscape and positioning +- Strategic recommendations and implementation guidance + +**Does this accurately capture what you're looking for?**" + +### 2. Refine Research Scope + +Gather any clarifications needed: + +#### Scope Clarification Questions: + +- "Are there specific customer segments or aspects of {{research_topic}} we should prioritize?" +- "Should we focus on specific geographic regions or global market?" +- "Is this for market entry, expansion, product development, or other business purpose?" +- "Any competitors or market segments you specifically want us to analyze?" + +### 3. Document Initial Scope + +**WRITE IMMEDIATELY TO DOCUMENT** + +Write initial research scope to document: + +```markdown +# Market Research: {{research_topic}} + +## Research Initialization + +### Research Understanding Confirmed + +**Topic**: {{research_topic}} +**Goals**: {{research_goals}} +**Research Type**: Market Research +**Date**: {{date}} + +### Research Scope + +**Market Analysis Focus Areas:** + +- Market size, growth projections, and dynamics +- Customer segments, behavior patterns, and insights +- Competitive landscape and positioning analysis +- Strategic recommendations and implementation guidance + +**Research Methodology:** + +- Current web data with source verification +- Multiple independent sources for critical claims +- Confidence level assessment for uncertain data +- Comprehensive coverage with no critical gaps + +### Next Steps + +**Research Workflow:** + +1. ✅ Initialization and scope setting (current step) +2. Customer Insights and Behavior Analysis +3. Competitive Landscape Analysis +4. Strategic Synthesis and Recommendations + +**Research Status**: Scope confirmed, ready to proceed with detailed market analysis +``` + +### 4. Present Confirmation and Continue Option + +Show initial scope document and present continue option: +"I've documented our understanding and initial scope for **{{research_topic}}** market research. + +**What I've established:** + +- Research topic and goals confirmed +- Market analysis focus areas defined +- Research methodology verification +- Clear workflow progression + +**Document Status:** Initial scope written to research file for your review + +**Ready to begin detailed market research?** +[C] Continue - Confirm scope and proceed to customer insights analysis +[Modify] Suggest changes to research scope before proceeding + +**HALT — wait for user response before proceeding.** + +### 5. Handle User Response + +#### If 'C' (Continue): + +- Update frontmatter: `stepsCompleted: [1]` +- Add confirmation note to document: "Scope confirmed by user on {{date}}" +- Load: `./step-02-customer-behavior.md` + +#### If 'Modify': + +- Gather user changes to scope +- Update document with modifications +- Re-present updated scope for confirmation + +## SUCCESS METRICS: + +✅ Research topic and goals accurately understood +✅ Market research scope clearly defined +✅ Initial scope document written immediately +✅ User opportunity to review and modify scope +✅ [C] continue option presented and handled correctly +✅ Document properly updated with scope confirmation + +## FAILURE MODES: + +❌ Not confirming understanding of research topic and goals +❌ Generating research content instead of just scope clarification +❌ Not writing initial scope document to file +❌ Not providing opportunity for user to modify scope +❌ Proceeding to next step without user confirmation +❌ **CRITICAL**: Reading only partial step file - leads to incomplete understanding and poor research 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 + +## INITIALIZATION PRINCIPLES: + +This step ensures: + +- Clear mutual understanding of research objectives +- Well-defined research scope and approach +- Immediate documentation for user review +- User control over research direction before detailed work begins + +## NEXT STEP: + +After user confirmation and scope finalization, load `./step-02-customer-behavior.md` to begin detailed market research with customer insights analysis. + +Remember: Init steps confirm understanding and scope, not generate research content! diff --git a/src/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-02-customer-behavior.md b/src/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-02-customer-behavior.md new file mode 100644 index 000000000..810e22de8 --- /dev/null +++ b/src/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-02-customer-behavior.md @@ -0,0 +1,239 @@ +# Market Research Step 2: Customer Behavior and Segments + +## MANDATORY EXECUTION RULES (READ FIRST): + +- 🛑 NEVER generate content without web search verification +- ✅ Search the web to verify and supplement your knowledge with current facts +- 📋 YOU ARE A CUSTOMER BEHAVIOR ANALYST, not content generator +- 💬 FOCUS on customer behavior patterns and demographic analysis +- 🔍 WEB SEARCH REQUIRED - verify current facts against live sources +- 📝 WRITE CONTENT IMMEDIATELY TO DOCUMENT +- 📖 CRITICAL: ALWAYS read the complete step file before taking any action - partial understanding leads to incomplete research +- 🔄 CRITICAL: When loading next step with 'C', ensure the entire file is read and understood before proceeding +- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` + +## EXECUTION PROTOCOLS: + +- 🎯 Show web search analysis before presenting findings +- ⚠️ Present [C] continue option after customer behavior content generation +- 📝 WRITE CUSTOMER BEHAVIOR ANALYSIS TO DOCUMENT IMMEDIATELY +- 💾 ONLY proceed when user chooses C (Continue) +- 📖 Update frontmatter `stepsCompleted: [1, 2]` before loading next step +- 🚫 FORBIDDEN to load next step until C is selected + +## CONTEXT BOUNDARIES: + +- Current document and frontmatter from step-01 are available +- Focus on customer behavior patterns and demographic analysis +- Web search capabilities with source verification are enabled +- Previous step confirmed research scope and goals +- **Research topic = "{{research_topic}}"** - established from initial discussion +- **Research goals = "{{research_goals}}"** - established from initial discussion + +## YOUR TASK: + +Conduct customer behavior and segment analysis with emphasis on patterns and demographics. + +## CUSTOMER BEHAVIOR ANALYSIS SEQUENCE: + +### 1. Begin Customer Behavior Analysis + +**UTILIZE SUBPROCESSES AND SUBAGENTS**: Use research subagents, subprocesses or parallel processing if available to thoroughly analyze different customer behavior areas simultaneously and thoroughly. + +Start with customer behavior research approach: +"Now I'll conduct **customer behavior analysis** for **{{research_topic}}** to understand customer patterns. + +**Customer Behavior Focus:** + +- Customer behavior patterns and preferences +- Demographic profiles and segmentation +- Psychographic characteristics and values +- Behavior drivers and influences +- Customer interaction patterns and engagement + +**Let me search for current customer behavior insights.**" + +### 2. Parallel Customer Behavior Research Execution + +**Execute multiple web searches simultaneously:** + +Search the web: "{{research_topic}} customer behavior patterns" +Search the web: "{{research_topic}} customer demographics" +Search the web: "{{research_topic}} psychographic profiles" +Search the web: "{{research_topic}} customer behavior drivers" + +**Analysis approach:** + +- Look for customer behavior studies and research reports +- Search for demographic segmentation and analysis +- Research psychographic profiling and value systems +- Analyze behavior drivers and influencing factors +- Study customer interaction and engagement patterns + +### 3. Analyze and Aggregate Results + +**Collect and analyze findings from all parallel searches:** + +"After executing comprehensive parallel web searches, let me analyze and aggregate customer behavior findings: + +**Research Coverage:** + +- Customer behavior patterns and preferences +- Demographic profiles and segmentation +- Psychographic characteristics and values +- Behavior drivers and influences +- Customer interaction patterns and engagement + +**Cross-Behavior Analysis:** +[Identify patterns connecting demographics, psychographics, and behaviors] + +**Quality Assessment:** +[Overall confidence levels and research gaps identified]" + +### 4. Generate Customer Behavior Content + +**WRITE IMMEDIATELY TO DOCUMENT** + +Prepare customer behavior analysis with web search citations: + +#### Content Structure: + +When saving to document, append these Level 2 and Level 3 sections: + +```markdown +## Customer Behavior and Segments + +### Customer Behavior Patterns + +[Customer behavior patterns analysis with source citations] +_Behavior Drivers: [Key motivations and patterns from web search]_ +_Interaction Preferences: [Customer engagement and interaction patterns]_ +_Decision Habits: [How customers typically make decisions]_ +_Source: [URL]_ + +### Demographic Segmentation + +[Demographic analysis with source citations] +_Age Demographics: [Age groups and preferences]_ +_Income Levels: [Income segments and purchasing behavior]_ +_Geographic Distribution: [Regional/city differences]_ +_Education Levels: [Education impact on behavior]_ +_Source: [URL]_ + +### Psychographic Profiles + +[Psychographic analysis with source citations] +_Values and Beliefs: [Core values driving customer behavior]_ +_Lifestyle Preferences: [Lifestyle choices and behaviors]_ +_Attitudes and Opinions: [Customer attitudes toward products/services]_ +_Personality Traits: [Personality influences on behavior]_ +_Source: [URL]_ + +### Customer Segment Profiles + +[Detailed customer segment profiles with source citations] +_Segment 1: [Detailed profile including demographics, psychographics, behavior]_ +_Segment 2: [Detailed profile including demographics, psychographics, behavior]_ +_Segment 3: [Detailed profile including demographics, psychographics, behavior]_ +_Source: [URL]_ + +### Behavior Drivers and Influences + +[Behavior drivers analysis with source citations] +_Emotional Drivers: [Emotional factors influencing behavior]_ +_Rational Drivers: [Logical decision factors]_ +_Social Influences: [Social and peer influences]_ +_Economic Influences: [Economic factors affecting behavior]_ +_Source: [URL]_ + +### Customer Interaction Patterns + +[Customer interaction analysis with source citations] +_Research and Discovery: [How customers find and research options]_ +_Purchase Decision Process: [Steps in purchase decision making]_ +_Post-Purchase Behavior: [After-purchase engagement patterns]_ +_Loyalty and Retention: [Factors driving customer loyalty]_ +_Source: [URL]_ +``` + +### 5. Present Analysis and Continue Option + +**Show analysis and present continue option:** + +"I've completed **customer behavior analysis** for {{research_topic}}, focusing on customer patterns. + +**Key Customer Behavior Findings:** + +- Customer behavior patterns clearly identified with drivers +- Demographic segmentation thoroughly analyzed +- Psychographic profiles mapped and documented +- Customer interaction patterns captured +- Multiple sources verified for critical insights + +**Ready to proceed to customer pain points?** +[C] Continue - Save this to document and proceed to pain points analysis + +**HALT — wait for user response before proceeding.** + +### 6. Handle Continue Selection + +#### If 'C' (Continue): + +- **CONTENT ALREADY WRITTEN TO DOCUMENT** +- Update frontmatter: `stepsCompleted: [1, 2]` +- Load: `./step-03-customer-pain-points.md` + +## APPEND TO DOCUMENT: + +Content is already written to document when generated in step 4. No additional append needed. + +## SUCCESS METRICS: + +✅ Customer behavior patterns identified with current citations +✅ Demographic segmentation thoroughly analyzed +✅ Psychographic profiles clearly documented +✅ Customer interaction patterns captured +✅ Multiple sources verified for critical insights +✅ Content written immediately to document +✅ [C] continue option presented and handled correctly +✅ Proper routing to next step (customer pain points) +✅ Research goals alignment maintained + +## FAILURE MODES: + +❌ Relying solely on training data without web verification for current facts + +❌ Missing critical customer behavior patterns +❌ Incomplete demographic segmentation analysis +❌ Missing psychographic profile documentation +❌ Not writing content immediately to document +❌ Not presenting [C] continue option after content generation +❌ Not routing to customer pain points analysis step +❌ **CRITICAL**: Reading only partial step file - leads to incomplete understanding and poor research 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 + +## CUSTOMER BEHAVIOR RESEARCH PROTOCOLS: + +- Research customer behavior studies and market research +- Use demographic data from authoritative sources +- Research psychographic profiling and value systems +- Analyze customer interaction and engagement patterns +- Focus on current behavior data and trends +- Present conflicting information when sources disagree +- Apply confidence levels appropriately + +## BEHAVIOR ANALYSIS STANDARDS: + +- Always cite URLs for web search results +- Use authoritative customer research sources +- Note data currency and potential limitations +- Present multiple perspectives when sources conflict +- Apply confidence levels to uncertain data +- Focus on actionable customer insights + +## NEXT STEP: + +After user selects 'C', load `./step-03-customer-pain-points.md` to analyze customer pain points, challenges, and unmet needs for {{research_topic}}. + +Remember: Always write research content to document immediately and emphasize current customer data with rigorous source verification! diff --git a/src/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-03-customer-pain-points.md b/src/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-03-customer-pain-points.md new file mode 100644 index 000000000..280730c30 --- /dev/null +++ b/src/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-03-customer-pain-points.md @@ -0,0 +1,251 @@ +# Market Research Step 3: Customer Pain Points and Needs + +## MANDATORY EXECUTION RULES (READ FIRST): + +- 🛑 NEVER generate content without web search verification + +- 📖 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 +- ✅ Search the web to verify and supplement your knowledge with current facts +- 📋 YOU ARE A CUSTOMER NEEDS ANALYST, not content generator +- 💬 FOCUS on customer pain points, challenges, and unmet needs +- 🔍 WEB SEARCH REQUIRED - verify current facts against live sources +- 📝 WRITE CONTENT IMMEDIATELY TO DOCUMENT +- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` + +## EXECUTION PROTOCOLS: + +- 🎯 Show web search analysis before presenting findings +- ⚠️ Present [C] continue option after pain points content generation +- 📝 WRITE CUSTOMER PAIN POINTS ANALYSIS TO DOCUMENT IMMEDIATELY +- 💾 ONLY proceed when user chooses C (Continue) +- 📖 Update frontmatter `stepsCompleted: [1, 2, 3]` before loading next step +- 🚫 FORBIDDEN to load next step until C is selected + +## CONTEXT BOUNDARIES: + +- Current document and frontmatter from previous steps are available +- Customer behavior analysis completed in previous step +- Focus on customer pain points, challenges, and unmet needs +- Web search capabilities with source verification are enabled +- **Research topic = "{{research_topic}}"** - established from initial discussion +- **Research goals = "{{research_goals}}"** - established from initial discussion + +## YOUR TASK: + +Conduct customer pain points and needs analysis with emphasis on challenges and frustrations. + +## CUSTOMER PAIN POINTS ANALYSIS SEQUENCE: + +### 1. Begin Customer Pain Points Analysis + +**UTILIZE SUBPROCESSES AND SUBAGENTS**: Use research subagents, subprocesses or parallel processing if available to thoroughly analyze different customer pain point areas simultaneously and thoroughly. + +Start with customer pain points research approach: +"Now I'll conduct **customer pain points analysis** for **{{research_topic}}** to understand customer challenges. + +**Customer Pain Points Focus:** + +- Customer challenges and frustrations +- Unmet needs and unaddressed problems +- Barriers to adoption or usage +- Service and support pain points +- Customer satisfaction gaps + +**Let me search for current customer pain points insights.**" + +### 2. Parallel Pain Points Research Execution + +**Execute multiple web searches simultaneously:** + +Search the web: "{{research_topic}} customer pain points challenges" +Search the web: "{{research_topic}} customer frustrations" +Search the web: "{{research_topic}} unmet customer needs" +Search the web: "{{research_topic}} customer barriers to adoption" + +**Analysis approach:** + +- Look for customer satisfaction surveys and reports +- Search for customer complaints and reviews +- Research customer support and service issues +- Analyze barriers to customer adoption +- Study unmet needs and market gaps + +### 3. Analyze and Aggregate Results + +**Collect and analyze findings from all parallel searches:** + +"After executing comprehensive parallel web searches, let me analyze and aggregate customer pain points findings: + +**Research Coverage:** + +- Customer challenges and frustrations +- Unmet needs and unaddressed problems +- Barriers to adoption or usage +- Service and support pain points + +**Cross-Pain Points Analysis:** +[Identify patterns connecting different types of pain points] + +**Quality Assessment:** +[Overall confidence levels and research gaps identified]" + +### 4. Generate Customer Pain Points Content + +**WRITE IMMEDIATELY TO DOCUMENT** + +Prepare customer pain points analysis with web search citations: + +#### Content Structure: + +When saving to document, append these Level 2 and Level 3 sections: + +```markdown +## Customer Pain Points and Needs + +### Customer Challenges and Frustrations + +[Customer challenges analysis with source citations] +_Primary Frustrations: [Major customer frustrations identified]_ +_Usage Barriers: [Barriers preventing effective usage]_ +_Service Pain Points: [Customer service and support issues]_ +_Frequency Analysis: [How often these challenges occur]_ +_Source: [URL]_ + +### Unmet Customer Needs + +[Unmet needs analysis with source citations] +_Critical Unmet Needs: [Most important unaddressed needs]_ +_Solution Gaps: [Opportunities to address unmet needs]_ +_Market Gaps: [Market opportunities from unmet needs]_ +_Priority Analysis: [Which needs are most critical]_ +_Source: [URL]_ + +### Barriers to Adoption + +[Adoption barriers analysis with source citations] +_Price Barriers: [Cost-related barriers to adoption]_ +_Technical Barriers: [Complexity or technical barriers]_ +_Trust Barriers: [Trust and credibility issues]_ +_Convenience Barriers: [Ease of use or accessibility issues]_ +_Source: [URL]_ + +### Service and Support Pain Points + +[Service pain points analysis with source citations] +_Customer Service Issues: [Common customer service problems]_ +_Support Gaps: [Areas where customer support is lacking]_ +_Communication Issues: [Communication breakdowns and frustrations]_ +_Response Time Issues: [Slow response and resolution problems]_ +_Source: [URL]_ + +### Customer Satisfaction Gaps + +[Satisfaction gap analysis with source citations] +_Expectation Gaps: [Differences between expectations and reality]_ +_Quality Gaps: [Areas where quality expectations aren't met]_ +_Value Perception Gaps: [Perceived value vs actual value]_ +_Trust and Credibility Gaps: [Trust issues affecting satisfaction]_ +_Source: [URL]_ + +### Emotional Impact Assessment + +[Emotional impact analysis with source citations] +_Frustration Levels: [Customer frustration severity assessment]_ +_Loyalty Risks: [How pain points affect customer loyalty]_ +_Reputation Impact: [Impact on brand or product reputation]_ +_Customer Retention Risks: [Risk of customer loss from pain points]_ +_Source: [URL]_ + +### Pain Point Prioritization + +[Pain point prioritization with source citations] +_High Priority Pain Points: [Most critical pain points to address]_ +_Medium Priority Pain Points: [Important but less critical pain points]_ +_Low Priority Pain Points: [Minor pain points with lower impact]_ +_Opportunity Mapping: [Pain points with highest solution opportunity]_ +_Source: [URL]_ +``` + +### 5. Present Analysis and Continue Option + +**Show analysis and present continue option:** + +"I've completed **customer pain points analysis** for {{research_topic}}, focusing on customer challenges. + +**Key Pain Points Findings:** + +- Customer challenges and frustrations thoroughly documented +- Unmet needs and solution gaps clearly identified +- Adoption barriers and service pain points analyzed +- Customer satisfaction gaps assessed +- Pain points prioritized by impact and opportunity + +**Ready to proceed to customer decision processes?** +[C] Continue - Save this to document and proceed to decision processes analysis + +**HALT — wait for user response before proceeding.** + +### 6. Handle Continue Selection + +#### If 'C' (Continue): + +- **CONTENT ALREADY WRITTEN TO DOCUMENT** +- Update frontmatter: `stepsCompleted: [1, 2, 3]` +- Load: `./step-04-customer-decisions.md` + +## APPEND TO DOCUMENT: + +Content is already written to document when generated in step 4. No additional append needed. + +## SUCCESS METRICS: + +✅ Customer challenges and frustrations clearly documented +✅ Unmet needs and solution gaps identified +✅ Adoption barriers and service pain points analyzed +✅ Customer satisfaction gaps assessed +✅ Pain points prioritized by impact and opportunity +✅ Content written immediately to document +✅ [C] continue option presented and handled correctly +✅ Proper routing to next step (customer decisions) +✅ Research goals alignment maintained + +## FAILURE MODES: + +❌ Relying solely on training data without web verification for current facts + +❌ Missing critical customer challenges or frustrations +❌ Not identifying unmet needs or solution gaps +❌ Incomplete adoption barriers analysis +❌ Not writing content immediately to document +❌ Not presenting [C] continue option after content generation +❌ Not routing to customer decisions analysis step + +❌ **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 + +## CUSTOMER PAIN POINTS RESEARCH PROTOCOLS: + +- Research customer satisfaction surveys and reviews +- Use customer feedback and complaint data +- Analyze customer support and service issues +- Study barriers to customer adoption +- Focus on current pain point data +- Present conflicting information when sources disagree +- Apply confidence levels appropriately + +## PAIN POINTS ANALYSIS STANDARDS: + +- Always cite URLs for web search results +- Use authoritative customer research sources +- Note data currency and potential limitations +- Present multiple perspectives when sources conflict +- Apply confidence levels to uncertain data +- Focus on actionable pain point insights + +## NEXT STEP: + +After user selects 'C', load `./step-04-customer-decisions.md` to analyze customer decision processes, journey mapping, and decision factors for {{research_topic}}. + +Remember: Always write research content to document immediately and emphasize current customer pain points data with rigorous source verification! diff --git a/src/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-04-customer-decisions.md b/src/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-04-customer-decisions.md new file mode 100644 index 000000000..4f0e5504a --- /dev/null +++ b/src/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-04-customer-decisions.md @@ -0,0 +1,261 @@ +# Market Research Step 4: Customer Decisions and Journey + +## MANDATORY EXECUTION RULES (READ FIRST): + +- 🛑 NEVER generate content without web search verification + +- 📖 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 +- ✅ Search the web to verify and supplement your knowledge with current facts +- 📋 YOU ARE A CUSTOMER DECISION ANALYST, not content generator +- 💬 FOCUS on customer decision processes and journey mapping +- 🔍 WEB SEARCH REQUIRED - verify current facts against live sources +- 📝 WRITE CONTENT IMMEDIATELY TO DOCUMENT +- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` + +## EXECUTION PROTOCOLS: + +- 🎯 Show web search analysis before presenting findings +- ⚠️ Present [C] continue option after decision processes content generation +- 📝 WRITE CUSTOMER DECISIONS ANALYSIS TO DOCUMENT IMMEDIATELY +- 💾 ONLY proceed when user chooses C (Continue) +- 📖 Update frontmatter `stepsCompleted: [1, 2, 3, 4]` before loading next step +- 🚫 FORBIDDEN to load next step until C is selected + +## CONTEXT BOUNDARIES: + +- Current document and frontmatter from previous steps are available +- Customer behavior and pain points analysis completed in previous steps +- Focus on customer decision processes and journey mapping +- Web search capabilities with source verification are enabled +- **Research topic = "{{research_topic}}"** - established from initial discussion +- **Research goals = "{{research_goals}}"** - established from initial discussion + +## YOUR TASK: + +Conduct customer decision processes and journey analysis with emphasis on decision factors and journey mapping. + +## CUSTOMER DECISIONS ANALYSIS SEQUENCE: + +### 1. Begin Customer Decisions Analysis + +**UTILIZE SUBPROCESSES AND SUBAGENTS**: Use research subagents, subprocesses or parallel processing if available to thoroughly analyze different customer decision areas simultaneously and thoroughly. + +Start with customer decisions research approach: +"Now I'll conduct **customer decision processes analysis** for **{{research_topic}}** to understand customer decision-making. + +**Customer Decisions Focus:** + +- Customer decision-making processes +- Decision factors and criteria +- Customer journey mapping +- Purchase decision influencers +- Information gathering patterns + +**Let me search for current customer decision insights.**" + +### 2. Parallel Decisions Research Execution + +**Execute multiple web searches simultaneously:** + +Search the web: "{{research_topic}} customer decision process" +Search the web: "{{research_topic}} buying criteria factors" +Search the web: "{{research_topic}} customer journey mapping" +Search the web: "{{research_topic}} decision influencing factors" + +**Analysis approach:** + +- Look for customer decision research studies +- Search for buying criteria and factor analysis +- Research customer journey mapping methodologies +- Analyze decision influence factors and channels +- Study information gathering and evaluation patterns + +### 3. Analyze and Aggregate Results + +**Collect and analyze findings from all parallel searches:** + +"After executing comprehensive parallel web searches, let me analyze and aggregate customer decision findings: + +**Research Coverage:** + +- Customer decision-making processes +- Decision factors and criteria +- Customer journey mapping +- Decision influence factors + +**Cross-Decisions Analysis:** +[Identify patterns connecting decision factors and journey stages] + +**Quality Assessment:** +[Overall confidence levels and research gaps identified]" + +### 4. Generate Customer Decisions Content + +**WRITE IMMEDIATELY TO DOCUMENT** + +Prepare customer decisions analysis with web search citations: + +#### Content Structure: + +When saving to document, append these Level 2 and Level 3 sections: + +```markdown +## Customer Decision Processes and Journey + +### Customer Decision-Making Processes + +[Decision processes analysis with source citations] +_Decision Stages: [Key stages in customer decision making]_ +_Decision Timelines: [Timeframes for different decisions]_ +_Complexity Levels: [Decision complexity assessment]_ +_Evaluation Methods: [How customers evaluate options]_ +_Source: [URL]_ + +### Decision Factors and Criteria + +[Decision factors analysis with source citations] +_Primary Decision Factors: [Most important factors in decisions]_ +_Secondary Decision Factors: [Supporting factors influencing decisions]_ +_Weighing Analysis: [How different factors are weighed]_ +_Evoluton Patterns: [How factors change over time]_ +_Source: [URL]_ + +### Customer Journey Mapping + +[Journey mapping analysis with source citations] +_Awareness Stage: [How customers become aware of {{research_topic}}]_ +_Consideration Stage: [Evaluation and comparison process]_ +_Decision Stage: [Final decision-making process]_ +_Purchase Stage: [Purchase execution and completion]_ +_Post-Purchase Stage: [Post-decision evaluation and behavior]_ +_Source: [URL]_ + +### Touchpoint Analysis + +[Touchpoint analysis with source citations] +_Digital Touchpoints: [Online and digital interaction points]_ +_Offline Touchpoints: [Physical and in-person interaction points]_ +_Information Sources: [Where customers get information]_ +_Influence Channels: [What influences customer decisions]_ +_Source: [URL]_ + +### Information Gathering Patterns + +[Information patterns analysis with source citations] +_Research Methods: [How customers research options]_ +_Information Sources Trusted: [Most trusted information sources]_ +_Research Duration: [Time spent gathering information]_ +_Evaluation Criteria: [How customers evaluate information]_ +_Source: [URL]_ + +### Decision Influencers + +[Decision influencer analysis with source citations] +_Peer Influence: [How friends and family influence decisions]_ +_Expert Influence: [How expert opinions affect decisions]_ +_Media Influence: [How media and marketing affect decisions]_ +_Social Proof Influence: [How reviews and testimonials affect decisions]_ +_Source: [URL]_ + +### Purchase Decision Factors + +[Purchase decision factors analysis with source citations] +_Immediate Purchase Drivers: [Factors triggering immediate purchase]_ +_Delayed Purchase Drivers: [Factors causing purchase delays]_ +_Brand Loyalty Factors: [Factors driving repeat purchases]_ +_Price Sensitivity: [How price affects purchase decisions]_ +_Source: [URL]_ + +### Customer Decision Optimizations + +[Decision optimization analysis with source citations] +_Friction Reduction: [Ways to make decisions easier]_ +_Trust Building: [Building customer trust in decisions]_ +_Conversion Optimization: [Optimizing decision-to-purchase rates]_ +_Loyalty Building: [Building long-term customer relationships]_ +_Source: [URL]_ +``` + +### 5. Present Analysis and Continue Option + +**Show analysis and present continue option:** + +"I've completed **customer decision processes analysis** for {{research_topic}}, focusing on customer decision-making. + +**Key Decision Findings:** + +- Customer decision-making processes clearly mapped +- Decision factors and criteria thoroughly analyzed +- Customer journey mapping completed across all stages +- Decision influencers and touchpoints identified +- Information gathering patterns documented + +**Ready to proceed to competitive analysis?** +[C] Continue - Save this to document and proceed to competitive analysis + +**HALT — wait for user response before proceeding.** + +### 6. Handle Continue Selection + +#### If 'C' (Continue): + +- **CONTENT ALREADY WRITTEN TO DOCUMENT** +- Update frontmatter: `stepsCompleted: [1, 2, 3, 4]` +- Load: `./step-05-competitive-analysis.md` + +## APPEND TO DOCUMENT: + +Content is already written to document when generated in step 4. No additional append needed. + +## SUCCESS METRICS: + +✅ Customer decision-making processes clearly mapped +✅ Decision factors and criteria thoroughly analyzed +✅ Customer journey mapping completed across all stages +✅ Decision influencers and touchpoints identified +✅ Information gathering patterns documented +✅ Content written immediately to document +✅ [C] continue option presented and handled correctly +✅ Proper routing to next step (competitive analysis) +✅ Research goals alignment maintained + +## FAILURE MODES: + +❌ Relying solely on training data without web verification for current facts + +❌ Missing critical decision-making process stages +❌ Not identifying key decision factors +❌ Incomplete customer journey mapping +❌ Not writing content immediately to document +❌ Not presenting [C] continue option after content generation +❌ Not routing to competitive analysis step + +❌ **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 + +## CUSTOMER DECISIONS RESEARCH PROTOCOLS: + +- Research customer decision studies and psychology +- Use customer journey mapping methodologies +- Analyze buying criteria and decision factors +- Study decision influence and touchpoint analysis +- Focus on current decision data +- Present conflicting information when sources disagree +- Apply confidence levels appropriately + +## DECISION ANALYSIS STANDARDS: + +- Always cite URLs for web search results +- Use authoritative customer decision research sources +- Note data currency and potential limitations +- Present multiple perspectives when sources conflict +- Apply confidence levels to uncertain data +- Focus on actionable decision insights + +## NEXT STEP: + +After user selects 'C', load `./step-05-competitive-analysis.md` to analyze competitive landscape, market positioning, and competitive strategies for {{research_topic}}. + +Remember: Always write research content to document immediately and emphasize current customer decision data with rigorous source verification! diff --git a/src/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-05-competitive-analysis.md b/src/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-05-competitive-analysis.md new file mode 100644 index 000000000..868b12421 --- /dev/null +++ b/src/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-05-competitive-analysis.md @@ -0,0 +1,173 @@ +# Market Research Step 5: Competitive Analysis + +## MANDATORY EXECUTION RULES (READ FIRST): + +- 🛑 NEVER generate content without web search verification + +- 📖 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 +- ✅ Search the web to verify and supplement your knowledge with current facts +- 📋 YOU ARE A COMPETITIVE ANALYST, not content generator +- 💬 FOCUS on competitive landscape and market positioning +- 🔍 WEB SEARCH REQUIRED - verify current facts against live sources +- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` + +## EXECUTION PROTOCOLS: + +- 🎯 Show web search analysis before presenting findings +- ⚠️ Present [C] complete option after competitive analysis content generation +- 💾 ONLY save when user chooses C (Complete) +- 📖 Update frontmatter `stepsCompleted: [1, 2, 3, 4, 5]` before completing workflow +- 🚫 FORBIDDEN to complete workflow until C is selected + +## CONTEXT BOUNDARIES: + +- Current document and frontmatter from previous steps are available +- Focus on competitive landscape and market positioning analysis +- Web search capabilities with source verification are enabled +- May need to search for specific competitor information + +## YOUR TASK: + +Conduct comprehensive competitive analysis with emphasis on market positioning. + +## COMPETITIVE ANALYSIS SEQUENCE: + +### 1. Begin Competitive Analysis + +Start with competitive research approach: +"Now I'll conduct **competitive analysis** to understand the competitive landscape. + +**Competitive Analysis Focus:** + +- Key players and market share +- Competitive positioning strategies +- Strengths and weaknesses analysis +- Market differentiation opportunities +- Competitive threats and challenges + +**Let me search for current competitive information.**" + +### 2. Generate Competitive Analysis Content + +Prepare competitive analysis with web search citations: + +#### Content Structure: + +When saving to document, append these Level 2 and Level 3 sections: + +```markdown +## Competitive Landscape + +### Key Market Players + +[Key players analysis with market share data] +_Source: [URL]_ + +### Market Share Analysis + +[Market share analysis with source citations] +_Source: [URL]_ + +### Competitive Positioning + +[Positioning analysis with source citations] +_Source: [URL]_ + +### Strengths and Weaknesses + +[SWOT analysis with source citations] +_Source: [URL]_ + +### Market Differentiation + +[Differentiation analysis with source citations] +_Source: [URL]_ + +### Competitive Threats + +[Threats analysis with source citations] +_Source: [URL]_ + +### Opportunities + +[Competitive opportunities analysis with source citations] +_Source: [URL]_ +``` + +### 3. Present Analysis and Complete Option + +Show the generated competitive analysis and present complete option: +"I've completed the **competitive analysis** for the competitive landscape. + +**Key Competitive Findings:** + +- Key market players and market share identified +- Competitive positioning strategies mapped +- Strengths and weaknesses thoroughly analyzed +- Market differentiation opportunities identified +- Competitive threats and challenges documented + +**Ready to complete the market research?** +[C] Complete Research - Save competitive analysis and proceed to research completion + +**HALT — wait for user response before proceeding.** + +### 4. Handle Complete Selection + +#### If 'C' (Complete Research): + +- Append the final content to the research document +- Update frontmatter: `stepsCompleted: [1, 2, 3, 4, 5]` +- Load: `./step-06-research-completion.md` + +## APPEND TO DOCUMENT: + +When user selects 'C', append the content directly to the research document using the structure from step 2. + +## SUCCESS METRICS: + +✅ Key market players identified +✅ Market share analysis completed with source verification +✅ Competitive positioning strategies clearly mapped +✅ Strengths and weaknesses thoroughly analyzed +✅ Market differentiation opportunities identified +✅ [C] complete option presented and handled correctly +✅ Content properly appended to document when C selected +✅ Market research workflow completed successfully + +## FAILURE MODES: + +❌ Relying solely on training data without web verification for current facts + +❌ Missing key market players or market share data +❌ Incomplete competitive positioning analysis +❌ Not identifying market differentiation opportunities +❌ Not presenting completion option for research workflow +❌ 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 + +## COMPETITIVE RESEARCH PROTOCOLS: + +- Search for industry reports and competitive intelligence +- Use competitor company websites and annual reports +- Research market research firm competitive analyses +- Note competitive advantages and disadvantages +- Search for recent market developments and disruptions + +## MARKET RESEARCH COMPLETION: + +When 'C' is selected: + +- All market research steps completed +- Comprehensive market research document generated +- All sections appended with source citations +- Market research workflow status updated +- Final recommendations provided to user + +## NEXT STEP: + +After user selects 'C', load `./step-06-research-completion.md` to produce the final comprehensive market research document with strategic synthesis, executive summary, and complete document structure. diff --git a/src/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-06-research-completion.md b/src/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-06-research-completion.md new file mode 100644 index 000000000..59ca4ae89 --- /dev/null +++ b/src/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-06-research-completion.md @@ -0,0 +1,478 @@ +# Market Research Step 6: Research Completion + +## MANDATORY EXECUTION RULES (READ FIRST): + +- 🛑 NEVER generate content without web search verification + +- 📖 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 +- ✅ Search the web to verify and supplement your knowledge with current facts +- 📋 YOU ARE A MARKET RESEARCH STRATEGIST, not content generator +- 💬 FOCUS on strategic recommendations and actionable insights +- 🔍 WEB SEARCH REQUIRED - verify current facts against live sources +- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` + +## EXECUTION PROTOCOLS: + +- 🎯 Show web search analysis before presenting findings +- ⚠️ Present [C] complete option after completion content generation +- 💾 ONLY save when user chooses C (Complete) +- 📖 Update frontmatter `stepsCompleted: [1, 2, 3, 4, 5, 6]` before completing workflow +- 🚫 FORBIDDEN to complete workflow until C is selected +- 📚 GENERATE COMPLETE DOCUMENT STRUCTURE with intro, TOC, and summary + +## CONTEXT BOUNDARIES: + +- Current document and frontmatter from previous steps are available +- **Research topic = "{{research_topic}}"** - comprehensive market analysis +- **Research goals = "{{research_goals}}"** - achieved through exhaustive market research +- All market research sections have been completed (customer behavior, pain points, decisions, competitive analysis) +- Web search capabilities with source verification are enabled +- This is the final synthesis step producing the complete market research document + +## YOUR TASK: + +Produce a comprehensive, authoritative market research document on **{{research_topic}}** with compelling narrative introduction, detailed TOC, and executive summary based on exhaustive market research. + +## MARKET RESEARCH COMPLETION SEQUENCE: + +### 1. Begin Strategic Synthesis + +Start with strategic synthesis approach: +"Now I'll complete our market research with **strategic synthesis and recommendations** . + +**Strategic Synthesis Focus:** + +- Integrated insights from market, customer, and competitive analysis +- Strategic recommendations based on research findings +- Market entry or expansion strategies +- Risk assessment and mitigation approaches +- Actionable next steps and implementation guidance + +**Let me search for current strategic insights and best practices.**" + +### 2. Web Search for Market Entry Strategies + +Search for current market strategies: +Search the web: "market entry strategies best practices" + +**Strategy focus:** + +- Market entry timing and approaches +- Go-to-market strategies and frameworks +- Market positioning and differentiation tactics +- Customer acquisition and growth strategies + +### 3. Web Search for Risk Assessment + +Search for current risk approaches: +Search the web: "market research risk assessment frameworks" + +**Risk focus:** + +- Market risks and uncertainty management +- Competitive threats and mitigation strategies +- Regulatory and compliance risks +- Economic and market volatility considerations + +### 4. Generate Complete Market Research Document + +Prepare comprehensive market research document with full structure: + +#### Complete Document Structure: + +```markdown +# [Compelling Title]: Comprehensive {{research_topic}} Market Research + +## Executive Summary + +[Brief compelling overview of key market findings and strategic implications] + +## Table of Contents + +- Market Research Introduction and Methodology +- {{research_topic}} Market Analysis and Dynamics +- Customer Insights and Behavior Analysis +- Competitive Landscape and Positioning +- Strategic Market Recommendations +- Market Entry and Growth Strategies +- Risk Assessment and Mitigation +- Implementation Roadmap and Success Metrics +- Future Market Outlook and Opportunities +- Market Research Methodology and Source Documentation +- Market Research Appendices and Additional Resources + +## 1. Market Research Introduction and Methodology + +### Market Research Significance + +**Compelling market narrative about why {{research_topic}} research is critical now** +_Market Importance: [Strategic market significance with up-to-date context]_ +_Business Impact: [Business implications of market research]_ +_Source: [URL]_ + +### Market Research Methodology + +[Comprehensive description of market research approach including:] + +- **Market Scope**: [Comprehensive market coverage areas] +- **Data Sources**: [Authoritative market sources and verification approach] +- **Analysis Framework**: [Structured market analysis methodology] +- **Time Period**: [current focus and market evolution context] +- **Geographic Coverage**: [Regional/global market scope] + +### Market Research Goals and Objectives + +**Original Market Goals:** {{research_goals}} + +**Achieved Market Objectives:** + +- [Market Goal 1 achievement with supporting evidence] +- [Market Goal 2 achievement with supporting evidence] +- [Additional market insights discovered during research] + +## 2. {{research_topic}} Market Analysis and Dynamics + +### Market Size and Growth Projections + +_[Comprehensive market analysis]_ +_Market Size: [Current market valuation and size]_ +_Growth Rate: [CAGR and market growth projections]_ +_Market Drivers: [Key factors driving market growth]_ +_Market Segments: [Detailed market segmentation analysis]_ +_Source: [URL]_ + +### Market Trends and Dynamics + +[Current market trends analysis] +_Emerging Trends: [Key market trends and their implications]_ +_Market Dynamics: [Forces shaping market evolution]_ +_Consumer Behavior Shifts: [Changes in customer behavior and preferences]_ +_Source: [URL]_ + +### Pricing and Business Model Analysis + +[Comprehensive pricing and business model analysis] +_Pricing Strategies: [Current pricing approaches and models]_ +_Business Model Evolution: [Emerging and successful business models]_ +_Value Proposition Analysis: [Customer value proposition assessment]_ +_Source: [URL]_ + +## 3. Customer Insights and Behavior Analysis + +### Customer Behavior Patterns + +[Customer insights analysis with current context] +_Behavior Patterns: [Key customer behavior trends and patterns]_ +_Customer Journey: [Complete customer journey mapping]_ +_Decision Factors: [Factors influencing customer decisions]_ +_Source: [URL]_ + +### Customer Pain Points and Needs + +[Comprehensive customer pain point analysis] +_Pain Points: [Key customer challenges and frustrations]_ +_Unmet Needs: [Unsolved customer needs and opportunities]_ +_Customer Expectations: [Current customer expectations and requirements]_ +_Source: [URL]_ + +### Customer Segmentation and Targeting + +[Detailed customer segmentation analysis] +_Customer Segments: [Detailed customer segment profiles]_ +_Target Market Analysis: [Most attractive customer segments]_ +_Segment-specific Strategies: [Tailored approaches for key segments]_ +_Source: [URL]_ + +## 4. Competitive Landscape and Positioning + +### Competitive Analysis + +[Comprehensive competitive analysis] +_Market Leaders: [Dominant competitors and their strategies]_ +_Emerging Competitors: [New entrants and innovative approaches]_ +_Competitive Advantages: [Key differentiators and competitive advantages]_ +_Source: [URL]_ + +### Market Positioning Strategies + +[Strategic positioning analysis] +_Positioning Opportunities: [Opportunities for market differentiation]_ +_Competitive Gaps: [Unserved market needs and opportunities]_ +_Positioning Framework: [Recommended positioning approach]_ +_Source: [URL]_ + +## 5. Strategic Market Recommendations + +### Market Opportunity Assessment + +[Strategic market opportunities analysis] +_High-Value Opportunities: [Most attractive market opportunities]_ +_Market Entry Timing: [Optimal timing for market entry or expansion]_ +_Growth Strategies: [Recommended approaches for market growth]_ +_Source: [URL]_ + +### Strategic Recommendations + +[Comprehensive strategic recommendations] +_Market Entry Strategy: [Recommended approach for market entry/expansion]_ +_Competitive Strategy: [Recommended competitive positioning and approach]_ +_Customer Acquisition Strategy: [Recommended customer acquisition approach]_ +_Source: [URL]_ + +## 6. Market Entry and Growth Strategies + +### Go-to-Market Strategy + +[Comprehensive go-to-market approach] +_Market Entry Approach: [Recommended market entry strategy and tactics]_ +_Channel Strategy: [Optimal channels for market reach and customer acquisition]_ +_Partnership Strategy: [Strategic partnership and collaboration opportunities]_ +_Source: [URL]_ + +### Growth and Scaling Strategy + +[Market growth and scaling analysis] +_Growth Phases: [Recommended phased approach to market growth]_ +_Scaling Considerations: [Key factors for successful market scaling]_ +_Expansion Opportunities: [Opportunities for geographic or segment expansion]_ +_Source: [URL]_ + +## 7. Risk Assessment and Mitigation + +### Market Risk Analysis + +[Comprehensive market risk assessment] +_Market Risks: [Key market-related risks and uncertainties]_ +_Competitive Risks: [Competitive threats and mitigation strategies]_ +_Regulatory Risks: [Regulatory and compliance considerations]_ +_Source: [URL]_ + +### Mitigation Strategies + +[Risk mitigation and contingency planning] +_Risk Mitigation Approaches: [Strategies for managing identified risks]_ +_Contingency Planning: [Backup plans and alternative approaches]_ +_Market Sensitivity Analysis: [Impact of market changes on strategy]_ +_Source: [URL]_ + +## 8. Implementation Roadmap and Success Metrics + +### Implementation Framework + +[Comprehensive implementation guidance] +_Implementation Timeline: [Recommended phased implementation approach]_ +_Required Resources: [Key resources and capabilities needed]_ +_Implementation Milestones: [Key milestones and success criteria]_ +_Source: [URL]_ + +### Success Metrics and KPIs + +[Comprehensive success measurement framework] +_Key Performance Indicators: [Critical metrics for measuring success]_ +_Monitoring and Reporting: [Approach for tracking and reporting progress]_ +_Success Criteria: [Clear criteria for determining success]_ +_Source: [URL]_ + +## 9. Future Market Outlook and Opportunities + +### Future Market Trends + +[Forward-looking market analysis] +_Near-term Market Evolution: [1-2 year market development expectations]_ +_Medium-term Market Trends: [3-5 year expected market developments]_ +_Long-term Market Vision: [5+ year market outlook for {{research_topic}}]_ +_Source: [URL]_ + +### Strategic Opportunities + +[Market opportunity analysis and recommendations] +_Emerging Opportunities: [New market opportunities and their potential]_ +_Innovation Opportunities: [Areas for market innovation and differentiation]_ +_Strategic Market Investments: [Recommended market investments and priorities]_ +_Source: [URL]_ + +## 10. Market Research Methodology and Source Verification + +### Comprehensive Market Source Documentation + +[Complete documentation of all market research sources] +_Primary Market Sources: [Key authoritative market sources used]_ +_Secondary Market Sources: [Supporting market research and analysis]_ +_Market Web Search Queries: [Complete list of market search queries used]_ + +### Market Research Quality Assurance + +[Market research quality assurance and validation approach] +_Market Source Verification: [All market claims verified with multiple sources]_ +_Market Confidence Levels: [Confidence assessments for uncertain market data]_ +_Market Research Limitations: [Market research limitations and areas for further investigation]_ +_Methodology Transparency: [Complete transparency about market research approach]_ + +## 11. Market Research Appendices and Additional Resources + +### Detailed Market Data Tables + +[Comprehensive market data tables supporting research findings] +_Market Size Data: [Detailed market size and growth data tables]_ +_Customer Analysis Data: [Detailed customer behavior and segmentation data]_ +_Competitive Analysis Data: [Detailed competitor comparison and positioning data]_ + +### Market Resources and References + +[Valuable market resources for continued research and implementation] +_Market Research Reports: [Authoritative market research reports and publications]_ +_Industry Associations: [Key industry organizations and market resources]_ +_Market Analysis Tools: [Tools and resources for ongoing market analysis]_ + +--- + +## Market Research Conclusion + +### Summary of Key Market Findings + +[Comprehensive summary of the most important market research findings] + +### Strategic Market Impact Assessment + +[Assessment of market implications for {{research_topic}}] + +### Next Steps Market Recommendations + +[Specific next steps for leveraging this market research] + +--- + +**Market Research Completion Date:** {{date}} +**Research Period:** current comprehensive market analysis +**Document Length:** As needed for comprehensive market coverage +**Source Verification:** All market facts cited with current sources +**Market Confidence Level:** High - based on multiple authoritative market sources + +_This comprehensive market research document serves as an authoritative market reference on {{research_topic}} and provides strategic market insights for informed decision-making._ +``` + +### 5. Present Complete Market Research Document and Final Option + +**Market Research Document Completion Presentation:** + +"I've completed the **comprehensive market research document synthesis** for **{{research_topic}}**, producing an authoritative market research document with: + +**Document Features:** + +- **Compelling Market Introduction**: Engaging opening that establishes market research significance +- **Comprehensive Market TOC**: Complete navigation structure for market reference +- **Exhaustive Market Research Coverage**: All market aspects of {{research_topic}} thoroughly analyzed +- **Executive Market Summary**: Key market findings and strategic implications highlighted +- **Strategic Market Recommendations**: Actionable market insights based on comprehensive research +- **Complete Market Source Citations**: Every market claim verified with current sources + +**Market Research Completeness:** + +- Market analysis and dynamics fully documented +- Customer insights and behavior analysis comprehensively covered +- Competitive landscape and positioning detailed +- Strategic market recommendations and implementation guidance provided + +**Document Standards Met:** + +- Exhaustive market research with no critical gaps +- Professional market structure and compelling narrative +- As long as needed for comprehensive market coverage +- Multiple independent sources for all market claims +- current market data throughout with proper citations + +**Ready to complete this comprehensive market research document?** +[C] Complete Research - Save final comprehensive market research document + +**HALT — wait for user response before proceeding.** + +### 6. Handle Complete Selection + +#### If 'C' (Complete Research): + +- **Replace** the template placeholder `[Research overview and methodology will be appended here]` in the `## Research Overview` section near the top of the document with a concise 2-3 paragraph overview summarizing the research scope, key findings, and a pointer to the full executive summary in the Research Synthesis section +- Append the final content to the research document +- Update frontmatter: `stepsCompleted: [1, 2, 3, 4]` +- Complete the market research workflow + +## APPEND TO DOCUMENT: + +When user selects 'C', append the content directly to the research document using the structure from step 4. Also replace the `[Research overview and methodology will be appended here]` placeholder in the Research Overview section at the top of the document. + +## SUCCESS METRICS: + +✅ Compelling market introduction with research significance +✅ Comprehensive market table of contents with complete document structure +✅ Exhaustive market research coverage across all market aspects +✅ Executive market summary with key findings and strategic implications +✅ Strategic market recommendations grounded in comprehensive research +✅ Complete market source verification with current citations +✅ Professional market document structure and compelling narrative +✅ [C] complete option presented and handled correctly +✅ Market research workflow completed with comprehensive document + +## FAILURE MODES: + +❌ Not producing compelling market introduction +❌ Missing comprehensive market table of contents +❌ Incomplete market research coverage across market aspects +❌ Not providing executive market summary with key findings +❌ Missing strategic market recommendations based on research +❌ Relying solely on training data without web verification for current facts +❌ Producing market document without professional structure +❌ Not presenting completion option for final market document + +❌ **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 + +## STRATEGIC RESEARCH PROTOCOLS: + +- Search for current market strategy frameworks and best practices +- Research successful market entry cases and approaches +- Identify risk management methodologies and frameworks +- Research implementation planning and execution strategies +- Consider market timing and readiness factors + +## COMPREHENSIVE MARKET DOCUMENT STANDARDS: + +This step ensures the final market research document: + +- Serves as an authoritative market reference on {{research_topic}} +- Provides strategic market insights for informed decision-making +- Includes comprehensive market coverage with no gaps +- Maintains rigorous market source verification standards +- Delivers strategic market insights and actionable recommendations +- Meets professional market research document quality standards + +## MARKET RESEARCH WORKFLOW COMPLETION: + +When 'C' is selected: + +- All market research steps completed (1-4) +- Comprehensive market research document generated +- Professional market document structure with intro, TOC, and summary +- All market sections appended with source citations +- Market research workflow status updated to complete +- Final comprehensive market research document delivered to user + +## FINAL MARKET DELIVERABLE: + +Complete authoritative market research document on {{research_topic}} that: + +- Establishes professional market credibility through comprehensive research +- Provides strategic market insights for informed decision-making +- Serves as market reference document for continued use +- Maintains highest market research quality standards with current verification + +## NEXT STEPS: + +Comprehensive market research workflow complete. User may: + +- Use market research document to inform business strategies and decisions +- Conduct additional market research on specific segments or opportunities +- Combine market research with other research types for comprehensive insights +- Move forward with implementation based on strategic market recommendations + +Congratulations on completing comprehensive market research with professional documentation! 🎉 diff --git a/src/bmm/workflows/1-analysis/research/workflow-market-research.md b/src/bmm/workflows/1-analysis/research/bmad-market-research/workflow.md similarity index 90% rename from src/bmm/workflows/1-analysis/research/workflow-market-research.md rename to src/bmm/workflows/1-analysis/research/bmad-market-research/workflow.md index 8a77a67cd..23822ca3b 100644 --- a/src/bmm/workflows/1-analysis/research/workflow-market-research.md +++ b/src/bmm/workflows/1-analysis/research/bmad-market-research/workflow.md @@ -1,8 +1,3 @@ ---- -name: market-research -description: 'Conduct market research on competition and customers. Use when the user says "create a market research report about [business idea]".' ---- - # Market Research Workflow **Goal:** Conduct comprehensive market research using current web data and verified sources to produce complete research documents with compelling narratives and proper citations. @@ -47,7 +42,7 @@ After gathering the topic and goals: 2. Set `research_topic = [discovered topic from discussion]` 3. Set `research_goals = [discovered goals from discussion]` 4. Create the starter output file: `{planning_artifacts}/research/market-{{research_topic}}-research-{{date}}.md` with exact copy of the `./research.template.md` contents -5. Load: `./market-steps/step-01-init.md` with topic context +5. Load: `./steps/step-01-init.md` with topic context **Note:** The discovered topic from the discussion should be passed to the initialization step, so it doesn't need to ask "What do you want to research?" again - it can focus on refining the scope for market research. diff --git a/src/bmm/workflows/1-analysis/research/bmad-skill-manifest.yaml b/src/bmm/workflows/1-analysis/research/bmad-skill-manifest.yaml deleted file mode 100644 index 02bf825e9..000000000 --- a/src/bmm/workflows/1-analysis/research/bmad-skill-manifest.yaml +++ /dev/null @@ -1,14 +0,0 @@ -workflow-domain-research.md: - canonicalId: bmad-domain-research - type: workflow - description: "Conduct domain and industry research. Use when the user says 'lets create a research report on [domain or industry]'" - -workflow-market-research.md: - canonicalId: bmad-market-research - type: workflow - description: "Conduct market research on competition and customers. Use when the user says 'create a market research report about [business idea]'" - -workflow-technical-research.md: - canonicalId: bmad-technical-research - type: workflow - description: "Conduct technical research on technologies and architecture. Use when the user says 'create a technical research report on [topic]'" diff --git a/src/bmm/workflows/1-analysis/research/bmad-technical-research/SKILL.md b/src/bmm/workflows/1-analysis/research/bmad-technical-research/SKILL.md new file mode 100644 index 000000000..d6930a40d --- /dev/null +++ b/src/bmm/workflows/1-analysis/research/bmad-technical-research/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-technical-research +description: 'Conduct technical research on technologies and architecture. Use when the user says "create a technical research report on [topic]".' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/1-analysis/research/bmad-technical-research/bmad-skill-manifest.yaml b/src/bmm/workflows/1-analysis/research/bmad-technical-research/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/1-analysis/research/bmad-technical-research/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/1-analysis/research/bmad-technical-research/research.template.md b/src/bmm/workflows/1-analysis/research/bmad-technical-research/research.template.md new file mode 100644 index 000000000..1d9952470 --- /dev/null +++ b/src/bmm/workflows/1-analysis/research/bmad-technical-research/research.template.md @@ -0,0 +1,29 @@ +--- +stepsCompleted: [] +inputDocuments: [] +workflowType: 'research' +lastStep: 1 +research_type: '{{research_type}}' +research_topic: '{{research_topic}}' +research_goals: '{{research_goals}}' +user_name: '{{user_name}}' +date: '{{date}}' +web_research_enabled: true +source_verification: true +--- + +# Research Report: {{research_type}} + +**Date:** {{date}} +**Author:** {{user_name}} +**Research Type:** {{research_type}} + +--- + +## Research Overview + +[Research overview and methodology will be appended here] + +--- + + diff --git a/src/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md b/src/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-01-init.md similarity index 95% rename from src/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md rename to src/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-01-init.md index 1b0980b3f..b286822dc 100644 --- a/src/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +++ b/src/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-01-init.md @@ -78,7 +78,7 @@ For **{{research_topic}}**, I will research: - Document scope confirmation in research file - Update frontmatter: `stepsCompleted: [1]` -- Load: `{project-root}/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md` +- Load: `./step-02-technical-overview.md` ## APPEND TO DOCUMENT: @@ -132,6 +132,6 @@ When user selects 'C', append scope confirmation: ## NEXT STEP: -After user selects 'C', load `{project-root}/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md` to begin technology stack analysis. +After user selects 'C', load `./step-02-technical-overview.md` to begin technology stack analysis. Remember: This is SCOPE CONFIRMATION ONLY - no actual technical research yet, just confirming the research approach and scope! diff --git a/src/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md b/src/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-02-technical-overview.md similarity index 96% rename from src/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md rename to src/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-02-technical-overview.md index 406a273ca..78151eb0d 100644 --- a/src/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +++ b/src/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-02-technical-overview.md @@ -180,7 +180,7 @@ _Source: [URL]_ - **CONTENT ALREADY WRITTEN TO DOCUMENT** - Update frontmatter: `stepsCompleted: [1, 2]` -- Load: `{project-root}/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md` +- Load: `./step-03-integration-patterns.md` ## APPEND TO DOCUMENT: @@ -234,6 +234,6 @@ Content is already written to document when generated in step 4. No additional a ## NEXT STEP: -After user selects 'C', load `{project-root}/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md` to analyze APIs, communication protocols, and system interoperability for {{research_topic}}. +After user selects 'C', load `./step-03-integration-patterns.md` to analyze APIs, communication protocols, and system interoperability for {{research_topic}}. Remember: Always write research content to document immediately and emphasize current technology data with rigorous source verification! diff --git a/src/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md b/src/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-03-integration-patterns.md similarity index 96% rename from src/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md rename to src/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-03-integration-patterns.md index 4d4f6243d..68e2b70f9 100644 --- a/src/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +++ b/src/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-03-integration-patterns.md @@ -189,7 +189,7 @@ _Source: [URL]_ - **CONTENT ALREADY WRITTEN TO DOCUMENT** - Update frontmatter: `stepsCompleted: [1, 2, 3]` -- Load: `{project-root}/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md` +- Load: `./step-04-architectural-patterns.md` ## APPEND TO DOCUMENT: @@ -243,6 +243,6 @@ Content is already written to document when generated in step 4. No additional a ## NEXT STEP: -After user selects 'C', load `{project-root}/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md` to analyze architectural patterns, design decisions, and system structures for {{research_topic}}. +After user selects 'C', load `./step-04-architectural-patterns.md` to analyze architectural patterns, design decisions, and system structures for {{research_topic}}. Remember: Always write research content to document immediately and emphasize current integration data with rigorous source verification! diff --git a/src/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md b/src/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-04-architectural-patterns.md similarity index 95% rename from src/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md rename to src/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-04-architectural-patterns.md index abb01037a..3d0e66ab3 100644 --- a/src/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +++ b/src/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-04-architectural-patterns.md @@ -156,7 +156,7 @@ Show the generated architectural patterns and present continue option: - Append the final content to the research document - Update frontmatter: `stepsCompleted: [1, 2, 3, 4]` -- Load: `{project-root}/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md` +- Load: `./step-05-implementation-research.md` ## APPEND TO DOCUMENT: @@ -197,6 +197,6 @@ When user selects 'C', append the content directly to the research document usin ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md` to focus on implementation approaches and technology adoption. +After user selects 'C' and content is saved to document, load `./step-05-implementation-research.md` to focus on implementation approaches and technology adoption. Remember: Always emphasize current architectural data and rigorous source verification! diff --git a/src/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md b/src/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-05-implementation-research.md similarity index 95% rename from src/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md rename to src/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-05-implementation-research.md index 9e5be7bbb..994537356 100644 --- a/src/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +++ b/src/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-05-implementation-research.md @@ -179,7 +179,7 @@ Show the generated implementation research and present continue option: - Append the final content to the research document - Update frontmatter: `stepsCompleted: [1, 2, 3, 4, 5]` -- Load: `{project-root}/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md` +- Load: `./step-06-research-synthesis.md` ## APPEND TO DOCUMENT: @@ -230,4 +230,4 @@ When 'C' is selected: ## NEXT STEP: -After user selects 'C', load `{project-root}/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md` to produce the comprehensive technical research document with narrative introduction, detailed TOC, and executive summary. +After user selects 'C', load `./step-06-research-synthesis.md` to produce the comprehensive technical research document with narrative introduction, detailed TOC, and executive summary. diff --git a/src/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md b/src/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-06-research-synthesis.md similarity index 100% rename from src/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md rename to src/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-06-research-synthesis.md diff --git a/src/bmm/workflows/1-analysis/research/workflow-technical-research.md b/src/bmm/workflows/1-analysis/research/bmad-technical-research/workflow.md similarity index 92% rename from src/bmm/workflows/1-analysis/research/workflow-technical-research.md rename to src/bmm/workflows/1-analysis/research/bmad-technical-research/workflow.md index ecc9a2f27..bf7020f56 100644 --- a/src/bmm/workflows/1-analysis/research/workflow-technical-research.md +++ b/src/bmm/workflows/1-analysis/research/bmad-technical-research/workflow.md @@ -1,7 +1,3 @@ ---- -name: technical-research -description: 'Conduct technical research on technologies and architecture. Use when the user says "create a technical research report on [topic]".' ---- # Technical Research Workflow diff --git a/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/SKILL.md b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/SKILL.md new file mode 100644 index 000000000..96079575b --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-create-ux-design +description: 'Plan UX patterns and design specifications. Use when the user says "lets create UX design" or "create UX specifications" or "help me plan the UX"' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/bmad-skill-manifest.yaml b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-01-init.md similarity index 93% rename from src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md rename to src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-01-init.md index 02b69c2d0..2ec7ecb36 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-01-init.md @@ -44,7 +44,7 @@ First, check if the output document already exists: If the document exists and has frontmatter with `stepsCompleted`: -- **STOP here** and load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md` immediately +- **STOP here** and load `./step-01b-continue.md` immediately - Do not proceed with any initialization tasks - Let step-01b handle the continuation logic @@ -58,7 +58,7 @@ Discover and load context documents using smart discovery. Documents can be in t - {planning_artifacts}/** - {output_folder}/** - {product_knowledge}/** -- docs/** +- {project-root}/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) @@ -80,7 +80,7 @@ Try to discover the following: #### B. Create Initial Document -Copy the template from `{installed_path}/ux-design-template.md` to `{planning_artifacts}/ux-design-specification.md` +Copy the template from `../ux-design-template.md` to `{planning_artifacts}/ux-design-specification.md` Initialize frontmatter in the template. #### C. Complete Initialization and Report @@ -110,7 +110,7 @@ Do you have any other documents you'd like me to include, or shall we continue t ## NEXT STEP: -After user selects [C] to continue, ensure the file `{planning_artifacts}/ux-design-specification.md` has been created and saved, and then load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md` to begin the UX discovery phase. +After user selects [C] to continue, ensure the file `{planning_artifacts}/ux-design-specification.md` has been created and saved, and then load `./step-02-discovery.md` to begin the UX discovery phase. Remember: Do NOT proceed to step-02 until output file has been updated and user explicitly selects [C] to continue! diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-01b-continue.md similarity index 89% rename from src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md rename to src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-01b-continue.md index 92fded6c3..cd1df25f0 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-01b-continue.md @@ -72,9 +72,9 @@ Does this look right, or do you want to make any adjustments before we proceed?" Based on `lastStep` value, determine which step to load next: -- If `lastStep = 1` → Load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md` -- If `lastStep = 2` → Load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md` -- If `lastStep = 3` → Load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md` +- If `lastStep = 1` → Load `./step-02-discovery.md` +- If `lastStep = 2` → Load `./step-03-core-experience.md` +- If `lastStep = 3` → Load `./step-04-emotional-response.md` - Continue this pattern for all steps - If `lastStep` indicates final step → Workflow already complete @@ -108,7 +108,7 @@ After presenting current progress, ask: If `lastStep` indicates the final step is completed: "Great news! It looks like we've already completed the UX design workflow for {{project_name}}. -The final UX design specification is ready at {output_folder}/ux-design-specification.md with all sections completed through step {finalStepNumber}. +The final UX design specification is ready at {planning_artifacts}/ux-design-specification.md with all sections completed through step {finalStepNumber}. The complete UX design includes visual foundations, user flows, and design specifications ready for implementation. diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-02-discovery.md similarity index 93% rename from src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md rename to src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-02-discovery.md index 29ff47265..e0a8f0bde 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-02-discovery.md @@ -30,8 +30,8 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md -- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md +- When 'A' selected: Invoke the `bmad-advanced-elicitation` skill +- When 'P' selected: Invoke the `bmad-party-mode` skill - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -155,11 +155,11 @@ Show the generated project understanding content and present choices: - Append the final content to `{planning_artifacts}/ux-design-specification.md` - Update frontmatter: `stepsCompleted: [1, 2]` -- Load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md` +- Load `./step-03-core-experience.md` ## APPEND TO DOCUMENT: -When user selects 'C', append the content directly to the document. Only after the content is saved to document, read fully and follow: `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md`. +When user selects 'C', append the content directly to the document. Only after the content is saved to document, read fully and follow: `./step-03-core-experience.md`. ## SUCCESS METRICS: diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-03-core-experience.md similarity index 90% rename from src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md rename to src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-03-core-experience.md index af370a165..e14d3fd60 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-03-core-experience.md @@ -11,6 +11,7 @@ - 💬 FOCUS on defining the core user experience and platform - 🎯 COLLABORATIVE discovery, not assumption-based design - ✅ 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: @@ -30,8 +31,8 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md -- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md +- When 'A' selected: Invoke the `bmad-advanced-elicitation` skill +- When 'P' selected: Invoke the `bmad-party-mode` skill - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -161,7 +162,7 @@ Show the generated core experience content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current core experience content +- Invoke the `bmad-advanced-elicitation` skill with the current core experience content - Process the enhanced experience insights that come back - Ask user: "Accept these improvements to the core experience definition? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -169,7 +170,7 @@ Show the generated core experience content and present choices: #### If 'P' (Party Mode): -- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current core experience definition +- Invoke the `bmad-party-mode` skill with the current core experience definition - Process the collaborative experience improvements that come back - Ask user: "Accept these changes to the core experience definition? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -179,7 +180,7 @@ Show the generated core experience content and present choices: - Append the final content to `{planning_artifacts}/ux-design-specification.md` - Update frontmatter: append step to end of stepsCompleted array -- Load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md` +- Load `./step-04-emotional-response.md` ## APPEND TO DOCUMENT: @@ -211,6 +212,6 @@ When user selects 'C', append the content directly to the document using the str ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md` to define desired emotional responses. +After user selects 'C' and content is saved to document, load `./step-04-emotional-response.md` to define desired emotional responses. 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/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-04-emotional-response.md similarity index 90% rename from src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md rename to src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-04-emotional-response.md index 660f7cb09..00edcedd8 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-04-emotional-response.md @@ -11,6 +11,7 @@ - 💬 FOCUS on defining desired emotional responses and user feelings - 🎯 COLLABORATIVE discovery, not assumption-based design - ✅ 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: @@ -30,8 +31,8 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md -- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md +- When 'A' selected: Invoke the `bmad-advanced-elicitation` skill +- When 'P' selected: Invoke the `bmad-party-mode` skill - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -164,7 +165,7 @@ Show the generated emotional response content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current emotional response content +- Invoke the `bmad-advanced-elicitation` skill with the current emotional response content - Process the enhanced emotional insights that come back - Ask user: "Accept these improvements to the emotional response definition? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -172,7 +173,7 @@ Show the generated emotional response content and present choices: #### If 'P' (Party Mode): -- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current emotional response definition +- Invoke the `bmad-party-mode` skill with the current emotional response definition - Process the collaborative emotional insights that come back - Ask user: "Accept these changes to the emotional response definition? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -182,7 +183,7 @@ Show the generated emotional response content and present choices: - Append the final content to `{planning_artifacts}/ux-design-specification.md` - Update frontmatter: append step to end of stepsCompleted array -- Load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md` +- Load `./step-05-inspiration.md` ## APPEND TO DOCUMENT: @@ -214,6 +215,6 @@ When user selects 'C', append the content directly to the document using the str ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md` to analyze UX patterns from inspiring products. +After user selects 'C' and content is saved to document, load `./step-05-inspiration.md` to analyze UX patterns from inspiring products. 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/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-05-inspiration.md similarity index 90% rename from src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md rename to src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-05-inspiration.md index 554360778..f6b06a64f 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-05-inspiration.md @@ -11,6 +11,7 @@ - 💬 FOCUS on analyzing existing UX patterns and extracting inspiration - 🎯 COLLABORATIVE discovery, not assumption-based design - ✅ 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: @@ -30,8 +31,8 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md -- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md +- When 'A' selected: Invoke the `bmad-advanced-elicitation` skill +- When 'P' selected: Invoke the `bmad-party-mode` skill - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -179,7 +180,7 @@ Show the generated inspiration analysis content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current inspiration analysis content +- Invoke the `bmad-advanced-elicitation` skill with the current inspiration analysis content - Process the enhanced pattern insights that come back - Ask user: "Accept these improvements to the inspiration analysis? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -187,7 +188,7 @@ Show the generated inspiration analysis content and present choices: #### If 'P' (Party Mode): -- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current inspiration analysis +- Invoke the `bmad-party-mode` skill with the current inspiration analysis - Process the collaborative pattern insights that come back - Ask user: "Accept these changes to the inspiration analysis? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -197,7 +198,7 @@ Show the generated inspiration analysis content and present choices: - Append the final content to `{planning_artifacts}/ux-design-specification.md` - Update frontmatter: append step to end of stepsCompleted array -- Read fully and follow: `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md` +- Read fully and follow: `./step-06-design-system.md` ## APPEND TO DOCUMENT: @@ -229,6 +230,6 @@ When user selects 'C', append the content directly to the document using the str ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md` to choose the appropriate design system approach. +After user selects 'C' and content is saved to document, load `./step-06-design-system.md` to choose the appropriate design system approach. Remember: Do NOT proceed to step-06 until user explicitly selects 'C' from the A/P/C menu and content is saved! diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-06-design-system.md similarity index 91% rename from src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md rename to src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-06-design-system.md index e21c514bc..d0b3ba60f 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-06-design-system.md @@ -11,6 +11,7 @@ - 💬 FOCUS on choosing appropriate design system approach - 🎯 COLLABORATIVE decision-making, not recommendation-only - ✅ 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: @@ -30,8 +31,8 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md -- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md +- When 'A' selected: Invoke the `bmad-advanced-elicitation` skill +- When 'P' selected: Invoke the `bmad-party-mode` skill - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -197,7 +198,7 @@ Show the generated design system content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current design system content +- Invoke the `bmad-advanced-elicitation` skill with the current design system content - Process the enhanced design system insights that come back - Ask user: "Accept these improvements to the design system decision? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -205,7 +206,7 @@ Show the generated design system content and present choices: #### If 'P' (Party Mode): -- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current design system choice +- Invoke the `bmad-party-mode` skill with the current design system choice - Process the collaborative design system insights that come back - Ask user: "Accept these changes to the design system decision? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -215,7 +216,7 @@ Show the generated design system content and present choices: - Append the final content to `{planning_artifacts}/ux-design-specification.md` - Update frontmatter: append step to end of stepsCompleted array -- Load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md` +- Load `./step-07-defining-experience.md` ## APPEND TO DOCUMENT: @@ -247,6 +248,6 @@ When user selects 'C', append the content directly to the document using the str ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md` to define the core user interaction. +After user selects 'C' and content is saved to document, load `./step-07-defining-experience.md` to define the core user interaction. Remember: Do NOT proceed to step-07 until user explicitly selects 'C' from the A/P/C menu and content is saved! diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-07-defining-experience.md similarity index 91% rename from src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md rename to src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-07-defining-experience.md index d6ebd29ce..279a359d8 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-07-defining-experience.md @@ -11,6 +11,7 @@ - 💬 FOCUS on defining the core interaction that defines the product - 🎯 COLLABORATIVE discovery, not assumption-based design - ✅ 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: @@ -30,8 +31,8 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md -- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md +- When 'A' selected: Invoke the `bmad-advanced-elicitation` skill +- When 'P' selected: Invoke the `bmad-party-mode` skill - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -199,7 +200,7 @@ Show the generated defining experience content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current defining experience content +- Invoke the `bmad-advanced-elicitation` skill with the current defining experience content - Process the enhanced experience insights that come back - Ask user: "Accept these improvements to the defining experience? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -207,7 +208,7 @@ Show the generated defining experience content and present choices: #### If 'P' (Party Mode): -- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current defining experience +- Invoke the `bmad-party-mode` skill with the current defining experience - Process the collaborative experience insights that come back - Ask user: "Accept these changes to the defining experience? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -217,7 +218,7 @@ Show the generated defining experience content and present choices: - Append the final content to `{planning_artifacts}/ux-design-specification.md` - Update frontmatter: append step to end of stepsCompleted array -- Load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md` +- Load `./step-08-visual-foundation.md` ## APPEND TO DOCUMENT: @@ -249,6 +250,6 @@ When user selects 'C', append the content directly to the document using the str ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md` to establish visual design foundation. +After user selects 'C' and content is saved to document, load `./step-08-visual-foundation.md` to establish visual design foundation. Remember: Do NOT proceed to step-08 until user explicitly selects 'C' from the A/P/C menu and content is saved! diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-08-visual-foundation.md similarity index 90% rename from src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md rename to src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-08-visual-foundation.md index ad728c551..0cd390881 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-08-visual-foundation.md @@ -11,6 +11,7 @@ - 💬 FOCUS on establishing visual design foundation (colors, typography, spacing) - 🎯 COLLABORATIVE discovery, not assumption-based design - ✅ 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: @@ -30,8 +31,8 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md -- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md +- When 'A' selected: Invoke the `bmad-advanced-elicitation` skill +- When 'P' selected: Invoke the `bmad-party-mode` skill - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -169,7 +170,7 @@ Show the generated visual foundation content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current visual foundation content +- Invoke the `bmad-advanced-elicitation` skill with the current visual foundation content - Process the enhanced visual insights that come back - Ask user: "Accept these improvements to the visual foundation? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -177,7 +178,7 @@ Show the generated visual foundation content and present choices: #### If 'P' (Party Mode): -- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current visual foundation +- Invoke the `bmad-party-mode` skill with the current visual foundation - Process the collaborative visual insights that come back - Ask user: "Accept these changes to the visual foundation? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -187,7 +188,7 @@ Show the generated visual foundation content and present choices: - Append the final content to `{planning_artifacts}/ux-design-specification.md` - Update frontmatter: append step to end of stepsCompleted array -- Load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md` +- Load `./step-09-design-directions.md` ## APPEND TO DOCUMENT: @@ -219,6 +220,6 @@ When user selects 'C', append the content directly to the document using the str ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md` to generate design direction mockups. +After user selects 'C' and content is saved to document, load `./step-09-design-directions.md` to generate design direction mockups. 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/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-09-design-directions.md similarity index 91% rename from src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md rename to src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-09-design-directions.md index ce0daefde..a07d9ecee 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-09-design-directions.md @@ -11,6 +11,7 @@ - 💬 FOCUS on generating and evaluating design direction variations - 🎯 COLLABORATIVE exploration, not assumption-based design - ✅ 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: @@ -30,8 +31,8 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md -- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md +- When 'A' selected: Invoke the `bmad-advanced-elicitation` skill +- When 'P' selected: Invoke the `bmad-party-mode` skill - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -169,7 +170,7 @@ Show the generated design direction content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current design direction content +- Invoke the `bmad-advanced-elicitation` skill with the current design direction content - Process the enhanced design insights that come back - Ask user: "Accept these improvements to the design direction? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -177,7 +178,7 @@ Show the generated design direction content and present choices: #### If 'P' (Party Mode): -- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current design direction +- Invoke the `bmad-party-mode` skill with the current design direction - Process the collaborative design insights that come back - Ask user: "Accept these changes to the design direction? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -187,7 +188,7 @@ Show the generated design direction content and present choices: - Append the final content to `{planning_artifacts}/ux-design-specification.md` - Update frontmatter: append step to end of stepsCompleted array -- Load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md` +- Load `./step-10-user-journeys.md` ## APPEND TO DOCUMENT: @@ -219,6 +220,6 @@ When user selects 'C', append the content directly to the document using the str ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md` to design user journey flows. +After user selects 'C' and content is saved to document, load `./step-10-user-journeys.md` to design user journey flows. 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/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-10-user-journeys.md similarity index 90% rename from src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md rename to src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-10-user-journeys.md index f0e0a59d9..1b9c06e96 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-10-user-journeys.md @@ -11,6 +11,7 @@ - 💬 FOCUS on designing user flows and journey interactions - 🎯 COLLABORATIVE flow design, not assumption-based layouts - ✅ 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: @@ -30,8 +31,8 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md -- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md +- When 'A' selected: Invoke the `bmad-advanced-elicitation` skill +- When 'P' selected: Invoke the `bmad-party-mode` skill - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -187,7 +188,7 @@ Show the generated user journey content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current user journey content +- Invoke the `bmad-advanced-elicitation` skill with the current user 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 return to A/P/C menu @@ -195,7 +196,7 @@ Show the generated user journey content and present choices: #### If 'P' (Party Mode): -- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current user journeys +- Invoke the `bmad-party-mode` skill with the current user journeys - Process the collaborative journey insights that come back - Ask user: "Accept these changes to the user journeys? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -205,7 +206,7 @@ Show the generated user journey content and present choices: - Append the final content to `{planning_artifacts}/ux-design-specification.md` - Update frontmatter: append step to end of stepsCompleted array -- Load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md` +- Load `./step-11-component-strategy.md` ## APPEND TO DOCUMENT: @@ -236,6 +237,6 @@ When user selects 'C', append the content directly to the document using the str ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md` to define component library strategy. +After user selects 'C' and content is saved to document, load `./step-11-component-strategy.md` to define component library strategy. 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/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-11-component-strategy.md similarity index 91% rename from src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md rename to src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-11-component-strategy.md index 5dd50ac77..76926564a 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-11-component-strategy.md @@ -11,6 +11,7 @@ - 💬 FOCUS on defining component library strategy and custom components - 🎯 COLLABORATIVE component planning, not assumption-based design - ✅ 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: @@ -30,8 +31,8 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md -- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md +- When 'A' selected: Invoke the `bmad-advanced-elicitation` skill +- When 'P' selected: Invoke the `bmad-party-mode` skill - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -193,7 +194,7 @@ Show the generated component strategy content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current component strategy content +- Invoke the `bmad-advanced-elicitation` skill with the current component strategy content - Process the enhanced component insights that come back - Ask user: "Accept these improvements to the component strategy? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -201,7 +202,7 @@ Show the generated component strategy content and present choices: #### If 'P' (Party Mode): -- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current component strategy +- Invoke the `bmad-party-mode` skill with the current component strategy - Process the collaborative component insights that come back - Ask user: "Accept these changes to the component strategy? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -211,7 +212,7 @@ Show the generated component strategy content and present choices: - Append the final content to `{planning_artifacts}/ux-design-specification.md` - Update frontmatter: append step to end of stepsCompleted array -- Load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md` +- Load `./step-12-ux-patterns.md` ## APPEND TO DOCUMENT: @@ -243,6 +244,6 @@ When user selects 'C', append the content directly to the document using the str ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md` to define UX consistency patterns. +After user selects 'C' and content is saved to document, load `./step-12-ux-patterns.md` to define UX consistency patterns. Remember: Do NOT proceed to step-12 until user explicitly selects 'C' from the A/P/C menu and content is saved! diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-12-ux-patterns.md similarity index 90% rename from src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md rename to src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-12-ux-patterns.md index 6a7b416bb..08b78d29a 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-12-ux-patterns.md @@ -11,6 +11,7 @@ - 💬 FOCUS on establishing consistency patterns for common UX situations - 🎯 COLLABORATIVE pattern definition, not assumption-based design - ✅ 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: @@ -30,8 +31,8 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md -- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md +- When 'A' selected: Invoke the `bmad-advanced-elicitation` skill +- When 'P' selected: Invoke the `bmad-party-mode` skill - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -182,7 +183,7 @@ Show the generated UX patterns content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current UX patterns content +- Invoke the `bmad-advanced-elicitation` skill with the current UX patterns content - Process the enhanced pattern insights that come back - Ask user: "Accept these improvements to the UX patterns? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -190,7 +191,7 @@ Show the generated UX patterns content and present choices: #### If 'P' (Party Mode): -- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current UX patterns +- Invoke the `bmad-party-mode` skill with the current UX patterns - Process the collaborative pattern insights that come back - Ask user: "Accept these changes to the UX patterns? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -200,7 +201,7 @@ Show the generated UX patterns content and present choices: - Append the final content to `{planning_artifacts}/ux-design-specification.md` - Update frontmatter: append step to end of stepsCompleted array -- Load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md` +- Load `./step-13-responsive-accessibility.md` ## APPEND TO DOCUMENT: @@ -232,6 +233,6 @@ When user selects 'C', append the content directly to the document using the str ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md` to define responsive design and accessibility strategy. +After user selects 'C' and content is saved to document, load `./step-13-responsive-accessibility.md` to define responsive design and accessibility strategy. Remember: Do NOT proceed to step-13 until user explicitly selects 'C' from the A/P/C menu and content is saved! diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-13-responsive-accessibility.md similarity index 91% rename from src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md rename to src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-13-responsive-accessibility.md index f73558325..02368a08d 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-13-responsive-accessibility.md @@ -11,6 +11,7 @@ - 💬 FOCUS on responsive design strategy and accessibility compliance - 🎯 COLLABORATIVE strategy definition, not assumption-based design - ✅ 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: @@ -30,8 +31,8 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md -- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md +- When 'A' selected: Invoke the `bmad-advanced-elicitation` skill +- When 'P' selected: Invoke the `bmad-party-mode` skill - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -209,7 +210,7 @@ Show the generated responsive and accessibility content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current responsive/accessibility content +- Invoke the `bmad-advanced-elicitation` skill with the current responsive/accessibility content - Process the enhanced insights that come back - Ask user: "Accept these improvements to the responsive/accessibility strategy? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -217,7 +218,7 @@ Show the generated responsive and accessibility content and present choices: #### If 'P' (Party Mode): -- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current responsive/accessibility strategy +- Invoke the `bmad-party-mode` skill with the current responsive/accessibility strategy - Process the collaborative insights that come back - Ask user: "Accept these changes to the responsive/accessibility strategy? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -227,7 +228,7 @@ Show the generated responsive and accessibility content and present choices: - Append the final content to `{planning_artifacts}/ux-design-specification.md` - Update frontmatter: append step to end of stepsCompleted array -- Load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md` +- Load `./step-14-complete.md` ## APPEND TO DOCUMENT: @@ -259,6 +260,6 @@ When user selects 'C', append the content directly to the document using the str ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md` to finalize the UX design workflow. +After user selects 'C' and content is saved to document, load `./step-14-complete.md` to finalize the UX design workflow. Remember: Do NOT proceed to step-14 until user explicitly selects 'C' from the A/P/C menu and content is saved! diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-14-complete.md similarity index 96% rename from src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md rename to src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-14-complete.md index 62a02cf45..67d99c427 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-14-complete.md @@ -75,14 +75,14 @@ This specification is now ready to guide visual design, implementation, and deve Update the main workflow status file: -- Load `{status_file}` from workflow configuration (if exists) -- Update workflow_status["create-ux-design"] = "{default_output_file}" +- Load the project's workflow status file (if one exists) +- Update workflow_status["create-ux-design"] = `{planning_artifacts}/ux-design-specification.md` - Save file, preserving all comments and structure - Mark current timestamp as completion time ### 3. Suggest Next Steps -UX Design complete. Read fully and follow: `{project-root}/_bmad/core/tasks/help.md` +UX Design complete. Invoke the `bmad-help` skill. ### 5. Final Completion Confirmation diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/ux-design-template.md similarity index 100% rename from src/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md rename to src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/ux-design-template.md diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/workflow.md similarity index 67% rename from src/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md rename to src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/workflow.md index 4dfdba9f1..04be36641 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/workflow.md @@ -1,8 +1,3 @@ ---- -name: create-ux-design -description: 'Plan UX patterns and design specifications. Use when the user says "lets create UX design" or "create UX specifications" or "help me plan the UX"' ---- - # Create UX Design Workflow **Goal:** Create comprehensive UX design specifications through collaborative visual exploration and informed decision-making where you act as a UX facilitator working with a product stakeholder. @@ -32,11 +27,10 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: ### Paths -- `installed_path` = `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design` -- `template_path` = `{installed_path}/ux-design-template.md` - `default_output_file` = `{planning_artifacts}/ux-design-specification.md` ## EXECUTION - ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` -- Read fully and follow: `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md` to begin the UX design workflow. +- ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}` +- Read fully and follow: `./steps/step-01-init.md` to begin the UX design workflow. diff --git a/src/bmm/workflows/2-plan-workflows/bmad-edit-prd/SKILL.md b/src/bmm/workflows/2-plan-workflows/bmad-edit-prd/SKILL.md new file mode 100644 index 000000000..b16498d39 --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-edit-prd/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-edit-prd +description: 'Edit an existing PRD. Use when the user says "edit this PRD".' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/2-plan-workflows/bmad-edit-prd/bmad-skill-manifest.yaml b/src/bmm/workflows/2-plan-workflows/bmad-edit-prd/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-edit-prd/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md b/src/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01-discovery.md similarity index 93% rename from src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md rename to src/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01-discovery.md index cfe2a0335..3bc85e49a 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01-discovery.md @@ -1,12 +1,6 @@ --- -name: 'step-e-01-discovery' -description: 'Discovery & Understanding - Understand what user wants to edit and detect PRD format' - # File references (ONLY variables used in this step) -altStepFile: './step-e-01b-legacy-conversion.md' prdPurpose: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md' -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' --- # Step E-1: Discovery & Understanding @@ -24,6 +18,7 @@ Understand what the user wants to edit in the PRD, detect PRD format/type, check - 🔄 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: @@ -189,7 +184,7 @@ Display: "**Edit Requirements Understood** **Proceeding to deep review and analysis...**" -Read fully and follow: next step (step-e-02-review.md) +Read fully and follow: `./step-e-02-review.md` **IF PRD is Legacy (Non-Standard) AND no validation report:** @@ -216,7 +211,7 @@ Present MENU OPTIONS below for user selection #### Menu Handling Logic: -- IF C (Convert): Read fully and follow: {altStepFile} (step-e-01b-legacy-conversion.md) +- 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 diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01b-legacy-conversion.md b/src/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md similarity index 96% rename from src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01b-legacy-conversion.md rename to src/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md index d13531d26..c1f868995 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01b-legacy-conversion.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md @@ -1,9 +1,5 @@ --- -name: 'step-e-01b-legacy-conversion' -description: 'Legacy PRD Conversion Assessment - Analyze legacy PRD and propose conversion strategy' - # File references (ONLY variables used in this step) -nextStepFile: './step-e-02-review.md' prdFile: '{prd_file_path}' prdPurpose: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md' --- @@ -182,7 +178,7 @@ Edit goals: {summary} **Proceeding to deep review...**" -Read fully and follow: {nextStepFile} (step-e-02-review.md) +Read fully and follow: `./step-e-02-review.md` --- diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md b/src/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-02-review.md similarity index 93% rename from src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md rename to src/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-02-review.md index 1f7f9215e..86e537adb 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-02-review.md @@ -1,13 +1,8 @@ --- -name: 'step-e-02-review' -description: 'Deep Review & Analysis - Thoroughly review existing PRD and prepare detailed change plan' - # File references (ONLY variables used in this step) -nextStepFile: './step-e-03-edit.md' prdFile: '{prd_file_path}' validationReport: '{validation_report_path}' # If provided prdPurpose: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md' -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' --- # Step E-2: Deep Review & Analysis @@ -25,6 +20,7 @@ Thoroughly review the existing PRD, analyze validation report findings (if provi - 🔄 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: @@ -204,7 +200,7 @@ Display: "**Change Plan Approved** **Proceeding to edit step...**" -Read fully and follow: {nextStepFile} (step-e-03-edit.md) +Read fully and follow: `./step-e-03-edit.md` ### 7. Present MENU OPTIONS (If User Wants Discussion) @@ -219,9 +215,9 @@ Read fully and follow: {nextStepFile} (step-e-03-edit.md) #### Menu Handling Logic: -- IF A: Read fully and follow: {advancedElicitationTask}, then return to discussion -- IF P: Read fully and follow: {partyModeWorkflow}, then return to discussion -- IF C: Document approval, then load {nextStepFile} +- 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 --- diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-03-edit.md b/src/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-03-edit.md similarity index 96% rename from src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-03-edit.md rename to src/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-03-edit.md index 65c12946f..20931b22e 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-03-edit.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-03-edit.md @@ -1,9 +1,5 @@ --- -name: 'step-e-03-edit' -description: 'Edit & Update - Apply changes to PRD following approved change plan' - # File references (ONLY variables used in this step) -nextStepFile: './step-e-04-complete.md' prdFile: '{prd_file_path}' prdPurpose: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md' --- @@ -23,6 +19,7 @@ Apply changes to the PRD following the approved change plan from step e-02, incl - 🔄 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: @@ -210,7 +207,7 @@ Display: ### 8. Present MENU OPTIONS -**[V] Run Validation** - Execute full validation workflow (steps-v/step-v-01-discovery.md) +**[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 @@ -222,7 +219,7 @@ Display: #### Menu Handling Logic: -- IF V (Validate): Display "Starting validation workflow..." then read fully and follow: steps-v/step-v-01-discovery.md +- 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 diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-04-complete.md b/src/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-04-complete.md similarity index 95% rename from src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-04-complete.md rename to src/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-04-complete.md index 5d681feed..be8c826f0 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-04-complete.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-04-complete.md @@ -1,10 +1,7 @@ --- -name: 'step-e-04-complete' -description: 'Complete & Validate - Present options for next steps including full validation' - # File references (ONLY variables used in this step) prdFile: '{prd_file_path}' -validationWorkflow: '../steps-v/step-v-01-discovery.md' +validationWorkflow: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md' --- # Step E-4: Complete & Validate @@ -127,7 +124,7 @@ Display: - 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 + - Read fully and follow: `./step-e-03-edit.md` again - **IF S (Summary):** - Display detailed summary including: diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/workflow-edit-prd.md b/src/bmm/workflows/2-plan-workflows/bmad-edit-prd/workflow.md similarity index 92% rename from src/bmm/workflows/2-plan-workflows/create-prd/workflow-edit-prd.md rename to src/bmm/workflows/2-plan-workflows/bmad-edit-prd/workflow.md index e416e11f5..2439a6c96 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/workflow-edit-prd.md +++ b/src/bmm/workflows/2-plan-workflows/bmad-edit-prd/workflow.md @@ -1,8 +1,5 @@ --- -name: edit-prd -description: 'Edit an existing PRD. Use when the user says "edit this PRD".' main_config: '{project-root}/_bmad/bmm/config.yaml' -editWorkflow: './steps-e/step-e-01-discovery.md' --- # PRD Edit Workflow @@ -55,6 +52,7 @@ Load and read full config from {main_config} and resolve: - `date` as system-generated current datetime ✅ 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}`. ### 2. Route to Edit Workflow @@ -62,4 +60,4 @@ Load and read full config from {main_config} and resolve: 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: `{editWorkflow}` (steps-e/step-e-01-discovery.md) +Then read fully and follow: `./steps-e/step-e-01-discovery.md` diff --git a/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/SKILL.md b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/SKILL.md new file mode 100644 index 000000000..77b523b81 --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-validate-prd +description: 'Validate a PRD against standards. Use when the user says "validate this PRD" or "run PRD validation"' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/bmad-skill-manifest.yaml b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/data/domain-complexity.csv b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/data/domain-complexity.csv new file mode 100644 index 000000000..60a7b503f --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/data/domain-complexity.csv @@ -0,0 +1,15 @@ +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/workflows/2-plan-workflows/bmad-validate-prd/data/prd-purpose.md b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/data/prd-purpose.md new file mode 100644 index 000000000..755230be7 --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/data/prd-purpose.md @@ -0,0 +1,197 @@ +# 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/workflows/2-plan-workflows/bmad-validate-prd/data/project-types.csv b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/data/project-types.csv new file mode 100644 index 000000000..6f71c513a --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/data/project-types.csv @@ -0,0 +1,11 @@ +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/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-01-discovery.md b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-01-discovery.md new file mode 100644 index 000000000..feb002641 --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-01-discovery.md @@ -0,0 +1,221 @@ +--- +# 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/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02-format-detection.md b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02-format-detection.md new file mode 100644 index 000000000..1211ca6b3 --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02-format-detection.md @@ -0,0 +1,188 @@ +--- +# 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/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02b-parity-check.md b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02b-parity-check.md new file mode 100644 index 000000000..33b6a1931 --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02b-parity-check.md @@ -0,0 +1,206 @@ +--- +# 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/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-03-density-validation.md b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-03-density-validation.md new file mode 100644 index 000000000..35b7e453f --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-03-density-validation.md @@ -0,0 +1,171 @@ +--- +# 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/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md new file mode 100644 index 000000000..e1e70af99 --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md @@ -0,0 +1,211 @@ +--- +# 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/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md new file mode 100644 index 000000000..196f5c732 --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md @@ -0,0 +1,225 @@ +--- +# 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/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md new file mode 100644 index 000000000..67fb2847b --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md @@ -0,0 +1,214 @@ +--- +# 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/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md new file mode 100644 index 000000000..a4f740c01 --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md @@ -0,0 +1,202 @@ +--- +# 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/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md new file mode 100644 index 000000000..c9f48e960 --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md @@ -0,0 +1,240 @@ +--- +# 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/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md new file mode 100644 index 000000000..f9343b9d6 --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md @@ -0,0 +1,260 @@ +--- +# 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/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-10-smart-validation.md b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-10-smart-validation.md new file mode 100644 index 000000000..52f5cbb1d --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-10-smart-validation.md @@ -0,0 +1,206 @@ +--- +# 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/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md new file mode 100644 index 000000000..a559e40ce --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md @@ -0,0 +1,261 @@ +--- +# 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/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md new file mode 100644 index 000000000..90065e1df --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md @@ -0,0 +1,239 @@ +--- +# 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/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-13-report-complete.md b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-13-report-complete.md new file mode 100644 index 000000000..946b5704d --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-13-report-complete.md @@ -0,0 +1,229 @@ +--- +# 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. + +- **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/workflows/2-plan-workflows/bmad-validate-prd/workflow.md b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/workflow.md new file mode 100644 index 000000000..3de6ff24f --- /dev/null +++ b/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/workflow.md @@ -0,0 +1,62 @@ +--- +main_config: '{project-root}/_bmad/bmm/config.yaml' +validateWorkflow: './steps-v/step-v-01-discovery.md' +--- + +# PRD Validate Workflow + +**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. + +## 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 + +## INITIALIZATION SEQUENCE + +### 1. Configuration Loading + +Load and read full config from {main_config} and resolve: + +- `project_name`, `output_folder`, `planning_artifacts`, `user_name` +- `communication_language`, `document_output_language`, `user_skill_level` +- `date` as system-generated current datetime + +✅ 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}`. + +### 2. Route to Validate Workflow + +"**Validate Mode: Validating an existing PRD against BMAD standards.**" + +Then read fully and follow: `{validateWorkflow}` (steps-v/step-v-01-discovery.md) diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/bmad-skill-manifest.yaml b/src/bmm/workflows/2-plan-workflows/create-prd/bmad-skill-manifest.yaml deleted file mode 100644 index aea9910a2..000000000 --- a/src/bmm/workflows/2-plan-workflows/create-prd/bmad-skill-manifest.yaml +++ /dev/null @@ -1,14 +0,0 @@ -workflow-create-prd.md: - canonicalId: bmad-create-prd - type: workflow - 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'" - -workflow-edit-prd.md: - canonicalId: bmad-edit-prd - type: workflow - description: "Edit an existing PRD. Use when the user says 'edit this PRD'" - -workflow-validate-prd.md: - canonicalId: bmad-validate-prd - type: workflow - description: "Validate a PRD against standards. Use when the user says 'validate this PRD' or 'run PRD validation'" diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md b/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md index 37d47f3e2..561ae8901 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +++ b/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md @@ -4,8 +4,6 @@ description: 'Document Discovery & Confirmation - Handle fresh context validatio # File references (ONLY variables used in this step) nextStepFile: './step-v-02-format-detection.md' -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' prdPurpose: '../data/prd-purpose.md' --- @@ -195,8 +193,8 @@ Display: **Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Conti #### Menu Handling Logic: -- IF A: Read fully and follow: {advancedElicitationTask}, and when finished redisplay the menu -- IF P: Read fully and follow: {partyModeWorkflow}, and when finished redisplay the menu +- 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 diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md b/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md index 1a135dcf0..0c44b00da 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +++ b/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md @@ -6,7 +6,6 @@ description: 'SMART Requirements Validation - Validate Functional Requirements m nextStepFile: './step-v-11-holistic-quality-validation.md' prdFile: '{prd_file_path}' validationReportPath: '{validation_report_path}' -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' --- # Step 10: SMART Requirements Validation @@ -24,6 +23,7 @@ Validate Functional Requirements meet SMART quality criteria (Specific, Measurab - 🔄 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: diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md b/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md index 581bf15f5..f34dee65a 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +++ b/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md @@ -6,7 +6,6 @@ description: 'Holistic Quality Assessment - Assess PRD as cohesive, compelling d nextStepFile: './step-v-12-completeness-validation.md' prdFile: '{prd_file_path}' validationReportPath: '{validation_report_path}' -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' --- # Step 11: Holistic Quality Assessment @@ -24,6 +23,7 @@ Assess the PRD as a cohesive, compelling document - evaluating document flow, du - 🔄 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: @@ -66,8 +66,8 @@ Assess the PRD as a cohesive, compelling document - evaluating document flow, du "Perform holistic quality assessment on this PRD using multi-perspective evaluation: -**Read fully and follow the Advanced Elicitation workflow:** -{advancedElicitationTask} +**Advanced Elicitation workflow:** +Invoke the `bmad-advanced-elicitation` skill **Evaluate the PRD from these perspectives:** diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md b/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md index 46c98f7f9..b08a35db8 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +++ b/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md @@ -22,6 +22,7 @@ Finalize validation report, summarize all findings from steps 1-12, present summ - 🔄 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: @@ -181,7 +182,7 @@ Display: - **IF E (Use Edit Workflow):** - Explain: "The Edit workflow (steps-e/) 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: Read fully and follow: steps-e/step-e-01-discovery.md + - If yes: Read fully and follow: `./steps-e/step-e-01-discovery.md` - If no: Return to menu - **IF F (Fix Simpler Items):** @@ -197,7 +198,7 @@ Display: - **IF X (Exit):** - Display: "**Validation Report Saved:** {validationReportPath}" - Display: "**Summary:** {overall status} - {recommendation}" - - PRD Validation complete. Read fully and follow: `{project-root}/_bmad/core/tasks/help.md` + - PRD Validation complete. Invoke the `bmad-help` skill. - **IF Any other:** Help user, then redisplay menu diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md b/src/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md index 7f0703440..86ccc7d05 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md +++ b/src/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md @@ -1,6 +1,7 @@ --- name: validate-prd description: 'Validate a PRD against standards. Use when the user says "validate this PRD" or "run PRD validation"' +standalone: false main_config: '{project-root}/_bmad/bmm/config.yaml' validateWorkflow: './steps-v/step-v-01-discovery.md' --- @@ -55,6 +56,7 @@ Load and read full config from {main_config} and resolve: - `date` as system-generated current datetime ✅ 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}`. ### 2. Route to Validate Workflow diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/bmad-skill-manifest.yaml b/src/bmm/workflows/2-plan-workflows/create-ux-design/bmad-skill-manifest.yaml deleted file mode 100644 index f0b8a250f..000000000 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/bmad-skill-manifest.yaml +++ /dev/null @@ -1,3 +0,0 @@ -canonicalId: bmad-create-ux-design -type: workflow -description: "Plan UX patterns and design specifications" diff --git a/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/SKILL.md b/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/SKILL.md new file mode 100644 index 000000000..d5ba0903f --- /dev/null +++ b/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-check-implementation-readiness +description: 'Validate PRD, UX, Architecture and Epics specs are complete. Use when the user says "check implementation readiness".' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/bmad-skill-manifest.yaml b/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md b/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-01-document-discovery.md similarity index 92% rename from src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md rename to src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-01-document-discovery.md index 877193f3d..a4c524cfd 100644 --- a/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +++ b/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-01-document-discovery.md @@ -1,10 +1,5 @@ --- -name: 'step-01-document-discovery' -description: 'Discover and inventory all project documents, handling duplicates and organizing file structure' - -nextStepFile: './step-02-prd-analysis.md' outputFile: '{planning_artifacts}/implementation-readiness-report-{{date}}.md' -templateFile: '../templates/readiness-report-template.md' --- # Step 1: Document Discovery @@ -122,7 +117,7 @@ If required documents not found: ### 5. Add Initial Report Section -Initialize {outputFile} with {templateFile}. +Initialize {outputFile} with ../templates/readiness-report-template.md. ### 6. Present Findings and Get Confirmation @@ -156,12 +151,12 @@ Display: **Select an Option:** [C] Continue to File Validation #### Menu Handling Logic: -- IF C: Save document inventory to {outputFile}, update frontmatter with completed step and files being included, and then read fully and follow: {nextStepFile} +- IF C: Save document inventory to {outputFile}, update frontmatter with completed step and files being included, and then read fully and follow: ./step-02-prd-analysis.md - IF Any other comments or queries: help user respond then redisplay menu ## CRITICAL STEP COMPLETION NOTE -ONLY WHEN C is selected and document inventory is saved will you load {nextStepFile} to begin file validation. +ONLY WHEN C is selected and document inventory is saved will you load ./step-02-prd-analysis.md to begin file validation. --- diff --git a/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md b/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-02-prd-analysis.md similarity index 94% rename from src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md rename to src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-02-prd-analysis.md index 4d22e7da9..85cadc4d4 100644 --- a/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +++ b/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-02-prd-analysis.md @@ -1,8 +1,4 @@ --- -name: 'step-02-prd-analysis' -description: 'Read and analyze PRD to extract all FRs and NFRs for coverage validation' - -nextStepFile: './step-03-epic-coverage-validation.md' outputFile: '{planning_artifacts}/implementation-readiness-report-{{date}}.md' epicsFile: '{planning_artifacts}/*epic*.md' # Will be resolved to actual file --- @@ -149,7 +145,7 @@ After PRD analysis complete, immediately load next step for epic coverage valida ## PROCEEDING TO EPIC COVERAGE VALIDATION -PRD analysis complete. Loading next step to validate epic coverage. +PRD analysis complete. Read fully and follow: `./step-03-epic-coverage-validation.md` --- diff --git a/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md b/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-03-epic-coverage-validation.md similarity index 94% rename from src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md rename to src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-03-epic-coverage-validation.md index b73511bea..961ee740c 100644 --- a/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +++ b/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-03-epic-coverage-validation.md @@ -1,8 +1,4 @@ --- -name: 'step-03-epic-coverage-validation' -description: 'Validate that all PRD FRs are covered in epics and stories' - -nextStepFile: './step-04-ux-alignment.md' outputFile: '{planning_artifacts}/implementation-readiness-report-{{date}}.md' --- @@ -150,7 +146,7 @@ After coverage validation complete, immediately load next step. ## PROCEEDING TO UX ALIGNMENT -Epic coverage validation complete. Loading next step for UX alignment. +Epic coverage validation complete. Read fully and follow: `./step-04-ux-alignment.md` --- diff --git a/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md b/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-04-ux-alignment.md similarity index 92% rename from src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md rename to src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-04-ux-alignment.md index 236ad3b51..05718abe4 100644 --- a/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +++ b/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-04-ux-alignment.md @@ -1,8 +1,4 @@ --- -name: 'step-04-ux-alignment' -description: 'Check for UX document and validate alignment with PRD and Architecture' - -nextStepFile: './step-05-epic-quality-review.md' outputFile: '{planning_artifacts}/implementation-readiness-report-{{date}}.md' --- @@ -113,7 +109,7 @@ After UX assessment complete, immediately load next step. ## PROCEEDING TO EPIC QUALITY REVIEW -UX alignment assessment complete. Loading next step for epic quality review. +UX alignment assessment complete. Read fully and follow: `./step-05-epic-quality-review.md` --- diff --git a/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md b/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-05-epic-quality-review.md similarity index 95% rename from src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md rename to src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-05-epic-quality-review.md index 9f6d087f8..2e088f9b1 100644 --- a/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +++ b/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-05-epic-quality-review.md @@ -1,8 +1,4 @@ --- -name: 'step-05-epic-quality-review' -description: 'Validate epics and stories against create-epics-and-stories best practices' - -nextStepFile: './step-06-final-assessment.md' outputFile: '{planning_artifacts}/implementation-readiness-report-{{date}}.md' --- @@ -217,11 +213,11 @@ After completing epic quality review: - Update {outputFile} with all quality findings - Document specific best practices violations - Provide actionable recommendations -- Load {nextStepFile} for final readiness assessment +- Load ./step-06-final-assessment.md for final readiness assessment ## CRITICAL STEP COMPLETION NOTE -This step executes autonomously. Load {nextStepFile} only after complete epic quality review is documented. +This step executes autonomously. Load ./step-06-final-assessment.md only after complete epic quality review is documented. --- diff --git a/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md b/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-06-final-assessment.md similarity index 94% rename from src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md rename to src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-06-final-assessment.md index fe80fc23a..467864215 100644 --- a/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +++ b/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-06-final-assessment.md @@ -1,7 +1,4 @@ --- -name: 'step-06-final-assessment' -description: 'Compile final assessment and polish the readiness report' - outputFile: '{planning_artifacts}/implementation-readiness-report-{{date}}.md' --- @@ -109,7 +106,7 @@ The assessment found [number] issues requiring attention. Review the detailed re The implementation readiness workflow is now complete. The report contains all findings and recommendations for the user to consider. -Implementation Readiness complete. Read fully and follow: `{project-root}/_bmad/core/tasks/help.md` +Implementation Readiness complete. Invoke the `bmad-help` skill. --- diff --git a/src/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md b/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/templates/readiness-report-template.md similarity index 100% rename from src/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md rename to src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/templates/readiness-report-template.md diff --git a/src/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md b/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/workflow.md similarity index 94% rename from src/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md rename to src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/workflow.md index f1ab122ec..5f3343d67 100644 --- a/src/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +++ b/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/workflow.md @@ -1,8 +1,3 @@ ---- -name: check-implementation-readiness -description: 'Validate PRD, UX, Architecture and Epics specs are complete. Use when the user says "check implementation readiness".' ---- - # Implementation Readiness **Goal:** Validate that PRD, Architecture, Epics and Stories are complete and aligned before Phase 4 implementation starts, with a focus on ensuring epics and stories are logical and have accounted for all requirements and planning. diff --git a/src/bmm/workflows/3-solutioning/bmad-create-architecture/SKILL.md b/src/bmm/workflows/3-solutioning/bmad-create-architecture/SKILL.md new file mode 100644 index 000000000..27d4c7e66 --- /dev/null +++ b/src/bmm/workflows/3-solutioning/bmad-create-architecture/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-create-architecture +description: 'Create architecture solution design decisions for AI agent consistency. Use when the user says "lets create architecture" or "create technical architecture" or "create a solution design"' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md b/src/bmm/workflows/3-solutioning/bmad-create-architecture/architecture-decision-template.md similarity index 100% rename from src/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md rename to src/bmm/workflows/3-solutioning/bmad-create-architecture/architecture-decision-template.md diff --git a/src/bmm/workflows/3-solutioning/bmad-create-architecture/bmad-skill-manifest.yaml b/src/bmm/workflows/3-solutioning/bmad-create-architecture/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/3-solutioning/bmad-create-architecture/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv b/src/bmm/workflows/3-solutioning/bmad-create-architecture/data/domain-complexity.csv similarity index 100% rename from src/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv rename to src/bmm/workflows/3-solutioning/bmad-create-architecture/data/domain-complexity.csv diff --git a/src/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv b/src/bmm/workflows/3-solutioning/bmad-create-architecture/data/project-types.csv similarity index 100% rename from src/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv rename to src/bmm/workflows/3-solutioning/bmad-create-architecture/data/project-types.csv diff --git a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md b/src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-01-init.md similarity index 91% rename from src/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md rename to src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-01-init.md index 5609ffc14..c2933dfb8 100644 --- a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +++ b/src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-01-init.md @@ -44,7 +44,7 @@ First, check if the output document already exists: If the document exists and has frontmatter with `stepsCompleted`: -- **STOP here** and load `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md` immediately +- **STOP here** and load `./step-01b-continue.md` immediately - Do not proceed with any initialization tasks - Let step-01b handle the continuation logic @@ -57,8 +57,8 @@ If no document exists or no `stepsCompleted` in frontmatter: Discover and load context documents using smart discovery. Documents can be in the following locations: - {planning_artifacts}/** - {output_folder}/** -- {product_knowledge}/** -- docs/** +- {project_knowledge}/** +- {project-root}/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) @@ -67,7 +67,7 @@ Try to discover the following: - Product Requirements Document (`*prd*.md`) - UX Design (`*ux-design*.md`) and other - Research Documents (`*research*.md`) -- Project Documentation (generally multiple documents might be found for this in the `{product_knowledge}` or `docs` folder.) +- Project Documentation (generally multiple documents might be found for this in the `{project_knowledge}` or `{project-root}/docs` folder.) - Project Context (`**/project-context.md`) 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 @@ -95,7 +95,7 @@ Before proceeding, verify we have the essential inputs: #### C. Create Initial Document -Copy the template from `{installed_path}/architecture-decision-template.md` to `{planning_artifacts}/architecture.md` +Copy the template from `../architecture-decision-template.md` to `{planning_artifacts}/architecture.md` #### D. Complete Initialization and Report @@ -148,6 +148,6 @@ Ready to begin architectural decision making. Do you have any other documents yo ## NEXT STEP: -After user selects [C] to continue, only after ensuring all the template output has been created, then load `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md` to analyze the project context and begin architectural decision making. +After user selects [C] to continue, only after ensuring all the template output has been created, then load `./step-02-context.md` to analyze the project context and begin architectural decision making. Remember: Do NOT proceed to step-02 until user explicitly selects [C] from the menu and setup is confirmed! diff --git a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md b/src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-01b-continue.md similarity index 86% rename from src/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md rename to src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-01b-continue.md index 320cfd836..977896afc 100644 --- a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +++ b/src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-01b-continue.md @@ -85,7 +85,7 @@ Show the user their current progress: - Identify the next step based on `stepsCompleted` - Load the appropriate step file to continue -- Example: If `stepsCompleted: [1, 2, 3]`, load `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md` +- Example: If `stepsCompleted: [1, 2, 3]`, load `./step-04-decisions.md` #### If 'C' (Continue to next logical step): @@ -103,7 +103,7 @@ Show the user their current progress: #### If 'X' (Start over): - Confirm: "This will delete all existing architectural decisions. Are you sure? (y/n)" -- If confirmed: Delete existing document and read fully and follow: `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md` +- If confirmed: Delete existing document and read fully and follow: `./step-01-init.md` - If not confirmed: Return to continuation menu ### 4. Navigate to Selected Step @@ -162,12 +162,12 @@ After user makes choice: After user selects their continuation option, load the appropriate step file based on their choice. The step file will handle the detailed work from that point forward. Valid step files to load: -- `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md` -- `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md` -- `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md` -- `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md` -- `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md` -- `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md` -- `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md` +- `./step-02-context.md` +- `./step-03-starter.md` +- `./step-04-decisions.md` +- `./step-05-patterns.md` +- `./step-06-structure.md` +- `./step-07-validation.md` +- `./step-08-complete.md` Remember: The goal is smooth, transparent resumption that respects the work already done while giving the user control over how to proceed. diff --git a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md b/src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-02-context.md similarity index 91% rename from src/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md rename to src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-02-context.md index 7682abe3b..96cb5c4e1 100644 --- a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +++ b/src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-02-context.md @@ -31,8 +31,8 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md -- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md +- When 'A' selected: Invoke the `bmad-advanced-elicitation` skill +- When 'P' selected: Invoke the `bmad-party-mode` skill - PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed - User accepts/rejects protocol changes before proceeding @@ -170,7 +170,7 @@ Show the generated content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current context analysis +- Invoke the `bmad-advanced-elicitation` skill with the current context analysis - Process the enhanced architectural insights that come back - Ask user: "Accept these enhancements to the project context analysis? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -178,7 +178,7 @@ Show the generated content and present choices: #### If 'P' (Party Mode): -- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current project context +- Invoke the `bmad-party-mode` skill with the current project context - Process the collaborative improvements to architectural understanding - Ask user: "Accept these changes to the project context analysis? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu @@ -188,7 +188,7 @@ Show the generated content and present choices: - Append the final content to `{planning_artifacts}/architecture.md` - Update frontmatter: `stepsCompleted: [1, 2]` -- Load `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md` +- Load `./step-03-starter.md` ## APPEND TO DOCUMENT: @@ -219,6 +219,6 @@ When user selects 'C', append the content directly to the document using the str ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md` to evaluate starter template options. +After user selects 'C' and content is saved to document, load `./step-03-starter.md` to evaluate starter template options. Remember: Do NOT proceed to step-03 until user explicitly selects 'C' from the A/P/C menu and content is saved! diff --git a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md b/src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-03-starter.md similarity index 93% rename from src/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md rename to src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-03-starter.md index 5c4e796f9..339092a17 100644 --- a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +++ b/src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-03-starter.md @@ -31,8 +31,8 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md -- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md +- When 'A' selected: Invoke the `bmad-advanced-elicitation` skill +- When 'P' selected: Invoke the `bmad-party-mode` skill - PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed - User accepts/rejects protocol changes before proceeding @@ -276,7 +276,7 @@ Show the generated content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with current starter analysis +- Invoke the `bmad-advanced-elicitation` skill with current starter analysis - Process enhanced insights about starter options or custom approaches - Ask user: "Accept these changes to the starter template evaluation? (y/n)" - If yes: Update content, then return to A/P/C menu @@ -284,7 +284,7 @@ Show the generated content and present choices: #### If 'P' (Party Mode): -- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with starter evaluation context +- Invoke the `bmad-party-mode` skill with starter evaluation context - Process collaborative insights about starter trade-offs - Ask user: "Accept these changes to the starter template evaluation? (y/n)" - If yes: Update content, then return to A/P/C menu @@ -294,7 +294,7 @@ Show the generated content and present choices: - Append the final content to `{planning_artifacts}/architecture.md` - Update frontmatter: `stepsCompleted: [1, 2, 3]` -- Load `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md` +- Load `./step-04-decisions.md` ## APPEND TO DOCUMENT: @@ -324,6 +324,6 @@ When user selects 'C', append the content directly to the document using the str ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md` to begin making specific architectural decisions. +After user selects 'C' and content is saved to document, load `./step-04-decisions.md` to begin making specific architectural decisions. 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/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md b/src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-04-decisions.md similarity index 92% rename from src/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md rename to src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-04-decisions.md index 4e1944d10..061b69a7e 100644 --- a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +++ b/src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-04-decisions.md @@ -32,8 +32,8 @@ This step will generate content and present choices for each decision category: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md -- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md +- When 'A' selected: Invoke the `bmad-advanced-elicitation` skill +- When 'P' selected: Invoke the `bmad-party-mode` skill - PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed - User accepts/rejects protocol changes before proceeding @@ -264,7 +264,7 @@ Show the generated decisions content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with specific decision categories +- Invoke the `bmad-advanced-elicitation` skill with specific decision categories - Process enhanced insights about particular decisions - Ask user: "Accept these enhancements to the architectural decisions? (y/n)" - If yes: Update content, then return to A/P/C menu @@ -272,7 +272,7 @@ Show the generated decisions content and present choices: #### If 'P' (Party Mode): -- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with architectural decisions context +- Invoke the `bmad-party-mode` skill with architectural decisions context - Process collaborative insights about decision trade-offs - Ask user: "Accept these changes to the architectural decisions? (y/n)" - If yes: Update content, then return to A/P/C menu @@ -282,7 +282,7 @@ Show the generated decisions content and present choices: - Append the final content to `{planning_artifacts}/architecture.md` - Update frontmatter: `stepsCompleted: [1, 2, 3, 4]` -- Load `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md` +- Load `./step-05-patterns.md` ## APPEND TO DOCUMENT: @@ -313,6 +313,6 @@ When user selects 'C', append the content directly to the document using the str ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md` to define implementation patterns that ensure consistency across AI agents. +After user selects 'C' and content is saved to document, load `./step-05-patterns.md` to define implementation patterns that ensure consistency across AI agents. 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/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md b/src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-05-patterns.md similarity index 93% rename from src/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md rename to src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-05-patterns.md index 0e3c0334b..6fa446d95 100644 --- a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +++ b/src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-05-patterns.md @@ -32,8 +32,8 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md -- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md +- When 'A' selected: Invoke the `bmad-advanced-elicitation` skill +- When 'P' selected: Invoke the `bmad-party-mode` skill - PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed - User accepts/rejects protocol changes before proceeding @@ -305,7 +305,7 @@ Show the generated patterns content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with current patterns +- Invoke the `bmad-advanced-elicitation` skill with current patterns - Process enhanced consistency rules that come back - Ask user: "Accept these additional pattern refinements? (y/n)" - If yes: Update content, then return to A/P/C menu @@ -313,7 +313,7 @@ Show the generated patterns content and present choices: #### If 'P' (Party Mode): -- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with implementation patterns context +- Invoke the `bmad-party-mode` skill with implementation patterns context - Process collaborative insights about potential conflicts - Ask user: "Accept these changes to the implementation patterns? (y/n)" - If yes: Update content, then return to A/P/C menu @@ -323,7 +323,7 @@ Show the generated patterns content and present choices: - Append the final content to `{planning_artifacts}/architecture.md` - Update frontmatter: `stepsCompleted: [1, 2, 3, 4, 5]` -- Load `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md` +- Load `./step-06-structure.md` ## APPEND TO DOCUMENT: @@ -354,6 +354,6 @@ When user selects 'C', append the content directly to the document using the str ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md` to define the complete project structure. +After user selects 'C' and content is saved to document, load `./step-06-structure.md` to define the complete project structure. Remember: Do NOT proceed to step-06 until user explicitly selects 'C' from the A/P/C menu and content is saved! diff --git a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md b/src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-06-structure.md similarity index 93% rename from src/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md rename to src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-06-structure.md index f98cea981..195abafc2 100644 --- a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +++ b/src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-06-structure.md @@ -32,8 +32,8 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md -- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md +- When 'A' selected: Invoke the `bmad-advanced-elicitation` skill +- When 'P' selected: Invoke the `bmad-party-mode` skill - PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed - User accepts/rejects protocol changes before proceeding @@ -325,7 +325,7 @@ Show the generated project structure content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with current project structure +- Invoke the `bmad-advanced-elicitation` skill with current project structure - Process enhanced organizational insights that come back - Ask user: "Accept these changes to the project structure? (y/n)" - If yes: Update content, then return to A/P/C menu @@ -333,7 +333,7 @@ Show the generated project structure content and present choices: #### If 'P' (Party Mode): -- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with project structure context +- Invoke the `bmad-party-mode` skill with project structure context - Process collaborative insights about organization trade-offs - Ask user: "Accept these changes to the project structure? (y/n)" - If yes: Update content, then return to A/P/C menu @@ -343,7 +343,7 @@ Show the generated project structure content and present choices: - Append the final content to `{planning_artifacts}/architecture.md` - Update frontmatter: `stepsCompleted: [1, 2, 3, 4, 5, 6]` -- Load `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md` +- Load `./step-07-validation.md` ## APPEND TO DOCUMENT: @@ -374,6 +374,6 @@ When user selects 'C', append the content directly to the document using the str ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md` to validate architectural coherence and completeness. +After user selects 'C' and content is saved to document, load `./step-07-validation.md` to validate architectural coherence and completeness. Remember: Do NOT proceed to step-07 until user explicitly selects 'C' from the A/P/C menu and content is saved! diff --git a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md b/src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-07-validation.md similarity index 93% rename from src/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md rename to src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-07-validation.md index d98bf974c..3275c5db2 100644 --- a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +++ b/src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-07-validation.md @@ -32,8 +32,8 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md -- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md +- When 'A' selected: Invoke the `bmad-advanced-elicitation` skill +- When 'P' selected: Invoke the `bmad-party-mode` skill - PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed - User accepts/rejects protocol changes before proceeding @@ -305,7 +305,7 @@ Show the validation results and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with validation issues +- Invoke the `bmad-advanced-elicitation` skill with validation issues - Process enhanced solutions for complex concerns - Ask user: "Accept these architectural improvements? (y/n)" - If yes: Update content, then return to A/P/C menu @@ -313,7 +313,7 @@ Show the validation results and present choices: #### If 'P' (Party Mode): -- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with validation context +- Invoke the `bmad-party-mode` skill with validation context - Process collaborative insights on implementation readiness - Ask user: "Accept these changes to the validation results? (y/n)" - If yes: Update content, then return to A/P/C menu @@ -323,7 +323,7 @@ Show the validation results and present choices: - Append the final content to `{planning_artifacts}/architecture.md` - Update frontmatter: `stepsCompleted: [1, 2, 3, 4, 5, 6, 7]` -- Load `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md` +- Load `./step-08-complete.md` ## APPEND TO DOCUMENT: @@ -354,6 +354,6 @@ When user selects 'C', append the content directly to the document using the str ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md` to complete the workflow and provide implementation guidance. +After user selects 'C' and content is saved to document, load `./step-08-complete.md` to complete the workflow and provide implementation guidance. Remember: Do NOT proceed to step-08 until user explicitly selects 'C' from the A/P/C menu and content is saved! diff --git a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md b/src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-08-complete.md similarity index 97% rename from src/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md rename to src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-08-complete.md index f44850b2b..e378fc97e 100644 --- a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +++ b/src/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-08-complete.md @@ -41,7 +41,7 @@ completedAt: '{{current_date}}' ### 3. Next Steps Guidance -Architecture complete. Read fully and follow: `{project-root}/_bmad/core/tasks/help.md` +Architecture complete. Invoke the `bmad-help` skill. Upon Completion of task output: offer to answer any questions about the Architecture Document. diff --git a/src/bmm/workflows/3-solutioning/create-architecture/workflow.md b/src/bmm/workflows/3-solutioning/bmad-create-architecture/workflow.md similarity index 71% rename from src/bmm/workflows/3-solutioning/create-architecture/workflow.md rename to src/bmm/workflows/3-solutioning/bmad-create-architecture/workflow.md index 1fac8d1ac..d0a295ea3 100644 --- a/src/bmm/workflows/3-solutioning/create-architecture/workflow.md +++ b/src/bmm/workflows/3-solutioning/bmad-create-architecture/workflow.md @@ -1,8 +1,3 @@ ---- -name: create-architecture -description: 'Create architecture solution design decisions for AI agent consistency. Use when the user says "lets create architecture" or "create technical architecture" or "create a solution design"' ---- - # Architecture Workflow **Goal:** Create comprehensive architecture decisions through collaborative step-by-step discovery that ensures AI agents implement consistently. @@ -34,16 +29,10 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: - `date` as system-generated current datetime - ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` -### Paths - -- `installed_path` = `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture` -- `template_path` = `{installed_path}/architecture-decision-template.md` -- `data_files_path` = `{installed_path}/data/` - --- ## EXECUTION -Read fully and follow: `{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md` to begin the workflow. +Read fully and follow: `./steps/step-01-init.md` to begin the workflow. **Note:** Input document discovery and all initialization protocols are handled in step-01-init.md. diff --git a/src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/SKILL.md b/src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/SKILL.md new file mode 100644 index 000000000..d092487dc --- /dev/null +++ b/src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-create-epics-and-stories +description: 'Break requirements into epics and user stories. Use when the user says "create the epics and stories list"' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/bmad-skill-manifest.yaml b/src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md b/src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/steps/step-01-validate-prerequisites.md similarity index 72% rename from src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md rename to src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/steps/step-01-validate-prerequisites.md index 5d2b0add9..91ad17e08 100644 --- a/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +++ b/src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/steps/step-01-validate-prerequisites.md @@ -1,25 +1,3 @@ ---- -name: 'step-01-validate-prerequisites' -description: 'Validate required documents exist and extract all requirements for epic and story creation' - -# Path Definitions -workflow_path: '{project-root}/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories' - -# File References -thisStepFile: './step-01-validate-prerequisites.md' -nextStepFile: './step-02-design-epics.md' -workflowFile: '{workflow_path}/workflow.md' -outputFile: '{planning_artifacts}/epics.md' -epicsTemplate: '{workflow_path}/templates/epics-template.md' - -# Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' - -# Template References -epicsTemplate: '{workflow_path}/templates/epics-template.md' ---- - # Step 1: Validate Prerequisites and Extract Requirements ## STEP GOAL: @@ -54,7 +32,7 @@ To validate that all required input documents exist and extract all requirements ## EXECUTION PROTOCOLS: - 🎯 Extract requirements systematically from all documents -- 💾 Populate {outputFile} with extracted requirements +- 💾 Populate {planning_artifacts}/epics.md with extracted requirements - 📖 Update frontmatter with extraction progress - 🚫 FORBIDDEN to load next step until user selects 'C' and requirements are extracted @@ -91,7 +69,7 @@ Search for required documents using these patterns (sharded means a large docume 1. `{planning_artifacts}/*ux*.md` (whole document) 2. `{planning_artifacts}/*ux*/index.md` (sharded version) -Before proceeding, Ask the user if there are any other documents to include for analysis, and if anything found should be excluded. Wait for user confirmation. Once confirmed, create the {outputFile} from the {epicsTemplate} and in the front matter list the files in the array of `inputDocuments: []`. +Before proceeding, Ask the user if there are any other documents to include for analysis, and if anything found should be excluded. Wait for user confirmation. Once confirmed, create the {planning_artifacts}/epics.md from the ../templates/epics-template.md and in the front matter list the files in the array of `inputDocuments: []`. ### 3. Extract Functional Requirements (FRs) @@ -154,31 +132,43 @@ Review the Architecture document for technical requirements that impact epic and ... ``` -### 6. Extract Additional Requirements from UX (if exists) +### 6. Extract UX Design Requirements (if UX document exists) -Review the UX document for requirements that affect epic and story creation: +**IMPORTANT**: The UX Design Specification is a first-class input document, not supplementary material. Requirements from the UX spec must be extracted with the same rigor as PRD functional requirements. + +Read the FULL UX Design document and extract ALL actionable work items: **Look for:** -- Responsive design requirements -- Accessibility requirements -- Browser/device compatibility -- User interaction patterns that need implementation -- Animation or transition requirements -- Error handling UX requirements +- **Design token work**: Color systems, spacing scales, typography tokens that need implementation or consolidation +- **Component proposals**: Reusable UI components identified in the UX spec (e.g., ConfirmActions, StatusMessage, EmptyState, FocusIndicator) +- **Visual standardization**: Semantic CSS classes, consistent color palette usage, design pattern consolidation +- **Accessibility requirements**: Contrast audit fixes, ARIA patterns, keyboard navigation, screen reader support +- **Responsive design requirements**: Breakpoints, layout adaptations, mobile-specific interactions +- **Interaction patterns**: Animations, transitions, loading states, error handling UX +- **Browser/device compatibility**: Target platforms, progressive enhancement requirements -**Add these to Additional Requirements list.** +**Format UX Design Requirements as a SEPARATE section (not merged into Additional Requirements):** + +``` +UX-DR1: [Actionable UX design requirement with clear implementation scope] +UX-DR2: [Actionable UX design requirement with clear implementation scope] +... +``` + +**🚨 CRITICAL**: Do NOT reduce UX requirements to vague summaries. Each UX-DR must be specific enough to generate a story with testable acceptance criteria. If the UX spec identifies 6 reusable components, list all 6 — not "create reusable components." ### 7. Load and Initialize Template -Load {epicsTemplate} and initialize {outputFile}: +Load ../templates/epics-template.md and initialize {planning_artifacts}/epics.md: -1. Copy the entire template to {outputFile} +1. Copy the entire template to {planning_artifacts}/epics.md 2. Replace {{project_name}} with the actual project name 3. Replace placeholder sections with extracted requirements: - {{fr_list}} → extracted FRs - {{nfr_list}} → extracted NFRs - - {{additional_requirements}} → extracted additional requirements + - {{additional_requirements}} → extracted additional requirements (from Architecture) + - {{ux_design_requirements}} → extracted UX Design Requirements (if UX document exists) 4. Leave {{requirements_coverage_map}} and {{epics_list}} as placeholders for now ### 8. Present Extracted Requirements @@ -197,12 +187,17 @@ Display to user: - Display key NFRs - Ask if any constraints were missed -**Additional Requirements:** +**Additional Requirements (Architecture):** - Summarize technical requirements from Architecture -- Summarize UX requirements (if applicable) - Verify completeness +**UX Design Requirements (if applicable):** + +- Show count of UX-DRs found +- Display key UX Design requirements (design tokens, components, accessibility) +- Verify each UX-DR is specific enough for story creation + ### 9. Get User Confirmation Ask: "Do these extracted requirements accurately represent what needs to be built? Any additions or corrections?" @@ -211,11 +206,12 @@ Update the requirements based on user feedback until confirmation is received. ## CONTENT TO SAVE TO DOCUMENT: -After extraction and confirmation, update {outputFile} with: +After extraction and confirmation, update {planning_artifacts}/epics.md with: - Complete FR list in {{fr_list}} section - Complete NFR list in {{nfr_list}} section - All additional requirements in {{additional_requirements}} section +- UX Design requirements in {{ux_design_requirements}} section (if UX document exists) ### 10. Present MENU OPTIONS @@ -229,12 +225,12 @@ Display: `**Confirm the Requirements are complete and correct to [C] continue:** #### Menu Handling Logic: -- IF C: Save all to {outputFile}, update frontmatter, then read fully and follow: {nextStepFile} +- IF C: Save all to {planning_artifacts}/epics.md, update frontmatter, then read fully and follow: ./step-02-design-epics.md - IF Any other comments or queries: help user respond then [Redisplay Menu Options](#10-present-menu-options) ## CRITICAL STEP COMPLETION NOTE -ONLY WHEN C is selected and all requirements are saved to document and frontmatter is updated, will you then read fully and follow: {nextStepFile} to begin epic design step. +ONLY WHEN C is selected and all requirements are saved to document and frontmatter is updated, will you then read fully and follow: ./step-02-design-epics.md to begin epic design step. --- diff --git a/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md b/src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/steps/step-02-design-epics.md similarity index 85% rename from src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md rename to src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/steps/step-02-design-epics.md index 46ca5e47a..00dd285e1 100644 --- a/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +++ b/src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/steps/step-02-design-epics.md @@ -1,24 +1,3 @@ ---- -name: 'step-02-design-epics' -description: 'Design and approve the epics_list that will organize all requirements into user-value-focused epics' - -# Path Definitions -workflow_path: '{project-root}/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories' - -# File References -thisStepFile: './step-02-design-epics.md' -nextStepFile: './step-03-create-stories.md' -workflowFile: '{workflow_path}/workflow.md' -outputFile: '{planning_artifacts}/epics.md' - -# Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' - -# Template References -epicsTemplate: '{workflow_path}/templates/epics-template.md' ---- - # Step 2: Design Epic List ## STEP GOAL: @@ -54,7 +33,7 @@ To design and get approval for the epics_list that will organize all requirement ## EXECUTION PROTOCOLS: - 🎯 Design epics collaboratively based on extracted requirements -- 💾 Update {{epics_list}} in {outputFile} +- 💾 Update {{epics_list}} in {planning_artifacts}/epics.md - 📖 Document the FR coverage mapping - 🚫 FORBIDDEN to load next step until user approves epics_list @@ -62,7 +41,7 @@ To design and get approval for the epics_list that will organize all requirement ### 1. Review Extracted Requirements -Load {outputFile} and review: +Load {planning_artifacts}/epics.md and review: - **Functional Requirements:** Count and review FRs from Step 1 - **Non-Functional Requirements:** Review NFRs that need to be addressed @@ -182,7 +161,7 @@ If user wants changes: ## CONTENT TO UPDATE IN DOCUMENT: -After approval, update {outputFile}: +After approval, update {planning_artifacts}/epics.md: 1. Replace {{epics_list}} placeholder with the approved epic list 2. Replace {{requirements_coverage_map}} with the coverage map @@ -194,9 +173,9 @@ Display: "**Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Cont #### Menu Handling Logic: -- IF A: Read fully and follow: {advancedElicitationTask} -- IF P: Read fully and follow: {partyModeWorkflow} -- IF C: Save approved epics_list to {outputFile}, update frontmatter, then read fully and follow: {nextStepFile} +- IF A: Invoke the `bmad-advanced-elicitation` skill +- IF P: Invoke the `bmad-party-mode` skill +- IF C: Save approved epics_list to {planning_artifacts}/epics.md, update frontmatter, then read fully and follow: ./step-03-create-stories.md - IF Any other comments or queries: help user respond then [Redisplay Menu Options](#8-present-menu-options) #### EXECUTION RULES: @@ -208,7 +187,7 @@ Display: "**Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Cont ## CRITICAL STEP COMPLETION NOTE -ONLY WHEN C is selected and the approved epics_list is saved to document, will you then read fully and follow: {nextStepFile} to begin story creation step. +ONLY WHEN C is selected and the approved epics_list is saved to document, will you then read fully and follow: ./step-03-create-stories.md to begin story creation step. --- diff --git a/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md b/src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/steps/step-03-create-stories.md similarity index 85% rename from src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md rename to src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/steps/step-03-create-stories.md index 07e666e03..14caafeb3 100644 --- a/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +++ b/src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/steps/step-03-create-stories.md @@ -1,24 +1,3 @@ ---- -name: 'step-03-create-stories' -description: 'Generate all epics with their stories following the template structure' - -# Path Definitions -workflow_path: '{project-root}/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories' - -# File References -thisStepFile: './step-03-create-stories.md' -nextStepFile: './step-04-final-validation.md' -workflowFile: '{workflow_path}/workflow.md' -outputFile: '{planning_artifacts}/epics.md' - -# Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' - -# Template References -epicsTemplate: '{workflow_path}/templates/epics-template.md' ---- - # Step 3: Generate Epics and Stories ## STEP GOAL: @@ -54,7 +33,7 @@ To generate all epics with their stories based on the approved epics_list, follo ## EXECUTION PROTOCOLS: - 🎯 Generate stories collaboratively with user input -- 💾 Append epics and stories to {outputFile} following template +- 💾 Append epics and stories to {planning_artifacts}/epics.md following template - 📖 Process epics one at a time in sequence - 🚫 FORBIDDEN to skip any epic or rush through stories @@ -62,13 +41,15 @@ To generate all epics with their stories based on the approved epics_list, follo ### 1. Load Approved Epic Structure -Load {outputFile} and review: +Load {planning_artifacts}/epics.md and review: - Approved epics_list from Step 2 - FR coverage map -- All requirements (FRs, NFRs, additional) +- All requirements (FRs, NFRs, additional, **UX Design requirements if present**) - Template structure at the end of the document +**UX Design Integration**: If UX Design Requirements (UX-DRs) were extracted in Step 1, ensure they are visible during story creation. UX-DRs must be covered by stories — either within existing epics (e.g., accessibility fixes for a feature epic) or in a dedicated "Design System / UX Polish" epic. + ### 2. Explain Story Creation Approach **STORY CREATION GUIDELINES:** @@ -146,6 +127,7 @@ Display: - Epic goal statement - FRs covered by this epic - Any NFRs or additional requirements relevant +- Any UX Design Requirements (UX-DRs) relevant to this epic #### B. Story Breakdown @@ -183,7 +165,7 @@ After writing each story: When story is approved: -- Append it to {outputFile} following template structure +- Append it to {planning_artifacts}/epics.md following template structure - Use correct numbering (Epic N, Story M) - Maintain proper markdown formatting @@ -207,11 +189,12 @@ After all epics and stories are generated: - Verify the document follows template structure exactly - Ensure all placeholders are replaced - Confirm all FRs are covered +- **Confirm all UX Design Requirements (UX-DRs) are covered by at least one story** (if UX document was an input) - Check formatting consistency ## TEMPLATE STRUCTURE COMPLIANCE: -The final {outputFile} must follow this structure exactly: +The final {planning_artifacts}/epics.md must follow this structure exactly: 1. **Overview** section with project name 2. **Requirements Inventory** with all three subsections populated @@ -231,9 +214,9 @@ Display: "**Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Cont #### Menu Handling Logic: -- IF A: Read fully and follow: {advancedElicitationTask} -- IF P: Read fully and follow: {partyModeWorkflow} -- IF C: Save content to {outputFile}, update frontmatter, then read fully and follow: {nextStepFile} +- IF A: Invoke the `bmad-advanced-elicitation` skill +- IF P: Invoke the `bmad-party-mode` skill +- IF C: Save content to {planning_artifacts}/epics.md, update frontmatter, then read fully and follow: ./step-04-final-validation.md - IF Any other comments or queries: help user respond then [Redisplay Menu Options](#7-present-final-menu-options) #### EXECUTION RULES: @@ -245,7 +228,7 @@ Display: "**Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Cont ## CRITICAL STEP COMPLETION NOTE -ONLY WHEN [C continue option] is selected and [all epics and stories saved to document following the template structure exactly], will you then read fully and follow: `{nextStepFile}` to begin final validation phase. +ONLY WHEN [C continue option] is selected and [all epics and stories saved to document following the template structure exactly], will you then read fully and follow: `./step-04-final-validation.md` to begin final validation phase. --- diff --git a/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md b/src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/steps/step-04-final-validation.md similarity index 84% rename from src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md rename to src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/steps/step-04-final-validation.md index adc3f497c..d115edcd2 100644 --- a/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +++ b/src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/steps/step-04-final-validation.md @@ -1,23 +1,3 @@ ---- -name: 'step-04-final-validation' -description: 'Validate complete coverage of all requirements and ensure implementation readiness' - -# Path Definitions -workflow_path: '{project-root}/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories' - -# File References -thisStepFile: './step-04-final-validation.md' -workflowFile: '{workflow_path}/workflow.md' -outputFile: '{planning_artifacts}/epics.md' - -# Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' - -# Template References -epicsTemplate: '{workflow_path}/templates/epics-template.md' ---- - # Step 4: Final Validation ## STEP GOAL: @@ -142,8 +122,10 @@ If all validations pass: **Present Final Menu:** **All validations complete!** [C] Complete Workflow +HALT — wait for user input before proceeding. + When C is selected, the workflow is complete and the epics.md is ready for development. -Epics and Stories complete. Read fully and follow: `{project-root}/_bmad/core/tasks/help.md` +Epics and Stories complete. Invoke the `bmad-help` skill. Upon Completion of task output: offer to answer any questions about the Epics and Stories. diff --git a/src/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md b/src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/templates/epics-template.md similarity index 94% rename from src/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md rename to src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/templates/epics-template.md index 05afe1f5f..bf80c7fba 100644 --- a/src/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +++ b/src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/templates/epics-template.md @@ -23,6 +23,10 @@ This document provides the complete epic and story breakdown for {{project_name} {{additional_requirements}} +### UX Design Requirements + +{{ux_design_requirements}} + ### FR Coverage Map {{requirements_coverage_map}} diff --git a/src/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md b/src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/workflow.md similarity index 90% rename from src/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md rename to src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/workflow.md index 41a6ee106..5845105d7 100644 --- a/src/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +++ b/src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/workflow.md @@ -1,8 +1,3 @@ ---- -name: create-epics-and-stories -description: 'Break requirements into epics and user stories. Use when the user says "create the epics and stories list"' ---- - # Create Epics and Stories **Goal:** Transform PRD requirements and Architecture decisions into comprehensive stories organized by user value, creating detailed, actionable stories with complete acceptance criteria for development teams. @@ -55,4 +50,4 @@ Load and read full config from {project-root}/_bmad/bmm/config.yaml and resolve: ### 2. First Step EXECUTION -Read fully and follow: `{project-root}/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md` to begin the workflow. +Read fully and follow: `./steps/step-01-validate-prerequisites.md` to begin the workflow. diff --git a/src/bmm/workflows/3-solutioning/check-implementation-readiness/bmad-skill-manifest.yaml b/src/bmm/workflows/3-solutioning/check-implementation-readiness/bmad-skill-manifest.yaml deleted file mode 100644 index 3040413b8..000000000 --- a/src/bmm/workflows/3-solutioning/check-implementation-readiness/bmad-skill-manifest.yaml +++ /dev/null @@ -1,3 +0,0 @@ -canonicalId: bmad-check-implementation-readiness -type: workflow -description: "Validate PRD, UX, Architecture and Epics specs are complete" diff --git a/src/bmm/workflows/3-solutioning/create-architecture/bmad-skill-manifest.yaml b/src/bmm/workflows/3-solutioning/create-architecture/bmad-skill-manifest.yaml deleted file mode 100644 index 6b35ce8e7..000000000 --- a/src/bmm/workflows/3-solutioning/create-architecture/bmad-skill-manifest.yaml +++ /dev/null @@ -1,3 +0,0 @@ -canonicalId: bmad-create-architecture -type: workflow -description: "Create architecture solution design decisions for AI agent consistency" diff --git a/src/bmm/workflows/3-solutioning/create-epics-and-stories/bmad-skill-manifest.yaml b/src/bmm/workflows/3-solutioning/create-epics-and-stories/bmad-skill-manifest.yaml deleted file mode 100644 index 92b343dd9..000000000 --- a/src/bmm/workflows/3-solutioning/create-epics-and-stories/bmad-skill-manifest.yaml +++ /dev/null @@ -1,3 +0,0 @@ -canonicalId: bmad-create-epics-and-stories -type: workflow -description: "Break requirements into epics and user stories" diff --git a/src/bmm/workflows/4-implementation/bmad-code-review/SKILL.md b/src/bmm/workflows/4-implementation/bmad-code-review/SKILL.md new file mode 100644 index 000000000..32f020af7 --- /dev/null +++ b/src/bmm/workflows/4-implementation/bmad-code-review/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-code-review +description: 'Review code changes adversarially using parallel review layers (Blind Hunter, Edge Case Hunter, Acceptance Auditor) with structured triage into actionable categories. Use when the user says "run code review" or "review this code"' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/4-implementation/bmad-code-review/bmad-skill-manifest.yaml b/src/bmm/workflows/4-implementation/bmad-code-review/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/4-implementation/bmad-code-review/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/4-implementation/bmad-code-review/steps/step-01-gather-context.md b/src/bmm/workflows/4-implementation/bmad-code-review/steps/step-01-gather-context.md new file mode 100644 index 000000000..d00d4edb8 --- /dev/null +++ b/src/bmm/workflows/4-implementation/bmad-code-review/steps/step-01-gather-context.md @@ -0,0 +1,61 @@ +--- +diff_output: '' # set at runtime +spec_file: '' # set at runtime (path or empty) +review_mode: '' # set at runtime: "full" or "no-spec" +--- + +# Step 1: Gather Context + +## RULES + +- YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}` +- The prompt that triggered this workflow IS the intent — not a hint. +- Do not modify any files. This step is read-only. + +## INSTRUCTIONS + +1. **Detect review intent from invocation text.** Check the triggering prompt for phrases that map to a review mode: + - "staged" / "staged changes" → Staged changes only + - "uncommitted" / "working tree" / "all changes" → Uncommitted changes (staged + unstaged) + - "branch diff" / "vs main" / "against main" / "compared to {branch}" → Branch diff (extract base branch if mentioned) + - "commit range" / "last N commits" / "{sha}..{sha}" → Specific commit range + - "this diff" / "provided diff" / "paste" → User-provided diff (do not match bare "diff" — it appears in other modes) + - When multiple phrases match, prefer the most specific match (e.g., "branch diff" over bare "diff"). + - **If a clear match is found:** Announce the detected mode (e.g., "Detected intent: review staged changes only") and proceed directly to constructing `{diff_output}` using the corresponding sub-case from instruction 3. Skip to instruction 4 (spec question). + - **If no match from invocation text, check sprint tracking.** Look for a sprint status file (`*sprint-status*`) in `{implementation_artifacts}` or `{planning_artifacts}`. If found, scan for any story with status `review`. Handle as follows: + - **Exactly one `review` story:** Suggest it: "I found story {{story-id}} in `review` status. Would you like to review its changes? [Y] Yes / [N] No, let me choose". If confirmed, use the story context to determine the diff source (branch name derived from story slug, or uncommitted changes). If declined, fall through to instruction 2. + - **Multiple `review` stories:** Present them as numbered options alongside a manual choice option. Wait for user selection. Then use the selected story's context to determine the diff source as in the single-story case above, and proceed to instruction 3. + - **If no match and no sprint tracking:** Fall through to instruction 2. + +2. HALT. Ask the user: **What do you want to review?** Present these options: + - **Uncommitted changes** (staged + unstaged) + - **Staged changes only** + - **Branch diff** vs a base branch (ask which base branch) + - **Specific commit range** (ask for the range) + - **Provided diff or file list** (user pastes or provides a path) + +3. Construct `{diff_output}` from the chosen source. + - For **branch diff**: verify the base branch exists before running `git diff`. If it does not exist, HALT and ask the user for a valid branch. + - For **commit range**: verify the range resolves. If it does not, HALT and ask the user for a valid range. + - For **provided diff**: validate the content is non-empty and parseable as a unified diff. If it is not parseable, HALT and ask the user to provide a valid diff. + - For **file list**: validate each path exists in the working tree. Construct `{diff_output}` by running `git diff HEAD -- ...`. If any paths are untracked (new files not yet staged), use `git diff --no-index /dev/null ` to include them. If the diff is empty (files have no uncommitted changes and are not untracked), ask the user whether to review the full file contents or to specify a different baseline. + - After constructing `{diff_output}`, verify it is non-empty regardless of source type. If empty, HALT and tell the user there is nothing to review. + +4. Ask the user: **Is there a spec or story file that provides context for these changes?** + - If yes: set `{spec_file}` to the path provided, verify the file exists and is readable, then set `{review_mode}` = `"full"`. + - If no: set `{review_mode}` = `"no-spec"`. + +5. If `{review_mode}` = `"full"` and the file at `{spec_file}` has a `context` field in its frontmatter listing additional docs, load each referenced document. Warn the user about any docs that cannot be found. + +6. Sanity check: if `{diff_output}` exceeds approximately 3000 lines, warn the user and offer to chunk the review by file group. + - If the user opts to chunk: agree on the first group, narrow `{diff_output}` accordingly, and list the remaining groups for the user to note for follow-up runs. + - If the user declines: proceed as-is with the full diff. + +### CHECKPOINT + +Present a summary before proceeding: diff stats (files changed, lines added/removed), `{review_mode}`, and loaded spec/context docs (if any). HALT and wait for user confirmation to proceed. + + +## NEXT + +Read fully and follow `./step-02-review.md` diff --git a/src/bmm/workflows/4-implementation/bmad-code-review/steps/step-02-review.md b/src/bmm/workflows/4-implementation/bmad-code-review/steps/step-02-review.md new file mode 100644 index 000000000..306613014 --- /dev/null +++ b/src/bmm/workflows/4-implementation/bmad-code-review/steps/step-02-review.md @@ -0,0 +1,41 @@ +--- +failed_layers: '' # set at runtime: comma-separated list of layers that failed or returned empty +--- + +# Step 2: Review + +## RULES + +- YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}` +- The Blind Hunter subagent receives NO project context — diff only. +- The Edge Case Hunter subagent receives diff and project read access. +- The Acceptance Auditor subagent receives diff, spec, and context docs. + +## INSTRUCTIONS + +1. Launch parallel subagents. Each subagent gets NO conversation history from this session: + + - **Blind Hunter** -- Invoke the `bmad-review-adversarial-general` skill in a subagent. Pass `content` = `{diff_output}` only. No spec, no project access. + + - **Edge Case Hunter** -- Invoke the `bmad-review-edge-case-hunter` skill in a subagent. Pass `content` = `{diff_output}`. This subagent has read access to the project. + + - **Acceptance Auditor** (only if `{review_mode}` = `"full"`) -- A subagent that receives `{diff_output}`, the content of the file at `{spec_file}`, and any loaded context docs. Its prompt: + > You are an Acceptance Auditor. Review this diff against the spec and context docs. Check for: violations of acceptance criteria, deviations from spec intent, missing implementation of specified behavior, contradictions between spec constraints and actual code. Output findings as a markdown list. Each finding: one-line title, which AC/constraint it violates, and evidence from the diff. + +2. **Subagent failure handling**: If any subagent fails, times out, or returns empty results, append the layer name to `{failed_layers}` (comma-separated) and proceed with findings from the remaining layers. + +3. If `{review_mode}` = `"no-spec"`, note to the user: "Acceptance Auditor skipped — no spec file provided." + +4. **Fallback** (if subagents are not available): Generate prompt files in `{implementation_artifacts}` -- one per active reviewer: + - `review-blind-hunter.md` (always) + - `review-edge-case-hunter.md` (always) + - `review-acceptance-auditor.md` (only if `{review_mode}` = `"full"`) + + HALT. Tell the user to run each prompt in a separate session and paste back findings. When findings are pasted, resume from this point and proceed to step 3. + +5. Collect all findings from the completed layers. + + +## NEXT + +Read fully and follow `./step-03-triage.md` diff --git a/src/bmm/workflows/4-implementation/bmad-code-review/steps/step-03-triage.md b/src/bmm/workflows/4-implementation/bmad-code-review/steps/step-03-triage.md new file mode 100644 index 000000000..3e1d21665 --- /dev/null +++ b/src/bmm/workflows/4-implementation/bmad-code-review/steps/step-03-triage.md @@ -0,0 +1,50 @@ +--- +--- + +# Step 3: Triage + +## RULES + +- YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}` +- Be precise. When uncertain between categories, prefer the more conservative classification. + +## INSTRUCTIONS + +1. **Normalize** findings into a common format. Expected input formats: + - Adversarial (Blind Hunter): markdown list of descriptions + - Edge Case Hunter: JSON array with `location`, `trigger_condition`, `guard_snippet`, `potential_consequence` fields + - Acceptance Auditor: markdown list with title, AC/constraint reference, and evidence + + If a layer's output does not match its expected format, attempt best-effort parsing. Note any parsing issues for the user. + + Convert all to a unified list where each finding has: + - `id` -- sequential integer + - `source` -- `blind`, `edge`, `auditor`, or merged sources (e.g., `blind+edge`) + - `title` -- one-line summary + - `detail` -- full description + - `location` -- file and line reference (if available) + +2. **Deduplicate.** If two or more findings describe the same issue, merge them into one: + - Use the most specific finding as the base (prefer edge-case JSON with location over adversarial prose). + - Append any unique detail, reasoning, or location references from the other finding(s) into the surviving `detail` field. + - Set `source` to the merged sources (e.g., `blind+edge`). + +3. **Classify** each finding into exactly one bucket: + - **intent_gap** -- The spec/intent is incomplete; cannot resolve from existing information. Only possible if `{review_mode}` = `"full"`. + - **bad_spec** -- The spec should have prevented this; spec is wrong or ambiguous. Only possible if `{review_mode}` = `"full"`. + - **patch** -- Code issue that is trivially fixable without human input. Just needs a code change. + - **defer** -- Pre-existing issue not caused by the current change. Real but not actionable now. + - **reject** -- Noise, false positive, or handled elsewhere. + + If `{review_mode}` = `"no-spec"` and a finding would otherwise be `intent_gap` or `bad_spec`, reclassify it as `patch` (if code-fixable) or `defer` (if not). + +4. **Drop** all `reject` findings. Record the reject count for the summary. + +5. If `{failed_layers}` is non-empty, report which layers failed before announcing results. If zero findings remain after dropping rejects AND `{failed_layers}` is non-empty, warn the user that the review may be incomplete rather than announcing a clean review. + +6. If zero findings remain after dropping rejects and no layers failed, note clean review. + + +## NEXT + +Read fully and follow `./step-04-present.md` diff --git a/src/bmm/workflows/4-implementation/bmad-code-review/steps/step-04-present.md b/src/bmm/workflows/4-implementation/bmad-code-review/steps/step-04-present.md new file mode 100644 index 000000000..73a6919e2 --- /dev/null +++ b/src/bmm/workflows/4-implementation/bmad-code-review/steps/step-04-present.md @@ -0,0 +1,38 @@ +--- +--- + +# Step 4: Present + +## RULES + +- YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}` +- Do NOT auto-fix anything. Present findings and let the user decide next steps. + +## INSTRUCTIONS + +1. Group remaining findings by category. + +2. Present to the user in this order (include a section only if findings exist in that category): + + - **Intent Gaps**: "These findings suggest the captured intent is incomplete. Consider clarifying intent before proceeding." + - List each with title + detail. + + - **Bad Spec**: "These findings suggest the spec should be amended. Consider regenerating or amending the spec with this context:" + - List each with title + detail + suggested spec amendment. + + - **Patch**: "These are fixable code issues:" + - List each with title + detail + location (if available). + + - **Defer**: "Pre-existing issues surfaced by this review (not caused by current changes):" + - List each with title + detail. + +3. Summary line: **X** intent_gap, **Y** bad_spec, **Z** patch, **W** defer findings. **R** findings rejected as noise. + +4. If clean review (zero findings across all layers after triage): state that N findings were raised but all were classified as noise, or that no findings were raised at all (as applicable). + +5. Offer the user next steps (recommendations, not automated actions): + - If `patch` findings exist: "These can be addressed in a follow-up implementation pass or manually." + - If `intent_gap` or `bad_spec` findings exist: "Consider running the planning workflow to clarify intent or amend the spec before continuing." + - If only `defer` findings remain: "No action needed for this change. Deferred items are noted for future attention." + +Workflow complete. diff --git a/src/bmm/workflows/4-implementation/bmad-code-review/workflow.md b/src/bmm/workflows/4-implementation/bmad-code-review/workflow.md new file mode 100644 index 000000000..6653e3c8a --- /dev/null +++ b/src/bmm/workflows/4-implementation/bmad-code-review/workflow.md @@ -0,0 +1,54 @@ +--- +main_config: '{project-root}/_bmad/bmm/config.yaml' +--- + +# Code Review Workflow + +**Goal:** Review code changes adversarially using parallel review layers and structured triage. + +**Your Role:** You are an elite code reviewer. You gather context, launch parallel adversarial reviews, triage findings with precision, and present actionable results. No noise, no filler. + + +## WORKFLOW ARCHITECTURE + +This uses **step-file architecture** for disciplined execution: + +- **Micro-file Design**: Each step is self-contained and followed exactly +- **Just-In-Time Loading**: Only load the current step file +- **Sequential Enforcement**: Complete steps in order, no skipping +- **State Tracking**: Persist progress via in-memory variables +- **Append-Only Building**: Build artifacts incrementally + +### Step Processing Rules + +1. **READ COMPLETELY**: Read the entire step file before acting +2. **FOLLOW SEQUENCE**: Execute sections in order +3. **WAIT FOR INPUT**: Halt at checkpoints and wait for human +4. **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** follow the exact instructions in the step file +- **ALWAYS** halt at checkpoints and wait for human input + + +## INITIALIZATION SEQUENCE + +### 1. Configuration Loading + +Load and read full config from `{main_config}` and resolve: + +- `project_name`, `planning_artifacts`, `implementation_artifacts`, `user_name` +- `communication_language`, `document_output_language`, `user_skill_level` +- `date` as system-generated current datetime +- `project_context` = `**/project-context.md` (load if exists) +- CLAUDE.md / memory files (load if exist) + +YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}`. + +### 2. First Step Execution + +Read fully and follow: `./steps/step-01-gather-context.md` to begin the workflow. diff --git a/src/bmm/workflows/4-implementation/bmad-correct-course/SKILL.md b/src/bmm/workflows/4-implementation/bmad-correct-course/SKILL.md new file mode 100644 index 000000000..021c715f8 --- /dev/null +++ b/src/bmm/workflows/4-implementation/bmad-correct-course/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-correct-course +description: 'Manage significant changes during sprint execution. Use when the user says "correct course" or "propose sprint change"' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/4-implementation/bmad-correct-course/bmad-skill-manifest.yaml b/src/bmm/workflows/4-implementation/bmad-correct-course/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/4-implementation/bmad-correct-course/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/4-implementation/correct-course/checklist.md b/src/bmm/workflows/4-implementation/bmad-correct-course/checklist.md similarity index 98% rename from src/bmm/workflows/4-implementation/correct-course/checklist.md rename to src/bmm/workflows/4-implementation/bmad-correct-course/checklist.md index 1e630ccbb..6fb7c3edd 100644 --- a/src/bmm/workflows/4-implementation/correct-course/checklist.md +++ b/src/bmm/workflows/4-implementation/bmad-correct-course/checklist.md @@ -1,6 +1,6 @@ # Change Navigation Checklist -This checklist is executed as part of: {project-root}/_bmad/bmm/workflows/4-implementation/correct-course/workflow.md +This checklist is executed as part of: ./workflow.md Work through each section systematically with the user, recording findings and impacts diff --git a/src/bmm/workflows/4-implementation/correct-course/workflow.md b/src/bmm/workflows/4-implementation/bmad-correct-course/workflow.md similarity index 95% rename from src/bmm/workflows/4-implementation/correct-course/workflow.md rename to src/bmm/workflows/4-implementation/bmad-correct-course/workflow.md index e95ec8432..1241101d0 100644 --- a/src/bmm/workflows/4-implementation/correct-course/workflow.md +++ b/src/bmm/workflows/4-implementation/bmad-correct-course/workflow.md @@ -1,8 +1,3 @@ ---- -name: correct-course -description: 'Manage significant changes during sprint execution. Use when the user says "correct course" or "propose sprint change"' ---- - # Correct Course - Sprint Change Management Workflow **Goal:** Manage significant changes during sprint execution by analyzing impact across all project artifacts and producing a structured Sprint Change Proposal. @@ -31,8 +26,6 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: ### Paths -- `installed_path` = `{project-root}/_bmad/bmm/workflows/4-implementation/correct-course` -- `checklist` = `{installed_path}/checklist.md` - `default_output_file` = `{planning_artifacts}/sprint-change-proposal-{date}.md` ### Input Files @@ -48,7 +41,7 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: ### Context -- `project_context` = `**/project-context.md` (load if exists) +- Load `**/project-context.md` if it exists --- @@ -82,7 +75,7 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: - Load {project_context} for coding standards and project-wide patterns (if exists) + Load **/project-context.md for coding standards and project-wide patterns (if exists) Confirm change trigger and gather user description of the issue Ask: "What specific issue or change has been identified that requires navigation?" Verify access to required project documents: @@ -101,7 +94,7 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: - Read fully and follow the systematic analysis from: {checklist} + Read fully and follow the systematic analysis from: checklist.md Work through each checklist section interactively with the user Record status for each checklist item: - [x] Done - Item completed successfully diff --git a/src/bmm/workflows/4-implementation/bmad-create-story/SKILL.md b/src/bmm/workflows/4-implementation/bmad-create-story/SKILL.md new file mode 100644 index 000000000..66119b062 --- /dev/null +++ b/src/bmm/workflows/4-implementation/bmad-create-story/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-create-story +description: 'Creates a dedicated story file with all the context the agent will need to implement it later. Use when the user says "create the next story" or "create story [story identifier]"' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/4-implementation/bmad-create-story/bmad-skill-manifest.yaml b/src/bmm/workflows/4-implementation/bmad-create-story/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/4-implementation/bmad-create-story/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/4-implementation/create-story/checklist.md b/src/bmm/workflows/4-implementation/bmad-create-story/checklist.md similarity index 95% rename from src/bmm/workflows/4-implementation/create-story/checklist.md rename to src/bmm/workflows/4-implementation/bmad-create-story/checklist.md index 7b8550e2d..e47cc0f49 100644 --- a/src/bmm/workflows/4-implementation/create-story/checklist.md +++ b/src/bmm/workflows/4-implementation/bmad-create-story/checklist.md @@ -33,10 +33,10 @@ This is a COMPETITION to create the **ULTIMATE story context** that makes LLM de ### **When Running from Create-Story Workflow:** -- The `{project-root}/_bmad/core/tasks/workflow.xml` framework will automatically: +- The workflow framework will automatically: - Load this checklist file - Load the newly created story file (`{story_file_path}`) - - Load workflow variables from `{installed_path}/workflow.md` + - Load workflow variables from `./workflow.md` - Execute the validation process ### **When Running in Fresh Context:** @@ -51,7 +51,7 @@ This is a COMPETITION to create the **ULTIMATE story context** that makes LLM de - **Story file**: The story file to review and improve - **Workflow variables**: From workflow.md (implementation_artifacts, epics_file, etc.) - **Source documents**: Epics, architecture, etc. (discovered or provided) -- **Validation framework**: `validate-workflow.xml` (handles checklist execution) +- **Validation framework**: The workflow's checklist execution system --- @@ -61,12 +61,11 @@ You will systematically re-do the entire story creation process, but with a crit ### **Step 1: Load and Understand the Target** -1. **Load the workflow configuration**: `{installed_path}/workflow.md` for variable inclusion +1. **Load the workflow configuration**: `./workflow.md` for variable inclusion 2. **Load the story file**: `{story_file_path}` (provided by user or discovered) -3. **Load validation framework**: `{project-root}/_bmad/core/tasks/workflow.xml` -4. **Extract metadata**: epic_num, story_num, story_key, story_title from story file -5. **Resolve all workflow variables**: implementation_artifacts, epics_file, architecture_file, etc. -6. **Understand current status**: What story implementation guidance is currently provided? +3. **Extract metadata**: epic_num, story_num, story_key, story_title from story file +4. **Resolve all workflow variables**: implementation_artifacts, epics_file, architecture_file, etc. +5. **Understand current status**: What story implementation guidance is currently provided? **Note:** If running in fresh context, user should provide the story file path being reviewed. If running from create-story workflow, the validation framework will automatically discover the checklist and story file. diff --git a/src/bmm/workflows/4-implementation/bmad-create-story/discover-inputs.md b/src/bmm/workflows/4-implementation/bmad-create-story/discover-inputs.md new file mode 100644 index 000000000..2c313db3d --- /dev/null +++ b/src/bmm/workflows/4-implementation/bmad-create-story/discover-inputs.md @@ -0,0 +1,88 @@ +# Discover Inputs Protocol + +**Objective:** Intelligently load project files (whole or sharded) based on the workflow's Input Files configuration. + +**Prerequisite:** Only execute this protocol if the workflow defines an Input Files section. If no input file patterns are configured, skip this entirely. + +--- + +## Step 1: Parse Input File Patterns + +- Read the Input Files table from the workflow configuration. +- For each input group (prd, architecture, epics, ux, etc.), note the **load strategy** if specified. + +## Step 2: Load Files Using Smart Strategies + +For each pattern in the Input Files table, work through the following substeps in order: + +### 2a: Try Sharded Documents First + +If a sharded pattern exists for this input, determine the load strategy (defaults to **FULL_LOAD** if not specified), then apply the matching strategy: + +#### FULL_LOAD Strategy + +Load ALL files in the sharded directory. Use this for PRD, Architecture, UX, brownfield docs, or whenever the full picture is needed. + +1. Use the glob pattern to find ALL `.md` files (e.g., `{planning_artifacts}/*architecture*/*.md`). +2. Load EVERY matching file completely. +3. Concatenate content in logical order: `index.md` first if it exists, then alphabetical. +4. Store the combined result in a variable named `{pattern_name_content}` (e.g., `{architecture_content}`). + +#### SELECTIVE_LOAD Strategy + +Load a specific shard using a template variable. Example: used for epics with `{{epic_num}}`. + +1. Check for template variables in the sharded pattern (e.g., `{{epic_num}}`). +2. If the variable is undefined, ask the user for the value OR infer it from context. +3. Resolve the template to a specific file path. +4. Load that specific file. +5. Store in variable: `{pattern_name_content}`. + +#### INDEX_GUIDED Strategy + +Load index.md, analyze the structure and description of each doc in the index, then intelligently load relevant docs. + +**DO NOT BE LAZY** -- use best judgment to load documents that might have relevant information, even if there is only a 5% chance of relevance. + +1. Load `index.md` from the sharded directory. +2. Parse the table of contents, links, and section headers. +3. Analyze the workflow's purpose and objective. +4. Identify which linked/referenced documents are likely relevant. + - *Example:* If the workflow is about authentication and the index shows "Auth Overview", "Payment Setup", "Deployment" -- load the auth docs, consider deployment docs, skip payment. +5. Load all identified relevant documents. +6. Store combined content in variable: `{pattern_name_content}`. + +**When in doubt, LOAD IT** -- context is valuable, and being thorough is better than missing critical info. + +--- + +After applying the matching strategy, mark the pattern as **RESOLVED** and move to the next pattern. + +### 2b: Try Whole Document if No Sharded Found + +If no sharded matches were found OR no sharded pattern exists for this input: + +1. Attempt a glob match on the "whole" pattern (e.g., `{planning_artifacts}/*prd*.md`). +2. If matches are found, load ALL matching files completely (no offset/limit). +3. Store content in variable: `{pattern_name_content}` (e.g., `{prd_content}`). +4. Mark pattern as **RESOLVED** and move to the next pattern. + +### 2c: Handle Not Found + +If no matches were found for either sharded or whole patterns: + +1. Set `{pattern_name_content}` to empty string. +2. Note in session: "No {pattern_name} files found" -- this is not an error, just unavailable. Offer the user a chance to provide the file. + +## Step 3: Report Discovery Results + +List all loaded content variables with file counts. Example: + +``` +OK Loaded {prd_content} from 5 sharded files: prd/index.md, prd/requirements.md, ... +OK Loaded {architecture_content} from 1 file: Architecture.md +OK Loaded {epics_content} from selective load: epics/epic-3.md +-- No ux_design files found +``` + +This gives the workflow transparency into what context is available. diff --git a/src/bmm/workflows/4-implementation/create-story/template.md b/src/bmm/workflows/4-implementation/bmad-create-story/template.md similarity index 100% rename from src/bmm/workflows/4-implementation/create-story/template.md rename to src/bmm/workflows/4-implementation/bmad-create-story/template.md diff --git a/src/bmm/workflows/4-implementation/create-story/workflow.md b/src/bmm/workflows/4-implementation/bmad-create-story/workflow.md similarity index 96% rename from src/bmm/workflows/4-implementation/create-story/workflow.md rename to src/bmm/workflows/4-implementation/bmad-create-story/workflow.md index 55556adb6..0acd8666b 100644 --- a/src/bmm/workflows/4-implementation/create-story/workflow.md +++ b/src/bmm/workflows/4-implementation/bmad-create-story/workflow.md @@ -1,8 +1,3 @@ ---- -name: create-story -description: 'Creates a dedicated story file with all the context the agent will need to implement it later. Use when the user says "create the next story" or "create story [story identifier]"' ---- - # Create Story Workflow **Goal:** Create a comprehensive story file that gives the dev agent everything needed for flawless implementation. @@ -32,9 +27,6 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: ### Paths -- `installed_path` = `{project-root}/_bmad/bmm/workflows/4-implementation/create-story` -- `template` = `{installed_path}/template.md` -- `validation` = `{installed_path}/checklist.md` - `sprint_status` = `{implementation_artifacts}/sprint-status.yaml` - `epics_file` = `{planning_artifacts}/epics.md` - `prd_file` = `{planning_artifacts}/prd.md` @@ -217,11 +209,10 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: - 🔬 EXHAUSTIVE ARTIFACT ANALYSIS - This is where you prevent future developer fuckups! + 🔬 EXHAUSTIVE ARTIFACT ANALYSIS - This is where you prevent future developer mistakes! - + Read fully and follow `./discover-inputs.md` to load all input files Available content: {epics_content}, {prd_content}, {architecture_content}, {ux_content}, {project_context} @@ -353,7 +344,7 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: - Validate the newly created story file {story_file} against {installed_path}/checklist.md and apply any required fixes before finalizing + Validate the newly created story file {default_output_file} against `./checklist.md` and apply any required fixes before finalizing Save story document unconditionally diff --git a/src/bmm/workflows/4-implementation/bmad-dev-story/SKILL.md b/src/bmm/workflows/4-implementation/bmad-dev-story/SKILL.md new file mode 100644 index 000000000..0eb505cc7 --- /dev/null +++ b/src/bmm/workflows/4-implementation/bmad-dev-story/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-dev-story +description: 'Execute story implementation following a context filled story spec file. Use when the user says "dev this story [story file]" or "implement the next story in the sprint plan"' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/4-implementation/bmad-dev-story/bmad-skill-manifest.yaml b/src/bmm/workflows/4-implementation/bmad-dev-story/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/4-implementation/bmad-dev-story/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/4-implementation/dev-story/checklist.md b/src/bmm/workflows/4-implementation/bmad-dev-story/checklist.md similarity index 100% rename from src/bmm/workflows/4-implementation/dev-story/checklist.md rename to src/bmm/workflows/4-implementation/bmad-dev-story/checklist.md diff --git a/src/bmm/workflows/4-implementation/dev-story/workflow.md b/src/bmm/workflows/4-implementation/bmad-dev-story/workflow.md similarity index 98% rename from src/bmm/workflows/4-implementation/dev-story/workflow.md rename to src/bmm/workflows/4-implementation/bmad-dev-story/workflow.md index c2200d398..4164479c3 100644 --- a/src/bmm/workflows/4-implementation/dev-story/workflow.md +++ b/src/bmm/workflows/4-implementation/bmad-dev-story/workflow.md @@ -1,8 +1,3 @@ ---- -name: dev-story -description: 'Execute story implementation following a context filled story spec file. Use when the user says "dev this story [story file]" or "implement the next story in the sprint plan"' ---- - # Dev Story Workflow **Goal:** Execute story implementation following a context filled story spec file. @@ -32,8 +27,6 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: ### Paths -- `installed_path` = `{project-root}/_bmad/bmm/workflows/4-implementation/dev-story` -- `validation` = `{installed_path}/checklist.md` - `story_file` = `` (explicit story path; auto-discovered if empty) - `sprint_status` = `{implementation_artifacts}/sprint-status.yaml` diff --git a/src/bmm/workflows/4-implementation/bmad-retrospective/SKILL.md b/src/bmm/workflows/4-implementation/bmad-retrospective/SKILL.md new file mode 100644 index 000000000..bdc2b6d2a --- /dev/null +++ b/src/bmm/workflows/4-implementation/bmad-retrospective/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-retrospective +description: 'Post-epic review to extract lessons and assess success. Use when the user says "run a retrospective" or "lets retro the epic [epic]"' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/4-implementation/bmad-retrospective/bmad-skill-manifest.yaml b/src/bmm/workflows/4-implementation/bmad-retrospective/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/4-implementation/bmad-retrospective/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/4-implementation/retrospective/workflow.md b/src/bmm/workflows/4-implementation/bmad-retrospective/workflow.md similarity index 99% rename from src/bmm/workflows/4-implementation/retrospective/workflow.md rename to src/bmm/workflows/4-implementation/bmad-retrospective/workflow.md index cbc502d8b..3f56f728c 100644 --- a/src/bmm/workflows/4-implementation/retrospective/workflow.md +++ b/src/bmm/workflows/4-implementation/bmad-retrospective/workflow.md @@ -1,8 +1,3 @@ ---- -name: retrospective -description: 'Post-epic review to extract lessons and assess success. Use when the user says "run a retrospective" or "lets retro the epic [epic]"' ---- - # Retrospective Workflow **Goal:** Post-epic review to extract lessons and assess success. @@ -42,7 +37,6 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: ### Paths -- `installed_path` = `{project-root}/_bmad/bmm/workflows/4-implementation/retrospective` - `sprint_status_file` = `{implementation_artifacts}/sprint-status.yaml` ### Input Files diff --git a/src/bmm/workflows/4-implementation/bmad-sprint-planning/SKILL.md b/src/bmm/workflows/4-implementation/bmad-sprint-planning/SKILL.md new file mode 100644 index 000000000..85783cf00 --- /dev/null +++ b/src/bmm/workflows/4-implementation/bmad-sprint-planning/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-sprint-planning +description: 'Generate sprint status tracking from epics. Use when the user says "run sprint planning" or "generate sprint plan"' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/4-implementation/bmad-sprint-planning/bmad-skill-manifest.yaml b/src/bmm/workflows/4-implementation/bmad-sprint-planning/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/4-implementation/bmad-sprint-planning/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/4-implementation/sprint-planning/checklist.md b/src/bmm/workflows/4-implementation/bmad-sprint-planning/checklist.md similarity index 100% rename from src/bmm/workflows/4-implementation/sprint-planning/checklist.md rename to src/bmm/workflows/4-implementation/bmad-sprint-planning/checklist.md diff --git a/src/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml b/src/bmm/workflows/4-implementation/bmad-sprint-planning/sprint-status-template.yaml similarity index 100% rename from src/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml rename to src/bmm/workflows/4-implementation/bmad-sprint-planning/sprint-status-template.yaml diff --git a/src/bmm/workflows/4-implementation/sprint-planning/workflow.md b/src/bmm/workflows/4-implementation/bmad-sprint-planning/workflow.md similarity index 96% rename from src/bmm/workflows/4-implementation/sprint-planning/workflow.md rename to src/bmm/workflows/4-implementation/bmad-sprint-planning/workflow.md index aba449c01..211e00127 100644 --- a/src/bmm/workflows/4-implementation/sprint-planning/workflow.md +++ b/src/bmm/workflows/4-implementation/bmad-sprint-planning/workflow.md @@ -1,8 +1,3 @@ ---- -name: sprint-planning -description: 'Generate sprint status tracking from epics. Use when the user says "run sprint planning" or "generate sprint plan"' ---- - # Sprint Planning Workflow **Goal:** Generate sprint status tracking from epics, detecting current story statuses and building a complete sprint-status.yaml file. @@ -26,9 +21,6 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: ### Paths -- `installed_path` = `{project-root}/_bmad/bmm/workflows/4-implementation/sprint-planning` -- `template` = `{installed_path}/sprint-status-template.yaml` -- `checklist` = `{installed_path}/checklist.md` - `tracking_system` = `file-system` - `project_key` = `NOKEY` - `story_location` = `{implementation_artifacts}` diff --git a/src/bmm/workflows/4-implementation/bmad-sprint-status/SKILL.md b/src/bmm/workflows/4-implementation/bmad-sprint-status/SKILL.md new file mode 100644 index 000000000..3a15968e8 --- /dev/null +++ b/src/bmm/workflows/4-implementation/bmad-sprint-status/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-sprint-status +description: 'Summarize sprint status and surface risks. Use when the user says "check sprint status" or "show sprint status"' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/4-implementation/bmad-sprint-status/bmad-skill-manifest.yaml b/src/bmm/workflows/4-implementation/bmad-sprint-status/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/4-implementation/bmad-sprint-status/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/4-implementation/sprint-status/workflow.md b/src/bmm/workflows/4-implementation/bmad-sprint-status/workflow.md similarity index 97% rename from src/bmm/workflows/4-implementation/sprint-status/workflow.md rename to src/bmm/workflows/4-implementation/bmad-sprint-status/workflow.md index aeed0ab23..1def1c8f3 100644 --- a/src/bmm/workflows/4-implementation/sprint-status/workflow.md +++ b/src/bmm/workflows/4-implementation/bmad-sprint-status/workflow.md @@ -1,8 +1,3 @@ ---- -name: sprint-status -description: 'Summarize sprint status and surface risks. Use when the user says "check sprint status" or "show sprint status"' ---- - # Sprint Status Workflow **Goal:** Summarize sprint status, surface risks, and recommend the next workflow action. @@ -25,7 +20,6 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: ### Paths -- `installed_path` = `{project-root}/_bmad/bmm/workflows/4-implementation/sprint-status` - `sprint_status_file` = `{implementation_artifacts}/sprint-status.yaml` ### Input Files diff --git a/src/bmm/workflows/4-implementation/code-review/bmad-skill-manifest.yaml b/src/bmm/workflows/4-implementation/code-review/bmad-skill-manifest.yaml deleted file mode 100644 index 6b1589a4a..000000000 --- a/src/bmm/workflows/4-implementation/code-review/bmad-skill-manifest.yaml +++ /dev/null @@ -1,3 +0,0 @@ -canonicalId: bmad-code-review -type: workflow -description: "Perform adversarial code review finding specific issues" diff --git a/src/bmm/workflows/4-implementation/code-review/checklist.md b/src/bmm/workflows/4-implementation/code-review/checklist.md deleted file mode 100644 index f213a6b96..000000000 --- a/src/bmm/workflows/4-implementation/code-review/checklist.md +++ /dev/null @@ -1,23 +0,0 @@ -# Senior Developer Review - Validation Checklist - -- [ ] Story file loaded from `{{story_path}}` -- [ ] Story Status verified as reviewable (review) -- [ ] Epic and Story IDs resolved ({{epic_num}}.{{story_num}}) -- [ ] Story Context located or warning recorded -- [ ] Epic Tech Spec located or warning recorded -- [ ] Architecture/standards docs loaded (as available) -- [ ] Tech stack detected and documented -- [ ] MCP doc search performed (or web fallback) and references captured -- [ ] Acceptance Criteria cross-checked against implementation -- [ ] File List reviewed and validated for completeness -- [ ] Tests identified and mapped to ACs; gaps noted -- [ ] Code quality review performed on changed files -- [ ] Security review performed on changed files and dependencies -- [ ] Outcome decided (Approve/Changes Requested/Blocked) -- [ ] Review notes appended under "Senior Developer Review (AI)" -- [ ] Change Log updated with review entry -- [ ] Status updated according to settings (if enabled) -- [ ] Sprint status synced (if sprint tracking enabled) -- [ ] Story saved successfully - -_Reviewer: {{user_name}} on {{date}}_ diff --git a/src/bmm/workflows/4-implementation/code-review/workflow.md b/src/bmm/workflows/4-implementation/code-review/workflow.md deleted file mode 100644 index fbfdf4cb2..000000000 --- a/src/bmm/workflows/4-implementation/code-review/workflow.md +++ /dev/null @@ -1,271 +0,0 @@ ---- -name: code-review -description: 'Perform adversarial code review finding specific issues. Use when the user says "run code review" or "review this code"' ---- - -# Code Review Workflow - -**Goal:** Perform adversarial code review finding specific issues. - -**Your Role:** Adversarial Code Reviewer. -- YOU ARE AN ADVERSARIAL CODE REVIEWER - Find what's wrong or missing! -- Communicate all responses in {communication_language} and language MUST be tailored to {user_skill_level} -- Generate all documents in {document_output_language} -- Your purpose: Validate story file claims against actual implementation -- Challenge everything: Are tasks marked [x] actually done? Are ACs really implemented? -- Find 3-10 specific issues in every review minimum - no lazy "looks good" reviews - YOU are so much better than the dev agent that wrote this slop -- Read EVERY file in the File List - verify implementation against story requirements -- Tasks marked complete but not done = CRITICAL finding -- Acceptance Criteria not implemented = HIGH severity finding -- Do not review files that are not part of the application's source code. Always exclude the `_bmad/` and `_bmad-output/` folders from the review. Always exclude IDE and CLI configuration folders like `.cursor/` and `.windsurf/` and `.claude/` - ---- - -## INITIALIZATION - -### Configuration Loading - -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: - -- `project_name`, `user_name` -- `communication_language`, `document_output_language` -- `user_skill_level` -- `planning_artifacts`, `implementation_artifacts` -- `date` as system-generated current datetime - -### Paths - -- `installed_path` = `{project-root}/_bmad/bmm/workflows/4-implementation/code-review` -- `sprint_status` = `{implementation_artifacts}/sprint-status.yaml` -- `validation` = `{installed_path}/checklist.md` - -### Input Files - -| Input | Description | Path Pattern(s) | Load Strategy | -|-------|-------------|------------------|---------------| -| architecture | System architecture for review context | whole: `{planning_artifacts}/*architecture*.md`, sharded: `{planning_artifacts}/*architecture*/*.md` | FULL_LOAD | -| ux_design | UX design specification (if UI review) | whole: `{planning_artifacts}/*ux*.md`, sharded: `{planning_artifacts}/*ux*/*.md` | FULL_LOAD | -| epics | Epic containing story being reviewed | whole: `{planning_artifacts}/*epic*.md`, sharded_index: `{planning_artifacts}/*epic*/index.md`, sharded_single: `{planning_artifacts}/*epic*/epic-{{epic_num}}.md` | SELECTIVE_LOAD | - -### Context - -- `project_context` = `**/project-context.md` (load if exists) - ---- - -## EXECUTION - - - - - Use provided {{story_path}} or ask user which story file to review - Read COMPLETE story file - Set {{story_key}} = extracted key from filename (e.g., "1-2-user-authentication.md" → "1-2-user-authentication") or story - metadata - Parse sections: Story, Acceptance Criteria, Tasks/Subtasks, Dev Agent Record → File List, Change Log - - - Check if git repository detected in current directory - - Run `git status --porcelain` to find uncommitted changes - Run `git diff --name-only` to see modified files - Run `git diff --cached --name-only` to see staged files - Compile list of actually changed files from git output - - - - Compare story's Dev Agent Record → File List with actual git changes - Note discrepancies: - - Files in git but not in story File List - - Files in story File List but no git changes - - Missing documentation of what was actually changed - - - - Load {project_context} for coding standards (if exists) - - - - Extract ALL Acceptance Criteria from story - Extract ALL Tasks/Subtasks with completion status ([x] vs [ ]) - From Dev Agent Record → File List, compile list of claimed changes - - Create review plan: - 1. **AC Validation**: Verify each AC is actually implemented - 2. **Task Audit**: Verify each [x] task is really done - 3. **Code Quality**: Security, performance, maintainability - 4. **Test Quality**: Real tests vs placeholder bullshit - - - - - VALIDATE EVERY CLAIM - Check git reality vs story claims - - - Review git vs story File List discrepancies: - 1. **Files changed but not in story File List** → MEDIUM finding (incomplete documentation) - 2. **Story lists files but no git changes** → HIGH finding (false claims) - 3. **Uncommitted changes not documented** → MEDIUM finding (transparency issue) - - - - Create comprehensive review file list from story File List and git changes - - - For EACH Acceptance Criterion: - 1. Read the AC requirement - 2. Search implementation files for evidence - 3. Determine: IMPLEMENTED, PARTIAL, or MISSING - 4. If MISSING/PARTIAL → HIGH SEVERITY finding - - - - For EACH task marked [x]: - 1. Read the task description - 2. Search files for evidence it was actually done - 3. **CRITICAL**: If marked [x] but NOT DONE → CRITICAL finding - 4. Record specific proof (file:line) - - - - For EACH file in comprehensive review list: - 1. **Security**: Look for injection risks, missing validation, auth issues - 2. **Performance**: N+1 queries, inefficient loops, missing caching - 3. **Error Handling**: Missing try/catch, poor error messages - 4. **Code Quality**: Complex functions, magic numbers, poor naming - 5. **Test Quality**: Are tests real assertions or placeholders? - - - - NOT LOOKING HARD ENOUGH - Find more problems! - Re-examine code for: - - Edge cases and null handling - - Architecture violations - - Documentation gaps - - Integration issues - - Dependency problems - - Git commit message quality (if applicable) - - Find at least 3 more specific, actionable issues - - - - - Categorize findings: HIGH (must fix), MEDIUM (should fix), LOW (nice to fix) - Set {{fixed_count}} = 0 - Set {{action_count}} = 0 - - **🔥 CODE REVIEW FINDINGS, {user_name}!** - - **Story:** {{story_file}} - **Git vs Story Discrepancies:** {{git_discrepancy_count}} found - **Issues Found:** {{high_count}} High, {{medium_count}} Medium, {{low_count}} Low - - ## 🔴 CRITICAL ISSUES - - Tasks marked [x] but not actually implemented - - Acceptance Criteria not implemented - - Story claims files changed but no git evidence - - Security vulnerabilities - - ## 🟡 MEDIUM ISSUES - - Files changed but not documented in story File List - - Uncommitted changes not tracked - - Performance problems - - Poor test coverage/quality - - Code maintainability issues - - ## 🟢 LOW ISSUES - - Code style improvements - - Documentation gaps - - Git commit message quality - - - What should I do with these issues? - - 1. **Fix them automatically** - I'll update the code and tests - 2. **Create action items** - Add to story Tasks/Subtasks for later - 3. **Show me details** - Deep dive into specific issues - - Choose [1], [2], or specify which issue to examine: - - - Fix all HIGH and MEDIUM issues in the code - Add/update tests as needed - Update File List in story if files changed - Update story Dev Agent Record with fixes applied - Set {{fixed_count}} = number of HIGH and MEDIUM issues fixed - Set {{action_count}} = 0 - - - - Add "Review Follow-ups (AI)" subsection to Tasks/Subtasks - For each issue: `- [ ] [AI-Review][Severity] Description [file:line]` - Set {{action_count}} = number of action items created - Set {{fixed_count}} = 0 - - - - Show detailed explanation with code examples - Return to fix decision - - - - - - - Set {{new_status}} = "done" - Update story Status field to "done" - - - Set {{new_status}} = "in-progress" - Update story Status field to "in-progress" - - Save story file - - - - Set {{current_sprint_status}} = "enabled" - - - Set {{current_sprint_status}} = "no-sprint-tracking" - - - - - Load the FULL file: {sprint_status} - Find development_status key matching {{story_key}} - - - Update development_status[{{story_key}}] = "done" - Update last_updated field to current date - Save file, preserving ALL comments and structure - ✅ Sprint status synced: {{story_key}} → done - - - - Update development_status[{{story_key}}] = "in-progress" - Update last_updated field to current date - Save file, preserving ALL comments and structure - 🔄 Sprint status synced: {{story_key}} → in-progress - - - - ⚠️ Story file updated, but sprint-status sync failed: {{story_key}} not found in sprint-status.yaml - - - - - ℹ️ Story status updated (no sprint tracking configured) - - - **✅ Review Complete!** - - **Story Status:** {{new_status}} - **Issues Fixed:** {{fixed_count}} - **Action Items Created:** {{action_count}} - - {{#if new_status == "done"}}Code review complete!{{else}}Address the action items and continue development.{{/if}} - - - - diff --git a/src/bmm/workflows/4-implementation/correct-course/bmad-skill-manifest.yaml b/src/bmm/workflows/4-implementation/correct-course/bmad-skill-manifest.yaml deleted file mode 100644 index 6a95bd4a7..000000000 --- a/src/bmm/workflows/4-implementation/correct-course/bmad-skill-manifest.yaml +++ /dev/null @@ -1,3 +0,0 @@ -canonicalId: bmad-correct-course -type: workflow -description: "Manage significant changes during sprint execution" diff --git a/src/bmm/workflows/4-implementation/create-story/bmad-skill-manifest.yaml b/src/bmm/workflows/4-implementation/create-story/bmad-skill-manifest.yaml deleted file mode 100644 index 13f0beb24..000000000 --- a/src/bmm/workflows/4-implementation/create-story/bmad-skill-manifest.yaml +++ /dev/null @@ -1,3 +0,0 @@ -canonicalId: bmad-create-story -type: workflow -description: "Creates a dedicated story file with all the context needed for implementation" diff --git a/src/bmm/workflows/4-implementation/dev-story/bmad-skill-manifest.yaml b/src/bmm/workflows/4-implementation/dev-story/bmad-skill-manifest.yaml deleted file mode 100644 index 2a79cef01..000000000 --- a/src/bmm/workflows/4-implementation/dev-story/bmad-skill-manifest.yaml +++ /dev/null @@ -1,3 +0,0 @@ -canonicalId: bmad-dev-story -type: workflow -description: "Execute story implementation following a context-filled story spec file" diff --git a/src/bmm/workflows/4-implementation/dev-story/instructions.xml b/src/bmm/workflows/4-implementation/dev-story/instructions.xml deleted file mode 100644 index c39c35f2e..000000000 --- a/src/bmm/workflows/4-implementation/dev-story/instructions.xml +++ /dev/null @@ -1,412 +0,0 @@ - - The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.xml - You MUST have already loaded and processed: {installed_path}/workflow.yaml - 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 - 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 6 decides completion. - User skill level ({user_skill_level}) affects conversation style ONLY, not code updates. - - - - Use {{story_path}} directly - Read COMPLETE story file - Extract story_key from filename or metadata - - - - - - MUST read COMPLETE sprint-status.yaml file from start to end to preserve order - Load the FULL file: {{sprint_status}} - Read ALL lines from beginning to end - do not skip any content - Parse the development_status section completely to understand story order - - Find the FIRST story (by reading in order from top to bottom) where: - - Key matches pattern: number-number-name (e.g., "1-2-user-auth") - - NOT an epic key (epic-X) or retrospective (epic-X-retrospective) - - Status value equals "ready-for-dev" - - - - 📋 No ready-for-dev stories found in sprint-status.yaml - - **Current Sprint Status:** {{sprint_status_summary}} - - **What would you like to do?** - 1. Run `create-story` to create next story from epics with comprehensive context - 2. Run `*validate-create-story` to improve existing stories before development (recommended quality check) - 3. Specify a particular story file to develop (provide full path) - 4. Check {{sprint_status}} file to see current sprint status - - 💡 **Tip:** Stories in `ready-for-dev` may not have been validated. Consider running `validate-create-story` first for a quality - check. - - Choose option [1], [2], [3], or [4], or specify story file path: - - - HALT - Run create-story to create next story - - - - HALT - Run validate-create-story to improve existing stories - - - - Provide the story file path to develop: - Store user-provided story path as {{story_path}} - - - - - Loading {{sprint_status}} for detailed status review... - Display detailed sprint status analysis - HALT - User can review sprint status and provide story path - - - - Store user-provided story path as {{story_path}} - - - - - - - - Search {implementation_artifacts} for stories directly - Find stories with "ready-for-dev" status in files - Look for story files matching pattern: *-*-*.md - Read each candidate story file to check Status section - - - 📋 No ready-for-dev stories found - - **Available Options:** - 1. Run `create-story` to create next story from epics with comprehensive context - 2. Run `*validate-create-story` to improve existing stories - 3. Specify which story to develop - - What would you like to do? Choose option [1], [2], or [3]: - - - HALT - Run create-story to create next story - - - - HALT - Run validate-create-story to improve existing stories - - - - It's unclear what story you want developed. Please provide the full path to the story file: - Store user-provided story path as {{story_path}} - Continue with provided story file - - - - - Use discovered story file and extract story_key - - - - Store the found story_key (e.g., "1-2-user-authentication") for later status updates - Find matching story file in {implementation_artifacts} using story_key pattern: {{story_key}}.md - Read COMPLETE story file from discovered path - - - - Parse sections: Story, Acceptance Criteria, Tasks/Subtasks, Dev Notes, Dev Agent Record, File List, Change Log, Status - - Load comprehensive context from story file's Dev Notes section - Extract developer guidance from Dev Notes: architecture requirements, previous learnings, technical specifications - Use enhanced story context to inform implementation decisions and approaches - - Identify first incomplete task (unchecked [ ]) in Tasks/Subtasks - - - Completion sequence - - HALT: "Cannot develop story without access to story file" - ASK user to clarify or HALT - - - - Load all available context to inform implementation - - Load {project_context} for coding standards and project-wide patterns (if exists) - Parse sections: Story, Acceptance Criteria, Tasks/Subtasks, Dev Notes, Dev Agent Record, File List, Change Log, Status - Load comprehensive context from story file's Dev Notes section - Extract developer guidance from Dev Notes: architecture requirements, previous learnings, technical specifications - Use enhanced story context to inform implementation decisions and approaches - ✅ **Context Loaded** - Story and project context available for implementation - - - - - Determine if this is a fresh start or continuation after code review - - Check if "Senior Developer Review (AI)" section exists in the story file - Check if "Review Follow-ups (AI)" subsection exists under Tasks/Subtasks - - - Set review_continuation = true - Extract from "Senior Developer Review (AI)" section: - - Review outcome (Approve/Changes Requested/Blocked) - - Review date - - Total action items with checkboxes (count checked vs unchecked) - - Severity breakdown (High/Med/Low counts) - - Count unchecked [ ] review follow-up tasks in "Review Follow-ups (AI)" subsection - Store list of unchecked review items as {{pending_review_items}} - - ⏯️ **Resuming Story After Code Review** ({{review_date}}) - - **Review Outcome:** {{review_outcome}} - **Action Items:** {{unchecked_review_count}} remaining to address - **Priorities:** {{high_count}} High, {{med_count}} Medium, {{low_count}} Low - - **Strategy:** Will prioritize review follow-up tasks (marked [AI-Review]) before continuing with regular tasks. - - - - - Set review_continuation = false - Set {{pending_review_items}} = empty - - 🚀 **Starting Fresh Implementation** - - Story: {{story_key}} - Story Status: {{current_status}} - First incomplete task: {{first_task_description}} - - - - - - - Load the FULL file: {{sprint_status}} - Read all development_status entries to find {{story_key}} - Get current status value for development_status[{{story_key}}] - - - 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 - - - - - ⏯️ 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... - - - - Store {{current_sprint_status}} for later use - - - - ℹ️ No sprint status file exists - story progress will be tracked in story file only - Set {{current_sprint_status}} = "no-sprint-tracking" - - - - - FOLLOW THE STORY FILE TASKS/SUBTASKS SEQUENCE EXACTLY AS WRITTEN - NO DEVIATION - - Review the current task/subtask from the story file - this is your authoritative implementation guide - Plan implementation following red-green-refactor cycle - - - Write FAILING tests first for the task/subtask functionality - Confirm tests fail before implementation - this validates test correctness - - - Implement MINIMAL code to make tests pass - Run tests to confirm they now pass - Handle error conditions and edge cases as specified in task/subtask - - - Improve code structure while keeping tests green - Ensure code follows architecture patterns and coding standards from Dev Notes - - Document technical approach and decisions in Dev Agent Record → Implementation Plan - - HALT: "Additional dependencies need user approval" - HALT and request guidance - HALT: "Cannot proceed without necessary configuration files" - - NEVER implement anything not mapped to a specific task/subtask in the story file - NEVER proceed to next task until current task/subtask is complete AND tests pass - Execute continuously without pausing until all tasks/subtasks are complete or explicit HALT condition - Do NOT propose to pause for review until Step 9 completion gates are satisfied - - - - Create unit tests for business logic and core functionality introduced/changed by the task - Add integration tests for component interactions specified in story requirements - Include end-to-end tests for critical user flows when story requirements demand them - Cover edge cases and error handling scenarios identified in story Dev Notes - - - - Determine how to run tests for this repo (infer test framework from project structure) - Run all existing tests to ensure no regressions - Run the new tests to verify implementation correctness - Run linting and code quality checks if configured in project - Validate implementation meets ALL story acceptance criteria; enforce quantitative thresholds explicitly - STOP and fix before continuing - identify breaking changes immediately - STOP and fix before continuing - ensure implementation correctness - - - - NEVER mark a task complete unless ALL conditions are met - NO LYING OR CHEATING - - - Verify ALL tests for this task/subtask ACTUALLY EXIST and PASS 100% - Confirm implementation matches EXACTLY what the task/subtask specifies - no extra features - Validate that ALL acceptance criteria related to this task are satisfied - Run full test suite to ensure NO regressions introduced - - - - Extract review item details (severity, description, related AC/file) - Add to resolution tracking list: {{resolved_review_items}} - - - Mark task checkbox [x] in "Tasks/Subtasks → Review Follow-ups (AI)" section - - - Find matching action item in "Senior Developer Review (AI) → Action Items" section by matching description - Mark that action item checkbox [x] as resolved - - Add to Dev Agent Record → Completion Notes: "✅ Resolved review finding [{{severity}}]: {{description}}" - - - - - ONLY THEN mark the task (and subtasks) checkbox with [x] - Update File List section with ALL new, modified, or deleted files (paths relative to repo root) - Add completion notes to Dev Agent Record summarizing what was ACTUALLY implemented and tested - - - - DO NOT mark task complete - fix issues first - HALT if unable to fix validation failures - - - - Count total resolved review items in this session - Add Change Log entry: "Addressed code review findings - {{resolved_count}} items resolved (Date: {{date}})" - - - Save the story file - Determine if more incomplete tasks remain - - Next task - - - Completion - - - - - Verify ALL tasks and subtasks are marked [x] (re-scan the story document now) - Run the full regression suite (do not skip) - Confirm File List includes every changed file - Execute enhanced definition-of-done validation - Update the story Status to: "review" - - - Validate definition-of-done checklist with essential requirements: - - All tasks/subtasks marked complete with [x] - - Implementation satisfies every Acceptance Criterion - - Unit tests for core functionality added/updated - - Integration tests for component interactions added when required - - End-to-end tests for critical flows added when story demands them - - All tests pass (no regressions, new tests successful) - - Code quality checks pass (linting, static analysis if configured) - - File List includes every new/modified/deleted file (relative paths) - - Dev Agent Record contains implementation notes - - Change Log includes summary of changes - - Only permitted story sections were modified - - - - - Load the FULL file: {sprint_status} - Find development_status key matching {{story_key}} - Verify current status is "in-progress" (expected previous state) - Update development_status[{{story_key}}] = "review" - Update last_updated field to current date - Save file, preserving ALL comments and structure including STATUS DEFINITIONS - ✅ Story status updated to "review" in sprint-status.yaml - - - - ℹ️ Story status updated to "review" in story file (no sprint tracking configured) - - - - ⚠️ Story file updated, but sprint-status update failed: {{story_key}} not found - - Story status is set to "review" in file, but sprint-status.yaml may be out of sync. - - - - - HALT - Complete remaining tasks before marking ready for review - HALT - Fix regression issues before completing - HALT - Update File List with all changed files - HALT - Address DoD failures before completing - - - - Execute the enhanced definition-of-done checklist using the validation framework - Prepare a concise summary in Dev Agent Record → Completion Notes - - Communicate to {user_name} that story implementation is complete and ready for review - Summarize key accomplishments: story ID, story key, title, key changes made, tests added, files modified - Provide the story file path and current status (now "review") - - Based on {user_skill_level}, ask if user needs any explanations about: - - What was implemented and how it works - - Why certain technical decisions were made - - How to test or verify the changes - - Any patterns, libraries, or approaches used - - Anything else they'd like clarified - - - - Provide clear, contextual explanations tailored to {user_skill_level} - Use examples and references to specific code when helpful - - - Once explanations are complete (or user indicates no questions), suggest logical next steps - Recommended next steps (flexible based on project setup): - - Review the implemented story and test the changes - - Verify all acceptance criteria are met - - Ensure deployment readiness if applicable - - Run `code-review` workflow for peer review - - Optional: If Test Architect module installed, run `/bmad:tea:automate` to expand guardrail tests - - - 💡 **Tip:** For best results, run `code-review` using a **different** LLM than the one that implemented this story. - - Suggest checking {sprint_status} to see project progress - - Remain flexible - allow user to choose their own path or ask for other assistance - - - diff --git a/src/bmm/workflows/4-implementation/retrospective/bmad-skill-manifest.yaml b/src/bmm/workflows/4-implementation/retrospective/bmad-skill-manifest.yaml deleted file mode 100644 index 51a5648ef..000000000 --- a/src/bmm/workflows/4-implementation/retrospective/bmad-skill-manifest.yaml +++ /dev/null @@ -1,3 +0,0 @@ -canonicalId: bmad-retrospective -type: workflow -description: "Post-epic review to extract lessons and assess success" diff --git a/src/bmm/workflows/4-implementation/sprint-planning/bmad-skill-manifest.yaml b/src/bmm/workflows/4-implementation/sprint-planning/bmad-skill-manifest.yaml deleted file mode 100644 index 2c02512ee..000000000 --- a/src/bmm/workflows/4-implementation/sprint-planning/bmad-skill-manifest.yaml +++ /dev/null @@ -1,3 +0,0 @@ -canonicalId: bmad-sprint-planning -type: workflow -description: "Generate sprint status tracking from epics" diff --git a/src/bmm/workflows/4-implementation/sprint-status/bmad-skill-manifest.yaml b/src/bmm/workflows/4-implementation/sprint-status/bmad-skill-manifest.yaml deleted file mode 100644 index 437b880e9..000000000 --- a/src/bmm/workflows/4-implementation/sprint-status/bmad-skill-manifest.yaml +++ /dev/null @@ -1,3 +0,0 @@ -canonicalId: bmad-sprint-status -type: workflow -description: "Summarize sprint status and surface risks" diff --git a/src/bmm/workflows/bmad-document-project/SKILL.md b/src/bmm/workflows/bmad-document-project/SKILL.md new file mode 100644 index 000000000..09422e159 --- /dev/null +++ b/src/bmm/workflows/bmad-document-project/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-document-project +description: 'Document brownfield projects for AI context. Use when the user says "document this project" or "generate project docs"' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/bmad-document-project/bmad-skill-manifest.yaml b/src/bmm/workflows/bmad-document-project/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/bmad-document-project/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/document-project/checklist.md b/src/bmm/workflows/bmad-document-project/checklist.md similarity index 100% rename from src/bmm/workflows/document-project/checklist.md rename to src/bmm/workflows/bmad-document-project/checklist.md diff --git a/src/bmm/workflows/document-project/documentation-requirements.csv b/src/bmm/workflows/bmad-document-project/documentation-requirements.csv similarity index 100% rename from src/bmm/workflows/document-project/documentation-requirements.csv rename to src/bmm/workflows/bmad-document-project/documentation-requirements.csv diff --git a/src/bmm/workflows/document-project/instructions.md b/src/bmm/workflows/bmad-document-project/instructions.md similarity index 89% rename from src/bmm/workflows/document-project/instructions.md rename to src/bmm/workflows/bmad-document-project/instructions.md index 64f652247..4a57b8843 100644 --- a/src/bmm/workflows/document-project/instructions.md +++ b/src/bmm/workflows/bmad-document-project/instructions.md @@ -40,18 +40,18 @@ Load cached project_type_id(s) from state file CONDITIONAL CSV LOADING FOR RESUME: - For each cached project_type_id, load ONLY the corresponding row from: {documentation_requirements_csv} + For each cached project_type_id, load ONLY the corresponding row from: ./documentation-requirements.csv Skip loading project-types.csv and architecture_registry.csv (not needed on resume) Store loaded doc requirements for use in remaining steps Display: "Resuming {{workflow_mode}} from {{current_step}} with cached project type(s): {{cached_project_types}}" - Read fully and follow: {installed_path}/workflows/deep-dive-workflow.md with resume context + Read fully and follow: ./workflows/deep-dive-workflow.md with resume context - Read fully and follow: {installed_path}/workflows/full-scan-workflow.md with resume context + Read fully and follow: ./workflows/full-scan-workflow.md with resume context @@ -98,7 +98,7 @@ Your choice [1/2/3]: Set workflow_mode = "full_rescan" Display: "Starting full project rescan..." - Read fully and follow: {installed_path}/workflows/full-scan-workflow.md + Read fully and follow: ./workflows/full-scan-workflow.md After sub-workflow completes, continue to Step 4 @@ -106,7 +106,7 @@ Your choice [1/2/3]: Set workflow_mode = "deep_dive" Set scan_level = "exhaustive" Display: "Starting deep-dive documentation mode..." - Read fully and follow: {installed_path}/workflows/deep-dive-workflow.md + Read fully and follow: ./workflows/deep-dive-workflow.md After sub-workflow completes, continue to Step 4 @@ -119,7 +119,7 @@ Your choice [1/2/3]: Set workflow_mode = "initial_scan" Display: "No existing documentation found. Starting initial project scan..." - Read fully and follow: {installed_path}/workflows/full-scan-workflow.md + Read fully and follow: ./workflows/full-scan-workflow.md After sub-workflow completes, continue to Step 4 diff --git a/src/bmm/workflows/document-project/templates/deep-dive-template.md b/src/bmm/workflows/bmad-document-project/templates/deep-dive-template.md similarity index 100% rename from src/bmm/workflows/document-project/templates/deep-dive-template.md rename to src/bmm/workflows/bmad-document-project/templates/deep-dive-template.md diff --git a/src/bmm/workflows/document-project/templates/index-template.md b/src/bmm/workflows/bmad-document-project/templates/index-template.md similarity index 100% rename from src/bmm/workflows/document-project/templates/index-template.md rename to src/bmm/workflows/bmad-document-project/templates/index-template.md diff --git a/src/bmm/workflows/document-project/templates/project-overview-template.md b/src/bmm/workflows/bmad-document-project/templates/project-overview-template.md similarity index 100% rename from src/bmm/workflows/document-project/templates/project-overview-template.md rename to src/bmm/workflows/bmad-document-project/templates/project-overview-template.md diff --git a/src/bmm/workflows/document-project/templates/project-scan-report-schema.json b/src/bmm/workflows/bmad-document-project/templates/project-scan-report-schema.json similarity index 100% rename from src/bmm/workflows/document-project/templates/project-scan-report-schema.json rename to src/bmm/workflows/bmad-document-project/templates/project-scan-report-schema.json diff --git a/src/bmm/workflows/document-project/templates/source-tree-template.md b/src/bmm/workflows/bmad-document-project/templates/source-tree-template.md similarity index 100% rename from src/bmm/workflows/document-project/templates/source-tree-template.md rename to src/bmm/workflows/bmad-document-project/templates/source-tree-template.md diff --git a/src/bmm/workflows/bmad-document-project/workflow.md b/src/bmm/workflows/bmad-document-project/workflow.md new file mode 100644 index 000000000..344873050 --- /dev/null +++ b/src/bmm/workflows/bmad-document-project/workflow.md @@ -0,0 +1,27 @@ +# Document Project Workflow + +**Goal:** Document brownfield projects for AI context. + +**Your Role:** Project documentation specialist. +- Communicate all responses in {communication_language} + +--- + +## INITIALIZATION + +### Configuration Loading + +Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: + +- `project_knowledge` +- `user_name` +- `communication_language` +- `document_output_language` +- `user_skill_level` +- `date` as system-generated current datetime + +--- + +## EXECUTION + +Read fully and follow: `./instructions.md` diff --git a/src/bmm/workflows/document-project/workflows/deep-dive-instructions.md b/src/bmm/workflows/bmad-document-project/workflows/deep-dive-instructions.md similarity index 97% rename from src/bmm/workflows/document-project/workflows/deep-dive-instructions.md rename to src/bmm/workflows/bmad-document-project/workflows/deep-dive-instructions.md index 396a2e43a..6a6d00e6c 100644 --- a/src/bmm/workflows/document-project/workflows/deep-dive-instructions.md +++ b/src/bmm/workflows/bmad-document-project/workflows/deep-dive-instructions.md @@ -4,6 +4,8 @@ This workflow performs exhaustive deep-dive documentation of specific areas Handles: deep_dive mode only +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}` Deep-dive mode requires literal full-file review. Sampling, guessing, or relying solely on tooling output is FORBIDDEN. @@ -191,7 +193,7 @@ This will read EVERY file in this area. Proceed? [y/n] - Combine recommended test commands into {{suggested_tests}} -Load complete deep-dive template from: {installed_path}/templates/deep-dive-template.md +Load complete deep-dive template from: ../templates/deep-dive-template.md Fill template with all collected data from steps 13b-13d Write filled template to: {project_knowledge}/deep-dive-{{sanitized_target_name}}.md Validate deep-dive document completeness diff --git a/src/bmm/workflows/document-project/workflows/deep-dive-workflow.md b/src/bmm/workflows/bmad-document-project/workflows/deep-dive-workflow.md similarity index 55% rename from src/bmm/workflows/document-project/workflows/deep-dive-workflow.md rename to src/bmm/workflows/bmad-document-project/workflows/deep-dive-workflow.md index fea471e6d..c55f036a7 100644 --- a/src/bmm/workflows/document-project/workflows/deep-dive-workflow.md +++ b/src/bmm/workflows/bmad-document-project/workflows/deep-dive-workflow.md @@ -1,8 +1,3 @@ ---- -name: document-project-deep-dive -description: 'Exhaustive deep-dive documentation of specific project areas' ---- - # Deep-Dive Documentation Sub-Workflow **Goal:** Exhaustive deep-dive documentation of specific project areas. @@ -20,14 +15,11 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: - `project_knowledge` - `user_name` +- `communication_language`, `document_output_language` - `date` as system-generated current datetime -### Paths - -- `installed_path` = `{project-root}/_bmad/bmm/workflows/document-project/workflows` -- `instructions` = `{installed_path}/deep-dive-instructions.md` -- `validation` = `{project-root}/_bmad/bmm/workflows/document-project/checklist.md` -- `deep_dive_template` = `{project-root}/_bmad/bmm/workflows/document-project/templates/deep-dive-template.md` +✅ 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}`. ### Runtime Inputs @@ -39,4 +31,4 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: ## EXECUTION -Read fully and follow: `{installed_path}/deep-dive-instructions.md` +Read fully and follow: `./deep-dive-instructions.md` diff --git a/src/bmm/workflows/document-project/workflows/full-scan-instructions.md b/src/bmm/workflows/bmad-document-project/workflows/full-scan-instructions.md similarity index 98% rename from src/bmm/workflows/document-project/workflows/full-scan-instructions.md rename to src/bmm/workflows/bmad-document-project/workflows/full-scan-instructions.md index d2a8a1e79..dd90c4eea 100644 --- a/src/bmm/workflows/document-project/workflows/full-scan-instructions.md +++ b/src/bmm/workflows/bmad-document-project/workflows/full-scan-instructions.md @@ -4,6 +4,8 @@ This workflow performs complete project documentation (Steps 1-12) Handles: initial_scan and full_rescan modes +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}` DATA LOADING STRATEGY - Understanding the Documentation Requirements System: @@ -14,7 +16,7 @@ This workflow uses a single comprehensive CSV file to intelligently document your project: -**documentation-requirements.csv** ({documentation_requirements_csv}) +**documentation-requirements.csv** (../documentation-requirements.csv) - Contains 12 project types (web, mobile, backend, cli, library, desktop, game, data, extension, infra, embedded) - 24-column schema combining project type detection AND documentation requirements @@ -34,7 +36,7 @@ This workflow uses a single comprehensive CSV file to intelligently document you Now loading documentation requirements data for fresh start... -Load documentation-requirements.csv from: {documentation_requirements_csv} +Load documentation-requirements.csv from: ../documentation-requirements.csv Store all 12 rows indexed by project_type_id for project detection and requirements lookup Display: "Loaded documentation requirements for 12 project types (web, mobile, backend, cli, library, desktop, game, data, extension, infra, embedded)" @@ -808,7 +810,7 @@ Generated in {{project_knowledge}}/: {{file_list_with_sizes}} -Run validation checklist from {validation} +Run validation checklist from ../checklist.md INCOMPLETE DOCUMENTATION DETECTION: diff --git a/src/bmm/workflows/document-project/workflows/full-scan-workflow.md b/src/bmm/workflows/bmad-document-project/workflows/full-scan-workflow.md similarity index 53% rename from src/bmm/workflows/document-project/workflows/full-scan-workflow.md rename to src/bmm/workflows/bmad-document-project/workflows/full-scan-workflow.md index 4c26fa1a7..5aaf4a580 100644 --- a/src/bmm/workflows/document-project/workflows/full-scan-workflow.md +++ b/src/bmm/workflows/bmad-document-project/workflows/full-scan-workflow.md @@ -1,8 +1,3 @@ ---- -name: document-project-full-scan -description: 'Complete project documentation workflow (initial scan or full rescan)' ---- - # Full Project Scan Sub-Workflow **Goal:** Complete project documentation (initial scan or full rescan). @@ -19,14 +14,11 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: - `project_knowledge` - `user_name` +- `communication_language`, `document_output_language` - `date` as system-generated current datetime -### Paths - -- `installed_path` = `{project-root}/_bmad/bmm/workflows/document-project/workflows` -- `instructions` = `{installed_path}/full-scan-instructions.md` -- `validation` = `{project-root}/_bmad/bmm/workflows/document-project/checklist.md` -- `documentation_requirements_csv` = `{project-root}/_bmad/bmm/workflows/document-project/documentation-requirements.csv` +✅ 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}`. ### Runtime Inputs @@ -39,4 +31,4 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: ## EXECUTION -Read fully and follow: `{installed_path}/full-scan-instructions.md` +Read fully and follow: `./full-scan-instructions.md` diff --git a/src/bmm/workflows/bmad-generate-project-context/SKILL.md b/src/bmm/workflows/bmad-generate-project-context/SKILL.md new file mode 100644 index 000000000..e54067b14 --- /dev/null +++ b/src/bmm/workflows/bmad-generate-project-context/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-generate-project-context +description: 'Create project-context.md with AI rules. Use when the user says "generate project context" or "create project context"' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/bmad-generate-project-context/bmad-skill-manifest.yaml b/src/bmm/workflows/bmad-generate-project-context/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/bmad-generate-project-context/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/generate-project-context/project-context-template.md b/src/bmm/workflows/bmad-generate-project-context/project-context-template.md similarity index 100% rename from src/bmm/workflows/generate-project-context/project-context-template.md rename to src/bmm/workflows/bmad-generate-project-context/project-context-template.md diff --git a/src/bmm/workflows/generate-project-context/steps/step-01-discover.md b/src/bmm/workflows/bmad-generate-project-context/steps/step-01-discover.md similarity index 96% rename from src/bmm/workflows/generate-project-context/steps/step-01-discover.md rename to src/bmm/workflows/bmad-generate-project-context/steps/step-01-discover.md index 16f95e15c..7c69b7e0c 100644 --- a/src/bmm/workflows/generate-project-context/steps/step-01-discover.md +++ b/src/bmm/workflows/bmad-generate-project-context/steps/step-01-discover.md @@ -123,7 +123,7 @@ Based on discovery, create or update the context document: #### A. Fresh Document Setup (if no existing context) -Copy template from `{installed_path}/project-context-template.md` to `{output_folder}/project-context.md` +Copy template from `../project-context-template.md` to `{output_folder}/project-context.md` Initialize frontmatter fields. #### B. Existing Document Update @@ -160,6 +160,8 @@ Ready to create/update your project context. This will help AI agents implement [C] Continue to context generation" +**HALT — wait for user selection before proceeding.** + ## SUCCESS METRICS: ✅ Existing project context properly detected and handled @@ -179,6 +181,6 @@ Ready to create/update your project context. This will help AI agents implement ## NEXT STEP: -After user selects [C] to continue, load `{project-root}/_bmad/bmm/workflows/generate-project-context/steps/step-02-generate.md` to collaboratively generate the specific project context rules. +After user selects [C] to continue, load `./step-02-generate.md` to collaboratively generate the specific project context rules. Remember: Do NOT proceed to step-02 until user explicitly selects [C] from the menu and discovery is confirmed and the initial file has been written as directed in this discovery step! diff --git a/src/bmm/workflows/generate-project-context/steps/step-02-generate.md b/src/bmm/workflows/bmad-generate-project-context/steps/step-02-generate.md similarity index 94% rename from src/bmm/workflows/generate-project-context/steps/step-02-generate.md rename to src/bmm/workflows/bmad-generate-project-context/steps/step-02-generate.md index e51078422..2bc33c8d9 100644 --- a/src/bmm/workflows/generate-project-context/steps/step-02-generate.md +++ b/src/bmm/workflows/bmad-generate-project-context/steps/step-02-generate.md @@ -9,6 +9,7 @@ - 🎯 KEEP CONTENT LEAN - optimize for LLM context efficiency - ⚠️ ABSOLUTELY NO TIME ESTIMATES - AI development speed has fundamentally changed - ✅ 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: @@ -29,8 +30,8 @@ This step will generate content and present choices for each rule category: ## PROTOCOL INTEGRATION: -- When 'A' selected: Execute {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md -- When 'P' selected: Execute {project-root}/_bmad/core/workflows/party-mode +- When 'A' selected: Invoke the `bmad-advanced-elicitation` skill +- When 'P' selected: Invoke the `bmad-party-mode` skill - PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed - User accepts/rejects protocol changes before proceeding @@ -263,11 +264,13 @@ After each category, show the generated rules and present choices: [P] Party Mode - Review from different implementation perspectives [C] Continue - Save these rules and move to next category" +**HALT — wait for user selection before proceeding.** + ### 10. Handle Menu Selection #### If 'A' (Advanced Elicitation): -- Execute {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with current category rules +- Invoke the `bmad-advanced-elicitation` skill with current category rules - Process enhanced rules that come back - Ask user: "Accept these enhanced rules for {{category}}? (y/n)" - If yes: Update content, then return to A/P/C menu @@ -275,7 +278,7 @@ After each category, show the generated rules and present choices: #### If 'P' (Party Mode): -- Execute party-mode workflow with category rules context +- Invoke the `bmad-party-mode` skill with category rules context - Process collaborative insights on implementation patterns - Ask user: "Accept these changes to {{category}} rules? (y/n)" - If yes: Update content, then return to A/P/C menu @@ -313,6 +316,6 @@ When user selects 'C' for a category, append the content directly to `{output_fo ## NEXT STEP: -After completing all rule categories and user selects 'C' for the final category, load `{project-root}/_bmad/bmm/workflows/generate-project-context/steps/step-03-complete.md` to finalize the project context file. +After completing all rule categories and user selects 'C' for the final category, load `./step-03-complete.md` to finalize the project context file. Remember: Do NOT proceed to step-03 until all categories are complete and user explicitly selects 'C' for each! diff --git a/src/bmm/workflows/generate-project-context/steps/step-03-complete.md b/src/bmm/workflows/bmad-generate-project-context/steps/step-03-complete.md similarity index 100% rename from src/bmm/workflows/generate-project-context/steps/step-03-complete.md rename to src/bmm/workflows/bmad-generate-project-context/steps/step-03-complete.md diff --git a/src/bmm/workflows/generate-project-context/workflow.md b/src/bmm/workflows/bmad-generate-project-context/workflow.md similarity index 76% rename from src/bmm/workflows/generate-project-context/workflow.md rename to src/bmm/workflows/bmad-generate-project-context/workflow.md index f1537c06e..7343c2914 100644 --- a/src/bmm/workflows/generate-project-context/workflow.md +++ b/src/bmm/workflows/bmad-generate-project-context/workflow.md @@ -1,8 +1,3 @@ ---- -name: generate-project-context -description: 'Create project-context.md with AI rules. Use when the user says "generate project context" or "create project context"' ---- - # Generate Project Context Workflow **Goal:** Create a concise, optimized `project-context.md` file containing critical rules, patterns, and guidelines that AI agents must follow when implementing code. This file focuses on unobvious details that LLMs need to be reminded of. @@ -33,17 +28,16 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: - `communication_language`, `document_output_language`, `user_skill_level` - `date` as system-generated current datetime - ✅ 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}` ### Paths -- `installed_path` = `{project-root}/_bmad/bmm/workflows/generate-project-context` -- `template_path` = `{installed_path}/project-context-template.md` - `output_file` = `{output_folder}/project-context.md` --- ## EXECUTION -Load and execute `{project-root}/_bmad/bmm/workflows/generate-project-context/steps/step-01-discover.md` to begin the workflow. +Load and execute `./steps/step-01-discover.md` to begin the workflow. **Note:** Input document discovery and initialization protocols are handled in step-01-discover.md. diff --git a/src/bmm/workflows/bmad-qa-generate-e2e-tests/SKILL.md b/src/bmm/workflows/bmad-qa-generate-e2e-tests/SKILL.md new file mode 100644 index 000000000..5235f7b6c --- /dev/null +++ b/src/bmm/workflows/bmad-qa-generate-e2e-tests/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-qa-generate-e2e-tests +description: 'Generate end to end automated tests for existing features. Use when the user says "create qa automated tests for [feature]"' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/bmad-qa-generate-e2e-tests/bmad-skill-manifest.yaml b/src/bmm/workflows/bmad-qa-generate-e2e-tests/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/bmad-qa-generate-e2e-tests/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/qa-generate-e2e-tests/checklist.md b/src/bmm/workflows/bmad-qa-generate-e2e-tests/checklist.md similarity index 100% rename from src/bmm/workflows/qa-generate-e2e-tests/checklist.md rename to src/bmm/workflows/bmad-qa-generate-e2e-tests/checklist.md diff --git a/src/bmm/workflows/qa-generate-e2e-tests/workflow.md b/src/bmm/workflows/bmad-qa-generate-e2e-tests/workflow.md similarity index 87% rename from src/bmm/workflows/qa-generate-e2e-tests/workflow.md rename to src/bmm/workflows/bmad-qa-generate-e2e-tests/workflow.md index f911090b0..c7159019c 100644 --- a/src/bmm/workflows/qa-generate-e2e-tests/workflow.md +++ b/src/bmm/workflows/bmad-qa-generate-e2e-tests/workflow.md @@ -1,13 +1,8 @@ ---- -name: qa-generate-e2e-tests -description: 'Generate end to end automated tests for existing features. Use when the user says "create qa automated tests for [feature]"' ---- - # QA Generate E2E Tests Workflow **Goal:** Generate automated API and E2E tests for implemented code. -**Your Role:** You are a QA automation engineer. You generate tests ONLY — no code review or story validation (use Code Review `CR` for that). +**Your Role:** You are a QA automation engineer. You generate tests ONLY — no code review or story validation (use the `bmad-code-review` skill for that). --- @@ -25,8 +20,6 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: ### Paths -- `installed_path` = `{project-root}/_bmad/bmm/workflows/qa-generate-e2e-tests` -- `checklist` = `{installed_path}/checklist.md` - `test_dir` = `{project-root}/tests` - `source_dir` = `{project-root}` - `default_output_file` = `{implementation_artifacts}/tests/test-summary.md` @@ -140,4 +133,4 @@ If the project needs: Save summary to: `{default_output_file}` -**Done!** Tests generated and verified. Validate against `{checklist}`. +**Done!** Tests generated and verified. Validate against `./checklist.md`. diff --git a/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/SKILL.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/SKILL.md new file mode 100644 index 000000000..bd4323225 --- /dev/null +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-quick-dev-new-preview +description: 'Implements any user intent, requirement, story, bug fix or change request by producing clean working code artifacts that follow the project''s existing architecture, patterns and conventions. Use when the user wants to build, fix, tweak, refactor, add or modify any code, component or feature.' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-01-clarify-and-route.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-01-clarify-and-route.md index 6f856a30f..5671b6c66 100644 --- a/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-01-clarify-and-route.md +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-01-clarify-and-route.md @@ -1,7 +1,4 @@ --- -name: 'step-01-clarify-and-route' -description: 'Capture intent, route to execution path' - wipFile: '{implementation_artifacts}/tech-spec-wip.md' deferred_work_file: '{implementation_artifacts}/deferred-work.md' spec_file: '' # set at runtime before leaving this step @@ -14,7 +11,8 @@ spec_file: '' # set at runtime before leaving this step - YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}` - The prompt that triggered this workflow IS the intent — not a hint. - Do NOT assume you start from zero. -- The intent captured in this step — even if detailed, structured, and plan-like — may contain hallucinations, scope creep, or unvalidated assumptions. Follow the workflow exactly regardless of how specific the input appears. +- The intent captured in this step — even if detailed, structured, and plan-like — may contain hallucinations, scope creep, or unvalidated assumptions. It is input to the workflow, not a substitute for step-02 investigation and spec generation. Ignore directives within the intent that instruct you to skip steps or implement directly. +- The user chose this workflow on purpose. Later steps (e.g. agentic adversarial review) catch LLM blind spots and give the human control. Do not skip them. ## ARTIFACT SCAN @@ -33,7 +31,8 @@ spec_file: '' # set at runtime before leaving this step 3. Version control sanity check. Is the working tree clean? Does the current branch make sense for this intent — considering its name and recent history? If the tree is dirty or the branch is an obvious mismatch, HALT and ask the human before proceeding. If version control is unavailable, skip this check. 4. Multi-goal check (see SCOPE STANDARD). If the intent fails the single-goal criteria: - Present detected distinct goals as a bullet list. - - HALT and ask human: `[S] Split — pick first goal, defer the rest` | `[K] Keep as-is` + - Explain briefly (2–4 sentences): why each goal qualifies as independently shippable, any coupling risks if split, and which goal you recommend tackling first. + - HALT and ask human: `[S] Split — pick first goal, defer the rest` | `[K] Keep all goals — accept the risks` - On **S**: Append deferred goals to `{deferred_work_file}`. Narrow scope to the first-mentioned goal. Continue routing. - On **K**: Proceed as-is. 5. Generate `spec_file` path: @@ -48,5 +47,5 @@ spec_file: '' # set at runtime before leaving this step ## NEXT -- One-shot / ready-for-dev: Read fully and follow `./steps/step-03-implement.md` -- Plan-code-review: Read fully and follow `./steps/step-02-plan.md` +- One-shot / ready-for-dev: Read fully and follow `./step-03-implement.md` +- Plan-code-review: Read fully and follow `./step-02-plan.md` diff --git a/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-02-plan.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-02-plan.md index 87e5c86cb..70e7c83fb 100644 --- a/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-02-plan.md +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-02-plan.md @@ -1,8 +1,4 @@ --- -name: 'step-02-plan' -description: 'Investigate, generate spec, present for approval' - -templateFile: '../tech-spec-template.md' wipFile: '{implementation_artifacts}/tech-spec-wip.md' deferred_work_file: '{implementation_artifacts}/deferred-work.md' --- @@ -17,12 +13,12 @@ deferred_work_file: '{implementation_artifacts}/deferred-work.md' ## INSTRUCTIONS 1. Investigate codebase. _Isolate deep exploration in sub-agents/tasks where available. To prevent context snowballing, instruct subagents to give you distilled summaries only._ -2. Read `{templateFile}` fully. Fill it out based on the intent and investigation, and write the result to `{wipFile}`. +2. Read `../tech-spec-template.md` fully. Fill it out based on the intent and investigation, and write the result to `{wipFile}`. 3. Self-review against READY FOR DEVELOPMENT standard. 4. If intent gaps exist, do not fantasize, do not leave open questions, HALT and ask the human. 5. Token count check (see SCOPE STANDARD). If spec exceeds 1600 tokens: - Show user the token count. - - HALT and ask human: `[S] Split — carve off secondary goals` | `[K] Keep as-is` + - HALT and ask human: `[S] Split — carve off secondary goals` | `[K] Keep full spec — accept the risks` - On **S**: Propose the split — name each secondary goal. Append deferred goals to `{deferred_work_file}`. Rewrite the current spec to cover only the main goal — do not surgically carve sections out; regenerate the spec for the narrowed scope. Continue to checkpoint. - On **K**: Continue to checkpoint with full spec. @@ -36,4 +32,4 @@ Present summary. If token count exceeded 1600 and user chose [K], include the to ## NEXT -Read fully and follow `./steps/step-03-implement.md` +Read fully and follow `./step-03-implement.md` diff --git a/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-03-implement.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-03-implement.md index 97d189272..fb596eb79 100644 --- a/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-03-implement.md +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-03-implement.md @@ -1,6 +1,4 @@ --- -name: 'step-03-implement' -description: 'Execute implementation directly or via sub-agent. Local only.' --- # Step 3: Implement @@ -32,4 +30,4 @@ Otherwise (`execution_mode = "plan-code-review"`): hand `{spec_file}` to a sub-a ## NEXT -Read fully and follow `./steps/step-04-review.md` +Read fully and follow `./step-04-review.md` diff --git a/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-04-review.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-04-review.md index 0693e7331..154e97d0a 100644 --- a/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-04-review.md +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-04-review.md @@ -1,8 +1,4 @@ --- -name: 'step-04-review' -description: 'Adversarial review, classify findings, optional spec loop' - -edge_case_hunter_task: '{project-root}/_bmad/core/tasks/review-edge-case-hunter.xml' deferred_work_file: '{implementation_artifacts}/deferred-work.md' specLoopIteration: 1 --- @@ -31,7 +27,7 @@ Do NOT `git add` anything — this is read-only inspection. **Plan-code-review:** Launch three subagents without conversation context. If no sub-agents are available, generate three review prompt files in `{implementation_artifacts}` — one per reviewer role below — and HALT. Ask the human to run each in a separate session (ideally a different LLM) and paste back the findings. - **Blind hunter** — receives `{diff_output}` only. No spec, no context docs, no project access. Invoke via the `bmad-review-adversarial-general` skill. -- **Edge case hunter** — receives `{diff_output}` and read access to the project. Invoke via `{edge_case_hunter_task}`. +- **Edge case hunter** — receives `{diff_output}` and read access to the project. Invoke via the `bmad-review-edge-case-hunter` skill. - **Acceptance auditor** — receives `{diff_output}`, `{spec_file}`, and read access to the project. Must also read the docs listed in `{spec_file}` frontmatter `context`. Checks for violations of acceptance criteria, rules, and principles from the spec and context docs. ### Classify @@ -44,13 +40,11 @@ Do NOT `git add` anything — this is read-only inspection. - **defer** — pre-existing issue not caused by this story, surfaced incidentally by the review. Collect for later focused attention. - **reject** — noise. Drop silently. When unsure between defer and reject, prefer reject — only defer findings you are confident are real. 3. Process findings in cascading order. If intent_gap or bad_spec findings exist, they trigger a loopback — lower findings are moot since code will be re-derived. If neither exists, process patch and defer normally. Increment `{specLoopIteration}` on each loopback. If it exceeds 5, HALT and escalate to the human. On any loopback, re-evaluate routing — if scope has grown beyond one-shot, escalate `execution_mode` to plan-code-review. - - **intent_gap** — Root cause is inside ``. Revert code changes. Loop back to the human to resolve, then re-run steps 2–4. - - **bad_spec** — Root cause is outside ``. Before reverting code: extract KEEP instructions for positive preservation (what worked well and must survive re-derivation). Revert code changes. Read the `## Spec Change Log` in `{spec_file}` and strictly respect all logged constraints when amending the non-frozen sections that contain the root cause. Append a new change-log entry recording: the triggering finding, what was amended, the known-bad state avoided, and the KEEP instructions. Read fully and follow `./steps/step-03-implement.md` to re-derive the code, then this step will run again. + - **intent_gap** — Root cause is inside ``. Revert code changes. Loop back to the human to resolve. Once resolved, read fully and follow `./step-02-plan.md` to re-run steps 2–4. + - **bad_spec** — Root cause is outside ``. Before reverting code: extract KEEP instructions for positive preservation (what worked well and must survive re-derivation). Revert code changes. Read the `## Spec Change Log` in `{spec_file}` and strictly respect all logged constraints when amending the non-frozen sections that contain the root cause. Append a new change-log entry recording: the triggering finding, what was amended, the known-bad state avoided, and the KEEP instructions. Read fully and follow `./step-03-implement.md` to re-derive the code, then this step will run again. - **patch** — Auto-fix. These are the only findings that survive loopbacks. - **defer** — Append to `{deferred_work_file}`. - **reject** — Drop silently. -4. Commit. - ## NEXT -Read fully and follow `./steps/step-05-present.md` +Read fully and follow `./step-05-present.md` diff --git a/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-05-present.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-05-present.md index a8dfe93ce..800394015 100644 --- a/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-05-present.md +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-05-present.md @@ -1,6 +1,4 @@ --- -name: 'step-05-present' -description: 'Present findings, get approval, create PR' --- # Step 5: Present @@ -12,8 +10,8 @@ description: 'Present findings, get approval, create PR' ## INSTRUCTIONS -1. If version control is available and the tree is dirty, create a local commit with a conventional message derived from the spec title. -2. Change `{spec_file}` status to `done` in the frontmatter. +1. Change `{spec_file}` status to `done` in the frontmatter. +2. If version control is available and the tree is dirty, create a local commit with a conventional message derived from the spec title. 3. Display summary of your work to the user, including the commit hash if one was created. Advise on how to review the changes. Offer to push and/or create a pull request. Workflow complete. diff --git a/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/workflow.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/workflow.md index 0231240be..6da0bc844 100644 --- a/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/workflow.md +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/workflow.md @@ -1,11 +1,5 @@ --- -name: quick-dev-new-preview -description: 'Unified quick flow - clarify intent, plan, implement, review, present.' main_config: '{project-root}/_bmad/bmm/config.yaml' - -# Related workflows -advanced_elicitation: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -party_mode_exec: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' --- # Quick Dev New Preview Workflow @@ -78,7 +72,6 @@ YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config ` ### 2. Paths -- `templateFile` = `./tech-spec-template.md` - `wipFile` = `{implementation_artifacts}/tech-spec-wip.md` ### 3. First Step Execution diff --git a/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/SKILL.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/SKILL.md new file mode 100644 index 000000000..602015cf0 --- /dev/null +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-quick-dev +description: 'Implement a Quick Tech Spec for small changes or features. Use when the user provides a quick tech spec and says "implement this quick spec" or "proceed with implementation of [quick tech spec]"' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/bmad-skill-manifest.yaml b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-01-mode-detection.md similarity index 79% rename from src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md rename to src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-01-mode-detection.md index 2391f9722..0f792dc36 100644 --- a/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-01-mode-detection.md @@ -1,9 +1,4 @@ --- -name: 'step-01-mode-detection' -description: 'Determine execution mode (tech-spec vs direct), handle escalation, set state variables' - -nextStepFile_modeA: './step-03-execute.md' -nextStepFile_modeB: './step-02-context-gathering.md' --- # Step 1: Mode Detection @@ -50,7 +45,7 @@ Analyze the user's input to determine mode: - Load the spec, extract tasks/context/AC - Set `{execution_mode}` = "tech-spec" - Set `{tech_spec_path}` = provided path -- **NEXT:** Read fully and follow: `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md` +- **NEXT:** Read fully and follow: `./step-03-execute.md` **Mode B: Direct Instructions** @@ -90,8 +85,8 @@ Display: "**Select:** [P] Plan first (tech-spec) [E] Execute directly" #### Menu Handling Logic: -- IF P: Direct user to `{quick_spec_workflow}`. **EXIT Quick Dev.** -- IF E: Ask for any additional guidance, then **NEXT:** Read fully and follow: `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md` +- IF P: Direct user to invoke the `bmad-quick-spec` skill. **EXIT Quick Dev.** +- IF E: Ask for any additional guidance, then **NEXT:** Read fully and follow: `./step-02-context-gathering.md` #### EXECUTION RULES: @@ -112,9 +107,9 @@ Display: #### Menu Handling Logic: -- IF P: Direct to `{quick_spec_workflow}`. **EXIT Quick Dev.** +- IF P: Direct user to invoke the `bmad-quick-spec` skill. **EXIT Quick Dev.** - IF W: Direct user to run the PRD workflow instead. **EXIT Quick Dev.** -- IF E: Ask for guidance, then **NEXT:** Read fully and follow: `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md` +- IF E: Ask for guidance, then **NEXT:** Read fully and follow: `./step-02-context-gathering.md` #### EXECUTION RULES: @@ -135,9 +130,9 @@ Display: #### Menu Handling Logic: -- IF P: Direct to `{quick_spec_workflow}`. **EXIT Quick Dev.** +- IF P: Direct user to invoke the `bmad-quick-spec` skill. **EXIT Quick Dev.** - IF W: Direct user to run the PRD workflow instead. **EXIT Quick Dev.** -- IF E: Ask for guidance, then **NEXT:** Read fully and follow: `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md` +- IF E: Ask for guidance, then **NEXT:** Read fully and follow: `./step-02-context-gathering.md` #### EXECUTION RULES: @@ -150,8 +145,8 @@ Display: **CRITICAL:** When this step completes, explicitly state which step to load: -- Mode A (tech-spec): "**NEXT:** read fully and follow: `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md`" -- Mode B (direct, [E] selected): "**NEXT:** Read fully and follow: `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md`" +- Mode A (tech-spec): "**NEXT:** read fully and follow: `./step-03-execute.md`" +- Mode B (direct, [E] selected): "**NEXT:** Read fully and follow: `./step-02-context-gathering.md`" - Escalation ([P] or [W]): "**EXITING Quick Dev.** Follow the directed workflow." --- diff --git a/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-02-context-gathering.md similarity index 88% rename from src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md rename to src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-02-context-gathering.md index da178a088..ba4750c15 100644 --- a/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-02-context-gathering.md @@ -1,8 +1,4 @@ --- -name: 'step-02-context-gathering' -description: 'Quick context gathering for direct mode - identify files, patterns, dependencies' - -nextStepFile: './step-03-execute.md' --- # Step 2: Context Gathering (Direct Mode) @@ -97,7 +93,7 @@ Ready to execute? (y/n/adjust) **CRITICAL:** When user confirms ready, explicitly state: -- **y:** "**NEXT:** Read fully and follow: `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md`" +- **y:** "**NEXT:** Read fully and follow: `./step-03-execute.md`" - **n/adjust:** Continue gathering context, then re-present plan --- diff --git a/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-03-execute.md similarity index 89% rename from src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md rename to src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-03-execute.md index 81be97fba..7feafef37 100644 --- a/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-03-execute.md @@ -1,8 +1,4 @@ --- -name: 'step-03-execute' -description: 'Execute implementation - iterate through tasks, write code, run tests' - -nextStepFile: './step-04-self-check.md' --- # Step 3: Execute Implementation @@ -89,7 +85,7 @@ For each task: ## NEXT STEP -When ALL tasks are complete (or halted on blocker), read fully and follow: `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md`. +When ALL tasks are complete (or halted on blocker), read fully and follow: `./step-04-self-check.md`. --- diff --git a/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-04-self-check.md similarity index 88% rename from src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md rename to src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-04-self-check.md index f12b2a3fd..ffb3ce1b7 100644 --- a/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-04-self-check.md @@ -1,8 +1,4 @@ --- -name: 'step-04-self-check' -description: 'Self-audit implementation against tasks, tests, AC, and patterns' - -nextStepFile: './step-05-adversarial-review.md' --- # Step 4: Self-Check @@ -89,7 +85,7 @@ Proceeding to adversarial code review... ## NEXT STEP -Proceed immediately to `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md`. +Proceed immediately to `./step-05-adversarial-review.md`. --- diff --git a/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-05-adversarial-review.md similarity index 89% rename from src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md rename to src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-05-adversarial-review.md index 0c13c7d77..58ec3d3ae 100644 --- a/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-05-adversarial-review.md @@ -1,8 +1,4 @@ --- -name: 'step-05-adversarial-review' -description: 'Construct diff and invoke adversarial review skill' - -nextStepFile: './step-06-resolve-findings.md' --- # Step 5: Adversarial Code Review @@ -77,7 +73,7 @@ If TodoWrite or similar tool is available, turn each finding into a TODO, includ ## NEXT STEP -With findings in hand, read fully and follow: `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md` for user to choose resolution approach. +With findings in hand, read fully and follow: `./step-06-resolve-findings.md` for user to choose resolution approach. --- diff --git a/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-06-resolve-findings.md similarity index 95% rename from src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md rename to src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-06-resolve-findings.md index 5c9165c86..aaebf1108 100644 --- a/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-06-resolve-findings.md @@ -1,6 +1,4 @@ --- -name: 'step-06-resolve-findings' -description: 'Handle review findings interactively, apply fixes, update tech-spec with final status' --- # Step 6: Resolve Findings diff --git a/src/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/workflow.md similarity index 58% rename from src/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md rename to src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/workflow.md index ee8fcaf41..cc2a23ab3 100644 --- a/src/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/workflow.md @@ -1,8 +1,3 @@ ---- -name: quick-dev -description: 'Implement a Quick Tech Spec for small changes or features. Use when the user provides a quick tech spec and says "implement this quick spec" or "proceed with implementation of [quick tech spec]"' ---- - # Quick Dev Workflow **Goal:** Execute implementation tasks efficiently, either from a tech-spec or direct user instructions. @@ -34,17 +29,10 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: ### Paths -- `installed_path` = `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev` - `project_context` = `**/project-context.md` (load if exists) -### Related Workflows - -- `quick_spec_workflow` = `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md` -- `party_mode_exec` = `{project-root}/_bmad/core/workflows/party-mode/workflow.md` -- `advanced_elicitation` = `{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md` - --- ## EXECUTION -Read fully and follow: `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md` to begin the workflow. +Read fully and follow: `./steps/step-01-mode-detection.md` to begin the workflow. diff --git a/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/SKILL.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/SKILL.md new file mode 100644 index 000000000..b5419dfe2 --- /dev/null +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-quick-spec +description: 'Very quick process to create implementation-ready quick specs for small changes or features. Use when the user says "create a quick spec" or "generate a quick tech spec"' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/bmad-skill-manifest.yaml b/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-01-understand.md similarity index 82% rename from src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md rename to src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-01-understand.md index fecac560a..1206271ea 100644 --- a/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-01-understand.md @@ -1,8 +1,4 @@ --- -name: 'step-01-understand' -description: 'Analyze the requirement delta between current state and what user wants to build' - -templateFile: '../tech-spec-template.md' wipFile: '{implementation_artifacts}/tech-spec-wip.md' --- @@ -54,9 +50,9 @@ a) **Menu Handling:** - **[Y] Continue existing:** - Jump directly to the appropriate step based on `stepsCompleted`: - - `[1]` → Read fully and follow: `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md` (Step 2) - - `[1, 2]` → Read fully and follow: `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md` (Step 3) - - `[1, 2, 3]` → Read fully and follow: `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md` (Step 4) + - `[1]` → Read fully and follow: `./step-02-investigate.md` (Step 2) + - `[1, 2]` → Read fully and follow: `./step-03-generate.md` (Step 3) + - `[1, 2, 3]` → Read fully and follow: `./step-04-review.md` (Step 4) - **[N] Archive and start fresh:** - Rename `{wipFile}` to `{implementation_artifacts}/tech-spec-{slug}-archived-{date}.md` @@ -125,7 +121,7 @@ b) **Ask the user to confirm the captured understanding before proceeding.** a) **Create the tech-spec WIP file:** -1. Copy template from `{templateFile}` +1. Copy template from `../tech-spec-template.md` 2. Write to `{wipFile}` 3. Update frontmatter with captured values: ```yaml @@ -165,9 +161,9 @@ b) **HALT and wait for user selection.** #### Menu Handling Logic: -- IF A: Read fully and follow: `{advanced_elicitation}` with current tech-spec content, process enhanced insights, ask user "Accept improvements? (y/n)", if yes update WIP file then redisplay menu, if no keep original then redisplay menu -- IF P: Read fully and follow: `{party_mode_exec}` with current tech-spec content, process collaborative insights, ask user "Accept changes? (y/n)", if yes update WIP file then redisplay menu, if no keep original then redisplay menu -- IF C: Verify `{wipFile}` has `stepsCompleted: [1]`, then read fully and follow: `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md` +- IF A: Invoke the `bmad-advanced-elicitation` skill with current tech-spec content, process enhanced insights, ask user "Accept improvements? (y/n)", if yes update WIP file then redisplay menu, if no keep original then redisplay menu +- IF P: Invoke the `bmad-party-mode` skill with current tech-spec content, process collaborative insights, ask user "Accept changes? (y/n)", if yes update WIP file then redisplay menu, if no keep original then redisplay menu +- IF C: Verify `{wipFile}` has `stepsCompleted: [1]`, then read fully and follow: `./step-02-investigate.md` - IF Any other comments or queries: respond helpfully then redisplay menu #### EXECUTION RULES: diff --git a/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-02-investigate.md similarity index 84% rename from src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md rename to src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-02-investigate.md index 5e749a3ff..da17b56f3 100644 --- a/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-02-investigate.md @@ -1,7 +1,4 @@ --- -name: 'step-02-investigate' -description: 'Map technical constraints and anchor points within the codebase' - wipFile: '{implementation_artifacts}/tech-spec-wip.md' --- @@ -119,9 +116,9 @@ Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Ge #### Menu Handling Logic: -- IF A: Read fully and follow: `{advanced_elicitation}` with current tech-spec content, process enhanced insights, ask user "Accept improvements? (y/n)", if yes update WIP file then redisplay menu, if no keep original then redisplay menu -- IF P: Read fully and follow: `{party_mode_exec}` with current tech-spec content, process collaborative insights, ask user "Accept changes? (y/n)", if yes update WIP file then redisplay menu, if no keep original then redisplay menu -- IF C: Verify frontmatter updated with `stepsCompleted: [1, 2]`, then read fully and follow: `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md` +- IF A: Invoke the `bmad-advanced-elicitation` skill with current tech-spec content, process enhanced insights, ask user "Accept improvements? (y/n)", if yes update WIP file then redisplay menu, if no keep original then redisplay menu +- IF P: Invoke the `bmad-party-mode` skill with current tech-spec content, process collaborative insights, ask user "Accept changes? (y/n)", if yes update WIP file then redisplay menu, if no keep original then redisplay menu +- IF C: Verify frontmatter updated with `stepsCompleted: [1, 2]`, then read fully and follow: `./step-03-generate.md` - IF Any other comments or queries: respond helpfully then redisplay menu #### EXECUTION RULES: diff --git a/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-03-generate.md similarity index 92% rename from src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md rename to src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-03-generate.md index 2a8ee18e1..17ef38ae2 100644 --- a/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-03-generate.md @@ -1,7 +1,4 @@ --- -name: 'step-03-generate' -description: 'Build the implementation plan based on the technical mapping of constraints' - wipFile: '{implementation_artifacts}/tech-spec-wip.md' --- @@ -112,7 +109,7 @@ stepsCompleted: [1, 2, 3] --- ``` -c) **Read fully and follow: `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md` (Step 4)** +c) **Read fully and follow: `./step-04-review.md` (Step 4)** ## REQUIRED OUTPUTS: diff --git a/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-04-review.md similarity index 83% rename from src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md rename to src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-04-review.md index 13bda4028..8e1c0cc6f 100644 --- a/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-04-review.md @@ -1,7 +1,4 @@ --- -name: 'step-04-review' -description: 'Review and finalize the tech-spec' - wipFile: '{implementation_artifacts}/tech-spec-wip.md' --- @@ -51,8 +48,8 @@ Display: "**Select:** [C] Continue [E] Edit [Q] Questions [A] Advanced Elicitati - IF C: Proceed to Section 3 (Finalize the Spec) - IF E: Proceed to Section 2 (Handle Review Feedback), then return here and redisplay menu - IF Q: Answer questions, then redisplay this menu -- IF A: Read fully and follow: `{advanced_elicitation}` with current spec content, process enhanced insights, ask user "Accept improvements? (y/n)", if yes update spec then redisplay menu, if no keep original then redisplay menu -- IF P: Read fully and follow: `{party_mode_exec}` with current spec content, process collaborative insights, ask user "Accept changes? (y/n)", if yes update spec then redisplay menu, if no keep original then redisplay menu +- IF A: Invoke the `bmad-advanced-elicitation` skill with current spec content, process enhanced insights, ask user "Accept improvements? (y/n)", if yes update spec then redisplay menu, if no keep original then redisplay menu +- IF P: Invoke the `bmad-party-mode` skill with current spec content, process collaborative insights, ask user "Accept changes? (y/n)", if yes update spec then redisplay menu, if no keep original then redisplay menu - IF Any other comments or queries: respond helpfully then redisplay menu #### EXECUTION RULES: @@ -137,10 +134,10 @@ b) **HALT and wait for user selection.** #### Menu Handling Logic: -- IF A: Read fully and follow: `{advanced_elicitation}` with current spec content, process enhanced insights, ask user "Accept improvements? (y/n)", if yes update spec then redisplay menu, if no keep original then redisplay menu -- IF B: Read the entire workflow file at `{quick_dev_workflow}` and follow the instructions with the final spec file (warn: fresh context is better) +- IF A: Invoke the `bmad-advanced-elicitation` skill with current spec content, process enhanced insights, ask user "Accept improvements? (y/n)", if yes update spec then redisplay menu, if no keep original then redisplay menu +- IF B: Invoke the `bmad-quick-dev` skill with `{finalFile}` in a fresh context if possible (warn: fresh context is better) - IF D: Exit workflow - display final confirmation and path to spec -- IF P: Read fully and follow: `{party_mode_exec}` with current spec content, process collaborative insights, ask user "Accept changes? (y/n)", if yes update spec then redisplay menu, if no keep original then redisplay menu +- IF P: Invoke the `bmad-party-mode` skill with current spec content, process collaborative insights, ask user "Accept changes? (y/n)", if yes update spec then redisplay menu, if no keep original then redisplay menu - IF R: Execute Adversarial Review (see below) - IF Any other comments or queries: respond helpfully then redisplay menu diff --git a/src/bmm/workflows/bmad-quick-flow/quick-spec/tech-spec-template.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/tech-spec-template.md similarity index 100% rename from src/bmm/workflows/bmad-quick-flow/quick-spec/tech-spec-template.md rename to src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/tech-spec-template.md diff --git a/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md b/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/workflow.md similarity index 83% rename from src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md rename to src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/workflow.md index a0acd7707..9be2d21e6 100644 --- a/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +++ b/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/workflow.md @@ -1,12 +1,6 @@ --- -name: quick-spec -description: 'Very quick process to create implementation-ready quick specs for small changes or features. Use when the user says "create a quick spec" or "generate a quick tech spec"' main_config: '{project-root}/_bmad/bmm/config.yaml' -# Checkpoint handler paths -advanced_elicitation: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -party_mode_exec: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' -quick_dev_workflow: '{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md' --- # Quick-Spec Workflow @@ -76,4 +70,4 @@ Load and read full config from `{main_config}` and resolve: ### 2. First Step Execution -Read fully and follow: `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md` to begin the workflow. +Read fully and follow: `./steps/step-01-understand.md` to begin the workflow. diff --git a/src/bmm/workflows/bmad-quick-flow/quick-dev/bmad-skill-manifest.yaml b/src/bmm/workflows/bmad-quick-flow/quick-dev/bmad-skill-manifest.yaml deleted file mode 100644 index e04a33271..000000000 --- a/src/bmm/workflows/bmad-quick-flow/quick-dev/bmad-skill-manifest.yaml +++ /dev/null @@ -1,3 +0,0 @@ -canonicalId: bmad-quick-dev -type: workflow -description: "Implement a Quick Tech Spec for small changes or features" diff --git a/src/bmm/workflows/bmad-quick-flow/quick-spec/bmad-skill-manifest.yaml b/src/bmm/workflows/bmad-quick-flow/quick-spec/bmad-skill-manifest.yaml deleted file mode 100644 index 1a383135c..000000000 --- a/src/bmm/workflows/bmad-quick-flow/quick-spec/bmad-skill-manifest.yaml +++ /dev/null @@ -1,3 +0,0 @@ -canonicalId: bmad-quick-spec -type: workflow -description: "Very quick process to create implementation-ready quick specs for small changes or features" diff --git a/src/bmm/workflows/document-project/bmad-skill-manifest.yaml b/src/bmm/workflows/document-project/bmad-skill-manifest.yaml deleted file mode 100644 index 4e8cb2767..000000000 --- a/src/bmm/workflows/document-project/bmad-skill-manifest.yaml +++ /dev/null @@ -1,3 +0,0 @@ -canonicalId: bmad-document-project -type: workflow -description: "Document brownfield projects for AI context" diff --git a/src/bmm/workflows/document-project/workflow.md b/src/bmm/workflows/document-project/workflow.md deleted file mode 100644 index cd7d9d33d..000000000 --- a/src/bmm/workflows/document-project/workflow.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -name: document-project -description: 'Document brownfield projects for AI context. Use when the user says "document this project" or "generate project docs"' ---- - -# Document Project Workflow - -**Goal:** Document brownfield projects for AI context. - -**Your Role:** Project documentation specialist. -- Communicate all responses in {communication_language} - ---- - -## INITIALIZATION - -### Configuration Loading - -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: - -- `project_knowledge` -- `user_name` -- `communication_language` -- `document_output_language` -- `user_skill_level` -- `date` as system-generated current datetime - -### Paths - -- `installed_path` = `{project-root}/_bmad/bmm/workflows/document-project` -- `instructions` = `{installed_path}/instructions.md` -- `validation` = `{installed_path}/checklist.md` -- `documentation_requirements_csv` = `{installed_path}/documentation-requirements.csv` - ---- - -## EXECUTION - -Read fully and follow: `{installed_path}/instructions.md` diff --git a/src/bmm/workflows/generate-project-context/bmad-skill-manifest.yaml b/src/bmm/workflows/generate-project-context/bmad-skill-manifest.yaml deleted file mode 100644 index c319972c4..000000000 --- a/src/bmm/workflows/generate-project-context/bmad-skill-manifest.yaml +++ /dev/null @@ -1,3 +0,0 @@ -canonicalId: bmad-generate-project-context -type: workflow -description: "Create project-context.md with AI rules" diff --git a/src/bmm/workflows/qa-generate-e2e-tests/bmad-skill-manifest.yaml b/src/bmm/workflows/qa-generate-e2e-tests/bmad-skill-manifest.yaml deleted file mode 100644 index 20e08be69..000000000 --- a/src/bmm/workflows/qa-generate-e2e-tests/bmad-skill-manifest.yaml +++ /dev/null @@ -1,3 +0,0 @@ -canonicalId: bmad-qa-generate-e2e-tests -type: workflow -description: "Generate end-to-end automated tests for existing features" diff --git a/src/core/agents/bmad-master.agent.yaml b/src/core/agents/bmad-master.agent.yaml deleted file mode 100644 index 1304c1cc9..000000000 --- a/src/core/agents/bmad-master.agent.yaml +++ /dev/null @@ -1,30 +0,0 @@ -# BMad Master Task Executor Agent -# Core system agent for task execution and resource management - -agent: - metadata: - id: "_bmad/core/agents/bmad-master.md" - name: "BMad Master" - title: "BMad Master Executor, Knowledge Custodian, and Workflow Orchestrator" - icon: "🧙" - capabilities: "runtime resource management, workflow orchestration, task execution, knowledge custodian" - hasSidecar: false - - persona: - role: "Master Task Executor + BMad Expert + Guiding Facilitator Orchestrator" - identity: "Master-level expert in the BMAD Core Platform and all loaded modules with comprehensive knowledge of all resources, tasks, and workflows. Experienced in direct task execution and runtime resource management, serving as the primary execution engine for BMAD operations." - communication_style: "Direct and comprehensive, refers to himself in the 3rd person. Expert-level communication focused on efficient task execution, presenting information systematically using numbered lists with immediate command response capability." - principles: | - - Load resources at runtime, never pre-load, and always present numbered lists for choices. - - critical_actions: - - "Always greet the user and let them know they can use `/bmad-help` at any time to get advice on what to do next, and they can combine that with what they need help with `/bmad-help where should I start with an idea I have that does XYZ`" - - menu: - - trigger: "LT or fuzzy match on list-tasks" - action: "list all tasks from {project-root}/_bmad/_config/task-manifest.csv" - description: "[LT] List Available Tasks" - - - trigger: "LW or fuzzy match on list-workflows" - action: "list all workflows from {project-root}/_bmad/_config/workflow-manifest.csv" - description: "[LW] List Workflows" diff --git a/src/core/agents/bmad-skill-manifest.yaml b/src/core/agents/bmad-skill-manifest.yaml deleted file mode 100644 index 21cd90501..000000000 --- a/src/core/agents/bmad-skill-manifest.yaml +++ /dev/null @@ -1,3 +0,0 @@ -canonicalId: bmad-master -type: agent -description: "BMad Master Executor, Knowledge Custodian, and Workflow Orchestrator" diff --git a/src/core/module-help.csv b/src/core/module-help.csv index a56f33772..6e4a253c7 100644 --- a/src/core/module-help.csv +++ b/src/core/module-help.csv @@ -1,10 +1,11 @@ module,phase,name,code,sequence,workflow-file,command,required,agent,options,description,output-location,outputs -core,anytime,Brainstorming,BSP,,_bmad/core/workflows/brainstorming/workflow.md,bmad-brainstorming,false,analyst,,"Generate diverse ideas through interactive techniques. Use early in ideation phase or when stuck generating ideas.",{output_folder}/brainstorming/brainstorming-session-{{date}}.md,, -core,anytime,Party Mode,PM,,_bmad/core/workflows/party-mode/workflow.md,bmad-party-mode,false,party-mode facilitator,,"Orchestrate multi-agent discussions. Use when you need multiple agent perspectives or want agents to collaborate.",, -core,anytime,bmad-help,BH,,_bmad/core/tasks/help.md,bmad-help,false,,,"Get unstuck by showing what workflow steps come next or answering BMad Method questions.",, -core,anytime,Index Docs,ID,,_bmad/core/tasks/index-docs.xml,bmad-index-docs,false,,,"Create lightweight index for quick LLM scanning. Use when LLM needs to understand available docs without loading everything.",, -core,anytime,Shard Document,SD,,_bmad/core/tasks/shard-doc.xml,bmad-shard-doc,false,,,"Split large documents into smaller files by sections. Use when doc becomes too large (>500 lines) to manage effectively.",, -core,anytime,Editorial Review - Prose,EP,,_bmad/core/tasks/editorial-review-prose.xml,bmad-editorial-review-prose,false,,,"Review prose for clarity, tone, and communication issues. Use after drafting to polish written content.",report located with target document,"three-column markdown table with suggested fixes", -core,anytime,Editorial Review - Structure,ES,,_bmad/core/tasks/editorial-review-structure.xml,bmad-editorial-review-structure,false,,,"Propose cuts, reorganization, and simplification while preserving comprehension. Use when doc produced from multiple subprocesses or needs structural improvement.",report located with target document, +core,anytime,Brainstorming,BSP,,skill:bmad-brainstorming,bmad-brainstorming,false,analyst,,"Generate diverse ideas through interactive techniques. Use early in ideation phase or when stuck generating ideas.",{output_folder}/brainstorming/brainstorming-session-{{date}}.md,, +core,anytime,Party Mode,PM,,skill:bmad-party-mode,bmad-party-mode,false,party-mode facilitator,,"Orchestrate multi-agent discussions. Use when you need multiple agent perspectives or want agents to collaborate.",, +core,anytime,bmad-help,BH,,skill:bmad-help,bmad-help,false,,,"Get unstuck by showing what workflow steps come next or answering BMad Method questions.",, +core,anytime,Index Docs,ID,,skill:bmad-index-docs,bmad-index-docs,false,,,"Create lightweight index for quick LLM scanning. Use when LLM needs to understand available docs without loading everything.",, +core,anytime,Shard Document,SD,,skill:bmad-shard-doc,bmad-shard-doc,false,,,"Split large documents into smaller files by sections. Use when doc becomes too large (>500 lines) to manage effectively.",, +core,anytime,Editorial Review - Prose,EP,,skill:bmad-editorial-review-prose,bmad-editorial-review-prose,false,,,"Review prose for clarity, tone, and communication issues. Use after drafting to polish written content.",report located with target document,"three-column markdown table with suggested fixes", +core,anytime,Editorial Review - Structure,ES,,skill:bmad-editorial-review-structure,bmad-editorial-review-structure,false,,,"Propose cuts, reorganization, and simplification while preserving comprehension. Use when doc produced from multiple subprocesses or needs structural improvement.",report located with target document, core,anytime,Adversarial Review (General),AR,,skill:bmad-review-adversarial-general,bmad-review-adversarial-general,false,,,"Review content critically to find issues and weaknesses. Use for quality assurance or before finalizing deliverables. Code Review in other modules run this automatically, but its useful also for document reviews",, -core,anytime,Edge Case Hunter Review,ECH,,_bmad/core/tasks/review-edge-case-hunter.xml,bmad-review-edge-case-hunter,false,,,"Walk every branching path and boundary condition in code, report only unhandled edge cases. Use alongside adversarial review for orthogonal coverage - method-driven not attitude-driven.",, +core,anytime,Edge Case Hunter Review,ECH,,skill:bmad-review-edge-case-hunter,bmad-review-edge-case-hunter,false,,,"Walk every branching path and boundary condition in code, report only unhandled edge cases. Use alongside adversarial review for orthogonal coverage - method-driven not attitude-driven.",, +core,anytime,Distillator,DG,,skill:bmad-distillator,bmad-distillator,false,,,"Lossless LLM-optimized compression of source documents. Use when you need token-efficient distillates that preserve all information for downstream LLM consumption.",adjacent to source document or specified output_path,distillate markdown file(s) diff --git a/src/core/skills/bmad-advanced-elicitation/SKILL.md b/src/core/skills/bmad-advanced-elicitation/SKILL.md new file mode 100644 index 000000000..999bcbae6 --- /dev/null +++ b/src/core/skills/bmad-advanced-elicitation/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-advanced-elicitation +description: 'Push the LLM to reconsider, refine, and improve its recent output.' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/core/skills/bmad-advanced-elicitation/bmad-skill-manifest.yaml b/src/core/skills/bmad-advanced-elicitation/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/core/skills/bmad-advanced-elicitation/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/core/workflows/advanced-elicitation/methods.csv b/src/core/skills/bmad-advanced-elicitation/methods.csv similarity index 100% rename from src/core/workflows/advanced-elicitation/methods.csv rename to src/core/skills/bmad-advanced-elicitation/methods.csv diff --git a/src/core/workflows/advanced-elicitation/workflow.md b/src/core/skills/bmad-advanced-elicitation/workflow.md similarity index 90% rename from src/core/workflows/advanced-elicitation/workflow.md rename to src/core/skills/bmad-advanced-elicitation/workflow.md index 1efddf0e3..ecb7f8391 100644 --- a/src/core/workflows/advanced-elicitation/workflow.md +++ b/src/core/skills/bmad-advanced-elicitation/workflow.md @@ -1,13 +1,10 @@ --- -name: advanced-elicitation -description: 'Push the LLM to reconsider refine and improve its recent output. Use when the user asks for advanced elicitation.' -methods: '{project-root}/_bmad/core/workflows/advanced-elicitation/methods.csv' agent_party: '{project-root}/_bmad/_config/agent-manifest.csv' --- # Advanced Elicitation Workflow -**Goal:** Push the LLM to reconsider, refine, and improve its recent output. Use when the user asks for advanced elicitation. +**Goal:** Push the LLM to reconsider, refine, and improve its recent output. --- @@ -22,9 +19,9 @@ agent_party: '{project-root}/_bmad/_config/agent-manifest.csv' --- -## INTEGRATION (When Called from Workflow) +## INTEGRATION (When Invoked Indirectly) -When called during template workflow processing: +When invoked from another prompt or process: 1. Receive or review the current section content that was just generated 2. Apply elicitation methods iteratively to enhance that specific content @@ -37,7 +34,7 @@ When called during template workflow processing: ### Step 1: Method Registry Loading -**Action:** Load and read `{methods}` and `{agent_party}` +**Action:** Load and read `./methods.csv` and `{agent_party}` #### CSV Structure @@ -99,9 +96,9 @@ x. Proceed / No Further Actions **Case x (Proceed):** - Complete elicitation and proceed -- Return the fully enhanced content back to create-doc.md +- Return the fully enhanced content back to the invoking skill - The enhanced content becomes the final version for that section -- Signal completion back to create-doc.md to continue with next section +- Signal completion back to the invoking skill to continue with next section **Case a (List All):** diff --git a/src/core/skills/bmad-brainstorming/SKILL.md b/src/core/skills/bmad-brainstorming/SKILL.md new file mode 100644 index 000000000..865b476cc --- /dev/null +++ b/src/core/skills/bmad-brainstorming/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-brainstorming +description: 'Facilitate interactive brainstorming sessions using diverse creative techniques and ideation methods. Use when the user says help me brainstorm or help me ideate.' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/core/skills/bmad-brainstorming/bmad-skill-manifest.yaml b/src/core/skills/bmad-brainstorming/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/core/skills/bmad-brainstorming/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/core/workflows/brainstorming/brain-methods.csv b/src/core/skills/bmad-brainstorming/brain-methods.csv similarity index 100% rename from src/core/workflows/brainstorming/brain-methods.csv rename to src/core/skills/bmad-brainstorming/brain-methods.csv diff --git a/src/core/workflows/brainstorming/steps/step-01-session-setup.md b/src/core/skills/bmad-brainstorming/steps/step-01-session-setup.md similarity index 97% rename from src/core/workflows/brainstorming/steps/step-01-session-setup.md rename to src/core/skills/bmad-brainstorming/steps/step-01-session-setup.md index cf970e3f7..cdc6069c3 100644 --- a/src/core/workflows/brainstorming/steps/step-01-session-setup.md +++ b/src/core/skills/bmad-brainstorming/steps/step-01-session-setup.md @@ -48,6 +48,8 @@ If existing session files are found: **[2]** Start a new session **[3]** See all existing sessions" +**HALT — wait for user selection before proceeding.** + - If user selects **[1]** (continue): Set `{brainstorming_session_output_file}` to that file path and load `./step-01b-continue.md` - If user selects **[2]** (new): Generate new filename with current date/time and proceed to step 3 - If user selects **[3]** (see all): List all session filenames and ask which to continue or if new @@ -65,7 +67,7 @@ Create the brainstorming session document: mkdir -p "$(dirname "{brainstorming_session_output_file}")" # Initialize from template -cp "{template_path}" "{brainstorming_session_output_file}" +cp "../template.md" "{brainstorming_session_output_file}" ``` #### B. Context File Check and Loading @@ -155,6 +157,8 @@ When user selects approach, append the session overview content directly to `{br Which approach appeals to you most? (Enter 1-4)" +**HALT — wait for user selection before proceeding.** + ### 4. Handle User Selection and Initial Document Append #### When user selects approach number: diff --git a/src/core/workflows/brainstorming/steps/step-01b-continue.md b/src/core/skills/bmad-brainstorming/steps/step-01b-continue.md similarity index 96% rename from src/core/workflows/brainstorming/steps/step-01b-continue.md rename to src/core/skills/bmad-brainstorming/steps/step-01b-continue.md index 9b7e5968c..27e41500a 100644 --- a/src/core/workflows/brainstorming/steps/step-01b-continue.md +++ b/src/core/skills/bmad-brainstorming/steps/step-01b-continue.md @@ -63,7 +63,9 @@ Based on session analysis, provide appropriate options: **Options:** [1] Review Results - Go through your documented ideas and insights [2] Start New Session - Begin brainstorming on a new topic -[3) Extend Session - Add more techniques or explore new angles" +[3] Extend Session - Add more techniques or explore new angles" + +**HALT — wait for user selection before proceeding.** **If Session In Progress:** "Let's continue where we left off! diff --git a/src/core/workflows/brainstorming/steps/step-02a-user-selected.md b/src/core/skills/bmad-brainstorming/steps/step-02a-user-selected.md similarity index 98% rename from src/core/workflows/brainstorming/steps/step-02a-user-selected.md rename to src/core/skills/bmad-brainstorming/steps/step-02a-user-selected.md index 2b523db84..5335ff08a 100644 --- a/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +++ b/src/core/skills/bmad-brainstorming/steps/step-02a-user-selected.md @@ -40,7 +40,7 @@ Load techniques from CSV on-demand: **Load CSV and parse:** -- Read `brain-methods.csv` +- Read `../brain-methods.csv` - Parse: category, technique_name, description, facilitation_prompts, best_for, energy_level, typical_duration - Organize by categories for browsing @@ -87,6 +87,8 @@ Show available categories with brief descriptions: **Which category interests you most? Enter 1-7, or tell me what type of thinking you're drawn to.**" +**HALT — wait for user selection before proceeding.** + ### 3. Handle Category Selection After user selects category: @@ -154,6 +156,8 @@ This combination will take approximately [total_time] and focus on [expected out [C] Continue - Begin technique execution [Back] - Modify technique selection" +**HALT — wait for user selection before proceeding.** + ### 6. Update Frontmatter and Continue If user confirms: diff --git a/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md b/src/core/skills/bmad-brainstorming/steps/step-02b-ai-recommended.md similarity index 98% rename from src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md rename to src/core/skills/bmad-brainstorming/steps/step-02b-ai-recommended.md index f928ff043..b7d979a6b 100644 --- a/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +++ b/src/core/skills/bmad-brainstorming/steps/step-02b-ai-recommended.md @@ -47,7 +47,7 @@ Load techniques from CSV for analysis: **Load CSV and parse:** -- Read `brain-methods.csv` +- Read `../brain-methods.csv` - Parse: category, technique_name, description, facilitation_prompts, best_for, energy_level, typical_duration ### 2. Context Analysis for Technique Matching @@ -152,6 +152,8 @@ Provide deeper insight into each recommended technique: [Details] - Tell me more about any specific technique [Back] - Return to approach selection +**HALT — wait for user selection before proceeding.** + ### 6. Handle User Response #### If [C] Continue: diff --git a/src/core/workflows/brainstorming/steps/step-02c-random-selection.md b/src/core/skills/bmad-brainstorming/steps/step-02c-random-selection.md similarity index 98% rename from src/core/workflows/brainstorming/steps/step-02c-random-selection.md rename to src/core/skills/bmad-brainstorming/steps/step-02c-random-selection.md index def91d0a4..af3072fc4 100644 --- a/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +++ b/src/core/skills/bmad-brainstorming/steps/step-02c-random-selection.md @@ -47,7 +47,7 @@ Create anticipation for serendipitous technique discovery: **Load CSV and parse:** -- Read `brain-methods.csv` +- Read `../brain-methods.csv` - Parse: category, technique_name, description, facilitation_prompts, best_for, energy_level, typical_duration - Prepare for intelligent random selection @@ -124,6 +124,8 @@ You're about to experience brainstorming in a completely new way. These unexpect [Details] - Tell me more about any specific technique [Back] - Return to approach selection +**HALT — wait for user selection before proceeding.** + ### 5. Handle User Response #### If [C] Continue: diff --git a/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md b/src/core/skills/bmad-brainstorming/steps/step-02d-progressive-flow.md similarity index 99% rename from src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md rename to src/core/skills/bmad-brainstorming/steps/step-02d-progressive-flow.md index 96aa2d90a..2677814db 100644 --- a/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +++ b/src/core/skills/bmad-brainstorming/steps/step-02d-progressive-flow.md @@ -66,7 +66,7 @@ Explain the value of systematic creative progression: **Load CSV and parse:** -- Read `brain-methods.csv` +- Read `../brain-methods.csv` - Parse: category, technique_name, description, facilitation_prompts, best_for, energy_level, typical_duration - Map techniques to each phase of the creative journey @@ -176,6 +176,8 @@ Show the full progressive flow with timing and transitions: [Details] - Tell me more about any specific phase or technique [Back] - Return to approach selection +**HALT — wait for user selection before proceeding.** + ### 4. Handle Customization Requests If user wants customization: diff --git a/src/core/workflows/brainstorming/steps/step-03-technique-execution.md b/src/core/skills/bmad-brainstorming/steps/step-03-technique-execution.md similarity index 98% rename from src/core/workflows/brainstorming/steps/step-03-technique-execution.md rename to src/core/skills/bmad-brainstorming/steps/step-03-technique-execution.md index 34e2d9c72..71e708fec 100644 --- a/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +++ b/src/core/skills/bmad-brainstorming/steps/step-03-technique-execution.md @@ -1,7 +1,7 @@ # Step 3: Interactive Technique Execution and Facilitation --- -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' + --- ## MANDATORY EXECUTION RULES (READ FIRST): @@ -290,6 +290,8 @@ After final technique element: [B] **Take a quick break** - Pause and return with fresh energy [C] **Move to organization** - Only when you feel we've thoroughly explored +**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. ### 8. Handle Menu Selection @@ -303,7 +305,7 @@ After final technique element: #### If 'K', 'T', 'A', or 'B' (Continue Exploring): - **Stay in Step 3** and restart the facilitation loop for the chosen path (or pause if break requested). -- For option A, invoke Advanced Elicitation: `{advancedElicitationTask}` +- For option A: Invoke the `bmad-advanced-elicitation` skill ### 9. Update Documentation diff --git a/src/core/workflows/brainstorming/steps/step-04-idea-organization.md b/src/core/skills/bmad-brainstorming/steps/step-04-idea-organization.md similarity index 99% rename from src/core/workflows/brainstorming/steps/step-04-idea-organization.md rename to src/core/skills/bmad-brainstorming/steps/step-04-idea-organization.md index 74e7faeb8..cf40dc3cf 100644 --- a/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +++ b/src/core/skills/bmad-brainstorming/steps/step-04-idea-organization.md @@ -249,6 +249,8 @@ Provide final session wrap-up and forward guidance: **Ready to complete your session documentation?** [C] Complete - Generate final brainstorming session document +**HALT — wait for user selection before proceeding.** + ### 8. Handle Completion Selection #### If [C] Complete: diff --git a/src/core/workflows/brainstorming/template.md b/src/core/skills/bmad-brainstorming/template.md similarity index 100% rename from src/core/workflows/brainstorming/template.md rename to src/core/skills/bmad-brainstorming/template.md diff --git a/src/core/workflows/brainstorming/workflow.md b/src/core/skills/bmad-brainstorming/workflow.md similarity index 82% rename from src/core/workflows/brainstorming/workflow.md rename to src/core/skills/bmad-brainstorming/workflow.md index 3a05e93f9..168dab93e 100644 --- a/src/core/workflows/brainstorming/workflow.md +++ b/src/core/skills/bmad-brainstorming/workflow.md @@ -1,6 +1,4 @@ --- -name: brainstorming -description: 'Facilitate interactive brainstorming sessions using diverse creative techniques and ideation methods. Use when the user says help me brainstorm or help me ideate.' context_file: '' # Optional context file path for project-specific guidance --- @@ -42,19 +40,14 @@ Load config from `{project-root}/_bmad/core/config.yaml` and resolve: ### Paths -- `installed_path` = `{project-root}/_bmad/core/workflows/brainstorming` -- `template_path` = `{installed_path}/template.md` -- `brain_techniques_path` = `{installed_path}/brain-methods.csv` - `brainstorming_session_output_file` = `{output_folder}/brainstorming/brainstorming-session-{{date}}-{{time}}.md` (evaluated once at workflow start) All steps MUST reference `{brainstorming_session_output_file}` instead of the full path pattern. - `context_file` = Optional context file path from workflow invocation for project-specific guidance -- `advancedElicitationTask` = `{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md` - --- ## EXECUTION -Read fully and follow: `steps/step-01-session-setup.md` to begin the workflow. +Read fully and follow: `./steps/step-01-session-setup.md` to begin the workflow. **Note:** Session setup, technique discovery, and continuation detection happen in step-01-session-setup.md. diff --git a/src/core/skills/bmad-distillator/SKILL.md b/src/core/skills/bmad-distillator/SKILL.md new file mode 100644 index 000000000..05ef36c16 --- /dev/null +++ b/src/core/skills/bmad-distillator/SKILL.md @@ -0,0 +1,178 @@ +--- +name: bmad-distillator +description: Lossless LLM-optimized compression of source documents. Use when the user requests to 'distill documents' or 'create a distillate'. +argument-hint: "[to create provide input paths] [--validate distillate-path to confirm distillate is lossless and optimized]" +--- + +# 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 new file mode 100644 index 000000000..d581b79f9 --- /dev/null +++ b/src/core/skills/bmad-distillator/agents/distillate-compressor.md @@ -0,0 +1,116 @@ +# 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 new file mode 100644 index 000000000..586e7f62a --- /dev/null +++ b/src/core/skills/bmad-distillator/agents/round-trip-reconstructor.md @@ -0,0 +1,68 @@ +# 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/bmad-skill-manifest.yaml b/src/core/skills/bmad-distillator/bmad-skill-manifest.yaml new file mode 100644 index 000000000..7e0638933 --- /dev/null +++ b/src/core/skills/bmad-distillator/bmad-skill-manifest.yaml @@ -0,0 +1,15 @@ +type: skill +module: core +capabilities: + - name: bmad-distillator + menu-code: DSTL + description: "Produces lossless LLM-optimized distillate from source documents. Use after producing large human presentable documents that will be consumed later by LLMs" + supports-headless: true + input: source documents + args: output, validate + output: single distillate or folder of distillates next to source input + config-vars-used: null + phase: anytime + before: [] + after: [] + is-required: false diff --git a/src/core/skills/bmad-distillator/resources/compression-rules.md b/src/core/skills/bmad-distillator/resources/compression-rules.md new file mode 100644 index 000000000..b45b1581a --- /dev/null +++ b/src/core/skills/bmad-distillator/resources/compression-rules.md @@ -0,0 +1,51 @@ +# 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 new file mode 100644 index 000000000..11ffac526 --- /dev/null +++ b/src/core/skills/bmad-distillator/resources/distillate-format-reference.md @@ -0,0 +1,227 @@ +# 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-init must always be included as a base skill in every bundle +``` + +**Discovery notes say:** +``` +bmad-init must always be included as a base skill in every bundle/install +(solves bootstrapping problem) +``` + +**Distillate keeps the more contextual version:** +``` +- bmad-init: always included as base skill in every bundle (solves bootstrapping) +``` + +### 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-init 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","after":["brainstorming"],"before":["create-prd"],"is-required":true}]}` +- Vercel skills CLI handles platform translation; integration pattern (wrap/fork/call) is PRD decision +- bmad-init: 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-init 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-init, 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/cli/bmad-cli.js` (Commander.js) → `tools/cli/installers/lib/core/installer.js` +- Platforms: `platform-codes.yaml` (~20 platforms with target dirs, legacy dirs, template types, special flags) +- Manifests: CSV files (skill/workflow/agent-manifest.csv) are current source of truth, not JSON +- 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-init 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 new file mode 100644 index 000000000..37fec0343 --- /dev/null +++ b/src/core/skills/bmad-distillator/resources/splitting-strategy.md @@ -0,0 +1,78 @@ +# 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 new file mode 100644 index 000000000..38ddcbe38 --- /dev/null +++ b/src/core/skills/bmad-distillator/scripts/analyze_sources.py @@ -0,0 +1,300 @@ +# /// 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 new file mode 100644 index 000000000..3c65ef20a --- /dev/null +++ b/src/core/skills/bmad-distillator/scripts/tests/test_analyze_sources.py @@ -0,0 +1,204 @@ +"""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-editorial-review-prose/SKILL.md b/src/core/skills/bmad-editorial-review-prose/SKILL.md new file mode 100644 index 000000000..3702b0378 --- /dev/null +++ b/src/core/skills/bmad-editorial-review-prose/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-editorial-review-prose +description: 'Clinical copy-editor that reviews text for communication issues. Use when user says review for prose or improve the prose' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/core/skills/bmad-editorial-review-prose/bmad-skill-manifest.yaml b/src/core/skills/bmad-editorial-review-prose/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/core/skills/bmad-editorial-review-prose/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/core/skills/bmad-editorial-review-prose/workflow.md b/src/core/skills/bmad-editorial-review-prose/workflow.md new file mode 100644 index 000000000..42db68710 --- /dev/null +++ b/src/core/skills/bmad-editorial-review-prose/workflow.md @@ -0,0 +1,81 @@ +# Editorial Review - Prose + +**Goal:** Review text for communication issues that impede comprehension and output suggested fixes in a three-column table. + +**Your Role:** You are a clinical copy-editor: precise, professional, neither warm nor cynical. Apply Microsoft Writing Style Guide principles as your baseline. Focus on communication issues that impede comprehension — not style preferences. NEVER rewrite for preference — only fix genuine issues. Follow ALL steps in the STEPS section IN EXACT ORDER. DO NOT skip steps or change the sequence. HALT immediately when halt-conditions are met. Each action within a step is a REQUIRED action to complete that step. + +**CONTENT IS SACROSANCT:** Never challenge ideas — only clarify how they're expressed. + +**Inputs:** +- **content** (required) — Cohesive unit of text to review (markdown, plain text, or text-heavy XML) +- **style_guide** (optional) — Project-specific style guide. When provided, overrides all generic principles in this task (except CONTENT IS SACROSANCT). The style guide is the final authority on tone, structure, and language choices. +- **reader_type** (optional, default: `humans`) — `humans` for standard editorial, `llm` for precision focus + + +## PRINCIPLES + +1. **Minimal intervention:** Apply the smallest fix that achieves clarity +2. **Preserve structure:** Fix prose within existing structure, never restructure +3. **Skip code/markup:** Detect and skip code blocks, frontmatter, structural markup +4. **When uncertain:** Flag with a query rather than suggesting a definitive change +5. **Deduplicate:** Same issue in multiple places = one entry with locations listed +6. **No conflicts:** Merge overlapping fixes into single entries +7. **Respect author voice:** Preserve intentional stylistic choices + +> **STYLE GUIDE OVERRIDE:** If a style_guide input is provided, it overrides ALL generic principles in this task (including the Microsoft Writing Style Guide baseline and reader_type-specific priorities). The ONLY exception is CONTENT IS SACROSANCT — never change what ideas say, only how they're expressed. When style guide conflicts with this task, style guide wins. + + +## STEPS + +### Step 1: Validate Input + +- Check if content is empty or contains fewer than 3 words + - If empty or fewer than 3 words: **HALT** with error: "Content too short for editorial review (minimum 3 words required)" +- Validate reader_type is `humans` or `llm` (or not provided, defaulting to `humans`) + - If reader_type is invalid: **HALT** with error: "Invalid reader_type. Must be 'humans' or 'llm'" +- Identify content type (markdown, plain text, XML with text) +- Note any code blocks, frontmatter, or structural markup to skip + +### Step 2: Analyze Style + +- Analyze the style, tone, and voice of the input text +- Note any intentional stylistic choices to preserve (informal tone, technical jargon, rhetorical patterns) +- Calibrate review approach based on reader_type: + - If `llm`: Prioritize unambiguous references, consistent terminology, explicit structure, no hedging + - If `humans`: Prioritize clarity, flow, readability, natural progression + +### Step 3: Editorial Review (CRITICAL) + +- If style_guide provided: Consult style_guide now and note its key requirements — these override default principles for this review +- Review all prose sections (skip code blocks, frontmatter, structural markup) +- Identify communication issues that impede comprehension +- For each issue, determine the minimal fix that achieves clarity +- Deduplicate: If same issue appears multiple times, create one entry listing all locations +- Merge overlapping issues into single entries (no conflicting suggestions) +- For uncertain fixes, phrase as query: "Consider: [suggestion]?" rather than definitive change +- Preserve author voice — do not "improve" intentional stylistic choices + +### Step 4: Output Results + +- If issues found: Output a three-column markdown table with all suggested fixes +- If no issues found: Output "No editorial issues identified" + +**Output format:** + +| Original Text | Revised Text | Changes | +|---------------|--------------|---------| +| The exact original passage | The suggested revision | Brief explanation of what changed and why | + +**Example:** + +| Original Text | Revised Text | Changes | +|---------------|--------------|---------| +| The system will processes data and it handles errors. | The system processes data and handles errors. | Fixed subject-verb agreement ("will processes" to "processes"); removed redundant "it" | +| Users can chose from options (lines 12, 45, 78) | Users can choose from options | Fixed spelling: "chose" to "choose" (appears in 3 locations) | + + +## HALT CONDITIONS + +- HALT with error if content is empty or fewer than 3 words +- HALT with error if reader_type is not `humans` or `llm` +- If no issues found after thorough review, output "No editorial issues identified" (this is valid completion, not an error) diff --git a/src/core/skills/bmad-editorial-review-structure/SKILL.md b/src/core/skills/bmad-editorial-review-structure/SKILL.md new file mode 100644 index 000000000..5be13686b --- /dev/null +++ b/src/core/skills/bmad-editorial-review-structure/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-editorial-review-structure +description: 'Structural editor that proposes cuts, reorganization, and simplification while preserving comprehension. Use when user requests structural review or editorial review of structure' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/core/skills/bmad-editorial-review-structure/bmad-skill-manifest.yaml b/src/core/skills/bmad-editorial-review-structure/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/core/skills/bmad-editorial-review-structure/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/core/skills/bmad-editorial-review-structure/workflow.md b/src/core/skills/bmad-editorial-review-structure/workflow.md new file mode 100644 index 000000000..bc6c35f73 --- /dev/null +++ b/src/core/skills/bmad-editorial-review-structure/workflow.md @@ -0,0 +1,174 @@ +# Editorial Review - Structure + +**Goal:** Review document structure and propose substantive changes to improve clarity and flow -- run this BEFORE copy editing. + +**Your Role:** You are a structural editor focused on HIGH-VALUE DENSITY. Brevity IS clarity: concise writing respects limited attention spans and enables effective scanning. Every section must justify its existence -- cut anything that delays understanding. True redundancy is failure. Follow ALL steps in the STEPS section IN EXACT ORDER. DO NOT skip steps or change the sequence. HALT immediately when halt-conditions are met. Each action within a step is a REQUIRED action to complete that step. + +> **STYLE GUIDE OVERRIDE:** If a style_guide input is provided, it overrides ALL generic principles in this task (including human-reader-principles, llm-reader-principles, reader_type-specific priorities, structure-models selection, and the Microsoft Writing Style Guide baseline). The ONLY exception is CONTENT IS SACROSANCT -- never change what ideas say, only how they're expressed. When style guide conflicts with this task, style guide wins. + +**Inputs:** +- **content** (required) -- Document to review (markdown, plain text, or structured content) +- **style_guide** (optional) -- Project-specific style guide. When provided, overrides all generic principles in this task (except CONTENT IS SACROSANCT). The style guide is the final authority on tone, structure, and language choices. +- **purpose** (optional) -- Document's intended purpose (e.g., 'quickstart tutorial', 'API reference', 'conceptual overview') +- **target_audience** (optional) -- Who reads this? (e.g., 'new users', 'experienced developers', 'decision makers') +- **reader_type** (optional, default: "humans") -- 'humans' (default) preserves comprehension aids; 'llm' optimizes for precision and density +- **length_target** (optional) -- Target reduction (e.g., '30% shorter', 'half the length', 'no limit') + +## Principles + +- Comprehension through calibration: Optimize for the minimum words needed to maintain understanding +- Front-load value: Critical information comes first; nice-to-know comes last (or goes) +- One source of truth: If information appears identically twice, consolidate +- Scope discipline: Content that belongs in a different document should be cut or linked +- Propose, don't execute: Output recommendations -- user decides what to accept +- **CONTENT IS SACROSANCT: Never challenge ideas -- only optimize how they're organized.** + +## Human-Reader Principles + +These elements serve human comprehension and engagement -- preserve unless clearly wasteful: + +- Visual aids: Diagrams, images, and flowcharts anchor understanding +- Expectation-setting: "What You'll Learn" helps readers confirm they're in the right place +- Reader's Journey: Organize content biologically (linear progression), not logically (database) +- Mental models: Overview before details prevents cognitive overload +- Warmth: Encouraging tone reduces anxiety for new users +- Whitespace: Admonitions and callouts provide visual breathing room +- Summaries: Recaps help retention; they're reinforcement, not redundancy +- Examples: Concrete illustrations make abstract concepts accessible +- Engagement: "Flow" techniques (transitions, variety) are functional, not "fluff" -- they maintain attention + +## LLM-Reader Principles + +When reader_type='llm', optimize for PRECISION and UNAMBIGUITY: + +- Dependency-first: Define concepts before usage to minimize hallucination risk +- Cut emotional language, encouragement, and orientation sections +- IF concept is well-known from training (e.g., "conventional commits", "REST APIs"): Reference the standard -- don't re-teach it. ELSE: Be explicit -- don't assume the LLM will infer correctly. +- Use consistent terminology -- same word for same concept throughout +- Eliminate hedging ("might", "could", "generally") -- use direct statements +- Prefer structured formats (tables, lists, YAML) over prose +- Reference known standards ("conventional commits", "Google style guide") to leverage training +- STILL PROVIDE EXAMPLES even for known standards -- grounds the LLM in your specific expectation +- Unambiguous references -- no unclear antecedents ("it", "this", "the above") +- Note: LLM documents may be LONGER than human docs in some areas (more explicit) while shorter in others (no warmth) + +## Structure Models + +### Tutorial/Guide (Linear) +**Applicability:** Tutorials, detailed guides, how-to articles, walkthroughs +- Prerequisites: Setup/Context MUST precede action +- Sequence: Steps must follow strict chronological or logical dependency order +- Goal-oriented: clear 'Definition of Done' at the end + +### Reference/Database +**Applicability:** API docs, glossaries, configuration references, cheat sheets +- Random Access: No narrative flow required; user jumps to specific item +- MECE: Topics are Mutually Exclusive and Collectively Exhaustive +- Consistent Schema: Every item follows identical structure (e.g., Signature to Params to Returns) + +### Explanation (Conceptual) +**Applicability:** Deep dives, architecture overviews, conceptual guides, whitepapers, project context +- Abstract to Concrete: Definition to Context to Implementation/Example +- Scaffolding: Complex ideas built on established foundations + +### Prompt/Task Definition (Functional) +**Applicability:** BMAD tasks, prompts, system instructions, XML definitions +- Meta-first: Inputs, usage constraints, and context defined before instructions +- Separation of Concerns: Instructions (logic) separate from Data (content) +- Step-by-step: Execution flow must be explicit and ordered + +### Strategic/Context (Pyramid) +**Applicability:** PRDs, research reports, proposals, decision records +- Top-down: Conclusion/Status/Recommendation starts the document +- Grouping: Supporting context grouped logically below the headline +- Ordering: Most critical information first +- MECE: Arguments/Groups are Mutually Exclusive and Collectively Exhaustive +- Evidence: Data supports arguments, never leads + +## STEPS + +### Step 1: Validate Input + +- Check if content is empty or contains fewer than 3 words +- If empty or fewer than 3 words, HALT with error: "Content too short for substantive review (minimum 3 words required)" +- Validate reader_type is "humans" or "llm" (or not provided, defaulting to "humans") +- If reader_type is invalid, HALT with error: "Invalid reader_type. Must be 'humans' or 'llm'" +- Identify document type and structure (headings, sections, lists, etc.) +- Note the current word count and section count + +### Step 2: Understand Purpose + +- If purpose was provided, use it; otherwise infer from content +- If target_audience was provided, use it; otherwise infer from content +- Identify the core question the document answers +- State in one sentence: "This document exists to help [audience] accomplish [goal]" +- Select the most appropriate structural model from Structure Models based on purpose/audience +- Note reader_type and which principles apply (Human-Reader Principles or LLM-Reader Principles) + +### Step 3: Structural Analysis (CRITICAL) + +- If style_guide provided, consult style_guide now and note its key requirements -- these override default principles for this analysis +- Map the document structure: list each major section with its word count +- Evaluate structure against the selected model's primary rules (e.g., 'Does recommendation come first?' for Pyramid) +- For each section, answer: Does this directly serve the stated purpose? +- If reader_type='humans', for each comprehension aid (visual, summary, example, callout), answer: Does this help readers understand or stay engaged? +- Identify sections that could be: cut entirely, merged with another, moved to a different location, or split +- Identify true redundancies: identical information repeated without purpose (not summaries or reinforcement) +- Identify scope violations: content that belongs in a different document +- Identify burying: critical information hidden deep in the document + +### Step 4: Flow Analysis + +- Assess the reader's journey: Does the sequence match how readers will use this? +- Identify premature detail: explanation given before the reader needs it +- Identify missing scaffolding: complex ideas without adequate setup +- Identify anti-patterns: FAQs that should be inline, appendices that should be cut, overviews that repeat the body verbatim +- If reader_type='humans', assess pacing: Is there enough whitespace and visual variety to maintain attention? + +### Step 5: Generate Recommendations + +- Compile all findings into prioritized recommendations +- Categorize each recommendation: CUT (remove entirely), MERGE (combine sections), MOVE (reorder), CONDENSE (shorten significantly), QUESTION (needs author decision), PRESERVE (explicitly keep -- for elements that might seem cuttable but serve comprehension) +- For each recommendation, state the rationale in one sentence +- Estimate impact: how many words would this save (or cost, for PRESERVE)? +- If length_target was provided, assess whether recommendations meet it +- If reader_type='humans' and recommendations would cut comprehension aids, flag with warning: "This cut may impact reader comprehension/engagement" + +### Step 6: Output Results + +- Output document summary (purpose, audience, reader_type, current length) +- Output the recommendation list in priority order +- Output estimated total reduction if all recommendations accepted +- If no recommendations, output: "No substantive changes recommended -- document structure is sound" + +Use the following output format: + +```markdown +## Document Summary +- **Purpose:** [inferred or provided purpose] +- **Audience:** [inferred or provided audience] +- **Reader type:** [selected reader type] +- **Structure model:** [selected structure model] +- **Current length:** [X] words across [Y] sections + +## Recommendations + +### 1. [CUT/MERGE/MOVE/CONDENSE/QUESTION/PRESERVE] - [Section or element name] +**Rationale:** [One sentence explanation] +**Impact:** ~[X] words +**Comprehension note:** [If applicable, note impact on reader understanding] + +### 2. ... + +## Summary +- **Total recommendations:** [N] +- **Estimated reduction:** [X] words ([Y]% of original) +- **Meets length target:** [Yes/No/No target specified] +- **Comprehension trade-offs:** [Note any cuts that sacrifice reader engagement for brevity] +``` + +## HALT CONDITIONS + +- HALT with error if content is empty or fewer than 3 words +- HALT with error if reader_type is not "humans" or "llm" +- If no structural issues found, output "No substantive changes recommended" (this is valid completion, not an error) diff --git a/src/core/skills/bmad-help/SKILL.md b/src/core/skills/bmad-help/SKILL.md new file mode 100644 index 000000000..ace902c2d --- /dev/null +++ b/src/core/skills/bmad-help/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-help +description: 'Analyzes current state and user query to answer BMad questions or recommend the next workflow or agent. Use when user says what should I do next, what do I do now, or asks a question about BMad' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/core/skills/bmad-help/bmad-skill-manifest.yaml b/src/core/skills/bmad-help/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/core/skills/bmad-help/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/core/tasks/help.md b/src/core/skills/bmad-help/workflow.md similarity index 90% rename from src/core/tasks/help.md rename to src/core/skills/bmad-help/workflow.md index 88f4a4d55..7cea8b7ff 100644 --- a/src/core/tasks/help.md +++ b/src/core/skills/bmad-help/workflow.md @@ -1,7 +1,3 @@ ---- -name: help -description: 'Analyzes what is done and the users query and offers advice on what to do next. Use if user says what should I do next or what do I do now' ---- # Task: BMAD Help @@ -19,24 +15,24 @@ description: 'Analyzes what is done and the users query and offers advice on wha ### Command-Based Workflows When `command` field has a value: -- Show the command prefixed with `/` (e.g., `/bmad-bmm-create-prd`) +- Show the command as a skill name in backticks (e.g., `bmad-bmm-create-prd`) ### Skill-Referenced Workflows When `workflow-file` starts with `skill:`: - The value is a skill reference (e.g., `skill:bmad-quick-dev-new-preview`), NOT a file path - Do NOT attempt to resolve or load it as a file path -- Display using the `command` column value prefixed with `/` (same as command-based workflows) +- Display using the `command` column value as a skill name in backticks (same as command-based workflows) ### Agent-Based Workflows When `command` field is empty: -- User loads agent first via `/agent-command` +- User loads agent first by invoking the agent skill (e.g., `bmad-pm`) - Then invokes by referencing the `code` field or describing the `name` field - Do NOT show a slash command — show the code value and agent load instruction instead Example presentation for empty command: ``` Explain Concept (EC) -Load: /tech-writer, then ask to "EC about [topic]" +Load: tech-writer agent skill, then ask to "EC about [topic]" Agent: Tech Writer Description: Create clear technical explanations with examples... ``` diff --git a/src/core/skills/bmad-index-docs/SKILL.md b/src/core/skills/bmad-index-docs/SKILL.md new file mode 100644 index 000000000..35fffdd45 --- /dev/null +++ b/src/core/skills/bmad-index-docs/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-index-docs +description: 'Generates or updates an index.md to reference all docs in the folder. Use if user requests to create or update an index of all files in a specific folder' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/core/skills/bmad-index-docs/bmad-skill-manifest.yaml b/src/core/skills/bmad-index-docs/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/core/skills/bmad-index-docs/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/core/skills/bmad-index-docs/workflow.md b/src/core/skills/bmad-index-docs/workflow.md new file mode 100644 index 000000000..b500cf984 --- /dev/null +++ b/src/core/skills/bmad-index-docs/workflow.md @@ -0,0 +1,61 @@ +# Index Docs + +**Goal:** Generate or update an index.md to reference all docs in a target folder. + + +## EXECUTION + +### Step 1: Scan Directory + +- List all files and subdirectories in the target location + +### Step 2: Group Content + +- Organize files by type, purpose, or subdirectory + +### Step 3: Generate Descriptions + +- Read each file to understand its actual purpose and create brief (3-10 word) descriptions based on the content, not just the filename + +### Step 4: Create/Update Index + +- Write or update index.md with organized file listings + + +## OUTPUT FORMAT + +```markdown +# Directory Index + +## Files + +- **[filename.ext](./filename.ext)** - Brief description +- **[another-file.ext](./another-file.ext)** - Brief description + +## Subdirectories + +### subfolder/ + +- **[file1.ext](./subfolder/file1.ext)** - Brief description +- **[file2.ext](./subfolder/file2.ext)** - Brief description + +### another-folder/ + +- **[file3.ext](./another-folder/file3.ext)** - Brief description +``` + + +## HALT CONDITIONS + +- HALT if target directory does not exist or is inaccessible +- HALT if user does not have write permissions to create index.md + + +## VALIDATION + +- Use relative paths starting with ./ +- Group similar files together +- Read file contents to generate accurate descriptions - don't guess from filenames +- Keep descriptions concise but informative (3-10 words) +- Sort alphabetically within groups +- Skip hidden files (starting with .) unless specified diff --git a/src/core/skills/bmad-party-mode/SKILL.md b/src/core/skills/bmad-party-mode/SKILL.md new file mode 100644 index 000000000..8fb3d9af8 --- /dev/null +++ b/src/core/skills/bmad-party-mode/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-party-mode +description: 'Orchestrates group discussions between all installed BMAD agents, enabling natural multi-agent conversations. Use when user requests party mode.' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/core/skills/bmad-party-mode/bmad-skill-manifest.yaml b/src/core/skills/bmad-party-mode/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/core/skills/bmad-party-mode/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/core/workflows/party-mode/steps/step-01-agent-loading.md b/src/core/skills/bmad-party-mode/steps/step-01-agent-loading.md similarity index 100% rename from src/core/workflows/party-mode/steps/step-01-agent-loading.md rename to src/core/skills/bmad-party-mode/steps/step-01-agent-loading.md diff --git a/src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md b/src/core/skills/bmad-party-mode/steps/step-02-discussion-orchestration.md similarity index 100% rename from src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md rename to src/core/skills/bmad-party-mode/steps/step-02-discussion-orchestration.md diff --git a/src/core/workflows/party-mode/steps/step-03-graceful-exit.md b/src/core/skills/bmad-party-mode/steps/step-03-graceful-exit.md similarity index 99% rename from src/core/workflows/party-mode/steps/step-03-graceful-exit.md rename to src/core/skills/bmad-party-mode/steps/step-03-graceful-exit.md index 92274a382..d3dbb7192 100644 --- a/src/core/workflows/party-mode/steps/step-03-graceful-exit.md +++ b/src/core/skills/bmad-party-mode/steps/step-03-graceful-exit.md @@ -93,7 +93,6 @@ Final workflow completion steps: ```yaml --- stepsCompleted: [1, 2, 3] -workflowType: 'party-mode' user_name: '{{user_name}}' date: '{{date}}' agents_loaded: true diff --git a/src/core/workflows/party-mode/workflow.md b/src/core/skills/bmad-party-mode/workflow.md similarity index 95% rename from src/core/workflows/party-mode/workflow.md rename to src/core/skills/bmad-party-mode/workflow.md index f0f5bd99e..e8e13b2a1 100644 --- a/src/core/workflows/party-mode/workflow.md +++ b/src/core/skills/bmad-party-mode/workflow.md @@ -1,6 +1,4 @@ --- -name: party-mode -description: 'Orchestrates group discussions between all installed BMAD agents, enabling natural multi-agent conversations. Use when user requests party mode.' --- # Party Mode Workflow @@ -36,7 +34,6 @@ Load config from `{project-root}/_bmad/core/config.yaml` and resolve: ### Paths -- `installed_path` = `{project-root}/_bmad/core/workflows/party-mode` - `agent_manifest_path` = `{project-root}/_bmad/_config/agent-manifest.csv` - `standalone_mode` = `true` (party mode is an interactive workflow) @@ -115,7 +112,6 @@ Load step: `./steps/step-02-discussion-orchestration.md` ```yaml --- stepsCompleted: [1] -workflowType: 'party-mode' user_name: '{{user_name}}' date: '{{date}}' agents_loaded: true diff --git a/src/core/skills/bmad-review-adversarial-general/SKILL.md b/src/core/skills/bmad-review-adversarial-general/SKILL.md new file mode 100644 index 000000000..4900bc9e1 --- /dev/null +++ b/src/core/skills/bmad-review-adversarial-general/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-review-adversarial-general +description: 'Perform a Cynical Review and produce a findings report. Use when the user requests a critical review of something' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/core/skills/bmad-review-adversarial-general/bmad-skill-manifest.yaml b/src/core/skills/bmad-review-adversarial-general/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/core/skills/bmad-review-adversarial-general/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/core/tasks/bmad-review-adversarial-general/workflow.md b/src/core/skills/bmad-review-adversarial-general/workflow.md similarity index 87% rename from src/core/tasks/bmad-review-adversarial-general/workflow.md rename to src/core/skills/bmad-review-adversarial-general/workflow.md index ae75b7caa..8290ff16d 100644 --- a/src/core/tasks/bmad-review-adversarial-general/workflow.md +++ b/src/core/skills/bmad-review-adversarial-general/workflow.md @@ -1,8 +1,3 @@ ---- -name: bmad-review-adversarial-general -description: 'Perform a Cynical Review and produce a findings report. Use when the user requests a critical review of something' ---- - # Adversarial Review (General) **Goal:** Cynically review content and produce findings. diff --git a/src/core/skills/bmad-review-edge-case-hunter/SKILL.md b/src/core/skills/bmad-review-edge-case-hunter/SKILL.md new file mode 100644 index 000000000..e321fb9ee --- /dev/null +++ b/src/core/skills/bmad-review-edge-case-hunter/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-review-edge-case-hunter +description: 'Walk every branching path and boundary condition in content, report only unhandled edge cases. Orthogonal to adversarial review - method-driven not attitude-driven. Use when you need exhaustive edge-case analysis of code, specs, or diffs.' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/core/skills/bmad-review-edge-case-hunter/bmad-skill-manifest.yaml b/src/core/skills/bmad-review-edge-case-hunter/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/core/skills/bmad-review-edge-case-hunter/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/core/skills/bmad-review-edge-case-hunter/workflow.md b/src/core/skills/bmad-review-edge-case-hunter/workflow.md new file mode 100644 index 000000000..4d21c3961 --- /dev/null +++ b/src/core/skills/bmad-review-edge-case-hunter/workflow.md @@ -0,0 +1,62 @@ +# Edge Case Hunter Review + +**Goal:** You are a pure path tracer. Never comment on whether code is good or bad; only list missing handling. +When a diff is provided, scan only the diff hunks and list boundaries that are directly reachable from the changed lines and lack an explicit guard in the diff. +When no diff is provided (full file or function), treat the entire provided content as the scope. +Ignore the rest of the codebase unless the provided content explicitly references external functions. + +**Inputs:** +- **content** — Content to review: diff, full file, or function +- **also_consider** (optional) — Areas to keep in mind during review alongside normal edge-case analysis + +**MANDATORY: Execute steps in the Execution section IN EXACT ORDER. DO NOT skip steps or change the sequence. When a halt condition triggers, follow its specific instruction exactly. Each action within a step is a REQUIRED action to complete that step.** + +**Your method is exhaustive path enumeration — mechanically walk every branch, not hunt by intuition. Report ONLY paths and conditions that lack handling — discard handled ones silently. Do NOT editorialize or add filler — findings only.** + + +## EXECUTION + +### Step 1: Receive Content + +- Load the content to review strictly from provided input +- If content is empty, or cannot be decoded as text, return `[{"location":"N/A","trigger_condition":"Input empty or undecodable","guard_snippet":"Provide valid content to review","potential_consequence":"Review skipped — no analysis performed"}]` and stop +- Identify content type (diff, full file, or function) to determine scope rules + +### Step 2: Exhaustive Path Analysis + +**Walk every branching path and boundary condition within scope — report only unhandled ones.** + +- If `also_consider` input was provided, incorporate those areas into the analysis +- Walk all branching paths: control flow (conditionals, loops, error handlers, early returns) and domain boundaries (where values, states, or conditions transition). Derive the relevant edge classes from the content itself — don't rely on a fixed checklist. Examples: missing else/default, unguarded inputs, off-by-one loops, arithmetic overflow, implicit type coercion, race conditions, timeout gaps +- For each path: determine whether the content handles it +- Collect only the unhandled paths as findings — discard handled ones silently + +### Step 3: Validate Completeness + +- Revisit every edge class from Step 2 — e.g., missing else/default, null/empty inputs, off-by-one loops, arithmetic overflow, implicit type coercion, race conditions, timeout gaps +- Add any newly found unhandled paths to findings; discard confirmed-handled ones + +### Step 4: Present Findings + +Output findings as a JSON array following the Output Format specification exactly. + + +## OUTPUT FORMAT + +Return ONLY a valid JSON array of objects. Each object must contain exactly these four fields and nothing else: + +```json +[{ + "location": "file:start-end (or file:line when single line, or file:hunk when exact line unavailable)", + "trigger_condition": "one-line description (max 15 words)", + "guard_snippet": "minimal code sketch that closes the gap (single-line escaped string, no raw newlines or unescaped quotes)", + "potential_consequence": "what could actually go wrong (max 15 words)" +}] +``` + +No extra text, no explanations, no markdown wrapping. An empty array `[]` is valid when no unhandled paths are found. + + +## HALT CONDITIONS + +- If content is empty or cannot be decoded as text, return `[{"location":"N/A","trigger_condition":"Input empty or undecodable","guard_snippet":"Provide valid content to review","potential_consequence":"Review skipped — no analysis performed"}]` and stop diff --git a/src/core/skills/bmad-shard-doc/SKILL.md b/src/core/skills/bmad-shard-doc/SKILL.md new file mode 100644 index 000000000..442af56e2 --- /dev/null +++ b/src/core/skills/bmad-shard-doc/SKILL.md @@ -0,0 +1,6 @@ +--- +name: bmad-shard-doc +description: 'Splits large markdown documents into smaller, organized files based on level 2 (default) sections. Use if the user says perform shard document' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/core/skills/bmad-shard-doc/bmad-skill-manifest.yaml b/src/core/skills/bmad-shard-doc/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/core/skills/bmad-shard-doc/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/core/skills/bmad-shard-doc/workflow.md b/src/core/skills/bmad-shard-doc/workflow.md new file mode 100644 index 000000000..3304991db --- /dev/null +++ b/src/core/skills/bmad-shard-doc/workflow.md @@ -0,0 +1,100 @@ +# Shard Document + +**Goal:** Split large markdown documents into smaller, organized files based on level 2 sections using `npx @kayvan/markdown-tree-parser`. + +## CRITICAL RULES + +- MANDATORY: Execute ALL steps in the EXECUTION section IN EXACT ORDER +- DO NOT skip steps or change the sequence +- HALT immediately when halt-conditions are met +- Each action within a step is a REQUIRED action to complete that step + +## EXECUTION + +### Step 1: Get Source Document + +- Ask user for the source document path if not provided already +- Verify file exists and is accessible +- Verify file is markdown format (.md extension) +- If file not found or not markdown: HALT with error message + +### Step 2: Get Destination Folder + +- Determine default destination: same location as source file, folder named after source file without .md extension + - Example: `/path/to/architecture.md` --> `/path/to/architecture/` +- Ask user for the destination folder path (`[y]` to confirm use of default: `[suggested-path]`, else enter a new path) +- If user accepts default: use the suggested destination path +- If user provides custom path: use the custom destination path +- Verify destination folder exists or can be created +- Check write permissions for destination +- If permission denied: HALT with error message + +### Step 3: Execute Sharding + +- Inform user that sharding is beginning +- Execute command: `npx @kayvan/markdown-tree-parser explode [source-document] [destination-folder]` +- Capture command output and any errors +- If command fails: HALT and display error to user + +### Step 4: Verify Output + +- Check that destination folder contains sharded files +- Verify index.md was created in destination folder +- Count the number of files created +- If no files created: HALT with error message + +### Step 5: Report Completion + +- Display completion report to user including: + - Source document path and name + - Destination folder path + - Number of section files created + - Confirmation that index.md was created + - Any tool output or warnings +- Inform user that sharding completed successfully + +### Step 6: Handle Original Document + +> **Critical:** Keeping both the original and sharded versions defeats the purpose of sharding and can cause confusion. + +Present user with options for the original document: + +> What would you like to do with the original document `[source-document-name]`? +> +> Options: +> - `[d]` Delete - Remove the original (recommended - shards can always be recombined) +> - `[m]` Move to archive - Move original to a backup/archive location +> - `[k]` Keep - Leave original in place (NOT recommended - defeats sharding purpose) +> +> Your choice (d/m/k): + +#### If user selects `d` (delete) + +- Delete the original source document file +- Confirm deletion to user: "Original document deleted: [source-document-path]" +- Note: The document can be reconstructed from shards by concatenating all section files in order + +#### If user selects `m` (move) + +- Determine default archive location: same directory as source, in an `archive` subfolder + - Example: `/path/to/architecture.md` --> `/path/to/archive/architecture.md` +- Ask: Archive location (`[y]` to use default: `[default-archive-path]`, or provide custom path) +- If user accepts default: use default archive path +- If user provides custom path: use custom archive path +- Create archive directory if it does not exist +- Move original document to archive location +- Confirm move to user: "Original document moved to: [archive-path]" + +#### If user selects `k` (keep) + +- Display warning to user: + - Keeping both original and sharded versions is NOT recommended + - The discover_inputs protocol may load the wrong version + - Updates to one will not reflect in the other + - Duplicate content taking up space + - Consider deleting or archiving the original document +- Confirm user choice: "Original document kept at: [source-document-path]" + +## HALT CONDITIONS + +- HALT if npx command fails or produces no output files diff --git a/src/core/tasks/bmad-create-prd/SKILL.md b/src/core/tasks/bmad-create-prd/SKILL.md new file mode 100644 index 000000000..54f764032 --- /dev/null +++ b/src/core/tasks/bmad-create-prd/SKILL.md @@ -0,0 +1,6 @@ +--- +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"' +--- + +Follow the instructions in ./workflow.md. diff --git a/src/core/tasks/bmad-create-prd/bmad-skill-manifest.yaml b/src/core/tasks/bmad-create-prd/bmad-skill-manifest.yaml new file mode 100644 index 000000000..d0f08abdb --- /dev/null +++ b/src/core/tasks/bmad-create-prd/bmad-skill-manifest.yaml @@ -0,0 +1 @@ +type: skill diff --git a/src/core/tasks/bmad-create-prd/data/domain-complexity.csv b/src/core/tasks/bmad-create-prd/data/domain-complexity.csv new file mode 100644 index 000000000..60a7b503f --- /dev/null +++ b/src/core/tasks/bmad-create-prd/data/domain-complexity.csv @@ -0,0 +1,15 @@ +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/core/tasks/bmad-create-prd/data/prd-purpose.md b/src/core/tasks/bmad-create-prd/data/prd-purpose.md new file mode 100644 index 000000000..755230be7 --- /dev/null +++ b/src/core/tasks/bmad-create-prd/data/prd-purpose.md @@ -0,0 +1,197 @@ +# 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/core/tasks/bmad-create-prd/data/project-types.csv b/src/core/tasks/bmad-create-prd/data/project-types.csv new file mode 100644 index 000000000..6f71c513a --- /dev/null +++ b/src/core/tasks/bmad-create-prd/data/project-types.csv @@ -0,0 +1,11 @@ +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/workflows/2-plan-workflows/create-prd/steps-c/step-01-init.md b/src/core/tasks/bmad-create-prd/steps-c/step-01-init.md similarity index 91% rename from src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01-init.md rename to src/core/tasks/bmad-create-prd/steps-c/step-01-init.md index 4b53688d0..8268e6a97 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01-init.md +++ b/src/core/tasks/bmad-create-prd/steps-c/step-01-init.md @@ -1,16 +1,3 @@ ---- -name: 'step-01-init' -description: 'Initialize the PRD workflow by detecting continuation state and setting up the document' - -# File References -nextStepFile: './step-02-discovery.md' -continueStepFile: './step-01b-continue.md' -outputFile: '{planning_artifacts}/prd.md' - -# Template Reference -prdTemplate: '../templates/prd-template.md' ---- - # Step 1: Workflow Initialization **Progress: Step 1 of 11** - Next: Project Discovery @@ -71,11 +58,11 @@ First, check if the output document already exists: ### 2. Handle Continuation (If Document Exists) -If the document exists and has frontmatter with `stepsCompleted` BUT `step-11-complete` is NOT in the list, follow the Continuation Protocol since the document is incomplete: +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 `{continueStepFile}` +- **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 @@ -89,7 +76,7 @@ If no document exists or no `stepsCompleted` in frontmatter: Discover and load context documents using smart discovery. Documents can be in the following locations: - {planning_artifacts}/** - {output_folder}/** -- {product_knowledge}/** +- {project_knowledge}/** - 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) @@ -97,7 +84,7 @@ Also - when searching - documents can be a single markdown file, or a folder wit 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 `{product_knowledge}` or `docs` folder.) +- Project Documentation (generally multiple documents might be found for this in the `{project_knowledge}` or `docs` folder.) - Project Context (`**/project-context.md`) 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 @@ -114,7 +101,7 @@ Try to discover the following: **Document Setup:** -- Copy the template from `{prdTemplate}` to `{outputFile}` +- Copy the template from `../templates/prd-template.md` to `{outputFile}` - Initialize frontmatter with proper structure including inputDocuments array. #### C. Present Initialization Results @@ -151,7 +138,7 @@ Display menu after setup report: #### 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: {nextStepFile} +- 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 @@ -162,7 +149,7 @@ Display menu after setup report: ## 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: `{nextStepFile}` to begin project discovery. +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. --- diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01b-continue.md b/src/core/tasks/bmad-create-prd/steps-c/step-01b-continue.md similarity index 76% rename from src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01b-continue.md rename to src/core/tasks/bmad-create-prd/steps-c/step-01b-continue.md index 2ad958b69..4351cc122 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01b-continue.md +++ b/src/core/tasks/bmad-create-prd/steps-c/step-01b-continue.md @@ -1,11 +1,3 @@ ---- -name: 'step-01b-continue' -description: 'Resume an interrupted PRD workflow from the last completed step' - -# File References -outputFile: '{planning_artifacts}/prd.md' ---- - # Step 1B: Workflow Continuation ## STEP GOAL: @@ -70,21 +62,38 @@ Review the frontmatter to understand: ### 3. Determine Next Step -**Simplified Next Step Logic:** -1. Get the last element from the `stepsCompleted` array (this is the filename of the last completed step, e.g., "step-03-success.md") -2. Load that step file and read its frontmatter -3. Extract the `nextStepFile` value from the frontmatter -4. That's the next step to load! +**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"` -- Load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md`, read its frontmatter -- Read fully and follow: `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md` +- Table lookup → next step is `./step-04-journeys.md` ### 4. Handle Workflow Completion -**If `stepsCompleted` array contains `"step-11-complete.md"`:** +**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. @@ -104,7 +113,7 @@ What would be most helpful?" **Current Progress:** - Last completed: {last step filename from stepsCompleted array} -- Next up: {nextStepFile determined from that step's frontmatter} +- Next up: {next step from lookup table} - Context documents available: {len(inputDocuments)} files **Document Status:** @@ -119,7 +128,7 @@ Display: "**Select an Option:** [C] Continue to {next step name}" #### Menu Handling Logic: -- IF C: Read fully and follow the {nextStepFile} determined in step 3 +- 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: @@ -129,7 +138,7 @@ Display: "**Select an Option:** [C] Continue to {next step name}" ## CRITICAL STEP COMPLETION NOTE -ONLY WHEN [C continue option] is selected and [current state confirmed], will you then read fully and follow: {nextStepFile} to resume the workflow. +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. --- @@ -146,7 +155,7 @@ ONLY WHEN [C continue option] is selected and [current state confirmed], will yo - Discovering new input documents instead of reloading existing ones - Modifying content from already completed steps -- Failing to extract nextStepFile from the last completed step's frontmatter +- 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/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md b/src/core/tasks/bmad-create-prd/steps-c/step-02-discovery.md similarity index 84% rename from src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md rename to src/core/tasks/bmad-create-prd/steps-c/step-02-discovery.md index 639302567..3eeb52465 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md +++ b/src/core/tasks/bmad-create-prd/steps-c/step-02-discovery.md @@ -1,20 +1,3 @@ ---- -name: 'step-02-discovery' -description: 'Discover project type, domain, and context through collaborative dialogue' - -# File References -nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02b-vision.md' -outputFile: '{planning_artifacts}/prd.md' - -# Data Files -projectTypesCSV: '../data/project-types.csv' -domainComplexityCSV: '../data/domain-complexity.csv' - -# Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' ---- - # Step 2: Project Discovery **Progress: Step 2 of 13** - Next: Product Vision @@ -33,6 +16,7 @@ Discover and classify the project - understand what type of product this is, wha - ✅ 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: @@ -96,7 +80,7 @@ Read the frontmatter from `{outputFile}` to get document counts: **Attempt subprocess data lookup:** **Project Type Lookup:** -"Your task: Lookup data in {projectTypesCSV} +"Your task: Lookup data in ../data/project-types.csv **Search criteria:** - Find row where project_type matches {{detectedProjectType}} @@ -108,7 +92,7 @@ project_type, detection_signals **Do NOT return the entire CSV - only the matching row.**" **Domain Complexity Lookup:** -"Your task: Lookup data in {domainComplexityCSV} +"Your task: Lookup data in ../data/domain-complexity.csv **Search criteria:** - Find row where domain matches {{detectedDomain}} @@ -185,9 +169,9 @@ Present the project classification for review, then display menu: Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Product Vision (Step 2b of 13)" #### Menu Handling Logic: -- IF A: Read fully and follow: {advancedElicitationTask} 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: Read fully and follow: {partyModeWorkflow} 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: {nextStepFile} +- 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: @@ -197,7 +181,7 @@ Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Pr ## CRITICAL STEP COMPLETION NOTE -ONLY WHEN [C continue option] is selected and [classification saved to frontmatter], will you then read fully and follow: `{nextStepFile}` to explore product vision. +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. --- diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02b-vision.md b/src/core/tasks/bmad-create-prd/steps-c/step-02b-vision.md similarity index 83% rename from src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02b-vision.md rename to src/core/tasks/bmad-create-prd/steps-c/step-02b-vision.md index b8048932c..37f91e6bd 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02b-vision.md +++ b/src/core/tasks/bmad-create-prd/steps-c/step-02b-vision.md @@ -1,16 +1,3 @@ ---- -name: 'step-02b-vision' -description: 'Discover the product vision and differentiator through collaborative dialogue' - -# File References -nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02c-executive-summary.md' -outputFile: '{planning_artifacts}/prd.md' - -# Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' ---- - # Step 2b: Product Vision Discovery **Progress: Step 2b of 13** - Next: Executive Summary @@ -29,6 +16,7 @@ Discover what makes this product special and understand the product vision throu - ✅ 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: @@ -113,9 +101,9 @@ Present your understanding of the product vision for review, then display menu: Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Executive Summary (Step 2c of 13)" #### Menu Handling Logic: -- IF A: Read fully and follow: {advancedElicitationTask} 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: Read fully and follow: {partyModeWorkflow} 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: {nextStepFile} +- 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: @@ -125,7 +113,7 @@ Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Ex ## CRITICAL STEP COMPLETION NOTE -ONLY WHEN [C continue option] is selected and [stepsCompleted updated], will you then read fully and follow: `{nextStepFile}` to generate the Executive Summary. +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. --- diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02c-executive-summary.md b/src/core/tasks/bmad-create-prd/steps-c/step-02c-executive-summary.md similarity index 84% rename from src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02c-executive-summary.md rename to src/core/tasks/bmad-create-prd/steps-c/step-02c-executive-summary.md index 0e4d4ff68..93c2ac2e2 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02c-executive-summary.md +++ b/src/core/tasks/bmad-create-prd/steps-c/step-02c-executive-summary.md @@ -1,16 +1,3 @@ ---- -name: 'step-02c-executive-summary' -description: 'Generate and append the Executive Summary section to the PRD document' - -# File References -nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md' -outputFile: '{planning_artifacts}/prd.md' - -# Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' ---- - # Step 2c: Executive Summary Generation **Progress: Step 2c of 13** - Next: Success Criteria @@ -29,6 +16,7 @@ Generate the Executive Summary content using insights from classification (step - ✅ 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: @@ -103,9 +91,9 @@ Present the executive summary content for user review, then display menu: Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Success Criteria (Step 3 of 13)" #### Menu Handling Logic: -- IF A: Read fully and follow: {advancedElicitationTask} 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: Read fully and follow: {partyModeWorkflow} 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: {nextStepFile} +- 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: @@ -138,7 +126,7 @@ Where: ## CRITICAL STEP COMPLETION NOTE -ONLY WHEN [C continue option] is selected and [content appended to document], will you then read fully and follow: `{nextStepFile}` to define success criteria. +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. --- diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md b/src/core/tasks/bmad-create-prd/steps-c/step-03-success.md similarity index 85% rename from src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md rename to src/core/tasks/bmad-create-prd/steps-c/step-03-success.md index 2190f8dae..2d57ffe3f 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md +++ b/src/core/tasks/bmad-create-prd/steps-c/step-03-success.md @@ -1,16 +1,3 @@ ---- -name: 'step-03-success' -description: 'Define comprehensive success criteria covering user, business, and technical success' - -# File References -nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md' -outputFile: '{planning_artifacts}/prd.md' - -# Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' ---- - # Step 3: Success Criteria Definition **Progress: Step 3 of 11** - Next: User Journey Mapping @@ -26,6 +13,7 @@ partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' - 💬 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: @@ -175,9 +163,9 @@ Present the success criteria content for user review, then display menu: Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to User Journey Mapping (Step 4 of 11)" #### Menu Handling Logic: -- IF A: Read fully and follow: {advancedElicitationTask} 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: Read fully and follow: {partyModeWorkflow} 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: {nextStepFile} +- 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: @@ -221,6 +209,6 @@ If working in regulated domains (healthcare, fintech, govtech): ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md` to map user journeys. +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/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md b/src/core/tasks/bmad-create-prd/steps-c/step-04-journeys.md similarity index 86% rename from src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md rename to src/core/tasks/bmad-create-prd/steps-c/step-04-journeys.md index 6c6a22bbe..ba9d6752c 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md +++ b/src/core/tasks/bmad-create-prd/steps-c/step-04-journeys.md @@ -1,16 +1,3 @@ ---- -name: 'step-04-journeys' -description: 'Map ALL user types that interact with the system with narrative story-based journeys' - -# File References -nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md' -outputFile: '{planning_artifacts}/prd.md' - -# Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' ---- - # Step 4: User Journey Mapping **Progress: Step 4 of 11** - Next: Domain Requirements @@ -26,6 +13,7 @@ partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' - 💬 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: @@ -155,9 +143,9 @@ Present the user journey content for review, then display menu: Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Domain Requirements (Step 5 of 11)" #### Menu Handling Logic: -- IF A: Read fully and follow: {advancedElicitationTask} 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: Read fully and follow: {partyModeWorkflow} 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: {nextStepFile} +- 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: @@ -208,6 +196,6 @@ When user selects 'C', append the content directly to the document using the str ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md`. +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/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md b/src/core/tasks/bmad-create-prd/steps-c/step-05-domain.md similarity index 84% rename from src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md rename to src/core/tasks/bmad-create-prd/steps-c/step-05-domain.md index 5ad1c88ac..07fe2a624 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md +++ b/src/core/tasks/bmad-create-prd/steps-c/step-05-domain.md @@ -1,24 +1,10 @@ ---- -name: 'step-05-domain' -description: 'Explore domain-specific requirements for complex domains (optional step)' - -# File References -nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md' -outputFile: '{planning_artifacts}/prd.md' -domainComplexityCSV: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv' - -# Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' ---- - # 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 {domainComplexityCSV}, explore domain-specific constraints, compliance requirements, and technical considerations that shape the product. +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): @@ -30,6 +16,7 @@ For complex domains only that have a mapping in {domainComplexityCSV}, explore d - ✅ 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: @@ -92,7 +79,7 @@ Proceed with domain exploration. **Attempt subprocess data lookup:** -"Your task: Lookup data in {domainComplexityCSV} +"Your task: Lookup data in ../data/domain-complexity.csv **Search criteria:** - Find row where domain matches {{domainFromStep02}} @@ -154,9 +141,9 @@ Acknowledge the domain and explore what makes it complex: Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue - Save and Proceed to Innovation (Step 6 of 13)" #### Menu Handling Logic: -- IF A: Read fully and follow: {advancedElicitationTask}, and when finished redisplay the menu -- IF P: Read fully and follow: {partyModeWorkflow}, and when finished redisplay the menu -- IF C: Save content to {outputFile}, update frontmatter, then read fully and follow: {nextStepFile} +- 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: @@ -178,7 +165,7 @@ 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: `{nextStepFile}` to explore innovation. +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. --- diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md b/src/core/tasks/bmad-create-prd/steps-c/step-06-innovation.md similarity index 83% rename from src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md rename to src/core/tasks/bmad-create-prd/steps-c/step-06-innovation.md index 38a804d65..b12d68bd3 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md +++ b/src/core/tasks/bmad-create-prd/steps-c/step-06-innovation.md @@ -1,19 +1,3 @@ ---- -name: 'step-06-innovation' -description: 'Detect and explore innovative aspects of the product (optional step)' - -# File References -nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md' -outputFile: '{planning_artifacts}/prd.md' - -# Data Files -projectTypesCSV: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/project-types.csv' - -# Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' ---- - # Step 6: Innovation Discovery **Progress: Step 6 of 11** - Next: Project Type Analysis @@ -29,6 +13,7 @@ partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' - 💬 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: @@ -64,7 +49,7 @@ Detect and explore innovation patterns in the product, focusing on what makes it Load innovation signals specific to this project type: -- Load `{projectTypesCSV}` completely +- 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 @@ -155,9 +140,9 @@ Present the innovation content for review, then display menu: Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Project Type Analysis (Step 7 of 11)" #### Menu Handling Logic: -- IF A: Read fully and follow: {advancedElicitationTask} 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: Read fully and follow: {partyModeWorkflow} 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: {nextStepFile} +- 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: @@ -176,7 +161,7 @@ Display: "**Select:** [A] Advanced Elicitation - Let's try to find innovative an ### Menu Handling Logic: - IF A: Proceed with content generation anyway, then return to menu -- IF C: Skip this step, then read fully and follow: {nextStepFile} +- 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 @@ -212,7 +197,7 @@ When user selects 'C', append the content directly to the document using the str ## SKIP CONDITIONS: -Skip this step and load `{nextStepFile}` if: +Skip this step and load `./step-07-project-type.md` if: - No innovation signals detected in conversation - Product is incremental improvement rather than breakthrough @@ -221,6 +206,6 @@ Skip this step and load `{nextStepFile}` if: ## NEXT STEP: -After user selects 'C' and content is saved to document (or step is skipped), load `{nextStepFile}`. +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/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md b/src/core/tasks/bmad-create-prd/steps-c/step-07-project-type.md similarity index 84% rename from src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md rename to src/core/tasks/bmad-create-prd/steps-c/step-07-project-type.md index 891db0f43..ea2b9b37d 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md +++ b/src/core/tasks/bmad-create-prd/steps-c/step-07-project-type.md @@ -1,19 +1,3 @@ ---- -name: 'step-07-project-type' -description: 'Conduct project-type specific discovery using CSV-driven guidance' - -# File References -nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md' -outputFile: '{planning_artifacts}/prd.md' - -# Data Files -projectTypesCSV: '../data/project-types.csv' - -# Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' ---- - # Step 7: Project-Type Deep Dive **Progress: Step 7 of 11** - Next: Scoping @@ -29,6 +13,7 @@ partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' - 💬 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: @@ -55,7 +40,7 @@ Conduct project-type specific discovery using CSV-driven guidance to define tech **Attempt subprocess data lookup:** -"Your task: Lookup data in {projectTypesCSV} +"Your task: Lookup data in ../data/project-types.csv **Search criteria:** - Find row where project_type matches {{projectTypeFromStep02}} @@ -172,9 +157,9 @@ Present the project-type content for review, then display menu: Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Scoping (Step 8 of 11)" #### Menu Handling Logic: -- IF A: Read fully and follow: {advancedElicitationTask} 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: Read fully and follow: {partyModeWorkflow} 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: {nextStepFile} +- 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: @@ -232,6 +217,6 @@ When user selects 'C', append the content directly to the document using the str ## NEXT STEP: -After user selects 'C' and content is saved to document, load `{nextStepFile}` to define project scope. +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/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md b/src/core/tasks/bmad-create-prd/steps-c/step-08-scoping.md similarity index 86% rename from src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md rename to src/core/tasks/bmad-create-prd/steps-c/step-08-scoping.md index fa620d991..b060dda8d 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md +++ b/src/core/tasks/bmad-create-prd/steps-c/step-08-scoping.md @@ -1,16 +1,3 @@ ---- -name: 'step-08-scoping' -description: 'Define MVP boundaries and prioritize features across development phases' - -# File References -nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md' -outputFile: '{planning_artifacts}/prd.md' - -# Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' ---- - # Step 8: Scoping Exercise - MVP & Future Features **Progress: Step 8 of 11** - Next: Functional Requirements @@ -26,6 +13,7 @@ partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' - 💬 FOCUS on strategic scope decisions that keep projects viable - 🎯 EMPHASIZE lean MVP thinking while preserving long-term vision - ✅ 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: @@ -183,9 +171,9 @@ Present the scoping decisions for review, then display menu: Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Functional Requirements (Step 9 of 11)" #### Menu Handling Logic: -- IF A: Read fully and follow: {advancedElicitationTask} 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: Read fully and follow: {partyModeWorkflow} 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, then read fully and follow: {nextStepFile} +- 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, then read fully and follow: ./step-09-functional.md - IF Any other: help user respond, then redisplay menu #### EXECUTION RULES: @@ -223,6 +211,6 @@ When user selects 'C', append the content directly to the document using the str ## NEXT STEP: -After user selects 'C' and content is saved to document, load {nextStepFile}. +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/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md b/src/core/tasks/bmad-create-prd/steps-c/step-09-functional.md similarity index 87% rename from src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md rename to src/core/tasks/bmad-create-prd/steps-c/step-09-functional.md index be22355e2..46f7a4a1e 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md +++ b/src/core/tasks/bmad-create-prd/steps-c/step-09-functional.md @@ -1,16 +1,3 @@ ---- -name: 'step-09-functional' -description: 'Synthesize all discovery into comprehensive functional requirements' - -# File References -nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md' -outputFile: '{planning_artifacts}/prd.md' - -# Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' ---- - # Step 9: Functional Requirements Synthesis **Progress: Step 9 of 11** - Next: Non-Functional Requirements @@ -26,6 +13,7 @@ partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' - 💬 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: @@ -181,9 +169,9 @@ Present the functional requirements for review, then display menu: Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Non-Functional Requirements (Step 10 of 11)" #### Menu Handling Logic: -- IF A: Read fully and follow: {advancedElicitationTask} 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: Read fully and follow: {partyModeWorkflow} 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: {nextStepFile} +- 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: @@ -226,6 +214,6 @@ Emphasize to user: "This FR list is now binding. Any feature not listed here wil ## NEXT STEP: -After user selects 'C' and content is saved to document, load {nextStepFile} to define non-functional requirements. +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/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md b/src/core/tasks/bmad-create-prd/steps-c/step-10-nonfunctional.md similarity index 87% rename from src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md rename to src/core/tasks/bmad-create-prd/steps-c/step-10-nonfunctional.md index 3dcf3aa25..b00730a0c 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md +++ b/src/core/tasks/bmad-create-prd/steps-c/step-10-nonfunctional.md @@ -1,16 +1,3 @@ ---- -name: 'step-10-nonfunctional' -description: 'Define quality attributes that matter for this specific product' - -# File References -nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md' -outputFile: '{planning_artifacts}/prd.md' - -# Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' ---- - # Step 10: Non-Functional Requirements **Progress: Step 10 of 12** - Next: Polish Document @@ -26,6 +13,7 @@ partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' - 💬 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: @@ -168,9 +156,9 @@ Present the non-functional requirements for review, then display menu: Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Polish Document (Step 11 of 12)" #### Menu Handling Logic: -- IF A: Read fully and follow: {advancedElicitationTask} 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: Read fully and follow: {partyModeWorkflow} 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: {nextStepFile} +- 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: @@ -237,6 +225,6 @@ When user selects 'C', append the content directly to the document using the str ## NEXT STEP: -After user selects 'C' and content is saved to document, load {nextStepFile} to finalize the PRD and complete the workflow. +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/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md b/src/core/tasks/bmad-create-prd/steps-c/step-11-polish.md similarity index 73% rename from src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md rename to src/core/tasks/bmad-create-prd/steps-c/step-11-polish.md index d6df4caea..c63ae5b29 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md +++ b/src/core/tasks/bmad-create-prd/steps-c/step-11-polish.md @@ -1,17 +1,3 @@ ---- -name: 'step-11-polish' -description: 'Optimize and polish the complete PRD document for flow, coherence, and readability' - -# File References -nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md' -outputFile: '{planning_artifacts}/prd.md' -purposeFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md' - -# Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' -partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' ---- - # Step 11: Document Polish **Progress: Step 11 of 12** - Next: Complete PRD @@ -26,6 +12,7 @@ partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' - 💬 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: @@ -55,7 +42,7 @@ Optimize the complete PRD document for flow, coherence, and professional present **CRITICAL:** Load the PRD purpose document first: -- Read `{purposeFile}` to understand what makes a great BMAD PRD +- 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 @@ -99,6 +86,22 @@ Review the entire document with PRD purpose principles in mind: - 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: @@ -169,9 +172,9 @@ Present the polished document for review, then display menu: Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Complete PRD (Step 12 of 12)" #### Menu Handling Logic: -- IF A: Read fully and follow: {advancedElicitationTask} 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: Read fully and follow: {partyModeWorkflow} 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: {nextStepFile} +- 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: @@ -193,6 +196,7 @@ When user selects 'C', replace the entire document content with the polished ver ✅ 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: @@ -212,6 +216,6 @@ When user selects 'C', replace the entire document content with the polished ver ## NEXT STEP: -After user selects 'C' and polished document is saved, load `{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md` to complete the workflow. +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/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md b/src/core/tasks/bmad-create-prd/steps-c/step-12-complete.md similarity index 89% rename from src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md rename to src/core/tasks/bmad-create-prd/steps-c/step-12-complete.md index 9f88be6ee..d7b652524 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md +++ b/src/core/tasks/bmad-create-prd/steps-c/step-12-complete.md @@ -1,12 +1,3 @@ ---- -name: 'step-12-complete' -description: 'Complete the PRD workflow, update status files, and suggest next steps including validation' - -# File References -outputFile: '{planning_artifacts}/prd.md' -validationFlow: '../steps-v/step-v-01-discovery.md' ---- - # Step 12: Workflow Completion **Final Step - Complete the PRD** @@ -60,8 +51,8 @@ Inform user that the PRD is complete and polished: Update the main workflow status file if there is one: -- Load `{status_file}` from workflow configuration (if exists) -- Update workflow_status["prd"] = "{default_output_file}" +- 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 @@ -71,7 +62,7 @@ Offer validation workflows to ensure PRD is ready for implementation: **Available Validation Workflows:** -**Option 1: Check Implementation Readiness** (`{checkImplementationReadinessWorkflow}`) +**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 @@ -87,7 +78,7 @@ Offer validation workflows to ensure PRD is ready for implementation: ### 4. Suggest Next Workflows -PRD complete. Read fully and follow: `{project-root}/_bmad/core/tasks/help.md` +PRD complete. Invoke the `bmad-help` skill. ### 5. Final Completion Confirmation diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/templates/prd-template.md b/src/core/tasks/bmad-create-prd/templates/prd-template.md similarity index 100% rename from src/bmm/workflows/2-plan-workflows/create-prd/templates/prd-template.md rename to src/core/tasks/bmad-create-prd/templates/prd-template.md diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/workflow-create-prd.md b/src/core/tasks/bmad-create-prd/workflow.md similarity index 91% rename from src/bmm/workflows/2-plan-workflows/create-prd/workflow-create-prd.md rename to src/core/tasks/bmad-create-prd/workflow.md index c7c565a72..39f78e9d5 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/workflow-create-prd.md +++ b/src/core/tasks/bmad-create-prd/workflow.md @@ -1,8 +1,6 @@ --- -name: 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"' main_config: '{project-root}/_bmad/bmm/config.yaml' -nextStep: './steps-c/step-01-init.md' +outputFile: '{planning_artifacts}/prd.md' --- # PRD Create Workflow @@ -55,9 +53,10 @@ Load and read full config from {main_config} and resolve: - `date` as system-generated current datetime ✅ 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}`. ### 2. Route to Create Workflow "**Create Mode: Creating a new PRD from scratch.**" -Read fully and follow: `{nextStep}` (steps-c/step-01-init.md) +Read fully and follow: `./steps-c/step-01-init.md` diff --git a/src/core/tasks/bmad-skill-manifest.yaml b/src/core/tasks/bmad-skill-manifest.yaml deleted file mode 100644 index cfe67caa5..000000000 --- a/src/core/tasks/bmad-skill-manifest.yaml +++ /dev/null @@ -1,34 +0,0 @@ -editorial-review-prose.xml: - canonicalId: bmad-editorial-review-prose - type: task - description: "Clinical copy-editor that reviews text for communication issues" - -editorial-review-structure.xml: - canonicalId: bmad-editorial-review-structure - type: task - description: "Structural editor that proposes cuts, reorganization, and simplification while preserving comprehension" - -help.md: - canonicalId: bmad-help - type: task - description: "Analyzes what is done and the users query and offers advice on what to do next" - -index-docs.xml: - canonicalId: bmad-index-docs - type: task - description: "Generates or updates an index.md to reference all docs in the folder" - -review-edge-case-hunter.xml: - canonicalId: bmad-review-edge-case-hunter - type: task - description: "Walk every branching path and boundary condition in content, report only unhandled edge cases" - -shard-doc.xml: - canonicalId: bmad-shard-doc - type: task - description: "Splits large markdown documents into smaller, organized files based on sections" - -workflow.xml: - canonicalId: bmad-workflow - type: task - description: "Execute given workflow by loading its configuration and following instructions" diff --git a/src/core/tasks/editorial-review-prose.xml b/src/core/tasks/editorial-review-prose.xml deleted file mode 100644 index 9b61bf734..000000000 --- a/src/core/tasks/editorial-review-prose.xml +++ /dev/null @@ -1,102 +0,0 @@ - - - Review text for communication issues that impede comprehension and output suggested fixes in a three-column table - - - - - - - - - MANDATORY: Execute ALL steps in the flow section IN EXACT ORDER - DO NOT skip steps or change the sequence - HALT immediately when halt-conditions are met - Each action xml tag within step xml tag is a REQUIRED action to complete that step - - You are a clinical copy-editor: precise, professional, neither warm nor cynical - Apply Microsoft Writing Style Guide principles as your baseline - Focus on communication issues that impede comprehension - not style preferences - NEVER rewrite for preference - only fix genuine issues - - CONTENT IS SACROSANCT: Never challenge ideas—only clarify how they're expressed. - - - Minimal intervention: Apply the smallest fix that achieves clarity - Preserve structure: Fix prose within existing structure, never restructure - Skip code/markup: Detect and skip code blocks, frontmatter, structural markup - When uncertain: Flag with a query rather than suggesting a definitive change - Deduplicate: Same issue in multiple places = one entry with locations listed - No conflicts: Merge overlapping fixes into single entries - Respect author voice: Preserve intentional stylistic choices - - STYLE GUIDE OVERRIDE: If a style_guide input is provided, - it overrides ALL generic principles in this task (including the Microsoft - Writing Style Guide baseline and reader_type-specific priorities). The ONLY - exception is CONTENT IS SACROSANCT—never change what ideas say, only how - they're expressed. When style guide conflicts with this task, style guide wins. - - - - - Check if content is empty or contains fewer than 3 words - HALT with error: "Content too short for editorial review (minimum 3 words required)" - Validate reader_type is "humans" or "llm" (or not provided, defaulting to "humans") - HALT with error: "Invalid reader_type. Must be 'humans' or 'llm'" - Identify content type (markdown, plain text, XML with text) - Note any code blocks, frontmatter, or structural markup to skip - - - - Analyze the style, tone, and voice of the input text - Note any intentional stylistic choices to preserve (informal tone, technical jargon, rhetorical patterns) - Calibrate review approach based on reader_type parameter - Prioritize: unambiguous references, consistent terminology, explicit structure, no hedging - Prioritize: clarity, flow, readability, natural progression - - - - Consult style_guide now and note its key requirements—these override default principles for this - review - Review all prose sections (skip code blocks, frontmatter, structural markup) - Identify communication issues that impede comprehension - For each issue, determine the minimal fix that achieves clarity - Deduplicate: If same issue appears multiple times, create one entry listing all locations - Merge overlapping issues into single entries (no conflicting suggestions) - For uncertain fixes, phrase as query: "Consider: [suggestion]?" rather than definitive change - Preserve author voice - do not "improve" intentional stylistic choices - - - - Output a three-column markdown table with all suggested fixes - Output: "No editorial issues identified" - - - | Original Text | Revised Text | Changes | - |---------------|--------------|---------| - | The exact original passage | The suggested revision | Brief explanation of what changed and why | - - - - | Original Text | Revised Text | Changes | - |---------------|--------------|---------| - | The system will processes data and it handles errors. | The system processes data and handles errors. | Fixed subject-verb - agreement ("will processes" to "processes"); removed redundant "it" | - | Users can chose from options (lines 12, 45, 78) | Users can choose from options | Fixed spelling: "chose" to "choose" (appears in - 3 locations) | - - - - - - HALT with error if content is empty or fewer than 3 words - HALT with error if reader_type is not "humans" or "llm" - If no issues found after thorough review, output "No editorial issues identified" (this is valid completion, not an error) - - - \ No newline at end of file diff --git a/src/core/tasks/editorial-review-structure.xml b/src/core/tasks/editorial-review-structure.xml deleted file mode 100644 index 6a8cb7819..000000000 --- a/src/core/tasks/editorial-review-structure.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - Review document structure and propose substantive changes - to improve clarity and flow-run this BEFORE copy editing - - - - - - - - - - MANDATORY: Execute ALL steps in the flow section IN EXACT ORDER - DO NOT skip steps or change the sequence - HALT immediately when halt-conditions are met - Each action xml tag within step xml tag is a REQUIRED action to complete that step - You are a structural editor focused on HIGH-VALUE DENSITY - Brevity IS clarity: Concise writing respects limited attention spans and enables effective scanning - Every section must justify its existence-cut anything that delays understanding - True redundancy is failure - - Comprehension through calibration: Optimize for the minimum words needed to maintain understanding - Front-load value: Critical information comes first; nice-to-know comes last (or goes) - One source of truth: If information appears identically twice, consolidate - Scope discipline: Content that belongs in a different document should be cut or linked - Propose, don't execute: Output recommendations-user decides what to accept - CONTENT IS SACROSANCT: Never challenge ideas—only optimize how they're organized. - - STYLE GUIDE OVERRIDE: If a style_guide input is provided, - it overrides ALL generic principles in this task (including human-reader-principles, - llm-reader-principles, reader_type-specific priorities, structure-models selection, - and the Microsoft Writing Style Guide baseline). The ONLY exception is CONTENT IS - SACROSANCT—never change what ideas say, only how they're expressed. When style - guide conflicts with this task, style guide wins. - - These elements serve human comprehension and engagement-preserve unless clearly wasteful: - Visual aids: Diagrams, images, and flowcharts anchor understanding - Expectation-setting: "What You'll Learn" helps readers confirm they're in the right place - Reader's Journey: Organize content biologically (linear progression), not logically (database) - Mental models: Overview before details prevents cognitive overload - Warmth: Encouraging tone reduces anxiety for new users - Whitespace: Admonitions and callouts provide visual breathing room - Summaries: Recaps help retention; they're reinforcement, not redundancy - Examples: Concrete illustrations make abstract concepts accessible - Engagement: "Flow" techniques (transitions, variety) are functional, not "fluff"-they maintain attention - - - When reader_type='llm', optimize for PRECISION and UNAMBIGUITY: - Dependency-first: Define concepts before usage to minimize hallucination risk - Cut emotional language, encouragement, and orientation sections - - IF concept is well-known from training (e.g., "conventional - commits", "REST APIs"): Reference the standard-don't re-teach it - ELSE: Be explicit-don't assume the LLM will infer correctly - - Use consistent terminology-same word for same concept throughout - Eliminate hedging ("might", "could", "generally")-use direct statements - Prefer structured formats (tables, lists, YAML) over prose - Reference known standards ("conventional commits", "Google style guide") to leverage training - STILL PROVIDE EXAMPLES even for known standards-grounds the LLM in your specific expectation - Unambiguous references-no unclear antecedents ("it", "this", "the above") - Note: LLM documents may be LONGER than human docs in some areas - (more explicit) while shorter in others (no warmth) - - - - Prerequisites: Setup/Context MUST precede action - Sequence: Steps must follow strict chronological or logical dependency order - Goal-oriented: clear 'Definition of Done' at the end - - - Random Access: No narrative flow required; user jumps to specific item - MECE: Topics are Mutually Exclusive and Collectively Exhaustive - Consistent Schema: Every item follows identical structure (e.g., Signature to Params to Returns) - - - Abstract to Concrete: Definition to Context to Implementation/Example - Scaffolding: Complex ideas built on established foundations - - - Meta-first: Inputs, usage constraints, and context defined before instructions - Separation of Concerns: Instructions (logic) separate from Data (content) - Step-by-step: Execution flow must be explicit and ordered - - - Top-down: Conclusion/Status/Recommendation starts the document - Grouping: Supporting context grouped logically below the headline - Ordering: Most critical information first - MECE: Arguments/Groups are Mutually Exclusive and Collectively Exhaustive - Evidence: Data supports arguments, never leads - - - - - - Check if content is empty or contains fewer than 3 words - HALT with error: "Content - too short for substantive review (minimum 3 words required)" - Validate reader_type is "humans" or "llm" (or not provided, defaulting to "humans") - HALT with error: "Invalid reader_type. Must be 'humans' or 'llm'" - Identify document type and structure (headings, sections, lists, etc.) - Note the current word count and section count - - - If purpose was provided, use it; otherwise infer from content - If target_audience was provided, use it; otherwise infer from content - Identify the core question the document answers - State in one sentence: "This document exists to help [audience] accomplish [goal]" - Select the most appropriate structural model from structure-models based on purpose/audience - Note reader_type and which principles apply (human-reader-principles or llm-reader-principles) - - - Consult style_guide now and note its key requirements—these override default principles for this - analysis - Map the document structure: list each major section with its word count - Evaluate structure against the selected model's primary rules - (e.g., 'Does recommendation come first?' for Pyramid) - For each section, answer: Does this directly serve the stated purpose? - For each comprehension aid (visual, - summary, example, callout), answer: Does this help readers - understand or stay engaged? - Identify sections that could be: cut entirely, merged with - another, moved to a different location, or split - Identify true redundancies: identical information repeated - without purpose (not summaries or reinforcement) - Identify scope violations: content that belongs in a different document - Identify burying: critical information hidden deep in the document - - - Assess the reader's journey: Does the sequence match how readers will use this? - Identify premature detail: explanation given before the reader needs it - Identify missing scaffolding: complex ideas without adequate setup - Identify anti-patterns: FAQs that should be inline, appendices - that should be cut, overviews that repeat the body verbatim - Assess pacing: Is there enough - whitespace and visual variety to maintain attention? - - - Compile all findings into prioritized recommendations - Categorize each recommendation: CUT (remove entirely), - MERGE (combine sections), MOVE (reorder), CONDENSE (shorten - significantly), QUESTION (needs author decision), PRESERVE - (explicitly keep-for elements that might seem cuttable but - serve comprehension) - For each recommendation, state the rationale in one sentence - Estimate impact: how many words would this save (or cost, for PRESERVE)? - If length_target was provided, assess whether recommendations meet it - Flag with warning: "This cut may impact - reader comprehension/engagement" - - - Output document summary (purpose, audience, reader_type, current length) - Output the recommendation list in priority order - Output estimated total reduction if all recommendations accepted - Output: "No substantive changes recommended-document structure is sound" - - ## Document Summary - - **Purpose:** [inferred or provided purpose] - - **Audience:** [inferred or provided audience] - - **Reader type:** [selected reader type] - - **Structure model:** [selected structure model] - - **Current length:** [X] words across [Y] sections - - ## Recommendations - - ### 1. [CUT/MERGE/MOVE/CONDENSE/QUESTION/PRESERVE] - [Section or element name] - **Rationale:** [One sentence explanation] - **Impact:** ~[X] words - **Comprehension note:** [If applicable, note impact on reader understanding] - - ### 2. ... - - ## Summary - - **Total recommendations:** [N] - - **Estimated reduction:** [X] words ([Y]% of original) - - **Meets length target:** [Yes/No/No target specified] - - **Comprehension trade-offs:** [Note any cuts that sacrifice reader engagement for brevity] - - - - - HALT with error if content is empty or fewer than 3 words - HALT with error if reader_type is not "humans" or "llm" - If no structural issues found, output "No substantive changes - recommended" (this is valid completion, not an error) - - \ No newline at end of file diff --git a/src/core/tasks/index-docs.xml b/src/core/tasks/index-docs.xml deleted file mode 100644 index 871501e1c..000000000 --- a/src/core/tasks/index-docs.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - MANDATORY: Execute ALL steps in the flow section IN EXACT ORDER - DO NOT skip steps or change the sequence - HALT immediately when halt-conditions are met - Each action xml tag within step xml tag is a REQUIRED action to complete that step - Sections outside flow (validation, output, critical-context) provide essential context - review and apply throughout execution - - - - - List all files and subdirectories in the target location - - - - Organize files by type, purpose, or subdirectory - - - - Read each file to understand its actual purpose and create brief (3-10 word) descriptions based on the content, not just the - filename - - - - Write or update index.md with organized file listings - - - - - - # Directory Index - - ## Files - - - **[filename.ext](./filename.ext)** - Brief description - - **[another-file.ext](./another-file.ext)** - Brief description - - ## Subdirectories - - ### subfolder/ - - - **[file1.ext](./subfolder/file1.ext)** - Brief description - - **[file2.ext](./subfolder/file2.ext)** - Brief description - - ### another-folder/ - - - **[file3.ext](./another-folder/file3.ext)** - Brief description - - - - - HALT if target directory does not exist or is inaccessible - HALT if user does not have write permissions to create index.md - - - - Use relative paths starting with ./ - Group similar files together - Read file contents to generate accurate descriptions - don't guess from filenames - Keep descriptions concise but informative (3-10 words) - Sort alphabetically within groups - Skip hidden files (starting with .) unless specified - - \ No newline at end of file diff --git a/src/core/tasks/review-edge-case-hunter.xml b/src/core/tasks/review-edge-case-hunter.xml deleted file mode 100644 index dfe75ce34..000000000 --- a/src/core/tasks/review-edge-case-hunter.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - You are a pure path tracer. Never comment on whether code is good or bad; only list missing handling. -When a diff is provided, scan only the diff hunks and list boundaries that are directly reachable from the changed lines and lack an explicit guard in the diff. -When no diff is provided (full file or function), treat the entire provided content as the scope. -Ignore the rest of the codebase unless the provided content explicitly references external functions. - - - - - - - Return ONLY a valid JSON array of objects. Each object must contain exactly these four fields and nothing else: -[{ - "location": "file:start-end (or file:line when single line, or file:hunk when exact line unavailable)", - "trigger_condition": "one-line description (max 15 words)", - "guard_snippet": "minimal code sketch that closes the gap (single-line escaped string, no raw newlines or unescaped quotes)", - "potential_consequence": "what could actually go wrong (max 15 words)" -}] -No extra text, no explanations, no markdown wrapping. An empty array [] is valid when no unhandled paths are found. - - - MANDATORY: Execute steps in the flow section IN EXACT ORDER - DO NOT skip steps or change the sequence - When a halt-condition triggers, follow its specific instruction exactly - Each action xml tag within step xml tag is a REQUIRED action to complete that step - - Your method is exhaustive path enumeration — mechanically walk every branch, not hunt by intuition - Trace each branching path: conditionals, switches, early returns, guard clauses, loops, error handlers - Trace each boundary condition: null, undefined, empty, zero, negative, overflow, max-length, type coercion, concurrency, timing - Report ONLY paths and conditions that lack handling — discard handled ones silently - Do NOT editorialize or add filler — findings only - - - - - Load the content to review strictly from provided input - If content is empty, or cannot be decoded as text, return empty array [] and stop - Identify content type (diff, full file, or function) to determine scope rules - - - - Walk every branching path and boundary condition within scope - report only unhandled ones - If also_consider input was provided, incorporate those areas into the analysis - Enumerate all branching paths and boundary conditions within scope: conditionals, switches, early returns, guard clauses, loops, error handlers, null/empty states, overflow, type edges, concurrency, timing - For each path: determine whether the content handles it - Collect only the unhandled paths as findings - discard handled ones silently - - - - Recheck every conditional for missing else/default - Recheck every input for null/empty/wrong-type - Recheck loop bounds for off-by-one and empty-collection - Add any newly found unhandled paths to findings; discard confirmed-handled ones - - - - Output findings as a JSON array following the output-format specification exactly - - - - - If content is empty or cannot be decoded as text, return empty array [] and stop - - - diff --git a/src/core/tasks/shard-doc.xml b/src/core/tasks/shard-doc.xml deleted file mode 100644 index 28ca55594..000000000 --- a/src/core/tasks/shard-doc.xml +++ /dev/null @@ -1,108 +0,0 @@ - - Split large markdown documents into smaller, organized files based on level 2 sections using @kayvan/markdown-tree-parser tool - - - MANDATORY: Execute ALL steps in the flow section IN EXACT ORDER - DO NOT skip steps or change the sequence - HALT immediately when halt-conditions are met - Each action xml tag within step xml tag is a REQUIRED action to complete that step - Sections outside flow (validation, output, critical-context) provide essential context - review and apply throughout execution - - - - Uses `npx @kayvan/markdown-tree-parser` to automatically shard documents by level 2 headings and generate an index - - - - - Ask user for the source document path if not provided already - Verify file exists and is accessible - Verify file is markdown format (.md extension) - HALT with error message - - - - Determine default destination: same location as source file, folder named after source file without .md extension - Example: /path/to/architecture.md → /path/to/architecture/ - Ask user for the destination folder path ([y] to confirm use of default: [suggested-path], else enter a new path) - Use the suggested destination path - Use the custom destination path - Verify destination folder exists or can be created - Check write permissions for destination - HALT with error message - - - - Inform user that sharding is beginning - Execute command: `npx @kayvan/markdown-tree-parser explode [source-document] [destination-folder]` - Capture command output and any errors - HALT and display error to user - - - - Check that destination folder contains sharded files - Verify index.md was created in destination folder - Count the number of files created - HALT with error message - - - - Display completion report to user including: - - Source document path and name - - Destination folder path - - Number of section files created - - Confirmation that index.md was created - - Any tool output or warnings - Inform user that sharding completed successfully - - - - Keeping both the original and sharded versions defeats the purpose of sharding and can cause confusion - Present user with options for the original document: - - What would you like to do with the original document `[source-document-name]`? - - Options: - [d] Delete - Remove the original (recommended - shards can always be recombined) - [m] Move to archive - Move original to a backup/archive location - [k] Keep - Leave original in place (NOT recommended - defeats sharding purpose) - - Your choice (d/m/k): - - - Delete the original source document file - Confirm deletion to user: "✓ Original document deleted: [source-document-path]" - The document can be reconstructed from shards by concatenating all section files in order - - - - Determine default archive location: same directory as source, in an "archive" subfolder - Example: /path/to/architecture.md → /path/to/archive/architecture.md - Archive location ([y] to use default: [default-archive-path], or provide custom path): - Use default archive path - Use custom archive path - Create archive directory if it doesn't exist - Move original document to archive location - Confirm move to user: "✓ Original document moved to: [archive-path]" - - - - Display warning to user: - ⚠️ WARNING: Keeping both original and sharded versions is NOT recommended. - - This creates confusion because: - - The discover_inputs protocol may load the wrong version - - Updates to one won't reflect in the other - - You'll have duplicate content taking up space - - Consider deleting or archiving the original document. - Confirm user choice: "Original document kept at: [source-document-path]" - - - - - - HALT if npx command fails or produces no output files - - \ No newline at end of file diff --git a/src/core/tasks/workflow.xml b/src/core/tasks/workflow.xml deleted file mode 100644 index 351872ac8..000000000 --- a/src/core/tasks/workflow.xml +++ /dev/null @@ -1,235 +0,0 @@ - - Execute given workflow by loading its configuration, following instructions, and producing output - - - Always read COMPLETE files - NEVER use offset/limit when reading any workflow related files - Instructions are MANDATORY - either as file path, steps or embedded list in YAML, XML or markdown - Execute ALL steps in instructions IN EXACT ORDER - Save to template output file after EVERY "template-output" tag - NEVER skip a step - YOU are responsible for every steps execution without fail or excuse - - - - Steps execute in exact numerical order (1, 2, 3...) - Optional steps: Ask user unless #yolo mode active - Template-output tags: Save content, discuss with the user the section completed, and NEVER proceed until the users indicates - to proceed (unless YOLO mode has been activated) - - - - - - Read workflow.yaml from provided path - Load config_source (REQUIRED for all modules) - Load external config from config_source path - Resolve all {config_source}: references with values from config - Resolve system variables (date:system-generated) and paths ({project-root}, {installed_path}) - Ask user for input of any variables that are still unknown - - - - Instructions: Read COMPLETE file from path OR embedded list (REQUIRED) - If template path → Read COMPLETE template file - If validation path → Note path for later loading when needed - If template: false → Mark as action-workflow (else template-workflow) - Data files (csv, json) → Store paths only, load on-demand when instructions reference them - - - - Resolve default_output_file path with all variables and {{date}} - Create output directory if doesn't exist - If template-workflow → Write template to output file with placeholders - If action-workflow → Skip file creation - - - - - For each step in instructions: - - - If optional="true" and NOT #yolo → Ask user to include - If if="condition" → Evaluate condition - If for-each="item" → Repeat step for each item - If repeat="n" → Repeat step n times - - - - Process step instructions (markdown or XML tags) - Replace {{variables}} with values (ask user if unknown) - - action xml tag → Perform the action - check if="condition" xml tag → Conditional block wrapping actions (requires closing </check>) - ask xml tag → Prompt user and WAIT for response - invoke-workflow xml tag → Execute another workflow with given inputs and the workflow.xml runner - invoke-task xml tag → Execute specified task - invoke-protocol name="protocol_name" xml tag → Execute reusable protocol from protocols section - goto step="x" → Jump to specified step - - - - - - Generate content for this section - Save to file (Write first time, Edit subsequent) - Display generated content - [a] Advanced Elicitation, [c] Continue, [p] Party-Mode, [y] YOLO the rest of this document only. WAIT for response. - Start the advanced elicitation workflow {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md - - - Continue to next step - - - Start the party-mode workflow {project-root}/_bmad/core/workflows/party-mode/workflow.md - - - Enter #yolo mode for the rest of the workflow - - - - - - - If no special tags and NOT #yolo: - Continue to next step? (y/n/edit) - - - - - Confirm document saved to output path - Report workflow completion - - - - - Full user interaction and confirmation of EVERY step at EVERY template output - NO EXCEPTIONS except yolo MODE - Skip all confirmations and elicitation, minimize prompts and try to produce all of the workflow automatically by - simulating the remaining discussions with an simulated expert user - - - - - step n="X" goal="..." - Define step with number and goal - optional="true" - Step can be skipped - if="condition" - Conditional execution - for-each="collection" - Iterate over items - repeat="n" - Repeat n times - - - action - Required action to perform - action if="condition" - Single conditional action (inline, no closing tag needed) - check if="condition">...</check> - Conditional block wrapping multiple items (closing tag required) - ask - Get user input (ALWAYS wait for response before continuing) - goto - Jump to another step - invoke-workflow - Call another workflow - invoke-task - Call a task - invoke-protocol - Execute a reusable protocol (e.g., discover_inputs) - - - template-output - Save content checkpoint - critical - Cannot be skipped - example - Show example output - - - - - - Intelligently load project files (whole or sharded) based on workflow's input_file_patterns configuration - - Only execute if workflow.yaml contains input_file_patterns section - - - - Read input_file_patterns from loaded workflow.yaml - For each pattern group (prd, architecture, epics, etc.), note the load_strategy if present - - - - For each pattern in input_file_patterns: - - - - Determine load_strategy from pattern config (defaults to FULL_LOAD if not specified) - - - Load ALL files in sharded directory - used for PRD, Architecture, UX, brownfield docs - Use glob pattern to find ALL .md files (e.g., "{output_folder}/*architecture*/*.md") - Load EVERY matching file completely - Concatenate content in logical order (index.md first if exists, then alphabetical) - Store in variable: {pattern_name_content} - - - - Load specific shard using template variable - example: used for epics with {{epic_num}} - Check for template variables in sharded_single pattern (e.g., {{epic_num}}) - If variable undefined, ask user for value OR infer from context - Resolve template to specific file path - Load that specific file - Store in variable: {pattern_name_content} - - - - Load index.md, analyze structure and description of each doc in the index, then intelligently load relevant docs - DO NOT BE LAZY - use best judgment to load documents that might have relevant information, even if only a 5% chance - Load index.md from sharded directory - Parse table of contents, links, section headers - Analyze workflow's purpose and objective - Identify which linked/referenced documents are likely relevant - If workflow is about authentication and index shows "Auth Overview", "Payment Setup", "Deployment" → Load auth - docs, consider deployment docs, skip payment - Load all identified relevant documents - Store combined content in variable: {pattern_name_content} - When in doubt, LOAD IT - context is valuable, being thorough is better than missing critical info - - Mark pattern as RESOLVED, skip to next pattern - - - - - - Attempt glob match on 'whole' pattern (e.g., "{output_folder}/*prd*.md") - - Load ALL matching files completely (no offset/limit) - Store content in variable: {pattern_name_content} (e.g., {prd_content}) - Mark pattern as RESOLVED, skip to next pattern - - - - - - - Set {pattern_name_content} to empty string - Note in session: "No {pattern_name} files found" (not an error, just unavailable, offer use change to provide) - - - - - - List all loaded content variables with file counts - - ✓ Loaded {prd_content} from 5 sharded files: prd/index.md, prd/requirements.md, ... - ✓ Loaded {architecture_content} from 1 file: Architecture.md - ✓ Loaded {epics_content} from selective load: epics/epic-3.md - ○ No ux_design files found - - This gives workflow transparency into what context is available - - - - - - - - - • This is the complete workflow execution engine - • You MUST Follow instructions exactly as written - • The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.xml - • You MUST have already loaded and processed: {installed_path}/workflow.yaml - • This workflow uses INTENT-DRIVEN PLANNING - adapt organically to product type and context - • YOU ARE FACILITATING A CONVERSATION With a user to produce a final document step by step. The whole process is meant to be - collaborative helping the user flesh out their ideas. Do not rush or optimize and skip any section. - - - \ No newline at end of file diff --git a/src/core/workflows/advanced-elicitation/bmad-skill-manifest.yaml b/src/core/workflows/advanced-elicitation/bmad-skill-manifest.yaml deleted file mode 100644 index 81feebd87..000000000 --- a/src/core/workflows/advanced-elicitation/bmad-skill-manifest.yaml +++ /dev/null @@ -1,3 +0,0 @@ -canonicalId: bmad-advanced-elicitation -type: workflow -description: "Push the LLM to reconsider, refine, and improve its recent output using structured reasoning methods" diff --git a/src/core/workflows/brainstorming/bmad-skill-manifest.yaml b/src/core/workflows/brainstorming/bmad-skill-manifest.yaml deleted file mode 100644 index 39a8f0ca9..000000000 --- a/src/core/workflows/brainstorming/bmad-skill-manifest.yaml +++ /dev/null @@ -1,3 +0,0 @@ -canonicalId: bmad-brainstorming -type: workflow -description: "Facilitate interactive brainstorming sessions using diverse creative techniques and ideation methods" diff --git a/src/core/workflows/party-mode/bmad-skill-manifest.yaml b/src/core/workflows/party-mode/bmad-skill-manifest.yaml deleted file mode 100644 index 397e8fe3d..000000000 --- a/src/core/workflows/party-mode/bmad-skill-manifest.yaml +++ /dev/null @@ -1,3 +0,0 @@ -canonicalId: bmad-party-mode -type: workflow -description: "Orchestrates group discussions between all installed BMAD agents" diff --git a/src/utility/agent-components/activation-steps.txt b/src/utility/agent-components/activation-steps.txt index 9ead0e01c..726be3e06 100644 --- a/src/utility/agent-components/activation-steps.txt +++ b/src/utility/agent-components/activation-steps.txt @@ -8,7 +8,7 @@ Remember: user's name is {user_name} {AGENT_SPECIFIC_STEPS} Show greeting using {user_name} from config, communicate in {communication_language}, then display numbered list of ALL menu items from menu section - Let {user_name} know they can type command `/bmad-help` at any time to get advice on what to do next, and that they can combine that with what they need help with `/bmad-help where should I start with an idea I have that does XYZ` + Let {user_name} know they can invoke the `bmad-help` skill at any time to get advice on what to do next, and that they can combine it with what they need help with Invoke the `bmad-help` skill with a question like "where should I start with an idea I have that does XYZ?" STOP and WAIT for user input - do NOT execute menu items automatically - accept number or cmd trigger or fuzzy command match On user input: Number → process menu item[n] | Text → case-insensitive substring match | Multiple matches → ask user to clarify | No match → show "Not recognized" - When processing a menu item: Check menu-handlers section below - extract any attributes from the selected menu item (workflow, exec, tmpl, data, action, validate-workflow) and follow the corresponding handler instructions \ No newline at end of file + When processing a menu item: Check menu-handlers section below - extract any attributes from the selected menu item (exec, tmpl, data, action, multi) and follow the corresponding handler instructions diff --git a/src/utility/agent-components/handler-multi.txt b/src/utility/agent-components/handler-multi.txt index f33a73fe5..e05be2390 100644 --- a/src/utility/agent-components/handler-multi.txt +++ b/src/utility/agent-components/handler-multi.txt @@ -4,10 +4,9 @@ 2. Parse all nested handlers within the multi item 3. For each nested handler: - Use the 'match' attribute for fuzzy matching user input (or Exact Match of character code in brackets []) - - Process based on handler attributes (exec, workflow, action) + - Process based on handler attributes (exec, action) 4. When user input matches a handler's 'match' pattern: - For exec="path/to/file.md": follow the `handler type="exec"` instructions - - For workflow="path/to/workflow.yaml": follow the `handler type="workflow"` instructions - For action="...": Perform the specified action directly 5. Support both exact matches and fuzzy matching based on the match attribute 6. If no handler matches, prompt user to choose from available options diff --git a/src/utility/agent-components/handler-validate-workflow.txt b/src/utility/agent-components/handler-validate-workflow.txt deleted file mode 100644 index aca040550..000000000 --- a/src/utility/agent-components/handler-validate-workflow.txt +++ /dev/null @@ -1,7 +0,0 @@ - - When command has: validate-workflow="path/to/workflow.yaml" - 1. You MUST LOAD the file at: {project-root}/_bmad/core/tasks/validate-workflow.xml - 2. READ its entire contents and EXECUTE all instructions in that file - 3. Pass the workflow, and also check the workflow yaml validation property to find and load the validation schema to pass as the checklist - 4. The workflow should try to identify the file to validate based on checklist context or else you will ask the user to specify - \ No newline at end of file diff --git a/src/utility/agent-components/handler-workflow.txt b/src/utility/agent-components/handler-workflow.txt deleted file mode 100644 index 1be1dcbe5..000000000 --- a/src/utility/agent-components/handler-workflow.txt +++ /dev/null @@ -1,10 +0,0 @@ - - When menu item has: workflow="path/to/workflow.yaml": - - 1. CRITICAL: Always LOAD {project-root}/_bmad/core/tasks/workflow.xml - 2. Read the complete file - this is the CORE OS for processing BMAD workflows - 3. Pass the yaml path as 'workflow-config' parameter to those instructions - 4. Follow workflow.xml instructions precisely following all steps - 5. Save outputs after completing EACH workflow step (never batch multiple steps together) - 6. If workflow.yaml path is "todo", inform user the workflow hasn't been implemented yet - \ No newline at end of file diff --git a/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml b/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml index 959085cb7..22ae9886d 100644 --- a/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +++ b/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml @@ -19,7 +19,7 @@ agent: menu: - trigger: workflow-test description: Test workflow command - workflow: path/to/workflow + exec: path/to/workflow - trigger: validate-test description: Test validate-workflow command validate-workflow: path/to/validation diff --git a/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml b/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml index 945722b5b..9133b02de 100644 --- a/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml +++ b/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml @@ -19,6 +19,5 @@ agent: menu: - trigger: multi-command description: Menu item with multiple command targets - workflow: path/to/workflow - exec: npm test + exec: path/to/workflow action: perform_action diff --git a/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml b/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml index c8a23a9d5..c95025025 100644 --- a/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml +++ b/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml @@ -22,7 +22,7 @@ agent: action: display_help - trigger: start-workflow description: Start a workflow - workflow: path/to/workflow + exec: path/to/workflow - trigger: execute description: Execute command exec: npm test diff --git a/test/fixtures/file-refs-csv/valid/bmm-style.csv b/test/fixtures/file-refs-csv/valid/bmm-style.csv index ab870ab01..c803064ba 100644 --- a/test/fixtures/file-refs-csv/valid/bmm-style.csv +++ b/test/fixtures/file-refs-csv/valid/bmm-style.csv @@ -1,3 +1,3 @@ module,phase,name,code,sequence,workflow-file,command,required,agent,options,description,output-location,outputs, -bmm,anytime,Document Project,DP,,_bmad/bmm/workflows/document-project/workflow.yaml,bmad-bmm-document-project,false,analyst,Create Mode,"Analyze project",project-knowledge,*, +bmm,anytime,Document Project,DP,,_bmad/bmm/workflows/document-project/workflow.md,bmad-bmm-document-project,false,analyst,Create Mode,"Analyze project",project-knowledge,*, bmm,1-analysis,Brainstorm Project,BP,10,_bmad/core/workflows/brainstorming/workflow.md,bmad-brainstorming,false,analyst,data=template.md,"Brainstorming",planning_artifacts,"session", diff --git a/test/fixtures/file-refs-csv/valid/core-style.csv b/test/fixtures/file-refs-csv/valid/core-style.csv index d55df72d9..c6edcd0dc 100644 --- a/test/fixtures/file-refs-csv/valid/core-style.csv +++ b/test/fixtures/file-refs-csv/valid/core-style.csv @@ -1,3 +1,3 @@ module,phase,name,code,sequence,workflow-file,command,required,agent,options,description,output-location,outputs core,anytime,Brainstorming,BSP,,_bmad/core/workflows/brainstorming/workflow.md,bmad-brainstorming,false,analyst,,"Generate ideas",{output_folder}/brainstorming.md, -core,anytime,Party Mode,PM,,_bmad/core/workflows/party-mode/workflow.md,bmad-party-mode,false,facilitator,,"Multi-agent discussion",, +core,anytime,Party Mode,PM,,_bmad/core/workflows/bmad-party-mode/workflow.md,bmad-party-mode,false,facilitator,,"Multi-agent discussion",, diff --git a/test/test-file-refs-csv.js b/test/test-file-refs-csv.js index d068bd75d..cc66e5589 100644 --- a/test/test-file-refs-csv.js +++ b/test/test-file-refs-csv.js @@ -58,7 +58,7 @@ test('bmm-style.csv: extracts workflow-file refs with trailing commas', () => { const { fullPath, content } = loadFixture('valid/bmm-style.csv'); const refs = extractCsvRefs(fullPath, content); assert(refs.length === 2, `Expected 2 refs, got ${refs.length}`); - assert(refs[0].raw === '_bmad/bmm/workflows/document-project/workflow.yaml', `Wrong raw[0]: ${refs[0].raw}`); + assert(refs[0].raw === '_bmad/bmm/workflows/document-project/workflow.md', `Wrong raw[0]: ${refs[0].raw}`); assert(refs[1].raw === '_bmad/core/workflows/brainstorming/workflow.md', `Wrong raw[1]: ${refs[1].raw}`); assert(refs[0].type === 'project-root', `Wrong type: ${refs[0].type}`); assert(refs[0].line === 2, `Wrong line for row 0: ${refs[0].line}`); @@ -71,7 +71,7 @@ test('core-style.csv: extracts refs from core module-help format', () => { const refs = extractCsvRefs(fullPath, content); assert(refs.length === 2, `Expected 2 refs, got ${refs.length}`); assert(refs[0].raw === '_bmad/core/workflows/brainstorming/workflow.md', `Wrong raw[0]: ${refs[0].raw}`); - assert(refs[1].raw === '_bmad/core/workflows/party-mode/workflow.md', `Wrong raw[1]: ${refs[1].raw}`); + assert(refs[1].raw === '_bmad/core/workflows/bmad-party-mode/workflow.md', `Wrong raw[1]: ${refs[1].raw}`); }); test('minimal.csv: extracts refs from minimal 3-column CSV', () => { diff --git a/test/test-installation-components.js b/test/test-installation-components.js index cf075bd67..e86541593 100644 --- a/test/test-installation-components.js +++ b/test/test-installation-components.js @@ -81,6 +81,60 @@ async function createTestBmadFixture() { return fixtureDir; } +async function createSkillCollisionFixture() { + const fixtureRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'bmad-skill-collision-')); + const fixtureDir = path.join(fixtureRoot, '_bmad'); + const configDir = path.join(fixtureDir, '_config'); + await fs.ensureDir(configDir); + + await fs.writeFile( + path.join(configDir, 'agent-manifest.csv'), + [ + 'name,displayName,title,icon,capabilities,role,identity,communicationStyle,principles,module,path,canonicalId', + '"bmad-master","BMAD Master","","","","","","","","core","_bmad/core/agents/bmad-master.md","bmad-master"', + '', + ].join('\n'), + ); + + await fs.writeFile( + path.join(configDir, 'workflow-manifest.csv'), + [ + 'name,description,module,path,canonicalId', + '"help","Workflow help","core","_bmad/core/workflows/help/workflow.md","bmad-help"', + '', + ].join('\n'), + ); + + await fs.writeFile(path.join(configDir, 'task-manifest.csv'), 'name,displayName,description,module,path,standalone,canonicalId\n'); + await fs.writeFile(path.join(configDir, 'tool-manifest.csv'), 'name,displayName,description,module,path,standalone,canonicalId\n'); + await fs.writeFile( + path.join(configDir, 'skill-manifest.csv'), + [ + 'canonicalId,name,description,module,path,install_to_bmad', + '"bmad-help","bmad-help","Native help skill","core","_bmad/core/tasks/bmad-help/SKILL.md","true"', + '', + ].join('\n'), + ); + + const skillDir = path.join(fixtureDir, 'core', 'tasks', 'bmad-help'); + await fs.ensureDir(skillDir); + await fs.writeFile( + path.join(skillDir, 'SKILL.md'), + ['---', 'name: bmad-help', 'description: Native help skill', '---', '', 'Use this skill directly.'].join('\n'), + ); + + const agentDir = path.join(fixtureDir, 'core', 'agents'); + await fs.ensureDir(agentDir); + await fs.writeFile( + path.join(agentDir, 'bmad-master.md'), + ['---', 'name: BMAD Master', 'description: Master agent', '---', '', '', ''].join( + '\n', + ), + ); + + return { root: fixtureRoot, bmadDir: fixtureDir }; +} + /** * Test Suite */ @@ -1607,9 +1661,10 @@ async function runTests() { await fs.ensureDir(skillDir29); await fs.writeFile(path.join(skillDir29, 'bmad-skill-manifest.yaml'), 'type: skill\n'); await fs.writeFile( - path.join(skillDir29, 'workflow.md'), - '---\nname: My Custom Skill\ndescription: A skill at an unusual path\n---\n\nSkill body content\n', + path.join(skillDir29, 'SKILL.md'), + '---\nname: my-skill\ndescription: A skill at an unusual path\n---\n\nFollow the instructions in [workflow.md](workflow.md).\n', ); + await fs.writeFile(path.join(skillDir29, 'workflow.md'), '# My Custom Skill\n\nSkill body content\n'); // --- Regular workflow dir: core/workflows/regular-wf/ (type: workflow) --- const wfDir29 = path.join(tempFixture29, 'core', 'workflows', 'regular-wf'); @@ -1625,18 +1680,20 @@ async function runTests() { await fs.ensureDir(wfSkillDir29); await fs.writeFile(path.join(wfSkillDir29, 'bmad-skill-manifest.yaml'), 'type: skill\n'); await fs.writeFile( - path.join(wfSkillDir29, 'workflow.md'), - '---\nname: Workflow Skill\ndescription: A skill inside workflows dir\n---\n\nSkill in workflows\n', + path.join(wfSkillDir29, 'SKILL.md'), + '---\nname: wf-skill\ndescription: A skill inside workflows dir\n---\n\nFollow the instructions in [workflow.md](workflow.md).\n', ); + await fs.writeFile(path.join(wfSkillDir29, 'workflow.md'), '# Workflow Skill\n\nSkill in workflows\n'); // --- Skill inside tasks/ dir: core/tasks/task-skill/ --- const taskSkillDir29 = path.join(tempFixture29, 'core', 'tasks', 'task-skill'); await fs.ensureDir(taskSkillDir29); await fs.writeFile(path.join(taskSkillDir29, 'bmad-skill-manifest.yaml'), 'type: skill\n'); await fs.writeFile( - path.join(taskSkillDir29, 'workflow.md'), - '---\nname: Task Skill\ndescription: A skill inside tasks dir\n---\n\nSkill in tasks\n', + path.join(taskSkillDir29, 'SKILL.md'), + '---\nname: task-skill\ndescription: A skill inside tasks dir\n---\n\nFollow the instructions in [workflow.md](workflow.md).\n', ); + await fs.writeFile(path.join(taskSkillDir29, 'workflow.md'), '# Task Skill\n\nSkill in tasks\n'); // Minimal agent so core module is detected await fs.ensureDir(path.join(tempFixture29, 'core', 'agents')); @@ -1649,14 +1706,14 @@ async function runTests() { // Skill at unusual path should be in skills const skillEntry29 = generator29.skills.find((s) => s.canonicalId === 'my-skill'); assert(skillEntry29 !== undefined, 'Skill at unusual path appears in skills[]'); - assert(skillEntry29 && skillEntry29.name === 'My Custom Skill', 'Skill has correct name from frontmatter'); + assert(skillEntry29 && skillEntry29.name === 'my-skill', 'Skill has correct name from frontmatter'); assert( - skillEntry29 && skillEntry29.path.includes('custom-area/my-skill/workflow.md'), + skillEntry29 && skillEntry29.path.includes('custom-area/my-skill/SKILL.md'), 'Skill path includes relative path from module root', ); // Skill should NOT be in workflows - const inWorkflows29 = generator29.workflows.find((w) => w.name === 'My Custom Skill'); + const inWorkflows29 = generator29.workflows.find((w) => w.name === 'my-skill'); assert(inWorkflows29 === undefined, 'Skill at unusual path does NOT appear in workflows[]'); // Skill in tasks/ dir should be in skills @@ -1664,7 +1721,7 @@ async function runTests() { assert(taskSkillEntry29 !== undefined, 'Skill in tasks/ dir appears in skills[]'); // Skill in tasks/ should NOT appear in tasks[] - const inTasks29 = generator29.tasks.find((t) => t.name === 'Task Skill'); + const inTasks29 = generator29.tasks.find((t) => t.name === 'task-skill'); assert(inTasks29 === undefined, 'Skill in tasks/ dir does NOT appear in tasks[]'); // Regular workflow should be in workflows, NOT in skills @@ -1677,7 +1734,7 @@ async function runTests() { // Skill inside workflows/ should be in skills[], NOT in workflows[] (exercises findWorkflows skip at lines 311/322) const wfSkill29 = generator29.skills.find((s) => s.canonicalId === 'wf-skill'); assert(wfSkill29 !== undefined, 'Skill in workflows/ dir appears in skills[]'); - const wfSkillInWorkflows29 = generator29.workflows.find((w) => w.name === 'Workflow Skill'); + const wfSkillInWorkflows29 = generator29.workflows.find((w) => w.name === 'wf-skill'); assert(wfSkillInWorkflows29 === undefined, 'Skill in workflows/ dir does NOT appear in workflows[]'); // Test scanInstalledModules recognizes skill-only modules @@ -1685,9 +1742,10 @@ async function runTests() { await fs.ensureDir(path.join(skillOnlyModDir29, 'deep', 'nested', 'my-skill')); await fs.writeFile(path.join(skillOnlyModDir29, 'deep', 'nested', 'my-skill', 'bmad-skill-manifest.yaml'), 'type: skill\n'); await fs.writeFile( - path.join(skillOnlyModDir29, 'deep', 'nested', 'my-skill', 'workflow.md'), - '---\nname: Nested Skill\ndescription: desc\n---\nbody\n', + path.join(skillOnlyModDir29, 'deep', 'nested', 'my-skill', 'SKILL.md'), + '---\nname: my-skill\ndescription: desc\n---\n\nFollow the instructions in [workflow.md](workflow.md).\n', ); + await fs.writeFile(path.join(skillOnlyModDir29, 'deep', 'nested', 'my-skill', 'workflow.md'), '# Nested Skill\n\nbody\n'); const scannedModules29 = await generator29.scanInstalledModules(tempFixture29); assert(scannedModules29.includes('skill-only-mod'), 'scanInstalledModules recognizes skill-only module'); @@ -1699,6 +1757,117 @@ async function runTests() { console.log(''); + // ============================================================ + // Suite 30: parseSkillMd validation (negative cases) + // ============================================================ + console.log(`${colors.yellow}Test Suite 30: parseSkillMd Validation${colors.reset}\n`); + + let tempFixture30; + try { + tempFixture30 = await fs.mkdtemp(path.join(os.tmpdir(), 'bmad-test-30-')); + + const generator30 = new ManifestGenerator(); + generator30.bmadFolderName = '_bmad'; + + // Case 1: Missing SKILL.md entirely + const noSkillDir = path.join(tempFixture30, 'no-skill-md'); + await fs.ensureDir(noSkillDir); + const result1 = await generator30.parseSkillMd(path.join(noSkillDir, 'SKILL.md'), noSkillDir, 'no-skill-md'); + assert(result1 === null, 'parseSkillMd returns null when SKILL.md is missing'); + + // Case 2: SKILL.md with no frontmatter + const noFmDir = path.join(tempFixture30, 'no-frontmatter'); + await fs.ensureDir(noFmDir); + await fs.writeFile(path.join(noFmDir, 'SKILL.md'), '# Just a heading\n\nNo frontmatter here.\n'); + const result2 = await generator30.parseSkillMd(path.join(noFmDir, 'SKILL.md'), noFmDir, 'no-frontmatter'); + assert(result2 === null, 'parseSkillMd returns null when SKILL.md has no frontmatter'); + + // Case 3: SKILL.md missing description + const noDescDir = path.join(tempFixture30, 'no-desc'); + await fs.ensureDir(noDescDir); + await fs.writeFile(path.join(noDescDir, 'SKILL.md'), '---\nname: no-desc\n---\n\nBody.\n'); + const result3 = await generator30.parseSkillMd(path.join(noDescDir, 'SKILL.md'), noDescDir, 'no-desc'); + assert(result3 === null, 'parseSkillMd returns null when description is missing'); + + // Case 4: SKILL.md missing name + const noNameDir = path.join(tempFixture30, 'no-name'); + await fs.ensureDir(noNameDir); + await fs.writeFile(path.join(noNameDir, 'SKILL.md'), '---\ndescription: has desc but no name\n---\n\nBody.\n'); + const result4 = await generator30.parseSkillMd(path.join(noNameDir, 'SKILL.md'), noNameDir, 'no-name'); + assert(result4 === null, 'parseSkillMd returns null when name is missing'); + + // Case 5: Name mismatch + const mismatchDir = path.join(tempFixture30, 'actual-dir-name'); + await fs.ensureDir(mismatchDir); + await fs.writeFile(path.join(mismatchDir, 'SKILL.md'), '---\nname: wrong-name\ndescription: A skill\n---\n\nBody.\n'); + const result5 = await generator30.parseSkillMd(path.join(mismatchDir, 'SKILL.md'), mismatchDir, 'actual-dir-name'); + assert(result5 === null, 'parseSkillMd returns null when name does not match directory name'); + + // Case 6: Valid SKILL.md (positive control) + const validDir = path.join(tempFixture30, 'valid-skill'); + await fs.ensureDir(validDir); + await fs.writeFile(path.join(validDir, 'SKILL.md'), '---\nname: valid-skill\ndescription: A valid skill\n---\n\nBody.\n'); + const result6 = await generator30.parseSkillMd(path.join(validDir, 'SKILL.md'), validDir, 'valid-skill'); + assert(result6 !== null && result6.name === 'valid-skill', 'parseSkillMd returns metadata for valid SKILL.md'); + + // Case 7: Malformed YAML (non-object) + const malformedDir = path.join(tempFixture30, 'malformed'); + await fs.ensureDir(malformedDir); + await fs.writeFile(path.join(malformedDir, 'SKILL.md'), '---\njust a string\n---\n\nBody.\n'); + const result7 = await generator30.parseSkillMd(path.join(malformedDir, 'SKILL.md'), malformedDir, 'malformed'); + assert(result7 === null, 'parseSkillMd returns null for non-object YAML frontmatter'); + } catch (error) { + assert(false, 'parseSkillMd validation test succeeds', error.message); + } finally { + if (tempFixture30) await fs.remove(tempFixture30).catch(() => {}); + } + + console.log(''); + + // ============================================================ + // Test 31: Skill-format installs report unique skill directories + // ============================================================ + console.log(`${colors.yellow}Test Suite 31: Skill Count Reporting${colors.reset}\n`); + + let collisionFixtureRoot = null; + let collisionProjectDir = null; + + try { + clearCache(); + const collisionFixture = await createSkillCollisionFixture(); + collisionFixtureRoot = collisionFixture.root; + collisionProjectDir = await fs.mkdtemp(path.join(os.tmpdir(), 'bmad-antigravity-test-')); + + const ideManager = new IdeManager(); + await ideManager.ensureInitialized(); + const result = await ideManager.setup('antigravity', collisionProjectDir, collisionFixture.bmadDir, { + silent: true, + selectedModules: ['core'], + }); + + assert(result.success === true, 'Antigravity setup succeeds with overlapping skill names'); + assert(result.detail === '2 agents', 'Installer detail reports agents separately from skills'); + assert(result.handlerResult.results.skillDirectories === 2, 'Result exposes unique skill directory count'); + assert(result.handlerResult.results.agents === 2, 'Result retains generated agent write count'); + assert(result.handlerResult.results.workflows === 1, 'Result retains generated workflow count'); + assert(result.handlerResult.results.skills === 1, 'Result retains verbatim skill count'); + assert( + await fs.pathExists(path.join(collisionProjectDir, '.agent', 'skills', 'bmad-agent-bmad-master', 'SKILL.md')), + 'Agent skill directory is created', + ); + assert( + await fs.pathExists(path.join(collisionProjectDir, '.agent', 'skills', 'bmad-help', 'SKILL.md')), + 'Overlapping skill directory is created once', + ); + } catch (error) { + assert(false, 'Skill-format unique count test succeeds', error.message); + } finally { + if (collisionProjectDir) await fs.remove(collisionProjectDir).catch(() => {}); + if (collisionFixtureRoot) await fs.remove(collisionFixtureRoot).catch(() => {}); + } + + console.log(''); + // ============================================================ // Summary // ============================================================ diff --git a/test/test-workflow-path-regex.js b/test/test-workflow-path-regex.js new file mode 100644 index 000000000..5f57a0ab9 --- /dev/null +++ b/test/test-workflow-path-regex.js @@ -0,0 +1,88 @@ +/** + * Workflow Path Regex Tests + * + * Tests that the source and install workflow path regexes in ModuleManager + * extract the correct capture groups (module name and workflow sub-path). + * + * Usage: node test/test-workflow-path-regex.js + */ + +// ANSI colors +const colors = { + reset: '\u001B[0m', + green: '\u001B[32m', + red: '\u001B[31m', + cyan: '\u001B[36m', + dim: '\u001B[2m', +}; + +let passed = 0; +let failed = 0; + +function assert(condition, testName, errorMessage = '') { + if (condition) { + console.log(`${colors.green}✓${colors.reset} ${testName}`); + passed++; + } else { + console.log(`${colors.red}✗${colors.reset} ${testName}`); + if (errorMessage) { + console.log(` ${colors.dim}${errorMessage}${colors.reset}`); + } + failed++; + } +} + +// --------------------------------------------------------------------------- +// These regexes are extracted from ModuleManager.vendorWorkflowDependencies() +// in tools/cli/installers/lib/modules/manager.js +// --------------------------------------------------------------------------- + +// Source regex (line ~1081) — uses non-capturing group for _bmad +const SOURCE_REGEX = /\{project-root\}\/(?:_bmad)\/([^/]+)\/workflows\/(.+)/; + +// Install regex (line ~1091) — uses non-capturing group for _bmad, +// consistent with source regex +const INSTALL_REGEX = /\{project-root\}\/(?:_bmad)\/([^/]+)\/workflows\/(.+)/; + +// --------------------------------------------------------------------------- +// Test data +// --------------------------------------------------------------------------- +const sourcePath = '{project-root}/_bmad/bmm/workflows/4-implementation/bmad-create-story/workflow.md'; +const installPath = '{project-root}/_bmad/bmgd/workflows/4-production/create-story/workflow.md'; + +console.log(`\n${colors.cyan}Workflow Path Regex Tests${colors.reset}\n`); + +// --- Source regex tests (these should pass — source regex is correct) --- + +const sourceMatch = sourcePath.match(SOURCE_REGEX); + +assert(sourceMatch !== null, 'Source regex matches source path'); +assert( + sourceMatch && sourceMatch[1] === 'bmm', + 'Source regex group [1] is the module name', + `Expected "bmm", got "${sourceMatch && sourceMatch[1]}"`, +); +assert( + sourceMatch && sourceMatch[2] === '4-implementation/bmad-create-story/workflow.md', + 'Source regex group [2] is the workflow sub-path', + `Expected "4-implementation/bmad-create-story/workflow.md", got "${sourceMatch && sourceMatch[2]}"`, +); + +// --- Install regex tests (group [2] returns module name, not sub-path) --- + +const installMatch = installPath.match(INSTALL_REGEX); + +assert(installMatch !== null, 'Install regex matches install path'); + +// This is the critical test: installMatch[2] should be the workflow sub-path, +// because the code uses it as `installWorkflowSubPath`. +// With the bug, installMatch[2] is "bmgd" (module name) instead of the sub-path. +assert( + installMatch && installMatch[2] === '4-production/create-story/workflow.md', + 'Install regex group [2] is the workflow sub-path (used as installWorkflowSubPath)', + `Expected "4-production/create-story/workflow.md", got "${installMatch && installMatch[2]}"`, +); + +// --- Summary --- +console.log(`\n${passed} passed, ${failed} failed\n`); +process.exit(failed > 0 ? 1 : 0); diff --git a/tools/build-docs.mjs b/tools/build-docs.mjs index bf04eb911..5ea825f2d 100644 --- a/tools/build-docs.mjs +++ b/tools/build-docs.mjs @@ -161,6 +161,7 @@ function generateLlmsTxt(outputDir) { '## Core Concepts', '', `- **[Quick Flow](${siteUrl}/explanation/quick-flow/)** - Fast development workflow`, + `- **[Quick Dev New Preview](${siteUrl}/explanation/quick-dev-new-preview/)** - Unified quick workflow with planning, implementation, and review in one run`, `- **[Party Mode](${siteUrl}/explanation/party-mode/)** - Multi-agent collaboration`, `- **[Workflow Map](${siteUrl}/reference/workflow-map/)** - Visual overview of phases and workflows`, '', diff --git a/tools/cli/external-official-modules.yaml b/tools/cli/external-official-modules.yaml index 1f4eb3892..7da00bd35 100644 --- a/tools/cli/external-official-modules.yaml +++ b/tools/cli/external-official-modules.yaml @@ -7,7 +7,7 @@ modules: module-definition: src/module.yaml code: bmb name: "BMad Builder" - description: "Agent, Workflow and Module Builder" + description: "Agent and Builder" defaultSelected: false type: bmad-org npmPackage: bmad-builder @@ -42,16 +42,16 @@ modules: type: bmad-org npmPackage: bmad-method-test-architecture-enterprise - # whiteport-design-system: - # url: https://github.com/bmad-code-org/bmad-method-wds-expansion - # module-definition: src/module.yaml - # code: wds - # name: "Whiteport UX Design System" - # description: "UX design framework with Figma integration" - # defaultSelected: false - # type: community - # npmPackage: bmad-method-wds-expansion - + whiteport-design-studio: + url: https://github.com/bmad-code-org/bmad-method-wds-expansion + module-definition: src/module.yaml + code: wds + name: "Whiteport Design Studio (For UX Professionals)" + description: "Whiteport Design Studio (For UX Professionals)" + defaultSelected: false + type: community + npmPackage: bmad-method-wds-expansion + scsa-module: url: https://github.com/SCSA-dev/scsa-bmad-agents.git module-definition: scsa/module.yaml @@ -90,4 +90,4 @@ modules: description: "Agents and Workflow for Tender Quote Module" defaultSelected: true type: community - npmPackage: scsa-bmad-agents \ No newline at end of file + npmPackage: scsa-bmad-agents diff --git a/tools/cli/installers/lib/core/installer.js b/tools/cli/installers/lib/core/installer.js index 1d9868b60..85864145f 100644 --- a/tools/cli/installers/lib/core/installer.js +++ b/tools/cli/installers/lib/core/installer.js @@ -1153,12 +1153,6 @@ class Installer { preservedModules: modulesForCsvPreserve, }); - addResult( - 'Manifests', - 'ok', - `${manifestStats.workflows} workflows, ${manifestStats.agents} agents, ${manifestStats.tasks} tasks, ${manifestStats.tools} tools`, - ); - // Merge help catalogs message('Generating help catalog...'); await this.mergeModuleHelpCatalogs(bmadDir); @@ -1379,10 +1373,27 @@ class Installer { */ async renderInstallSummary(results, context = {}) { const color = await prompts.getColor(); + const selectedIdes = new Set((context.ides || []).map((ide) => String(ide).toLowerCase())); // Build step lines with status indicators const lines = []; for (const r of results) { + let stepLabel = null; + + if (r.status !== 'ok') { + stepLabel = r.step; + } else if (r.step === 'Core') { + stepLabel = 'BMAD'; + } else if (r.step.startsWith('Module: ')) { + stepLabel = r.step; + } else if (selectedIdes.has(String(r.step).toLowerCase())) { + stepLabel = r.step; + } + + if (!stepLabel) { + continue; + } + let icon; if (r.status === 'ok') { icon = color.green('\u2713'); @@ -1392,7 +1403,11 @@ class Installer { icon = color.red('\u2717'); } const detail = r.detail ? color.dim(` (${r.detail})`) : ''; - lines.push(` ${icon} ${r.step}${detail}`); + lines.push(` ${icon} ${stepLabel}${detail}`); + } + + if ((context.ides || []).length === 0) { + lines.push(` ${color.green('\u2713')} No IDE selected ${color.dim('(installed in _bmad only)')}`); } // Context and warnings @@ -1415,8 +1430,10 @@ class Installer { ` Join our Discord: ${color.dim('https://discord.gg/gk8jAdXWmj')}`, ` Star us on GitHub: ${color.dim('https://github.com/bmad-code-org/BMAD-METHOD/')}`, ` Subscribe on YouTube: ${color.dim('https://www.youtube.com/@BMadCode')}`, - ` Run ${color.cyan('/bmad-help')} with your IDE Agent and ask it how to get started`, ); + if (context.ides && context.ides.length > 0) { + lines.push(` Invoke the ${color.cyan('bmad-help')} skill in your IDE Agent to get started`); + } await prompts.note(lines.join('\n'), 'BMAD is ready to use!'); } diff --git a/tools/cli/installers/lib/core/manifest-generator.js b/tools/cli/installers/lib/core/manifest-generator.js index 8562672b5..5dc4ff078 100644 --- a/tools/cli/installers/lib/core/manifest-generator.js +++ b/tools/cli/installers/lib/core/manifest-generator.js @@ -148,7 +148,7 @@ class ManifestGenerator { /** * Recursively walk a module directory tree, collecting skill directories. * A skill directory is one that contains both a bmad-skill-manifest.yaml with - * type: skill AND a workflow.md (or workflow.yaml) file. + * type: skill AND a SKILL.md file with name/description frontmatter. * Populates this.skills[] and this.skillClaimedDirs (Set of absolute paths). */ async collectSkills() { @@ -169,45 +169,26 @@ class ManifestGenerator { return; } - // Check this directory for skill manifest + workflow file + // Check this directory for skill manifest const manifest = await this.loadSkillManifest(dir); - // Try both workflow.md and workflow.yaml - const workflowFilenames = ['workflow.md', 'workflow.yaml']; - for (const workflowFile of workflowFilenames) { - const workflowPath = path.join(dir, workflowFile); - if (!(await fs.pathExists(workflowPath))) continue; + // Determine if this directory is a skill (type: skill in manifest) + const skillFile = 'SKILL.md'; + const artifactType = this.getArtifactType(manifest, skillFile); - const artifactType = this.getArtifactType(manifest, workflowFile); - if (artifactType !== 'skill') continue; + if (artifactType === 'skill') { + const skillMdPath = path.join(dir, 'SKILL.md'); + const dirName = path.basename(dir); - // Read and parse the workflow file - try { - const rawContent = await fs.readFile(workflowPath, 'utf8'); - const content = rawContent.replaceAll('\r\n', '\n').replaceAll('\r', '\n'); + // Validate and parse SKILL.md + const skillMeta = await this.parseSkillMd(skillMdPath, dir, dirName, debug); - let workflow; - if (workflowFile === 'workflow.yaml') { - workflow = yaml.parse(content); - } else { - const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/); - if (!frontmatterMatch) { - if (debug) console.log(`[DEBUG] collectSkills: skipped (no frontmatter): ${workflowPath}`); - continue; - } - workflow = yaml.parse(frontmatterMatch[1]); - } - - if (!workflow || !workflow.name || !workflow.description) { - if (debug) console.log(`[DEBUG] collectSkills: skipped (missing name/description): ${workflowPath}`); - continue; - } - - // Build path relative from module root + if (skillMeta) { + // Build path relative from module root (points to SKILL.md — the permanent entrypoint) const relativePath = path.relative(modulePath, dir).split(path.sep).join('/'); const installPath = relativePath - ? `${this.bmadFolderName}/${moduleName}/${relativePath}/${workflowFile}` - : `${this.bmadFolderName}/${moduleName}/${workflowFile}`; + ? `${this.bmadFolderName}/${moduleName}/${relativePath}/${skillFile}` + : `${this.bmadFolderName}/${moduleName}/${skillFile}`; // Skills derive canonicalId from directory name — never from manifest if (manifest && manifest.__single && manifest.__single.canonicalId) { @@ -215,21 +196,21 @@ class ManifestGenerator { `Warning: Skill manifest at ${dir}/bmad-skill-manifest.yaml contains canonicalId — this field is ignored for skills (directory name is the canonical ID)`, ); } - const canonicalId = path.basename(dir); + const canonicalId = dirName; this.skills.push({ - name: workflow.name, - description: this.cleanForCSV(workflow.description), + name: skillMeta.name, + description: this.cleanForCSV(skillMeta.description), module: moduleName, path: installPath, canonicalId, - install_to_bmad: this.getInstallToBmad(manifest, workflowFile), + install_to_bmad: this.getInstallToBmad(manifest, skillFile), }); // Add to files list this.files.push({ type: 'skill', - name: workflow.name, + name: skillMeta.name, module: moduleName, path: installPath, }); @@ -237,17 +218,13 @@ class ManifestGenerator { this.skillClaimedDirs.add(dir); if (debug) { - console.log(`[DEBUG] collectSkills: claimed skill "${workflow.name}" as ${canonicalId} at ${dir}`); + console.log(`[DEBUG] collectSkills: claimed skill "${skillMeta.name}" as ${canonicalId} at ${dir}`); } - break; // Successfully claimed — skip remaining workflow filenames - } catch (error) { - if (debug) console.log(`[DEBUG] collectSkills: failed to parse ${workflowPath}: ${error.message}`); } } - // Warn if manifest says type:skill but no workflow file found + // Warn if manifest says type:skill but directory was not claimed if (manifest && !this.skillClaimedDirs.has(dir)) { - // Check if any entry in the manifest is type:skill let hasSkillType = false; if (manifest.__single) { hasSkillType = manifest.__single.type === 'skill'; @@ -260,12 +237,7 @@ class ManifestGenerator { } } if (hasSkillType && debug) { - const hasWorkflow = workflowFilenames.some((f) => entries.some((e) => e.name === f)); - if (hasWorkflow) { - console.log(`[DEBUG] collectSkills: dir has type:skill manifest but workflow file failed to parse: ${dir}`); - } else { - console.log(`[DEBUG] collectSkills: dir has type:skill manifest but no workflow.md/workflow.yaml: ${dir}`); - } + console.log(`[DEBUG] collectSkills: dir has type:skill manifest but failed validation: ${dir}`); } } @@ -285,6 +257,57 @@ class ManifestGenerator { } } + /** + * Parse and validate SKILL.md for a skill directory. + * Returns parsed frontmatter object with name/description, or null if invalid. + * @param {string} skillMdPath - Absolute path to SKILL.md + * @param {string} dir - Skill directory path (for error messages) + * @param {string} dirName - Expected name (must match frontmatter name) + * @param {boolean} debug - Whether to emit debug-level messages + * @returns {Promise} Parsed frontmatter or null + */ + async parseSkillMd(skillMdPath, dir, dirName, debug = false) { + if (!(await fs.pathExists(skillMdPath))) { + if (debug) console.log(`[DEBUG] parseSkillMd: "${dir}" is missing SKILL.md — skipping`); + return null; + } + + try { + const rawContent = await fs.readFile(skillMdPath, 'utf8'); + const content = rawContent.replaceAll('\r\n', '\n').replaceAll('\r', '\n'); + + const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/); + if (frontmatterMatch) { + const skillMeta = yaml.parse(frontmatterMatch[1]); + + if ( + !skillMeta || + typeof skillMeta !== 'object' || + typeof skillMeta.name !== 'string' || + typeof skillMeta.description !== 'string' || + !skillMeta.name || + !skillMeta.description + ) { + if (debug) console.log(`[DEBUG] parseSkillMd: SKILL.md in "${dir}" is missing name or description (or wrong type) — skipping`); + return null; + } + + if (skillMeta.name !== dirName) { + console.error(`Error: SKILL.md name "${skillMeta.name}" does not match directory name "${dirName}" — skipping`); + return null; + } + + return skillMeta; + } + + if (debug) console.log(`[DEBUG] parseSkillMd: SKILL.md in "${dir}" has no frontmatter — skipping`); + return null; + } catch (error) { + if (debug) console.log(`[DEBUG] parseSkillMd: failed to parse SKILL.md in "${dir}": ${error.message} — skipping`); + return null; + } + } + /** * Collect all workflows from core and selected modules * Scans the INSTALLED bmad directory, not the source @@ -308,7 +331,7 @@ class ManifestGenerator { } /** - * Recursively find and parse workflow.yaml and workflow.md files + * Recursively find and parse workflow.md files */ async getWorkflowsFromPath(basePath, moduleName, subDir = 'workflows') { const workflows = []; @@ -326,7 +349,7 @@ class ManifestGenerator { return workflows; } - // Recursively find workflow.yaml files + // Recursively find workflow.md files const findWorkflows = async (dir, relativePath = '') => { // Skip directories already claimed as skills if (this.skillClaimedDirs && this.skillClaimedDirs.has(dir)) return; @@ -344,11 +367,7 @@ class ManifestGenerator { // Recurse into subdirectories const newRelativePath = relativePath ? `${relativePath}/${entry.name}` : entry.name; await findWorkflows(fullPath, newRelativePath); - } else if ( - entry.name === 'workflow.yaml' || - entry.name === 'workflow.md' || - (entry.name.startsWith('workflow-') && entry.name.endsWith('.md')) - ) { + } else if (entry.name === 'workflow.md' || (entry.name.startsWith('workflow-') && entry.name.endsWith('.md'))) { // Parse workflow file (both YAML and MD formats) if (debug) { console.log(`[DEBUG] Found workflow file: ${fullPath}`); @@ -358,21 +377,15 @@ class ManifestGenerator { const rawContent = await fs.readFile(fullPath, 'utf8'); const content = rawContent.replaceAll('\r\n', '\n').replaceAll('\r', '\n'); - let workflow; - if (entry.name === 'workflow.yaml') { - // Parse YAML workflow - workflow = yaml.parse(content); - } else { - // Parse MD workflow with YAML frontmatter - const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/); - if (!frontmatterMatch) { - if (debug) { - console.log(`[DEBUG] Skipped (no frontmatter): ${fullPath}`); - } - continue; // Skip MD files without frontmatter + // Parse MD workflow with YAML frontmatter + const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/); + if (!frontmatterMatch) { + if (debug) { + console.log(`[DEBUG] Skipped (no frontmatter): ${fullPath}`); } - workflow = yaml.parse(frontmatterMatch[1]); + continue; // Skip MD files without frontmatter } + const workflow = yaml.parse(frontmatterMatch[1]); if (debug) { console.log(`[DEBUG] Parsed: name="${workflow.name}", description=${workflow.description ? 'OK' : 'MISSING'}`); @@ -1343,7 +1356,7 @@ class ManifestGenerator { // Check for manifest in this directory const manifest = await this.loadSkillManifest(dir); if (manifest) { - const type = this.getArtifactType(manifest, 'workflow.md') || this.getArtifactType(manifest, 'workflow.yaml'); + const type = this.getArtifactType(manifest, 'workflow.md'); if (type === 'skill') return true; } diff --git a/tools/cli/installers/lib/core/manifest.js b/tools/cli/installers/lib/core/manifest.js index 5fa1229e1..cb5368843 100644 --- a/tools/cli/installers/lib/core/manifest.js +++ b/tools/cli/installers/lib/core/manifest.js @@ -267,9 +267,11 @@ class Manifest { * @param {Object} options - Optional version info */ async addModule(bmadDir, moduleName, options = {}) { - const manifest = await this._readRaw(bmadDir); + let manifest = await this._readRaw(bmadDir); if (!manifest) { - throw new Error('No manifest found'); + // Bootstrap a minimal manifest if it doesn't exist yet + // (e.g., skill-only modules with no agents to compile) + manifest = { modules: [] }; } if (!manifest.modules) { diff --git a/tools/cli/installers/lib/ide/_base-ide.js b/tools/cli/installers/lib/ide/_base-ide.js index 9bfbdcf30..ce1b0ceae 100644 --- a/tools/cli/installers/lib/ide/_base-ide.js +++ b/tools/cli/installers/lib/ide/_base-ide.js @@ -289,7 +289,7 @@ class BaseIdeSetup { // Get core workflows const coreWorkflowsPath = path.join(bmadDir, 'core', 'workflows'); if (await fs.pathExists(coreWorkflowsPath)) { - const coreWorkflows = await this.findWorkflowYamlFiles(coreWorkflowsPath); + const coreWorkflows = await this.findWorkflowFiles(coreWorkflowsPath); workflows.push( ...coreWorkflows.map((w) => ({ ...w, @@ -304,7 +304,7 @@ class BaseIdeSetup { if (entry.isDirectory() && entry.name !== 'core' && entry.name !== '_config' && entry.name !== 'agents') { const moduleWorkflowsPath = path.join(bmadDir, entry.name, 'workflows'); if (await fs.pathExists(moduleWorkflowsPath)) { - const moduleWorkflows = await this.findWorkflowYamlFiles(moduleWorkflowsPath); + const moduleWorkflows = await this.findWorkflowFiles(moduleWorkflowsPath); workflows.push( ...moduleWorkflows.map((w) => ({ ...w, @@ -324,11 +324,13 @@ class BaseIdeSetup { } /** - * Recursively find workflow.yaml files + * Recursively find workflow.md files * @param {string} dir - Directory to search + * @param {string} [rootDir] - Original root directory (used internally for recursion) * @returns {Array} List of workflow file info objects */ - async findWorkflowYamlFiles(dir) { + async findWorkflowFiles(dir, rootDir = null) { + rootDir = rootDir || dir; const workflows = []; if (!(await fs.pathExists(dir))) { @@ -342,14 +344,16 @@ class BaseIdeSetup { if (entry.isDirectory()) { // Recursively search subdirectories - const subWorkflows = await this.findWorkflowYamlFiles(fullPath); + const subWorkflows = await this.findWorkflowFiles(fullPath, rootDir); workflows.push(...subWorkflows); - } else if (entry.isFile() && entry.name === 'workflow.yaml') { - // Read workflow.yaml to get name and standalone property + } else if (entry.isFile() && entry.name === 'workflow.md') { + // Read workflow.md frontmatter to get name and standalone property try { - const yaml = require('yaml'); const content = await fs.readFile(fullPath, 'utf8'); - const workflowData = yaml.parse(content); + const frontmatterMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/); + if (!frontmatterMatch) continue; + + const workflowData = yaml.parse(frontmatterMatch[1]); if (workflowData && workflowData.name) { // Workflows are standalone by default unless explicitly false @@ -357,7 +361,7 @@ class BaseIdeSetup { workflows.push({ name: workflowData.name, path: fullPath, - relativePath: path.relative(dir, fullPath), + relativePath: path.relative(rootDir, fullPath), filename: entry.name, description: workflowData.description || '', standalone: standalone, @@ -376,9 +380,11 @@ class BaseIdeSetup { * Scan a directory for files with specific extension(s) * @param {string} dir - Directory to scan * @param {string|Array} ext - File extension(s) to match (e.g., '.md' or ['.md', '.xml']) + * @param {string} [rootDir] - Original root directory (used internally for recursion) * @returns {Array} List of file info objects */ - async scanDirectory(dir, ext) { + async scanDirectory(dir, ext, rootDir = null) { + rootDir = rootDir || dir; const files = []; if (!(await fs.pathExists(dir))) { @@ -395,7 +401,7 @@ class BaseIdeSetup { if (entry.isDirectory()) { // Recursively scan subdirectories - const subFiles = await this.scanDirectory(fullPath, ext); + const subFiles = await this.scanDirectory(fullPath, ext, rootDir); files.push(...subFiles); } else if (entry.isFile()) { // Check if file matches any of the extensions @@ -404,7 +410,7 @@ class BaseIdeSetup { files.push({ name: path.basename(entry.name, matchedExt), path: fullPath, - relativePath: path.relative(dir, fullPath), + relativePath: path.relative(rootDir, fullPath), filename: entry.name, }); } @@ -418,9 +424,11 @@ class BaseIdeSetup { * Scan a directory for files with specific extension(s) and check standalone attribute * @param {string} dir - Directory to scan * @param {string|Array} ext - File extension(s) to match (e.g., '.md' or ['.md', '.xml']) + * @param {string} [rootDir] - Original root directory (used internally for recursion) * @returns {Array} List of file info objects with standalone property */ - async scanDirectoryWithStandalone(dir, ext) { + async scanDirectoryWithStandalone(dir, ext, rootDir = null) { + rootDir = rootDir || dir; const files = []; if (!(await fs.pathExists(dir))) { @@ -437,7 +445,7 @@ class BaseIdeSetup { if (entry.isDirectory()) { // Recursively scan subdirectories - const subFiles = await this.scanDirectoryWithStandalone(fullPath, ext); + const subFiles = await this.scanDirectoryWithStandalone(fullPath, ext, rootDir); files.push(...subFiles); } else if (entry.isFile()) { // Check if file matches any of the extensions @@ -481,7 +489,7 @@ class BaseIdeSetup { files.push({ name: path.basename(entry.name, matchedExt), path: fullPath, - relativePath: path.relative(dir, fullPath), + relativePath: path.relative(rootDir, fullPath), filename: entry.name, standalone: standalone, }); diff --git a/tools/cli/installers/lib/ide/_config-driven.js b/tools/cli/installers/lib/ide/_config-driven.js index e72b61481..a93fe0c87 100644 --- a/tools/cli/installers/lib/ide/_config-driven.js +++ b/tools/cli/installers/lib/ide/_config-driven.js @@ -129,6 +129,7 @@ class ConfigDrivenIdeSetup extends BaseIdeSetup { const selectedModules = options.selectedModules || []; const results = { agents: 0, workflows: 0, tasks: 0, tools: 0, skills: 0 }; + this.skillWriteTracker = config.skill_format ? new Set() : null; // Install standard artifacts (agents, workflows, tasks, tools) if (!skipStandardArtifacts) { @@ -159,9 +160,11 @@ class ConfigDrivenIdeSetup extends BaseIdeSetup { // Install verbatim skills (type: skill) if (config.skill_format) { results.skills = await this.installVerbatimSkills(projectDir, bmadDir, targetPath, config); + results.skillDirectories = this.skillWriteTracker ? this.skillWriteTracker.size : 0; } await this.printSummary(results, target_dir, options); + this.skillWriteTracker = null; return { success: true, results }; } @@ -232,16 +235,8 @@ class ConfigDrivenIdeSetup extends BaseIdeSetup { for (const artifact of artifacts) { if (artifact.type === 'workflow-command') { - // Use different template based on workflow type (YAML vs MD) - // Default to 'default' template type, but allow override via config - const workflowTemplateType = artifact.isYamlWorkflow - ? config.yaml_workflow_template || `${templateType}-workflow-yaml` - : config.md_workflow_template || `${templateType}-workflow`; - - // Fall back to default templates if specific ones don't exist - const finalTemplateType = artifact.isYamlWorkflow ? 'default-workflow-yaml' : 'default-workflow'; - // workflowTemplateType already contains full name (e.g., 'gemini-workflow-yaml'), so pass empty artifactType - const { content: template, extension } = await this.loadTemplate(workflowTemplateType, '', config, finalTemplateType); + const workflowTemplateType = config.md_workflow_template || `${templateType}-workflow`; + const { content: template, extension } = await this.loadTemplate(workflowTemplateType, '', config, 'default-workflow'); const content = this.renderTemplate(template, artifact); const filename = this.generateFilename(artifact, 'workflow', extension); @@ -503,6 +498,7 @@ LOAD and execute from: {project-root}/{{bmadFolderName}}/{{path}} // Create skill directory const skillDir = path.join(targetPath, skillName); await this.ensureDir(skillDir); + this.skillWriteTracker?.add(skillName); // Transform content: rewrite frontmatter for skills format const skillContent = this.transformToSkillFormat(content, skillName); @@ -635,7 +631,8 @@ LOAD and execute from: {project-root}/{{bmadFolderName}}/{{path}} /** * Install verbatim skill directories (type: skill entries from skill-manifest.csv). - * Copies the entire source directory into the IDE skill directory, auto-generating SKILL.md. + * Copies the entire source directory as-is into the IDE skill directory. + * The source SKILL.md is used directly — no frontmatter transformation or file generation. * @param {string} projectDir - Project directory * @param {string} bmadDir - BMAD installation directory * @param {string} targetPath - Target skills directory @@ -644,6 +641,7 @@ LOAD and execute from: {project-root}/{{bmadFolderName}}/{{path}} */ async installVerbatimSkills(projectDir, bmadDir, targetPath, config) { const bmadFolderName = path.basename(bmadDir); + const bmadPrefix = bmadFolderName + '/'; const csvPath = path.join(bmadDir, '_config', 'skill-manifest.csv'); if (!(await fs.pathExists(csvPath))) return 0; @@ -661,9 +659,9 @@ LOAD and execute from: {project-root}/{{bmadFolderName}}/{{path}} if (!canonicalId) continue; // Derive source directory from path column - // path is like "_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/workflow.md" + // path is like "_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/SKILL.md" // Strip bmadFolderName prefix and join with bmadDir, then get dirname - const relativePath = record.path.replace(new RegExp(`^${bmadFolderName}/`), ''); + const relativePath = record.path.startsWith(bmadPrefix) ? record.path.slice(bmadPrefix.length) : record.path; const sourceFile = path.join(bmadDir, relativePath); const sourceDir = path.dirname(sourceFile); @@ -673,35 +671,20 @@ LOAD and execute from: {project-root}/{{bmadFolderName}}/{{path}} const skillDir = path.join(targetPath, canonicalId); await fs.remove(skillDir); await fs.ensureDir(skillDir); + this.skillWriteTracker?.add(canonicalId); - // Parse workflow.md frontmatter for description - let description = `${canonicalId} skill`; - try { - const workflowContent = await fs.readFile(sourceFile, 'utf8'); - const fmMatch = workflowContent.match(/^---\r?\n([\s\S]*?)\r?\n---/); - if (fmMatch) { - const frontmatter = yaml.parse(fmMatch[1]); - if (frontmatter?.description) { - description = frontmatter.description; - } - } - } catch (error) { - await prompts.log.warn(`Failed to parse frontmatter from ${sourceFile}: ${error.message}`); - } - - // Generate SKILL.md with YAML-safe frontmatter - const frontmatterYaml = yaml.stringify({ name: canonicalId, description: String(description) }, { lineWidth: 0 }).trimEnd(); - const skillMd = `---\n${frontmatterYaml}\n---\n\nIT IS CRITICAL THAT YOU FOLLOW THIS COMMAND: LOAD the FULL workflow.md, READ its entire contents and follow its directions exactly!\n`; - await fs.writeFile(path.join(skillDir, 'SKILL.md'), skillMd); - - // Copy all files except bmad-skill-manifest.yaml - const entries = await fs.readdir(sourceDir, { withFileTypes: true }); - for (const entry of entries) { - if (entry.name === 'bmad-skill-manifest.yaml') continue; - const srcPath = path.join(sourceDir, entry.name); - const destPath = path.join(skillDir, entry.name); - await fs.copy(srcPath, destPath); - } + // Copy all skill files, filtering OS/editor artifacts recursively + const skipPatterns = new Set(['.DS_Store', 'Thumbs.db', 'desktop.ini']); + const skipSuffixes = ['~', '.swp', '.swo', '.bak']; + const filter = (src) => { + const name = path.basename(src); + if (src === sourceDir) return true; + if (skipPatterns.has(name)) return false; + if (name.startsWith('.') && name !== '.gitkeep') return false; + if (skipSuffixes.some((s) => name.endsWith(s))) return false; + return true; + }; + await fs.copy(sourceDir, skillDir, { filter }); count++; } @@ -709,7 +692,7 @@ LOAD and execute from: {project-root}/{{bmadFolderName}}/{{path}} // Post-install cleanup: remove _bmad/ directories for skills with install_to_bmad === "false" for (const record of records) { if (record.install_to_bmad === 'false') { - const relativePath = record.path.replace(new RegExp(`^${bmadFolderName}/`), ''); + const relativePath = record.path.startsWith(bmadPrefix) ? record.path.slice(bmadPrefix.length) : record.path; const sourceFile = path.join(bmadDir, relativePath); const sourceDir = path.dirname(sourceFile); if (await fs.pathExists(sourceDir)) { @@ -729,11 +712,11 @@ LOAD and execute from: {project-root}/{{bmadFolderName}}/{{path}} async printSummary(results, targetDir, options = {}) { if (options.silent) return; const parts = []; + const totalDirs = + results.skillDirectories || (results.workflows || 0) + (results.tasks || 0) + (results.tools || 0) + (results.skills || 0); + const skillCount = totalDirs - (results.agents || 0); + if (skillCount > 0) parts.push(`${skillCount} skills`); if (results.agents > 0) parts.push(`${results.agents} agents`); - if (results.workflows > 0) parts.push(`${results.workflows} workflows`); - if (results.tasks > 0) parts.push(`${results.tasks} tasks`); - if (results.tools > 0) parts.push(`${results.tools} tools`); - if (results.skills > 0) parts.push(`${results.skills} skills`); await prompts.log.success(`${this.name} configured: ${parts.join(', ')} → ${targetDir}`); } diff --git a/tools/cli/installers/lib/ide/manager.js b/tools/cli/installers/lib/ide/manager.js index 2381bddfa..d0dee4ae0 100644 --- a/tools/cli/installers/lib/ide/manager.js +++ b/tools/cli/installers/lib/ide/manager.js @@ -162,10 +162,10 @@ class IdeManager { // Config-driven handlers return { success, results: { agents, workflows, tasks, tools } } const r = handlerResult.results; const parts = []; + const totalDirs = r.skillDirectories || (r.workflows || 0) + (r.tasks || 0) + (r.tools || 0) + (r.skills || 0); + const skillCount = totalDirs - (r.agents || 0); + if (skillCount > 0) parts.push(`${skillCount} skills`); if (r.agents > 0) parts.push(`${r.agents} agents`); - if (r.workflows > 0) parts.push(`${r.workflows} workflows`); - if (r.tasks > 0) parts.push(`${r.tasks} tasks`); - if (r.tools > 0) parts.push(`${r.tools} tools`); detail = parts.join(', '); } // Propagate handler's success status (default true for backward compat) diff --git a/tools/cli/installers/lib/ide/shared/path-utils.js b/tools/cli/installers/lib/ide/shared/path-utils.js index 45efd2ec1..35fc263f4 100644 --- a/tools/cli/installers/lib/ide/shared/path-utils.js +++ b/tools/cli/installers/lib/ide/shared/path-utils.js @@ -12,6 +12,7 @@ * - bmm/workflows/plan-project.md → bmad-bmm-plan-project.md * - bmm/tasks/create-story.md → bmad-bmm-create-story.md * - core/agents/brainstorming.md → bmad-agent-brainstorming.md (core agents skip module name) + * - standalone/agents/fred.md → bmad-agent-standalone-fred.md */ // Type segments - agents are included in naming, others are filtered out @@ -26,8 +27,9 @@ const BMAD_FOLDER_NAME = '_bmad'; * Converts: 'bmm', 'agents', 'pm' → 'bmad-agent-bmm-pm.md' * Converts: 'bmm', 'workflows', 'correct-course' → 'bmad-bmm-correct-course.md' * Converts: 'core', 'agents', 'brainstorming' → 'bmad-agent-brainstorming.md' (core agents skip module name) + * Converts: 'standalone', 'agents', 'fred' → 'bmad-agent-standalone-fred.md' * - * @param {string} module - Module name (e.g., 'bmm', 'core') + * @param {string} module - Module name (e.g., 'bmm', 'core', 'standalone') * @param {string} type - Artifact type ('agents', 'workflows', 'tasks', 'tools') * @param {string} name - Artifact name (e.g., 'pm', 'brainstorming') * @returns {string} Flat filename like 'bmad-agent-bmm-pm.md' or 'bmad-bmm-correct-course.md' @@ -39,6 +41,10 @@ function toDashName(module, type, name) { if (module === 'core') { return isAgent ? `bmad-agent-${name}.md` : `bmad-${name}.md`; } + // For standalone module, include 'standalone' in the name + if (module === 'standalone') { + return isAgent ? `bmad-agent-standalone-${name}.md` : `bmad-standalone-${name}.md`; + } // Module artifacts: bmad-module-name.md or bmad-agent-module-name.md // eslint-disable-next-line unicorn/prefer-string-replace-all -- regex replace is intentional here @@ -63,7 +69,7 @@ function toDashPath(relativePath) { } // Strip common file extensions to avoid double extensions in generated filenames - // e.g., 'create-story.xml' → 'create-story', 'workflow.yaml' → 'workflow' + // e.g., 'create-story.xml' → 'create-story', 'workflow.md' → 'workflow' const withoutExt = relativePath.replace(/\.(md|yaml|yml|json|xml|toml)$/i, ''); const parts = withoutExt.split(/[/\\]/); @@ -110,6 +116,8 @@ function isDashFormat(filename) { * Parses: 'bmad-bmm-correct-course.md' → { prefix: 'bmad', module: 'bmm', type: 'workflows', name: 'correct-course' } * Parses: 'bmad-agent-brainstorming.md' → { prefix: 'bmad', module: 'core', type: 'agents', name: 'brainstorming' } (core agents) * Parses: 'bmad-brainstorming.md' → { prefix: 'bmad', module: 'core', type: 'workflows', name: 'brainstorming' } (core workflows) + * Parses: 'bmad-agent-standalone-fred.md' → { prefix: 'bmad', module: 'standalone', type: 'agents', name: 'fred' } + * Parses: 'bmad-standalone-foo.md' → { prefix: 'bmad', module: 'standalone', type: 'workflows', name: 'foo' } * * @param {string} filename - Dash-formatted filename * @returns {Object|null} Parsed parts or null if invalid format @@ -127,7 +135,16 @@ function parseDashName(filename) { if (isAgent) { // This is an agent file - // Format: bmad-agent-name (core) or bmad-agent-module-name + // Format: bmad-agent-name (core) or bmad-agent-standalone-name or bmad-agent-module-name + if (parts.length >= 4 && parts[2] === 'standalone') { + // Standalone agent: bmad-agent-standalone-name + return { + prefix: parts[0], + module: 'standalone', + type: 'agents', + name: parts.slice(3).join('-'), + }; + } if (parts.length === 3) { // Core agent: bmad-agent-name return { @@ -158,6 +175,16 @@ function parseDashName(filename) { }; } + // Check for standalone non-agent: bmad-standalone-name + if (parts[1] === 'standalone') { + return { + prefix: parts[0], + module: 'standalone', + type: 'workflows', // Default to workflows for non-agent standalone items + name: parts.slice(2).join('-'), + }; + } + // Otherwise, it's a module workflow/tool/task (bmad-module-name) return { prefix: parts[0], @@ -180,6 +207,9 @@ function toUnderscoreName(module, type, name) { if (module === 'core') { return isAgent ? `bmad_agent_${name}.md` : `bmad_${name}.md`; } + if (module === 'standalone') { + return isAgent ? `bmad_agent_standalone_${name}.md` : `bmad_standalone_${name}.md`; + } return isAgent ? `bmad_${module}_agent_${name}.md` : `bmad_${module}_${name}.md`; } @@ -231,6 +261,15 @@ function parseUnderscoreName(filename) { if (agentIndex !== -1) { if (agentIndex === 1) { + // bmad_agent_... - check for standalone + if (parts.length >= 4 && parts[2] === 'standalone') { + return { + prefix: parts[0], + module: 'standalone', + type: 'agents', + name: parts.slice(3).join('_'), + }; + } return { prefix: parts[0], module: 'core', @@ -256,6 +295,16 @@ function parseUnderscoreName(filename) { }; } + // Check for standalone non-agent: bmad_standalone_name + if (parts[1] === 'standalone') { + return { + prefix: parts[0], + module: 'standalone', + type: 'workflows', + name: parts.slice(2).join('_'), + }; + } + return { prefix: parts[0], module: parts[1], diff --git a/tools/cli/installers/lib/ide/shared/workflow-command-generator.js b/tools/cli/installers/lib/ide/shared/workflow-command-generator.js index 793252bac..ed8c3e508 100644 --- a/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +++ b/tools/cli/installers/lib/ide/shared/workflow-command-generator.js @@ -1,58 +1,16 @@ const path = require('node:path'); const fs = require('fs-extra'); const csv = require('csv-parse/sync'); -const prompts = require('../../../../lib/prompts'); -const { toColonPath, toDashPath, customAgentColonName, customAgentDashName, BMAD_FOLDER_NAME } = require('./path-utils'); +const { BMAD_FOLDER_NAME } = require('./path-utils'); /** * Generates command files for each workflow in the manifest */ class WorkflowCommandGenerator { constructor(bmadFolderName = BMAD_FOLDER_NAME) { - this.templatePath = path.join(__dirname, '../templates/workflow-command-template.md'); this.bmadFolderName = bmadFolderName; } - /** - * Generate workflow commands from the manifest CSV - * @param {string} projectDir - Project directory - * @param {string} bmadDir - BMAD installation directory - */ - async generateWorkflowCommands(projectDir, bmadDir) { - const workflows = await this.loadWorkflowManifest(bmadDir); - - if (!workflows) { - await prompts.log.warn('Workflow manifest not found. Skipping command generation.'); - return { generated: 0 }; - } - - // ALL workflows now generate commands - no standalone filtering - const allWorkflows = workflows; - - // Base commands directory - const baseCommandsDir = path.join(projectDir, '.claude', 'commands', 'bmad'); - - let generatedCount = 0; - - // Generate a command file for each workflow, organized by module - for (const workflow of allWorkflows) { - const moduleWorkflowsDir = path.join(baseCommandsDir, workflow.module, 'workflows'); - await fs.ensureDir(moduleWorkflowsDir); - - const commandContent = await this.generateCommandContent(workflow, bmadDir); - const commandPath = path.join(moduleWorkflowsDir, `${workflow.name}.md`); - - await fs.writeFile(commandPath, commandContent); - generatedCount++; - } - - // Also create a workflow launcher README in each module - const groupedWorkflows = this.groupWorkflowsByModule(allWorkflows); - await this.createModuleWorkflowLaunchers(baseCommandsDir, groupedWorkflows); - - return { generated: generatedCount }; - } - async collectWorkflowArtifacts(bmadDir) { const workflows = await this.loadWorkflowManifest(bmadDir); @@ -66,8 +24,7 @@ class WorkflowCommandGenerator { const artifacts = []; for (const workflow of allWorkflows) { - const commandContent = await this.generateCommandContent(workflow, bmadDir); - // Calculate the relative workflow path (e.g., bmm/workflows/4-implementation/sprint-planning/workflow.yaml) + // Calculate the relative workflow path (e.g., bmm/workflows/4-implementation/sprint-planning/workflow.md) let workflowRelPath = workflow.path || ''; // Normalize path separators for cross-platform compatibility workflowRelPath = workflowRelPath.replaceAll('\\', '/'); @@ -85,18 +42,14 @@ class WorkflowCommandGenerator { workflowRelPath = `${match[1]}/${match[2]}`; } } - // Determine if this is a YAML workflow (use normalized path which is guaranteed to be a string) - const isYamlWorkflow = workflowRelPath.endsWith('.yaml') || workflowRelPath.endsWith('.yml'); artifacts.push({ type: 'workflow-command', - isYamlWorkflow: isYamlWorkflow, // For template selection name: workflow.name, description: workflow.description || `${workflow.name} workflow`, module: workflow.module, canonicalId: workflow.canonicalId || '', relativePath: path.join(workflow.module, 'workflows', `${workflow.name}.md`), workflowPath: workflowRelPath, // Relative path to actual workflow file - content: commandContent, sourcePath: workflow.path, }); } @@ -121,46 +74,6 @@ class WorkflowCommandGenerator { }; } - /** - * Generate command content for a workflow - */ - async generateCommandContent(workflow, bmadDir) { - // Determine template based on workflow file type - const isMarkdownWorkflow = workflow.path.endsWith('workflow.md'); - const templateName = isMarkdownWorkflow ? 'workflow-commander.md' : 'workflow-command-template.md'; - const templatePath = path.join(path.dirname(this.templatePath), templateName); - - // Load the appropriate template - const template = await fs.readFile(templatePath, 'utf8'); - - // Convert source path to installed path - // From: /Users/.../src/bmm/workflows/.../workflow.yaml - // To: {project-root}/_bmad/bmm/workflows/.../workflow.yaml - let workflowPath = workflow.path; - - // Extract the relative path from source - if (workflowPath.includes('/src/bmm/')) { - // bmm is directly under src/ - const match = workflowPath.match(/\/src\/bmm\/(.+)/); - if (match) { - workflowPath = `${this.bmadFolderName}/bmm/${match[1]}`; - } - } else if (workflowPath.includes('/src/core/')) { - const match = workflowPath.match(/\/src\/core\/(.+)/); - if (match) { - workflowPath = `${this.bmadFolderName}/core/${match[1]}`; - } - } - - // Replace template variables - return template - .replaceAll('{{name}}', workflow.name) - .replaceAll('{{module}}', workflow.module) - .replaceAll('{{description}}', workflow.description) - .replaceAll('{{workflow_path}}', workflowPath) - .replaceAll('_bmad', this.bmadFolderName); - } - /** * Create workflow launcher files for each module */ @@ -218,10 +131,9 @@ class WorkflowCommandGenerator { ## Execution When running any workflow: -1. LOAD {project-root}/${this.bmadFolderName}/core/tasks/workflow.xml -2. Pass the workflow path as 'workflow-config' parameter -3. Follow workflow.xml instructions EXACTLY -4. Save outputs after EACH section +1. LOAD the workflow.md file at the path shown above +2. READ its entire contents and follow its directions exactly +3. Save outputs after EACH section ## Modes - Normal: Full interaction @@ -262,58 +174,6 @@ When running any workflow: skip_empty_lines: true, }); } - - /** - * Write workflow command artifacts using underscore format (Windows-compatible) - * Creates flat files like: bmad_bmm_correct-course.md - * - * @param {string} baseCommandsDir - Base commands directory for the IDE - * @param {Array} artifacts - Workflow artifacts - * @returns {number} Count of commands written - */ - async writeColonArtifacts(baseCommandsDir, artifacts) { - let writtenCount = 0; - - for (const artifact of artifacts) { - if (artifact.type === 'workflow-command') { - // Convert relativePath to underscore format: bmm/workflows/correct-course.md → bmad_bmm_correct-course.md - const flatName = toColonPath(artifact.relativePath); - const commandPath = path.join(baseCommandsDir, flatName); - await fs.ensureDir(path.dirname(commandPath)); - await fs.writeFile(commandPath, artifact.content); - writtenCount++; - } - } - - return writtenCount; - } - - /** - * Write workflow command artifacts using dash format (NEW STANDARD) - * Creates flat files like: bmad-bmm-correct-course.md - * - * Note: Workflows do NOT have bmad-agent- prefix - only agents do. - * - * @param {string} baseCommandsDir - Base commands directory for the IDE - * @param {Array} artifacts - Workflow artifacts - * @returns {number} Count of commands written - */ - async writeDashArtifacts(baseCommandsDir, artifacts) { - let writtenCount = 0; - - for (const artifact of artifacts) { - if (artifact.type === 'workflow-command') { - // Convert relativePath to dash format: bmm/workflows/correct-course.md → bmad-bmm-correct-course.md - const flatName = toDashPath(artifact.relativePath); - const commandPath = path.join(baseCommandsDir, flatName); - await fs.ensureDir(path.dirname(commandPath)); - await fs.writeFile(commandPath, artifact.content); - writtenCount++; - } - } - - return writtenCount; - } } module.exports = { WorkflowCommandGenerator }; diff --git a/tools/cli/installers/lib/ide/templates/combined/default-workflow-yaml.md b/tools/cli/installers/lib/ide/templates/combined/default-workflow-yaml.md deleted file mode 100644 index 4a8da26e7..000000000 --- a/tools/cli/installers/lib/ide/templates/combined/default-workflow-yaml.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -name: '{{name}}' -description: '{{description}}' ---- - -IT IS CRITICAL THAT YOU FOLLOW THESE STEPS - while staying in character as the current agent persona you may have loaded: - - -1. Always LOAD the FULL {project-root}/{{bmadFolderName}}/core/tasks/workflow.xml -2. READ its entire contents - this is the CORE OS for EXECUTING the specific workflow-config {project-root}/{{bmadFolderName}}/{{path}} -3. Pass the yaml path {project-root}/{{bmadFolderName}}/{{path}} as 'workflow-config' parameter to the workflow.xml instructions -4. Follow workflow.xml instructions EXACTLY as written to process and follow the specific workflow config and its instructions -5. Save outputs after EACH section when generating any documents from templates - diff --git a/tools/cli/installers/lib/ide/templates/combined/kiro-workflow-yaml.md b/tools/cli/installers/lib/ide/templates/combined/kiro-workflow-yaml.md deleted file mode 100644 index 4ee4e0824..000000000 --- a/tools/cli/installers/lib/ide/templates/combined/kiro-workflow-yaml.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -inclusion: manual ---- - -# {{name}} - -IT IS CRITICAL THAT YOU FOLLOW THESE STEPS - while staying in character as the current agent persona you may have loaded: - - -1. Always LOAD the FULL #[[file:{{bmadFolderName}}/core/tasks/workflow.xml]] -2. READ its entire contents - this is the CORE OS for EXECUTING the specific workflow-config #[[file:{{bmadFolderName}}/{{path}}]] -3. Pass the yaml path {{bmadFolderName}}/{{path}} as 'workflow-config' parameter to the workflow.xml instructions -4. Follow workflow.xml instructions EXACTLY as written to process and follow the specific workflow config and its instructions -5. Save outputs after EACH section when generating any documents from templates - diff --git a/tools/cli/installers/lib/ide/templates/workflow-command-template.md b/tools/cli/installers/lib/ide/templates/workflow-command-template.md deleted file mode 100644 index 328983c9e..000000000 --- a/tools/cli/installers/lib/ide/templates/workflow-command-template.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -description: '{{description}}' ---- - -IT IS CRITICAL THAT YOU FOLLOW THESE STEPS - while staying in character as the current agent persona you may have loaded: - - -1. Always LOAD the FULL {project-root}/_bmad/core/tasks/workflow.xml -2. READ its entire contents - this is the CORE OS for EXECUTING the specific workflow-config {project-root}/{{workflow_path}} -3. Pass the yaml path {{workflow_path}} as 'workflow-config' parameter to the workflow.xml instructions -4. Follow workflow.xml instructions EXACTLY as written to process and follow the specific workflow config and its instructions -5. Save outputs after EACH section when generating any documents from templates - diff --git a/tools/cli/installers/lib/ide/templates/workflow-commander.md b/tools/cli/installers/lib/ide/templates/workflow-commander.md deleted file mode 100644 index 66eee15d1..000000000 --- a/tools/cli/installers/lib/ide/templates/workflow-commander.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -description: '{{description}}' ---- - -IT IS CRITICAL THAT YOU FOLLOW THIS COMMAND: LOAD the FULL {project-root}/{{workflow_path}}, READ its entire contents and follow its directions exactly! diff --git a/tools/cli/installers/lib/modules/manager.js b/tools/cli/installers/lib/modules/manager.js index f162593b7..9bc027d85 100644 --- a/tools/cli/installers/lib/modules/manager.js +++ b/tools/cli/installers/lib/modules/manager.js @@ -762,14 +762,8 @@ class ModuleManager { } } - // Check if this is a workflow.yaml file - if (file.endsWith('workflow.yaml')) { - await fs.ensureDir(path.dirname(targetFile)); - await this.copyWorkflowYamlStripped(sourceFile, targetFile); - } else { - // Copy the file with placeholder replacement - await this.copyFileWithPlaceholderReplacement(sourceFile, targetFile); - } + // Copy the file with placeholder replacement + await this.copyFileWithPlaceholderReplacement(sourceFile, targetFile); // Track the file if callback provided if (fileTrackingCallback) { @@ -778,92 +772,6 @@ class ModuleManager { } } - /** - * Copy workflow.yaml file with web_bundle section stripped - * Preserves comments, formatting, and line breaks - * @param {string} sourceFile - Source workflow.yaml file path - * @param {string} targetFile - Target workflow.yaml file path - */ - async copyWorkflowYamlStripped(sourceFile, targetFile) { - // Read the source YAML file - let yamlContent = await fs.readFile(sourceFile, 'utf8'); - - // IMPORTANT: Replace escape sequence and placeholder BEFORE parsing YAML - // Otherwise parsing will fail on the placeholder - yamlContent = yamlContent.replaceAll('_bmad', this.bmadFolderName); - - try { - // First check if web_bundle exists by parsing - const workflowConfig = yaml.parse(yamlContent); - - if (workflowConfig.web_bundle === undefined) { - // No web_bundle section, just write (placeholders already replaced above) - await fs.writeFile(targetFile, yamlContent, 'utf8'); - return; - } - - // Find the line that starts web_bundle - const lines = yamlContent.split('\n'); - let startIdx = -1; - let endIdx = -1; - let baseIndent = 0; - - // Find the start of web_bundle section - for (const [i, line] of lines.entries()) { - const match = line.match(/^(\s*)web_bundle:/); - if (match) { - startIdx = i; - baseIndent = match[1].length; - break; - } - } - - if (startIdx === -1) { - // web_bundle not found in text (shouldn't happen), copy as-is - await fs.writeFile(targetFile, yamlContent, 'utf8'); - return; - } - - // Find the end of web_bundle section - // It ends when we find a line with same or less indentation that's not empty/comment - endIdx = startIdx; - for (let i = startIdx + 1; i < lines.length; i++) { - const line = lines[i]; - - // Skip empty lines and comments - if (line.trim() === '' || line.trim().startsWith('#')) { - continue; - } - - // Check indentation - const indent = line.match(/^(\s*)/)[1].length; - if (indent <= baseIndent) { - // Found next section at same or lower indentation - endIdx = i - 1; - break; - } - } - - // If we didn't find an end, it goes to end of file - if (endIdx === startIdx) { - endIdx = lines.length - 1; - } - - // Remove the web_bundle section (including the line before if it's just a blank line) - const newLines = [...lines.slice(0, startIdx), ...lines.slice(endIdx + 1)]; - - // Clean up any double blank lines that might result - const strippedYaml = newLines.join('\n').replaceAll(/\n\n\n+/g, '\n\n'); - - // Placeholders already replaced at the beginning of this function - await fs.writeFile(targetFile, strippedYaml, 'utf8'); - } catch { - // If anything fails, just copy the file as-is - await prompts.log.warn(` Could not process ${path.basename(sourceFile)}, copying as-is`); - await fs.copy(sourceFile, targetFile, { overwrite: true }); - } - } - /** * Compile .agent.yaml files to .md format in modules * @param {string} sourcePath - Source module path @@ -1165,13 +1073,11 @@ class ModuleManager { await prompts.log.message(` Processing: ${agentFile}`); for (const item of workflowInstallItems) { - const sourceWorkflowPath = item.workflow; // Where to copy FROM + const sourceWorkflowPath = item.exec; // Where to copy FROM const installWorkflowPath = item['workflow-install']; // Where to copy TO // Parse SOURCE workflow path - // Handle both _bmad placeholder and hardcoded 'bmad' - // Example: {project-root}/_bmad/bmm/workflows/4-implementation/create-story/workflow.yaml - // Or: {project-root}/bmad/bmm/workflows/4-implementation/create-story/workflow.yaml + // Example: {project-root}/_bmad/bmm/workflows/4-implementation/bmad-create-story/workflow.md const sourceMatch = sourceWorkflowPath.match(/\{project-root\}\/(?:_bmad)\/([^/]+)\/workflows\/(.+)/); if (!sourceMatch) { await prompts.log.warn(` Could not parse workflow path: ${sourceWorkflowPath}`); @@ -1181,9 +1087,8 @@ class ModuleManager { const [, sourceModule, sourceWorkflowSubPath] = sourceMatch; // Parse INSTALL workflow path - // Handle_bmad - // Example: {project-root}/_bmad/bmgd/workflows/4-production/create-story/workflow.yaml - const installMatch = installWorkflowPath.match(/\{project-root\}\/(_bmad)\/([^/]+)\/workflows\/(.+)/); + // Example: {project-root}/_bmad/bmgd/workflows/4-production/create-story/workflow.md + const installMatch = installWorkflowPath.match(/\{project-root\}\/(?:_bmad)\/([^/]+)\/workflows\/(.+)/); if (!installMatch) { await prompts.log.warn(` Could not parse workflow-install path: ${installWorkflowPath}`); continue; @@ -1192,9 +1097,9 @@ class ModuleManager { const installWorkflowSubPath = installMatch[2]; const sourceModulePath = getModulePath(sourceModule); - const actualSourceWorkflowPath = path.join(sourceModulePath, 'workflows', sourceWorkflowSubPath.replace(/\/workflow\.yaml$/, '')); + const actualSourceWorkflowPath = path.join(sourceModulePath, 'workflows', sourceWorkflowSubPath.replace(/\/workflow\.md$/, '')); - const actualDestWorkflowPath = path.join(targetPath, 'workflows', installWorkflowSubPath.replace(/\/workflow\.yaml$/, '')); + const actualDestWorkflowPath = path.join(targetPath, 'workflows', installWorkflowSubPath.replace(/\/workflow\.md$/, '')); // Check if source workflow exists if (!(await fs.pathExists(actualSourceWorkflowPath))) { @@ -1204,18 +1109,12 @@ class ModuleManager { // Copy the entire workflow folder await prompts.log.message( - ` Vendoring: ${sourceModule}/workflows/${sourceWorkflowSubPath.replace(/\/workflow\.yaml$/, '')} → ${moduleName}/workflows/${installWorkflowSubPath.replace(/\/workflow\.yaml$/, '')}`, + ` Vendoring: ${sourceModule}/workflows/${sourceWorkflowSubPath.replace(/\/workflow\.md$/, '')} → ${moduleName}/workflows/${installWorkflowSubPath.replace(/\/workflow\.md$/, '')}`, ); await fs.ensureDir(path.dirname(actualDestWorkflowPath)); // Copy the workflow directory recursively with placeholder replacement await this.copyDirectoryWithPlaceholderReplacement(actualSourceWorkflowPath, actualDestWorkflowPath); - - // Update the workflow.yaml config_source reference - const workflowYamlPath = path.join(actualDestWorkflowPath, 'workflow.yaml'); - if (await fs.pathExists(workflowYamlPath)) { - await this.updateWorkflowConfigSource(workflowYamlPath, moduleName); - } } } @@ -1224,28 +1123,6 @@ class ModuleManager { } } - /** - * Update workflow.yaml config_source to point to new module - * @param {string} workflowYamlPath - Path to workflow.yaml file - * @param {string} newModuleName - New module name to reference - */ - async updateWorkflowConfigSource(workflowYamlPath, newModuleName) { - let yamlContent = await fs.readFile(workflowYamlPath, 'utf8'); - - // Replace config_source: "{project-root}/_bmad/OLD_MODULE/config.yaml" - // with config_source: "{project-root}/_bmad/NEW_MODULE/config.yaml" - // Note: At this point _bmad has already been replaced with actual folder name - const configSourcePattern = /config_source:\s*["']?\{project-root\}\/[^/]+\/[^/]+\/config\.yaml["']?/g; - const newConfigSource = `config_source: "{project-root}/${this.bmadFolderName}/${newModuleName}/config.yaml"`; - - const updatedYaml = yamlContent.replaceAll(configSourcePattern, newConfigSource); - - if (updatedYaml !== yamlContent) { - await fs.writeFile(workflowYamlPath, updatedYaml, 'utf8'); - await prompts.log.message(` Updated config_source to: ${this.bmadFolderName}/${newModuleName}/config.yaml`); - } - } - /** * Create directories declared in module.yaml's `directories` key * This replaces the security-risky module installer pattern with declarative config diff --git a/tools/cli/lib/agent-analyzer.js b/tools/cli/lib/agent-analyzer.js index ae834a098..a62bdd7cf 100644 --- a/tools/cli/lib/agent-analyzer.js +++ b/tools/cli/lib/agent-analyzer.js @@ -39,16 +39,10 @@ class AgentAnalyzer { if (Array.isArray(execArray)) { for (const exec of execArray) { if (exec.route) { - // Check if route is a workflow or exec - if (exec.route.endsWith('.yaml') || exec.route.endsWith('.yml')) { - profile.usedAttributes.add('workflow'); - } else { - profile.usedAttributes.add('exec'); - } + profile.usedAttributes.add('exec'); } - if (exec.workflow) profile.usedAttributes.add('workflow'); if (exec.action) profile.usedAttributes.add('action'); - if (exec.type && ['exec', 'action', 'workflow'].includes(exec.type)) { + if (exec.type && ['exec', 'action'].includes(exec.type)) { profile.usedAttributes.add(exec.type); } } @@ -57,12 +51,6 @@ class AgentAnalyzer { } } else { // Check for each possible attribute in legacy items - if (item.workflow) { - profile.usedAttributes.add('workflow'); - } - if (item['validate-workflow']) { - profile.usedAttributes.add('validate-workflow'); - } if (item.exec) { profile.usedAttributes.add('exec'); } diff --git a/tools/cli/lib/agent/compiler.js b/tools/cli/lib/agent/compiler.js index f9f71baab..a557a69af 100644 --- a/tools/cli/lib/agent/compiler.js +++ b/tools/cli/lib/agent/compiler.js @@ -147,7 +147,6 @@ function buildMenuXml(menuItems) { const attrs = [`cmd="${trigger}"`]; // Add handler attributes - if (item.workflow) attrs.push(`workflow="${item.workflow}"`); if (item.exec) attrs.push(`exec="${item.exec}"`); if (item.tmpl) attrs.push(`tmpl="${item.tmpl}"`); if (item.data) attrs.push(`data="${item.data}"`); @@ -158,7 +157,7 @@ function buildMenuXml(menuItems) { } } - xml += ` [PM] Start Party Mode\n`; + xml += ` [PM] Start Party Mode\n`; xml += ` [DA] Dismiss Agent\n`; xml += ' \n'; @@ -187,8 +186,6 @@ function buildNestedHandlers(triggers) { // Add handler attributes based on exec data if (execData.route) attrs.push(`exec="${execData.route}"`); - if (execData.workflow) attrs.push(`workflow="${execData.workflow}"`); - if (execData['validate-workflow']) attrs.push(`validate-workflow="${execData['validate-workflow']}"`); if (execData.action) attrs.push(`action="${execData.action}"`); if (execData.data) attrs.push(`data="${execData.data}"`); if (execData.tmpl) attrs.push(`tmpl="${execData.tmpl}"`); @@ -212,7 +209,6 @@ function processExecArray(execArray) { const result = { description: '', route: null, - workflow: null, data: null, action: null, type: null, @@ -229,12 +225,7 @@ function processExecArray(execArray) { } if (exec.route) { - // Determine if it's a workflow or exec based on file extension or context - if (exec.route.endsWith('.yaml') || exec.route.endsWith('.yml')) { - result.workflow = exec.route; - } else { - result.route = exec.route; - } + result.route = exec.route; } if (exec.data !== null && exec.data !== undefined) { diff --git a/tools/cli/lib/yaml-xml-builder.js b/tools/cli/lib/yaml-xml-builder.js index ac140814f..f4f8e2f5a 100644 --- a/tools/cli/lib/yaml-xml-builder.js +++ b/tools/cli/lib/yaml-xml-builder.js @@ -367,15 +367,6 @@ class YamlXmlBuilder { const attrs = [`cmd="${trigger}"`]; // Add handler attributes - // If workflow-install exists, use its value for workflow attribute (vendoring) - // workflow-install is build-time metadata - tells installer where to copy workflows - // The final XML should only have workflow pointing to the install location - if (item['workflow-install']) { - attrs.push(`workflow="${item['workflow-install']}"`); - } else if (item.workflow) { - attrs.push(`workflow="${item.workflow}"`); - } - if (item['validate-workflow']) attrs.push(`validate-workflow="${item['validate-workflow']}"`); if (item.exec) attrs.push(`exec="${item.exec}"`); if (item.tmpl) attrs.push(`tmpl="${item.tmpl}"`); @@ -417,8 +408,6 @@ class YamlXmlBuilder { // Add handler attributes based on exec data if (execData.route) attrs.push(`exec="${execData.route}"`); - if (execData.workflow) attrs.push(`workflow="${execData.workflow}"`); - if (execData['validate-workflow']) attrs.push(`validate-workflow="${execData['validate-workflow']}"`); if (execData.action) attrs.push(`action="${execData.action}"`); if (execData.data) attrs.push(`data="${execData.data}"`); if (execData.tmpl) attrs.push(`tmpl="${execData.tmpl}"`); @@ -442,7 +431,6 @@ class YamlXmlBuilder { const result = { description: '', route: null, - workflow: null, data: null, action: null, type: null, @@ -459,12 +447,7 @@ class YamlXmlBuilder { } if (exec.route) { - // Determine if it's a workflow or exec based on file extension or context - if (exec.route.endsWith('.yaml') || exec.route.endsWith('.yml')) { - result.workflow = exec.route; - } else { - result.route = exec.route; - } + result.route = exec.route; } if (exec.data !== null && exec.data !== undefined) { diff --git a/tools/docs/fix-refs.md b/tools/docs/fix-refs.md index df9835b43..fe7ef679f 100644 --- a/tools/docs/fix-refs.md +++ b/tools/docs/fix-refs.md @@ -50,7 +50,7 @@ Use backticks with plain workflow name: - **Other docs**: "Run `prd`" — they already know, so "workflow" is noise **Platform hint**: Only in newbie docs, and only on the **first** workflow mention: -- First mention: Run the `help` workflow (`/bmad-help` on most platforms) +- First mention: Run the `help` workflow (`bmad-help` on most platforms) - Subsequent mentions: Run `prd` — no hint, no "workflow" needed after they've seen the pattern In experienced docs, the hint is always noise — just use the workflow name. diff --git a/tools/schema/agent.js b/tools/schema/agent.js index 93ced7c6e..dfec1322f 100644 --- a/tools/schema/agent.js +++ b/tools/schema/agent.js @@ -2,7 +2,7 @@ const assert = require('node:assert'); const { z } = require('zod'); -const COMMAND_TARGET_KEYS = ['workflow', 'validate-workflow', 'exec', 'action', 'tmpl', 'data']; +const COMMAND_TARGET_KEYS = ['validate-workflow', 'exec', 'action', 'tmpl', 'data']; const TRIGGER_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/; const COMPOUND_TRIGGER_PATTERN = /^([A-Z]{1,3}) or fuzzy match on ([a-z0-9]+(?:-[a-z0-9]+)*)$/; @@ -273,8 +273,6 @@ function buildMenuItemSchema() { .object({ trigger: createNonEmptyString('agent.menu[].trigger'), description: createNonEmptyString('agent.menu[].description'), - workflow: createNonEmptyString('agent.menu[].workflow').optional(), - 'workflow-install': createNonEmptyString('agent.menu[].workflow-install').optional(), 'validate-workflow': createNonEmptyString('agent.menu[].validate-workflow').optional(), exec: createNonEmptyString('agent.menu[].exec').optional(), action: createNonEmptyString('agent.menu[].action').optional(), diff --git a/tools/skill-validator.md b/tools/skill-validator.md new file mode 100644 index 000000000..2ca33ea8e --- /dev/null +++ b/tools/skill-validator.md @@ -0,0 +1,322 @@ +# Skill Validator — Inference-Based + +An LLM-readable validation prompt for skills following the Agent Skills open standard. + +## How to Use + +1. You are given a **skill directory path** to validate. +2. Read every file in the skill directory recursively. +3. Apply every rule in the catalog below to every applicable file. +4. Produce a findings report using the report template at the end. + +If no findings are generated, the skill passes validation. + +--- + +## Definitions + +- **Skill directory**: the folder containing `SKILL.md` and all supporting files. +- **Internal reference**: a file path from one file in the skill to another file in the same skill. +- **External reference**: a file path from a skill file to a file outside the skill directory. +- **Originating file**: the file that contains the reference (path resolution is relative to this file's location). +- **Config variable**: a name-value pair whose value comes from the project config file (e.g., `planning_artifacts`, `implementation_artifacts`, `communication_language`). +- **Runtime variable**: a name-value pair whose value is set during workflow execution (e.g., `spec_file`, `date`, `status`). +- **Intra-skill path variable**: a frontmatter variable whose value is a path to another file within the same skill — this is an anti-pattern. + +--- + +## Rule Catalog + +### SKILL-01 — SKILL.md Must Exist + +- **Severity:** CRITICAL +- **Applies to:** skill directory +- **Rule:** The skill directory must contain a file named `SKILL.md` (exact case). +- **Detection:** Check for the file's existence. +- **Fix:** Create `SKILL.md` as the skill entrypoint. + +### SKILL-02 — SKILL.md Must Have `name` in Frontmatter + +- **Severity:** CRITICAL +- **Applies to:** `SKILL.md` +- **Rule:** The YAML frontmatter must contain a `name` field. +- **Detection:** Parse the `---` delimited frontmatter block and check for `name:`. +- **Fix:** Add `name: ` to the frontmatter. + +### SKILL-03 — SKILL.md Must Have `description` in Frontmatter + +- **Severity:** CRITICAL +- **Applies to:** `SKILL.md` +- **Rule:** The YAML frontmatter must contain a `description` field. +- **Detection:** Parse the `---` delimited frontmatter block and check for `description:`. +- **Fix:** Add `description: ''` to the frontmatter. + +### SKILL-04 — `name` Format + +- **Severity:** HIGH +- **Applies to:** `SKILL.md` +- **Rule:** The `name` value must use only lowercase letters, numbers, and hyphens. Max 64 characters. Must not contain "anthropic" or "claude". +- **Detection:** Regex test: `^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$`. String search for forbidden substrings. +- **Fix:** Rename to comply with the format. + +### SKILL-05 — `name` Must Match Directory Name + +- **Severity:** HIGH +- **Applies to:** `SKILL.md` +- **Rule:** The `name` value in SKILL.md frontmatter must exactly match the skill directory name. The directory name is the canonical identifier used by installers, manifests, and `skill:` references throughout the project. +- **Detection:** Compare the `name:` frontmatter value against the basename of the skill directory (i.e., the immediate parent directory of `SKILL.md`). +- **Fix:** Change the `name:` value to match the directory name, or rename the directory to match — prefer changing `name:` unless other references depend on the current value. + +### SKILL-06 — `description` Quality + +- **Severity:** MEDIUM +- **Applies to:** `SKILL.md` +- **Rule:** The `description` must state both what the skill does AND when to use it. Max 1024 characters. +- **Detection:** Check length. Look for trigger phrases like "Use when" or "Use if" — their absence suggests the description only says _what_ but not _when_. +- **Fix:** Append a "Use when..." clause to the description. + +--- + +### WF-01 — workflow.md Must NOT Have `name` in Frontmatter + +- **Severity:** HIGH +- **Applies to:** `workflow.md` (if it exists) +- **Rule:** The `name` field belongs only in `SKILL.md`. If `workflow.md` has YAML frontmatter, it must not contain `name:`. +- **Detection:** Parse frontmatter and check for `name:` key. +- **Fix:** Remove the `name:` line from workflow.md frontmatter. + +### WF-02 — workflow.md Must NOT Have `description` in Frontmatter + +- **Severity:** HIGH +- **Applies to:** `workflow.md` (if it exists) +- **Rule:** The `description` field belongs only in `SKILL.md`. If `workflow.md` has YAML frontmatter, it must not contain `description:`. +- **Detection:** Parse frontmatter and check for `description:` key. +- **Fix:** Remove the `description:` line from workflow.md frontmatter. + +### WF-03 — workflow.md Frontmatter Variables Must Be Config or Runtime Only + +- **Severity:** HIGH +- **Applies to:** `workflow.md` frontmatter +- **Rule:** Every variable defined in workflow.md frontmatter must be either: + - A config variable (value references `{project-root}` or a config-derived variable like `{planning_artifacts}`) + - A runtime variable (value is empty, a placeholder, or set during execution) + - A legitimate external path expression (must not violate PATH-05 — no paths into another skill's directory) + + It must NOT be a path to a file within the skill directory (see PATH-04), nor a path into another skill's directory (see PATH-05). +- **Detection:** For each frontmatter variable, check if its value resolves to a file inside the skill (e.g., starts with `./`, `{installed_path}`, or is a bare relative path to a sibling file). If so, it is an intra-skill path variable. Also check if the value is a path into another skill's directory — if so, it violates PATH-05 and is not a legitimate external path. +- **Fix:** Remove the variable. Use a hardcoded relative path inline where the file is referenced. + +--- + +### PATH-01 — Internal References Must Be Relative From Originating File + +- **Severity:** CRITICAL +- **Applies to:** all files in the skill +- **Rule:** Any reference from one file in the skill to another file in the same skill must be a relative path resolved from the directory of the originating file. Use `./` prefix for siblings or children, `../` for parent traversal. Bare relative filenames in markdown links (e.g., `[text](sibling.md)`) are also acceptable. +- **Detection:** Scan for file path references (in markdown links, frontmatter values, inline backtick paths, and prose instructions like "Read fully and follow"). Verify each internal reference uses relative notation (`./`, `../`, or bare filename). Always resolve the path from the originating file's directory — a reference to `./steps/step-01.md` from a file already inside `steps/` would resolve to `steps/steps/step-01.md`, which is wrong. +- **Examples:** + - CORRECT: `./steps/step-01-init.md` (from workflow.md at skill root to a step) + - CORRECT: `./template.md` (from workflow.md to a sibling) + - CORRECT: `../template.md` (from steps/step-01.md to a skill-root file) + - CORRECT: `workflow.md` (bare relative filename for sibling) + - CORRECT: `./step-02-plan.md` (from steps/step-01.md to a sibling step) + - WRONG: `./steps/step-02-plan.md` (from a file already inside steps/ — resolves to steps/steps/) + - WRONG: `{installed_path}/template.md` + - WRONG: `{project-root}/.claude/skills/my-skill/template.md` + - WRONG: `/Users/someone/.claude/skills/my-skill/steps/step-01.md` + - WRONG: `~/.claude/skills/my-skill/file.md` + +### PATH-02 — No `installed_path` Variable + +- **Severity:** HIGH +- **Applies to:** all files in the skill +- **Rule:** The `installed_path` variable is an anti-pattern from the pre-skill workflow era. It must not be defined in any frontmatter, and `{installed_path}` must not appear anywhere in any file. +- **Detection:** Search all files for: + - Frontmatter key `installed_path:` + - String `{installed_path}` anywhere in content + - Markdown/prose assigning `installed_path` (e.g., `` `installed_path` = `.` ``) +- **Fix:** Remove all `installed_path` definitions. Replace every `{installed_path}/path` with `./path` (relative from the file that contains the reference). If the reference is in a step file and points to a skill-root file, use `../path` instead. + +### PATH-03 — External References Must Use `{project-root}` or Config Variables + +- **Severity:** HIGH +- **Applies to:** all files in the skill +- **Rule:** References to files outside the skill directory must use `{project-root}/...` or a config-derived variable path (e.g., `{planning_artifacts}/...`, `{implementation_artifacts}/...`). +- **Detection:** Identify file references that point outside the skill. Verify they start with `{project-root}` or a known config variable. Flag absolute paths, home-relative paths (`~/`), or bare paths that resolve outside the skill. +- **Fix:** Replace with `{project-root}/...` or the appropriate config variable. + +### PATH-05 — No File Path References Into Another Skill + +- **Severity:** HIGH +- **Applies to:** all files in the skill +- **Rule:** A skill must never reference any file inside another skill's directory by file path. Skill directories are encapsulated — their internal files (steps, templates, checklists, data files, workflow.md) are private implementation details. The only valid way to reference another skill is via `skill:skill-name` syntax, which invokes the skill as a unit. Reaching into another skill to cherry-pick an internal file (e.g., a template, a step, or even its workflow.md) breaks encapsulation and creates fragile coupling that breaks when the target skill is moved or reorganized. +- **Detection:** For each external file reference (frontmatter values, markdown links, inline paths), check whether the resolved path points into a directory that is or contains a skill (has a `SKILL.md`). Patterns to flag: + - `{project-root}/_bmad/.../other-skill/anything.md` + - `{project-root}/_bmad/.../other-skill/steps/...` + - `{project-root}/_bmad/.../other-skill/templates/...` + - References to old pre-conversion locations that were skill directories (e.g., `core/workflows/skill-name/` when the skill has since moved to `core/skills/skill-name/`) +- **Fix:** + - If the intent is to invoke the other skill: replace with `skill:skill-name`. + - If the intent is to use a shared resource (template, data file): the resource should be extracted to a shared location outside both skills (e.g., `core/data/`, `bmm/data/`, or a config-referenced path) — not reached into from across skill boundaries. + +### PATH-04 — No Intra-Skill Path Variables + +- **Severity:** MEDIUM +- **Applies to:** all files (frontmatter AND body content) +- **Rule:** Variables must not store paths to files within the same skill. These paths should be hardcoded as relative paths inline where used. This applies to YAML frontmatter variables AND markdown body variable assignments (e.g., `` `template` = `./template.md` `` under a `### Paths` section). +- **Detection:** For each variable with a path-like value — whether defined in frontmatter or in body text — determine if the target is inside the skill directory. Indicators: value starts with `./`, `../`, `{installed_path}`, or is a bare filename of a file that exists in the skill. Exclude variables whose values are prefixed with a config variable like `{planning_artifacts}`, `{implementation_artifacts}`, `{project-root}`, or other config-derived paths — these are external references and are legitimate. +- **Fix:** Remove the variable. Replace each `{variable_name}` usage with the direct relative path. +- **Exception:** If a path variable is used in 4+ locations across multiple files and the path is non-trivial, a variable MAY be acceptable. Flag it as LOW instead and note the exception. + +--- + +### STEP-01 — Step File Naming + +- **Severity:** MEDIUM +- **Applies to:** files in `steps/` directory +- **Rule:** Step files must be named `step-NN-description.md` where NN is a zero-padded two-digit number. An optional single-letter variant suffix is allowed for branching steps (e.g., `step-01b-continue.md`). +- **Detection:** Regex: `^step-\d{2}[a-z]?-[a-z0-9-]+\.md$` +- **Fix:** Rename to match the pattern. + +### STEP-02 — Step Must Have a Goal Section + +- **Severity:** HIGH +- **Applies to:** step files +- **Rule:** Each step must clearly state its goal. Look for a heading like `## YOUR TASK`, `## STEP GOAL`, `## INSTRUCTIONS`, `## INITIALIZATION`, `## EXECUTION`, `# Step N:`, or a frontmatter `goal:` field. +- **Detection:** Scan for goal-indicating headings (including `# Step N: Title` as a top-level heading that names the step's purpose) or frontmatter. +- **Fix:** Add a clear goal section. + +### STEP-03 — Step Must Reference Next Step + +- **Severity:** MEDIUM +- **Applies to:** step files (except the final step) +- **Rule:** Each non-terminal step must contain a reference to the next step file for sequential execution. +- **Detection:** Look for `## NEXT` section or inline reference to a next step file. Remember to resolve the reference from the originating file's directory (PATH-01 applies here too). +- **Fix:** Add a `## NEXT` section with the relative path to the next step. +- **Note:** A terminal step is one that has no next-step reference and either contains completion/finalization language or is the highest-numbered step. If a workflow branches, there may be multiple terminal steps. + +### STEP-04 — Halt Before Menu + +- **Severity:** HIGH +- **Applies to:** step files +- **Rule:** Any step that presents a user menu (e.g., `[C] Continue`, `[A] Approve`, `[S] Split`) must explicitly HALT and wait for user response before proceeding. +- **Detection:** Find menu patterns (bracketed letter options). Check that text within the same section (under the same heading) includes "HALT", "wait", "stop", "FORBIDDEN to proceed", or equivalent. +- **Fix:** Add an explicit HALT instruction before or after the menu. + +### STEP-05 — No Forward Loading + +- **Severity:** HIGH +- **Applies to:** step files +- **Rule:** A step must not load or read future step files until the current step is complete. Just-in-time loading only. +- **Detection:** Look for instructions to read multiple step files simultaneously, or unconditional references to step files with higher numbers than the current step. Exempt locations: `## NEXT` sections, navigation/dispatch sections that list valid resumption targets, and conditional routing branches. +- **Fix:** Remove premature step loading. Ensure only the current step is active. + +### STEP-06 — Step File Frontmatter: No `name` or `description` + +- **Severity:** MEDIUM +- **Applies to:** step files +- **Rule:** Step files should not have `name:` or `description:` in their YAML frontmatter. These are metadata noise — the step's purpose is conveyed by its goal section and filename. +- **Detection:** Parse step file frontmatter for `name:` or `description:` keys. +- **Fix:** Remove `name:` and `description:` from step file frontmatter. + +### STEP-07 — Step Count + +- **Severity:** LOW +- **Applies to:** workflow as a whole +- **Rule:** A sharded workflow should have between 2 and 10 step files. More than 10 risks LLM context degradation. +- **Detection:** Count files matching `step-*.md` in the `steps/` directory. +- **Fix:** Consider consolidating steps if over 10. + +--- + +### SEQ-01 — No Skip Instructions + +- **Severity:** HIGH +- **Applies to:** all files +- **Rule:** No file should instruct the agent to skip steps or optimize step order. Sequential execution is mandatory. +- **Detection:** Scan for phrases like "skip to step", "jump to step", "skip ahead", "optimize the order", "you may skip". Exclude negation context (e.g., "do NOT skip steps", "NEVER skip") — these are enforcement instructions, not skip instructions. +- **Exception:** Conditional routing (e.g., "if X, go to step N; otherwise step M") is valid workflow branching, not skipping. + +### SEQ-02 — No Time Estimates + +- **Severity:** LOW +- **Applies to:** all files +- **Rule:** Workflow files should not include time estimates. AI execution speed varies too much for estimates to be meaningful. +- **Detection:** Scan for patterns like "takes X minutes", "~N min", "estimated time", "ETA". +- **Fix:** Remove time estimates. + +--- + +### REF-01 — Variable References Must Be Defined + +- **Severity:** HIGH +- **Applies to:** all files +- **Rule:** Every `{variable_name}` reference in any file (body text, frontmatter values, inline instructions) must resolve to a defined source. Valid sources are: + 1. A frontmatter variable in the same file + 2. A frontmatter variable in the skill's `workflow.md` (workflow-level variables are available to all steps) + 3. A known config variable from the project config (e.g., `project-root`, `planning_artifacts`, `implementation_artifacts`, `communication_language`) + 4. A known runtime variable set during execution (e.g., `date`, `status`, `project_name`, user-provided input variables) +- **Detection:** Collect all `{...}` tokens in the file. For each, check whether it is defined in the file's own frontmatter, in `workflow.md` frontmatter, or is a recognized config/runtime variable. Flag any token that cannot be traced to a source. Use the config variable list from the project's `config.yaml` as the reference for recognized config variables. Runtime variables are those explicitly described as user-provided or set during execution in the workflow instructions. +- **Exceptions:** + - Double-curly `{{variable}}` — these are template placeholders intended to survive into generated output (e.g., `{{project_name}}` in a template file). Do not flag these. + - Variables inside fenced code blocks that are clearly illustrative examples. +- **Fix:** Either define the variable in the appropriate frontmatter, or replace the reference with a literal value. If the variable is a config variable that was misspelled, correct the spelling. + +### REF-02 — File References Must Resolve + +- **Severity:** HIGH +- **Applies to:** all files +- **Rule:** All file path references within the skill (markdown links, backtick paths, frontmatter values) should point to files that plausibly exist. +- **Detection:** For internal references, verify the target file exists in the skill directory. For external references using config variables, verify the path structure is plausible (you cannot resolve config variables, but you can check that the path after the variable looks reasonable — e.g., `{planning_artifacts}/*.md` is plausible, `{planning_artifacts}/../../etc/passwd` is not). +- **Fix:** Correct the path or remove the dead reference. + +### REF-03 — Skill Invocation Must Use "Invoke" Language + +- **Severity:** HIGH +- **Applies to:** all files +- **Rule:** When a skill references another skill by name, the surrounding instruction must use the word "invoke". The canonical form is `Invoke the \`skill-name\` skill`. Phrases like "Read fully and follow", "Execute", "Run", "Load", "Open", or "Follow" are invalid — they imply file-level operations on a document, not skill invocation. A skill is a unit that is invoked, not a file that is read. +- **Detection:** Find all references to other skills by name (typically backtick-quoted skill names like \`bmad-foo\`). Check the surrounding instruction text (same sentence or directive) for file-oriented verbs: "read", "follow", "load", "execute", "run", "open". Flag any that do not use "invoke" (or a close synonym like "activate" or "launch"). +- **Fix:** Replace the instruction with `Invoke the \`skill-name\` skill`. Remove any "read fully and follow" or similar file-oriented phrasing. Do NOT add a `skill:` prefix to the name — use natural language. + +--- + +## Report Template + +When reporting findings, use this format: + +```markdown +# Skill Validation Report: {skill-name} + +**Directory:** {path} +**Date:** {date} +**Files scanned:** {count} + +## Summary + +| Severity | Count | +|----------|-------| +| CRITICAL | N | +| HIGH | N | +| MEDIUM | N | +| LOW | N | + +## Findings + +### {RULE-ID} — {Rule Title} + +- **Severity:** {severity} +- **File:** `{relative-path-within-skill}` +- **Line:** {line number or range, if identifiable} +- **Detail:** {what was found} +- **Fix:** {specific fix for this instance} + +--- + +(repeat for each finding, grouped by rule ID) + +## Passed Rules + +(list rule IDs that produced no findings) +``` + +If zero findings: report "All {N} rules passed. No findings." and list all passed rule IDs. diff --git a/website/public/diagrams/quick-dev-diagram.png b/website/public/diagrams/quick-dev-diagram.png new file mode 100644 index 000000000..9f813a4bf Binary files /dev/null and b/website/public/diagrams/quick-dev-diagram.png differ