diff --git a/.vscode/settings.json b/.vscode/settings.json index 004f1452..05795716 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -21,6 +21,7 @@ "Decisioning", "eksctl", "elicitations", + "Excalidraw", "filecomplete", "fintech", "fluxcd", diff --git a/src/modules/bmm/agents/analyst.agent.yaml b/src/modules/bmm/agents/analyst.agent.yaml index 528f727e..ffec0941 100644 --- a/src/modules/bmm/agents/analyst.agent.yaml +++ b/src/modules/bmm/agents/analyst.agent.yaml @@ -25,24 +25,25 @@ agent: - trigger: brainstorm-project workflow: "{project-root}/{bmad_folder}/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml" - description: Guide me through Brainstorming + description: Guided Brainstorming + + - trigger: research + workflow: "{project-root}/{bmad_folder}/bmm/workflows/1-analysis/research/workflow.yaml" + description: Guided Research - trigger: product-brief workflow: "{project-root}/{bmad_folder}/bmm/workflows/1-analysis/product-brief/workflow.yaml" - description: Produce Project Brief + description: Create a Project Brief - trigger: document-project workflow: "{project-root}/{bmad_folder}/bmm/workflows/document-project/workflow.yaml" description: Generate comprehensive documentation of an existing Project - - trigger: research - workflow: "{project-root}/{bmad_folder}/bmm/workflows/1-analysis/research/workflow.yaml" - description: Guide me through Research - - trigger: party-mode workflow: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.yaml" - description: Consult with other expert agents from the party + description: Bring the whole team in to chat with other expert agents from the party - trigger: advanced-elicitation exec: "{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml" description: Advanced elicitation techniques to challenge the LLM to get better results + web-only: true diff --git a/src/modules/bmm/agents/architect.agent.yaml b/src/modules/bmm/agents/architect.agent.yaml index 21d0c535..9a4a583c 100644 --- a/src/modules/bmm/agents/architect.agent.yaml +++ b/src/modules/bmm/agents/architect.agent.yaml @@ -26,17 +26,17 @@ agent: - trigger: validate-architecture validate-workflow: "{project-root}/{bmad_folder}/bmm/workflows/3-solutioning/architecture/workflow.yaml" checklist: "{project-root}/{bmad_folder}/bmm/workflows/3-solutioning/architecture/checklist.md" - document: "{output_folder}/architecture.md" description: Validate Architecture Document - trigger: solutioning-gate-check workflow: "{project-root}/{bmad_folder}/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml" - description: Validate solutioning complete, ready for Phase 4 (Level 2-4 only) + description: Validate solutioning is complete - trigger: party-mode workflow: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.yaml" - description: Consult with other expert agents from the party + description: Bring the whole team in to chat with other expert agents from the party - trigger: advanced-elicitation exec: "{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml" description: Advanced elicitation techniques to challenge the LLM to get better results + web-only: true diff --git a/src/modules/bmm/agents/dev.agent.yaml b/src/modules/bmm/agents/dev.agent.yaml index 2156fcb7..604e65d9 100644 --- a/src/modules/bmm/agents/dev.agent.yaml +++ b/src/modules/bmm/agents/dev.agent.yaml @@ -10,15 +10,15 @@ agent: module: bmm persona: - role: Senior Implementation Engineer + role: Senior Software Engineer identity: Executes approved stories with strict adherence to acceptance criteria, using Story Context XML and existing code to minimize rework and hallucinations. - communication_style: Succinct and checklist-driven. Cites specific paths and AC IDs. Asks clarifying questions only when inputs missing. Refuses to invent when info lacking. - principles: Story Context XML is the single source of truth. Reuse existing interfaces over rebuilding. Every change maps to specific AC. Tests pass 100% or story isn't done. + communication_style: Succinct. Cites specific paths and AC IDs. Asks clarifying questions only when inputs missing. Refuses to invent when info lacking. + principles: The User Story combined with the Story Context XML is the single source of truth. Reuse existing interfaces over rebuilding. Every change maps to specific AC. ALL past and current tests pass 100% or story isn't ready for review. critical_actions: - "DO NOT start implementation until a story is loaded and Status == Approved" - - "When a story is loaded, READ the entire story markdown" - - "Locate 'Dev Agent Record' → 'Context Reference' and READ the referenced Story Context file(s). If none present, HALT and ask user to run @spec-context → *story-context" + - "When a story is loaded, READ the entire story markdown, it is all CRITICAL information you must adhere to when implementing the software solution. Do not skip any sections." + - "Locate 'Dev Agent Record' → 'Context Reference' and READ the referenced Story Context file(s). If none present, HALT and ask the user to either provide a story context file, generate one with the story-context workflow, or proceed without it (not recommended)." - "Pin the loaded Story Context into active memory for the whole session; treat it as AUTHORITATIVE over any model priors" - "For *develop (Dev Story workflow), execute continuously without pausing for review or 'milestones'. Only halt for explicit blocker conditions (e.g., required approvals) or when the story is truly complete (all ACs satisfied, all tasks checked, all tests executed and passing 100%)." diff --git a/src/modules/bmm/agents/frame-expert.agent.yaml b/src/modules/bmm/agents/frame-expert.agent.yaml index 1af4e61a..271ae7ea 100644 --- a/src/modules/bmm/agents/frame-expert.agent.yaml +++ b/src/modules/bmm/agents/frame-expert.agent.yaml @@ -1,18 +1,24 @@ # Frame Expert Agent Definition agent: + webskip: true metadata: id: "{bmad_folder}/bmm/agents/frame-expert.md" - name: Saif Ullah + name: Saif title: Visual Design & Diagramming Expert - icon: 🎨 + icon: 📐 module: bmm persona: role: Expert Visual Designer & Diagramming Specialist - identity: Expert who creates visual representations using Excalidraw with optimized, reusable components. Specializes in flowcharts, diagrams, wireframes, ERDs, UML diagrams, mind maps, data flows, and API mappings. + identity: Expert who creates visual representations using Excalidraw with optimized, reusable components. Specializes in flowcharts, diagrams, wire-frames, ERDs, UML diagrams, mind maps, data flows, and API mappings. communication_style: Visual-first, structured, detail-oriented, composition-focused. Presents options as numbered lists for easy selection. - principles: Composition Over Creation - Use reusable components and templates. Minimal Payload - Strip unnecessary metadata, optimize serialization. Reference-Based Design - Use library references instead of redefining components. Structured Approach - Follow task-specific workflows for different diagram types. Clean Output - Remove history, deleted elements, unused styles from final output. JSON Validation - Always validate JSON syntax after saving files using validation tool. Error Recovery - NEVER delete files due to syntax errors, always fix them using error location information. + principles: | + - Composition Over Creation - Use reusable components and templates. Minimal Payload - Strip unnecessary metadata, optimize serialization. + - Reference-Based Design - Use library references instead of redefining components. Structured Approach - Follow task-specific workflows for different diagram types. + - Clean Output - Remove history, deleted elements, unused styles from final output. JSON Validation + - Always validate JSON syntax after saving files using validation tool. + - Error Recovery - NEVER delete files due to syntax errors, always fix them using error location information. menu: - trigger: flowchart @@ -30,3 +36,7 @@ agent: - trigger: wireframe workflow: "{project-root}/{bmad_folder}/bmm/workflows/frame-expert/create-wireframe/workflow.yaml" description: Create website or app wireframe + + - trigger: party-mode + workflow: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.yaml" + description: Bring the whole team in to chat with other expert agents from the party diff --git a/src/modules/bmm/agents/pm.agent.yaml b/src/modules/bmm/agents/pm.agent.yaml index dd4ba056..f5ad4ec7 100644 --- a/src/modules/bmm/agents/pm.agent.yaml +++ b/src/modules/bmm/agents/pm.agent.yaml @@ -18,7 +18,8 @@ agent: menu: - trigger: workflow-init workflow: "{project-root}/{bmad_folder}/bmm/workflows/workflow-status/init/workflow.yaml" - description: Start a new sequenced workflow path (START HERE!) + description: Start a new sequenced workflow path + ide-only: true - trigger: workflow-status workflow: "{project-root}/{bmad_folder}/bmm/workflows/workflow-status/workflow.yaml" @@ -26,7 +27,7 @@ agent: - trigger: create-prd workflow: "{project-root}/{bmad_folder}/bmm/workflows/2-plan-workflows/prd/workflow.yaml" - description: Create Product Requirements Document (PRD) for Level 2-4 projects + description: Create Product Requirements Document (PRD) - trigger: create-epics-and-stories workflow: "{project-root}/{bmad_folder}/bmm/workflows/2-plan-workflows/create-epics-and-stories/workflow.yaml" @@ -40,7 +41,7 @@ agent: - trigger: tech-spec workflow: "{project-root}/{bmad_folder}/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml" - description: Create Tech Spec for Level 0-1 (sometimes Level 2) projects + description: Create Tech Spec (Simple work efforts, no PRD or Architecture docs) - trigger: validate-tech-spec validate-workflow: "{project-root}/{bmad_folder}/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml" @@ -51,11 +52,13 @@ agent: - trigger: correct-course workflow: "{project-root}/{bmad_folder}/bmm/workflows/4-implementation/correct-course/workflow.yaml" description: Course Correction Analysis + ide-only: true - trigger: party-mode workflow: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.yaml" - description: Consult with other expert agents from the party + description: Bring the whole team in to chat with other expert agents from the party - trigger: advanced-elicitation exec: "{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml" description: Advanced elicitation techniques to challenge the LLM to get better results + web-only: true diff --git a/src/modules/bmm/agents/sm.agent.yaml b/src/modules/bmm/agents/sm.agent.yaml index f5276837..80d57fc4 100644 --- a/src/modules/bmm/agents/sm.agent.yaml +++ b/src/modules/bmm/agents/sm.agent.yaml @@ -15,7 +15,7 @@ agent: principles: Strict boundaries between story prep and implementation. Stories are single source of truth. Perfect alignment between PRD and dev execution. Enable efficient sprints. critical_actions: - - "When running *create-story, run non-interactively: use architecture, PRD, Tech Spec, and epics to generate a complete draft without elicitation." + - "When running *create-story, always run as *yolo. Use architecture, PRD, Tech Spec, and epics to generate a complete draft without elicitation." menu: - trigger: workflow-status @@ -26,7 +26,7 @@ agent: workflow: "{project-root}/{bmad_folder}/bmm/workflows/4-implementation/sprint-planning/workflow.yaml" description: Generate or update sprint-status.yaml from epic files - - trigger: epic-tech-context + - trigger: create-epic-tech-context workflow: "{project-root}/{bmad_folder}/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml" description: (Optional) Use the PRD and Architecture to create a Epic-Tech-Spec for a specific epic @@ -42,11 +42,11 @@ agent: validate-workflow: "{project-root}/{bmad_folder}/bmm/workflows/4-implementation/create-story/workflow.yaml" description: (Optional) Validate Story Draft with Independent Review - - trigger: story-context + - trigger: create-story-context workflow: "{project-root}/{bmad_folder}/bmm/workflows/4-implementation/story-context/workflow.yaml" description: (Optional) Assemble dynamic Story Context (XML) from latest docs and code and mark story ready for dev - - trigger: validate-story-context + - trigger: validate-create-story-context validate-workflow: "{project-root}/{bmad_folder}/bmm/workflows/4-implementation/story-context/workflow.yaml" description: (Optional) Validate latest Story Context XML against checklist @@ -65,8 +65,9 @@ agent: - trigger: party-mode workflow: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.yaml" - description: Consult with other expert agents from the party + description: Bring the whole team in to chat with other expert agents from the party - trigger: advanced-elicitation exec: "{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml" description: Advanced elicitation techniques to challenge the LLM to get better results + web-only: true diff --git a/src/modules/bmm/agents/tea.agent.yaml b/src/modules/bmm/agents/tea.agent.yaml index 6f64fb4c..7c1a415e 100644 --- a/src/modules/bmm/agents/tea.agent.yaml +++ b/src/modules/bmm/agents/tea.agent.yaml @@ -59,8 +59,9 @@ agent: - trigger: party-mode workflow: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.yaml" - description: Consult with other expert agents from the party + description: Bring the whole team in to chat with other expert agents from the party - trigger: advanced-elicitation exec: "{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml" description: Advanced elicitation techniques to challenge the LLM to get better results + web-only: true diff --git a/src/modules/bmm/agents/tech-writer.agent.yaml b/src/modules/bmm/agents/tech-writer.agent.yaml index f6c5f8de..b5035fce 100644 --- a/src/modules/bmm/agents/tech-writer.agent.yaml +++ b/src/modules/bmm/agents/tech-writer.agent.yaml @@ -60,8 +60,9 @@ agent: - trigger: party-mode workflow: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.yaml" - description: Consult with other expert agents from the party + description: Bring the whole team in to chat with other expert agents from the party - trigger: advanced-elicitation exec: "{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml" description: Advanced elicitation techniques to challenge the LLM to get better results + web-only: true diff --git a/src/modules/bmm/agents/ux-designer.agent.yaml b/src/modules/bmm/agents/ux-designer.agent.yaml index 514c5874..78e03f46 100644 --- a/src/modules/bmm/agents/ux-designer.agent.yaml +++ b/src/modules/bmm/agents/ux-designer.agent.yaml @@ -19,7 +19,7 @@ agent: workflow: "{project-root}/{bmad_folder}/bmm/workflows/workflow-status/workflow.yaml" description: Check workflow status and get recommendations (START HERE!) - - trigger: create-design + - trigger: create-ux-design workflow: "{project-root}/{bmad_folder}/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml" description: Conduct Design Thinking Workshop to Define the User Specification @@ -31,8 +31,9 @@ agent: - trigger: party-mode workflow: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.yaml" - description: Consult with other expert agents from the party + description: Bring the whole team in to chat with other expert agents from the party - trigger: advanced-elicitation exec: "{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml" description: Advanced elicitation techniques to challenge the LLM to get better results + web-only: true diff --git a/tools/cli/lib/xml-handler.js b/tools/cli/lib/xml-handler.js index 99620569..193808e4 100644 --- a/tools/cli/lib/xml-handler.js +++ b/tools/cli/lib/xml-handler.js @@ -203,6 +203,7 @@ class XmlHandler { customizeHash: customizePath ? await this.yamlBuilder.calculateFileHash(customizePath) : null, builderVersion: '1.0.0', includeMetadata: metadata.includeMetadata !== false, + forWebBundle: metadata.forWebBundle || false, // Pass through forWebBundle flag }; // Convert to XML diff --git a/tools/cli/lib/yaml-xml-builder.js b/tools/cli/lib/yaml-xml-builder.js index 3f32aa00..2786d7f5 100644 --- a/tools/cli/lib/yaml-xml-builder.js +++ b/tools/cli/lib/yaml-xml-builder.js @@ -209,7 +209,7 @@ class YamlXmlBuilder { // Menu section (support both 'menu' and legacy 'commands') const menuItems = agent.menu || agent.commands || []; - xml += this.buildCommandsXml(menuItems); + xml += this.buildCommandsXml(menuItems, buildMetadata.forWebBundle); xml += '\n'; xml += '```\n'; @@ -310,8 +310,10 @@ class YamlXmlBuilder { /** * Build menu XML section (renamed from commands for clarity) * Auto-injects *help and *exit, adds * prefix to all triggers + * @param {Array} menuItems - Menu items from YAML + * @param {boolean} forWebBundle - Whether building for web bundle */ - buildCommandsXml(menuItems) { + buildCommandsXml(menuItems, forWebBundle = false) { let xml = '