From f17e4ef0b71011fa6290811c7d31842ff6ed5be4 Mon Sep 17 00:00:00 2001 From: Brian Madison Date: Tue, 18 Nov 2025 21:54:48 -0600 Subject: [PATCH] refactor(bmm,cis,core): Align diagram workflows with agile roles and distribute capabilities MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## The Tale of the Frame Expert Once upon a time, BMad Method had a specialized agent called Frame Expert. This agent was the master of all visual artifacts - flowcharts, diagrams, wireframes, data flows. Whenever anyone needed a diagram, they called upon Frame Expert. The agent lived in its own isolated domain with four dedicated workflows and a library of shared templates. ## The Awakening But something felt wrong. Teams using BMad Method were meant to mirror real agile teams - Product Managers, Architects, UX Designers, Tech Writers, Developers. Each agent represented an authentic role you'd find in any software team. Except Frame Expert. No real agile team has a "Frame Expert" or "Diagram Specialist" who creates all visual artifacts. In real teams, Architects diagram system architecture. PMs flowchart processes. UX Designers wireframe interfaces. Tech Writers create documentation diagrams. The visuals emerge from the domain experts who need them, not from a centralized diagram factory. Frame Expert was an abstraction that made technical sense but violated the very soul of BMad Method - authentic agile role modeling. ## The Transformation And so Frame Expert was dissolved, its knowledge distributed to those who truly needed it: **The Architect** inherited system architecture diagrams and data flows - the blueprints of technical systems they design. **The Product Manager** received process flowcharts - the visual maps of features and workflows they orchestrate. **The UX Designer** claimed wireframes - the interface sketches that bring their vision to life. **The Tech Writer** gained all diagram types - the visual aids that clarify their documentation. Each agent now creates diagrams in their domain, using their expertise, serving their purpose. ## The Shared Knowledge But the wisdom of diagram creation itself - the Excalidraw templates, the component libraries, the validation patterns - this knowledge was too valuable to scatter. It was elevated to core resources, where both BMM agents AND the new CIS presentation-master agent could draw upon it. Shared infrastructure for common needs. Distributed execution for domain expertise. ## The Ripple Effects With diagrams now properly distributed, other misalignments became visible: Epic creation was happening in Phase 2 (Planning), before Architecture existed. But epics need architectural context - API contracts, data models, technical decisions. So epic creation migrated to Phase 3 (Solutioning), after Architecture provides that foundation. Workflow paths were updated. Documentation gained visual flowcharts showing the complete journey. Agent naming standards were clarified - filenames are stable roles, persona names are user dreams. ## What Changed **Removed:** - frame-expert.agent.yaml (the centralized specialist) - All frame-expert workflows and shared resources - Phase 2 epic creation workflow (wrong timing) - game-design workflow path (consolidated to method track) - v6-open-items.md (planning doc, now complete) **Distributed Diagram Capabilities:** - Architect: create-excalidraw-diagram, create-excalidraw-dataflow - PM: create-excalidraw-flowchart - Tech Writer: create-excalidraw-{diagram,dataflow,flowchart}, generate-mermaid - UX Designer: create-excalidraw-wireframe **Created:** - src/core/resources/ (shared diagram context for all modules) - src/modules/cis/agents/presentation-master.agent.yaml (visual comms specialist) - src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/ (epic creation's new home) - src/modules/bmm/workflows/diagrams/ (distributed diagram implementations) - src/modules/bmm/docs/images/ (workflow visualization assets) **Enhanced:** - All agent definitions with domain-appropriate diagram workflows - Documentation with embedded workflow diagrams and visual guides - Agent compilation docs with critical naming convention rules - All 4 workflow paths (enterprise/method ร— brownfield/greenfield) **Fixed:** - Epic creation now in Phase 3 after Architecture - Story context path variables in BMGD module - PRD workflow descriptions (epics moved to Phase 3) ## For Users The Frame Expert commands are gone. In their place: - Need architecture diagrams? Ask `/architect` - Need process flows? Ask `/pm` - Need wireframes? Ask `/ux-designer` - Need documentation visuals? Ask `/tech-writer` Each expert creates diagrams in their domain, with their context, using their judgment. This is how real teams work. --- README.md | 2 + v6-open-items.md => docs/v6-open-items.md | 2 +- src/core/resources/excalidraw/README.md | 160 + .../excalidraw}/excalidraw-helpers.md | 0 .../resources/excalidraw/library-loader.md | 50 + .../excalidraw}/validate-json-instructions.md | 0 src/modules/bmb/docs/agent-compilation.md | 39 + .../4-production/story-context/workflow.yaml | 2 +- src/modules/bmm/agents/architect.agent.yaml | 8 + .../bmm/agents/frame-expert.agent.yaml | 42 - src/modules/bmm/agents/pm.agent.yaml | 6 +- src/modules/bmm/agents/tech-writer.agent.yaml | 14 +- src/modules/bmm/agents/ux-designer.agent.yaml | 4 + src/modules/bmm/docs/README.md | 4 + .../workflow-method-greenfield.excalidraw | 5919 +++++++++++++++++ .../images/workflow-method-greenfield.svg | 2 + src/modules/bmm/docs/quick-start.md | 6 + src/modules/bmm/docs/scale-adaptive-system.md | 6 + .../bmm/docs/workflows-implementation.md | 10 + .../2-plan-workflows/prd/workflow.yaml | 8 +- .../epics-template.md | 0 .../create-epics-and-stories/instructions.md | 0 .../create-epics-and-stories/workflow.yaml | 10 +- .../story-context/workflow.yaml | 2 +- .../_shared/excalidraw-library.json | 0 .../_shared/excalidraw-templates.yaml | 0 .../create-dataflow/checklist.md | 0 .../create-dataflow/instructions.md | 15 +- .../diagrams/create-dataflow/workflow.yaml | 27 + .../create-diagram/checklist.md | 0 .../create-diagram/instructions.md | 19 +- .../diagrams/create-diagram/workflow.yaml | 27 + .../create-flowchart/checklist.md | 0 .../create-flowchart/instructions.md | 9 +- .../diagrams/create-flowchart/workflow.yaml | 27 + .../create-wireframe/checklist.md | 0 .../create-wireframe/instructions.md | 6 +- .../diagrams/create-wireframe/workflow.yaml | 27 + .../create-dataflow/workflow.yaml | 24 - .../frame-expert/create-diagram/workflow.yaml | 25 - .../create-flowchart/workflow.yaml | 28 - .../create-wireframe/workflow.yaml | 24 - .../paths/enterprise-brownfield.yaml | 48 +- .../paths/enterprise-greenfield.yaml | 16 +- .../workflow-status/paths/game-design.yaml | 52 - .../paths/method-brownfield.yaml | 16 +- .../paths/method-greenfield.yaml | 16 +- .../cis/agents/presentation-master.agent.yaml | 60 + 48 files changed, 6455 insertions(+), 307 deletions(-) rename v6-open-items.md => docs/v6-open-items.md (88%) create mode 100644 src/core/resources/excalidraw/README.md rename src/{modules/bmm/workflows/frame-expert/_shared => core/resources/excalidraw}/excalidraw-helpers.md (100%) create mode 100644 src/core/resources/excalidraw/library-loader.md rename src/{modules/bmm/workflows/frame-expert/_shared => core/resources/excalidraw}/validate-json-instructions.md (100%) delete mode 100644 src/modules/bmm/agents/frame-expert.agent.yaml create mode 100644 src/modules/bmm/docs/images/workflow-method-greenfield.excalidraw create mode 100644 src/modules/bmm/docs/images/workflow-method-greenfield.svg rename src/modules/bmm/workflows/{2-plan-workflows => 3-solutioning}/create-epics-and-stories/epics-template.md (100%) rename src/modules/bmm/workflows/{2-plan-workflows => 3-solutioning}/create-epics-and-stories/instructions.md (100%) rename src/modules/bmm/workflows/{2-plan-workflows => 3-solutioning}/create-epics-and-stories/workflow.yaml (83%) rename src/modules/bmm/workflows/{frame-expert => diagrams}/_shared/excalidraw-library.json (100%) rename src/modules/bmm/workflows/{frame-expert => diagrams}/_shared/excalidraw-templates.yaml (100%) rename src/modules/bmm/workflows/{frame-expert => diagrams}/create-dataflow/checklist.md (100%) rename src/modules/bmm/workflows/{frame-expert => diagrams}/create-dataflow/instructions.md (91%) create mode 100644 src/modules/bmm/workflows/diagrams/create-dataflow/workflow.yaml rename src/modules/bmm/workflows/{frame-expert => diagrams}/create-diagram/checklist.md (100%) rename src/modules/bmm/workflows/{frame-expert => diagrams}/create-diagram/instructions.md (87%) create mode 100644 src/modules/bmm/workflows/diagrams/create-diagram/workflow.yaml rename src/modules/bmm/workflows/{frame-expert => diagrams}/create-flowchart/checklist.md (100%) rename src/modules/bmm/workflows/{frame-expert => diagrams}/create-flowchart/instructions.md (97%) create mode 100644 src/modules/bmm/workflows/diagrams/create-flowchart/workflow.yaml rename src/modules/bmm/workflows/{frame-expert => diagrams}/create-wireframe/checklist.md (100%) rename src/modules/bmm/workflows/{frame-expert => diagrams}/create-wireframe/instructions.md (96%) create mode 100644 src/modules/bmm/workflows/diagrams/create-wireframe/workflow.yaml delete mode 100644 src/modules/bmm/workflows/frame-expert/create-dataflow/workflow.yaml delete mode 100644 src/modules/bmm/workflows/frame-expert/create-diagram/workflow.yaml delete mode 100644 src/modules/bmm/workflows/frame-expert/create-flowchart/workflow.yaml delete mode 100644 src/modules/bmm/workflows/frame-expert/create-wireframe/workflow.yaml delete mode 100644 src/modules/bmm/workflows/workflow-status/paths/game-design.yaml create mode 100644 src/modules/cis/agents/presentation-master.agent.yaml diff --git a/README.md b/README.md index 226db171..5ce98f86 100644 --- a/README.md +++ b/README.md @@ -111,6 +111,8 @@ Automatically adjusts planning depth and documentation based on project needs: 3. **Phase 3: Solutioning** (Track-dependent) - Architecture, (Coming soon: security, DevOps, test strategy) 4. **Phase 4: Implementation** (Iterative) - Story-centric development with just-in-time context +> **๐Ÿ“Š [View Complete Workflow Diagram](./src/modules/bmm/docs/images/workflow-method-greenfield.svg)** - Visual flowchart showing all phases, agents, and decision points for the BMad Method (Standard Greenfield track) + **๐Ÿค– 12 Specialized Agents** PM โ€ข Analyst โ€ข Architect โ€ข Scrum Master โ€ข Developer โ€ข Test Architect (TEA) โ€ข UX Designer โ€ข Technical Writer โ€ข Game Designer โ€ข Game Developer โ€ข Game Architect โ€ข BMad Master (Orchestrator) diff --git a/v6-open-items.md b/docs/v6-open-items.md similarity index 88% rename from v6-open-items.md rename to docs/v6-open-items.md index 8abc66dc..1dcfc0a5 100644 --- a/v6-open-items.md +++ b/docs/v6-open-items.md @@ -13,5 +13,5 @@ Aside from stability and bug fixes found during the alpha period - the main focu - knowledge base for BMM - Module repository and submission process defined - MCP Injections based on installation selection -- sub agent for opencode and claude code optimization +- sub agent for open-code and claude code optimization - TDD Workflow Integration diff --git a/src/core/resources/excalidraw/README.md b/src/core/resources/excalidraw/README.md new file mode 100644 index 00000000..dd17de2a --- /dev/null +++ b/src/core/resources/excalidraw/README.md @@ -0,0 +1,160 @@ +# Core Excalidraw Resources + +Universal knowledge for creating Excalidraw diagrams. All agents that create Excalidraw files should reference these resources. + +## Purpose + +Provides the **HOW** (universal knowledge) while agents provide the **WHAT** (domain-specific application). + +**Core = "How to create Excalidraw elements"** + +- How to group shapes with text labels +- How to calculate text width +- How to create arrows with proper bindings +- How to validate JSON syntax +- Base structure and primitives + +**Agents = "What diagrams to create"** + +- Frame Expert (BMM): Technical flowcharts, architecture diagrams, wireframes +- Presentation Master (CIS): Pitch decks, creative visuals, Rube Goldberg machines +- Tech Writer (BMM): Documentation diagrams, concept explanations + +## Files in This Directory + +### excalidraw-helpers.md + +**Universal element creation patterns** + +- Text width calculation +- Element grouping rules (shapes + labels) +- Grid alignment +- Arrow creation (straight, elbow) +- Theme application +- Validation checklist +- Optimization rules + +**Agents reference this to:** + +- Create properly grouped shapes +- Calculate text dimensions +- Connect elements with arrows +- Ensure valid structure + +### validate-json-instructions.md + +**Universal JSON validation process** + +- How to validate Excalidraw JSON +- Common errors and fixes +- Workflow integration +- Error recovery + +**Agents reference this to:** + +- Validate files after creation +- Fix syntax errors +- Ensure files can be opened in Excalidraw + +### library-loader.md (Future) + +**How to load external .excalidrawlib files** + +- Programmatic library loading +- Community library integration +- Custom library management + +**Status:** To be developed when implementing external library support. + +## How Agents Use These Resources + +### Example: Frame Expert (Technical Diagrams) + +```yaml +# workflows/diagrams/create-flowchart/workflow.yaml +helpers: '{project-root}/{bmad_folder}/core/resources/excalidraw/excalidraw-helpers.md' +json_validation: '{project-root}/{bmad_folder}/core/resources/excalidraw/validate-json-instructions.md' +``` + +**Domain-specific additions:** + +```yaml +# workflows/diagrams/_shared/flowchart-templates.yaml +flowchart: + start_node: + type: ellipse + width: 120 + height: 60 + process_box: + type: rectangle + width: 160 + height: 80 + decision_diamond: + type: diamond + width: 140 + height: 100 +``` + +### Example: Presentation Master (Creative Visuals) + +```yaml +# workflows/create-visual-metaphor/workflow.yaml +helpers: '{project-root}/{bmad_folder}/core/resources/excalidraw/excalidraw-helpers.md' +json_validation: '{project-root}/{bmad_folder}/core/resources/excalidraw/validate-json-instructions.md' +``` + +**Domain-specific additions:** + +```yaml +# workflows/_shared/creative-templates.yaml +rube_goldberg: + whimsical_connector: + type: arrow + strokeStyle: dashed + roughness: 2 + playful_box: + type: rectangle + roundness: 12 +``` + +## What Doesn't Belong in Core + +**Domain-Specific Elements:** + +- Flowchart-specific templates (belongs in Frame Expert) +- Pitch deck layouts (belongs in Presentation Master) +- Documentation-specific styles (belongs in Tech Writer) + +**Agent Workflows:** + +- How to create a flowchart (Frame Expert workflow) +- How to create a pitch deck (Presentation Master workflow) +- Step-by-step diagram creation (agent-specific) + +**Theming:** + +- Currently in agent workflows +- **Future:** Will be refactored to core as user-configurable themes + +## Architecture Principle + +**Single Source of Truth:** + +- Core holds universal knowledge +- Agents reference core, don't duplicate +- Updates to core benefit all agents +- Agents specialize with domain knowledge + +**DRY (Don't Repeat Yourself):** + +- Element creation logic: ONCE in core +- Text width calculation: ONCE in core +- Validation process: ONCE in core +- Arrow binding patterns: ONCE in core + +## Future Enhancements + +1. **External Library Loader** - Load .excalidrawlib files from libraries.excalidraw.com +2. **Theme Management** - User-configurable color themes saved in core +3. **Component Library** - Shared reusable components across agents +4. **Layout Algorithms** - Auto-layout helpers for positioning elements diff --git a/src/modules/bmm/workflows/frame-expert/_shared/excalidraw-helpers.md b/src/core/resources/excalidraw/excalidraw-helpers.md similarity index 100% rename from src/modules/bmm/workflows/frame-expert/_shared/excalidraw-helpers.md rename to src/core/resources/excalidraw/excalidraw-helpers.md diff --git a/src/core/resources/excalidraw/library-loader.md b/src/core/resources/excalidraw/library-loader.md new file mode 100644 index 00000000..6a66c963 --- /dev/null +++ b/src/core/resources/excalidraw/library-loader.md @@ -0,0 +1,50 @@ +# External Library Loader + +**Status:** Placeholder for future implementation + +## Purpose + +Load external .excalidrawlib files from https://libraries.excalidraw.com or custom sources. + +## Planned Capabilities + +- Load libraries by URL +- Load libraries from local files +- Merge multiple libraries +- Filter library components +- Cache loaded libraries + +## API Reference + +Will document how to use: + +- `importLibrary(url)` - Load library from URL +- `loadSceneOrLibraryFromBlob()` - Load from file +- `mergeLibraryItems()` - Combine libraries + +## Usage Example + +```yaml +# Future workflow.yaml structure +libraries: + - url: 'https://libraries.excalidraw.com/libraries/...' + filter: ['aws', 'cloud'] + - path: '{project-root}/_data/custom-library.excalidrawlib' +``` + +## Implementation Notes + +This will be developed when agents need to leverage the extensive library ecosystem available at https://libraries.excalidraw.com. + +Hundreds of pre-built component libraries exist for: + +- AWS/Cloud icons +- UI/UX components +- Business diagrams +- Mind map shapes +- Floor plans +- And much more... + +## User Configuration + +Future: Users will be able to configure favorite libraries in their BMAD config for automatic loading. diff --git a/src/modules/bmm/workflows/frame-expert/_shared/validate-json-instructions.md b/src/core/resources/excalidraw/validate-json-instructions.md similarity index 100% rename from src/modules/bmm/workflows/frame-expert/_shared/validate-json-instructions.md rename to src/core/resources/excalidraw/validate-json-instructions.md diff --git a/src/modules/bmb/docs/agent-compilation.md b/src/modules/bmb/docs/agent-compilation.md index 36b08c10..97597397 100644 --- a/src/modules/bmb/docs/agent-compilation.md +++ b/src/modules/bmb/docs/agent-compilation.md @@ -10,6 +10,45 @@ agent.yaml โ†’ Handlebars processing โ†’ XML generation โ†’ frontmatter.md Source: `tools/cli/lib/agent/compiler.js` +## File Naming Convention + +**CRITICAL:** Agent filenames must be ROLE-BASED, not persona-based. + +**Why:** Users can customize the agent's persona name via `customize.yaml` config. The filename provides stable identity. + +**Correct:** + +``` +presentation-master.agent.yaml โ† Role/function +tech-writer.agent.yaml โ† Role/function +code-reviewer.agent.yaml โ† Role/function +``` + +**Incorrect:** + +``` +caravaggio.agent.yaml โ† Persona name (users might rename to "Pablo") +paige.agent.yaml โ† Persona name (users might rename to "Sarah") +rex.agent.yaml โ† Persona name (users might rename to "Max") +``` + +**Pattern:** + +- Filename: `{role-or-function}.agent.yaml` (kebab-case) +- Metadata ID: `{bmad_folder}/{module}/agents/{role-or-function}.md` +- Persona Name: User-customizable in metadata or customize.yaml + +**Example:** + +```yaml +# File: presentation-master.agent.yaml +agent: + metadata: + id: '{bmad_folder}/cis/agents/presentation-master.md' + name: Caravaggio # โ† Users can change this to "Pablo" or "Vince" + title: Visual Communication & Presentation Expert +``` + ## Auto-Injected Components ### 1. Frontmatter diff --git a/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml b/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml index 19df634e..ced3e654 100644 --- a/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml +++ b/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml @@ -9,7 +9,7 @@ output_folder: "{config_source}:output_folder" user_name: "{config_source}:user_name" communication_language: "{config_source}:communication_language" document_output_language: "{config_source}:document_output_language" -story_path: "{config_source}:sprint_artifacts/stories" +story_path: "{config_source}:sprint_artifacts" date: system-generated sprint_artifacts: "{config_source}:sprint_artifacts" sprint_status: "{sprint_artifacts}/sprint-status.yaml || {output_folder}/sprint-status.yaml" diff --git a/src/modules/bmm/agents/architect.agent.yaml b/src/modules/bmm/agents/architect.agent.yaml index 40d9fd82..394f4d1c 100644 --- a/src/modules/bmm/agents/architect.agent.yaml +++ b/src/modules/bmm/agents/architect.agent.yaml @@ -32,6 +32,14 @@ agent: workflow: "{project-root}/{bmad_folder}/bmm/workflows/3-solutioning/implementation-readiness/workflow.yaml" description: Validate implementation readiness - PRD, UX, Architecture, Epics aligned + - trigger: create-excalidraw-diagram + workflow: "{project-root}/{bmad_folder}/bmm/workflows/diagrams/create-diagram/workflow.yaml" + description: Create system architecture or technical diagram (Excalidraw) + + - trigger: create-excalidraw-dataflow + workflow: "{project-root}/{bmad_folder}/bmm/workflows/diagrams/create-dataflow/workflow.yaml" + description: Create data flow diagram (Excalidraw) + - 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/frame-expert.agent.yaml b/src/modules/bmm/agents/frame-expert.agent.yaml deleted file mode 100644 index 92b68053..00000000 --- a/src/modules/bmm/agents/frame-expert.agent.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# Frame Expert Agent Definition - -agent: - webskip: true - metadata: - id: "{bmad_folder}/bmm/agents/frame-expert.md" - name: Saif - title: Visual Design & Diagramming Expert - 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, wire-frames, ERDs, UML diagrams, mind maps, data flows, and API mappings. - communication_style: "Visual thinker who talks in shapes and flows. Presents options as numbered lists, explains diagrams like describing a painting." - 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 - workflow: "{project-root}/{bmad_folder}/bmm/workflows/frame-expert/create-flowchart/workflow.yaml" - description: Create flowchart for processes, pipelines, or logic flows - - - trigger: diagram - workflow: "{project-root}/{bmad_folder}/bmm/workflows/frame-expert/create-diagram/workflow.yaml" - description: Create system architecture or general technical diagram - - - trigger: dataflow - workflow: "{project-root}/{bmad_folder}/bmm/workflows/frame-expert/create-dataflow/workflow.yaml" - description: Create data flow diagram - - - 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 99bc396a..1e64cbdc 100644 --- a/src/modules/bmm/agents/pm.agent.yaml +++ b/src/modules/bmm/agents/pm.agent.yaml @@ -30,7 +30,7 @@ agent: 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" + workflow: "{project-root}/{bmad_folder}/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.yaml" description: Break PRD requirements into implementable epics and stories - trigger: validate-prd @@ -54,6 +54,10 @@ agent: description: Course Correction Analysis ide-only: true + - trigger: create-excalidraw-flowchart + workflow: "{project-root}/{bmad_folder}/bmm/workflows/diagrams/create-flowchart/workflow.yaml" + description: Create process or feature flow diagram (Excalidraw) + - 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/tech-writer.agent.yaml b/src/modules/bmm/agents/tech-writer.agent.yaml index c59da1dd..e6e1a92a 100644 --- a/src/modules/bmm/agents/tech-writer.agent.yaml +++ b/src/modules/bmm/agents/tech-writer.agent.yaml @@ -38,10 +38,22 @@ agent: workflow: "todo" description: Review documentation quality and suggest improvements - - trigger: generate-diagram + - trigger: generate-mermaid action: "Create a Mermaid diagram based on user description. Ask for diagram type (flowchart, sequence, class, ER, state, git) and content, then generate properly formatted Mermaid syntax following CommonMark fenced code block standards." description: Generate Mermaid diagrams (architecture, sequence, flow, ER, class, state) + - trigger: create-excalidraw-flowchart + workflow: "{project-root}/{bmad_folder}/bmm/workflows/diagrams/create-flowchart/workflow.yaml" + description: Create Excalidraw flowchart for processes and logic flows + + - trigger: create-excalidraw-diagram + workflow: "{project-root}/{bmad_folder}/bmm/workflows/diagrams/create-diagram/workflow.yaml" + description: Create Excalidraw system architecture or technical diagram + + - trigger: create-excalidraw-dataflow + workflow: "{project-root}/{bmad_folder}/bmm/workflows/diagrams/create-dataflow/workflow.yaml" + description: Create Excalidraw data flow diagram + - trigger: validate-doc action: "Review the specified document against CommonMark standards, technical writing best practices, and style guide compliance. Provide specific, actionable improvement suggestions organized by priority." description: Validate documentation against standards and best practices diff --git a/src/modules/bmm/agents/ux-designer.agent.yaml b/src/modules/bmm/agents/ux-designer.agent.yaml index a69bc4e1..03868f84 100644 --- a/src/modules/bmm/agents/ux-designer.agent.yaml +++ b/src/modules/bmm/agents/ux-designer.agent.yaml @@ -29,6 +29,10 @@ agent: document: "{output_folder}/ux-spec.md" description: Validate UX Specification and Design Artifacts + - trigger: create-excalidraw-wireframe + workflow: "{project-root}/{bmad_folder}/bmm/workflows/diagrams/create-wireframe/workflow.yaml" + description: Create website or app wireframe (Excalidraw) + - 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/docs/README.md b/src/modules/bmm/docs/README.md index 0bd2393b..080fe90d 100644 --- a/src/modules/bmm/docs/README.md +++ b/src/modules/bmm/docs/README.md @@ -16,6 +16,10 @@ Complete guides for the BMad Method Module (BMM) - AI-powered agile development **Quick Path:** Install โ†’ workflow-init โ†’ Follow agent guidance +### ๐Ÿ“Š Visual Overview + +**[Complete Workflow Diagram](./images/workflow-method-greenfield.svg)** - Visual flowchart showing all phases, agents (color-coded), and decision points for the BMad Method standard greenfield track. + --- ## ๐Ÿ“– Core Concepts diff --git a/src/modules/bmm/docs/images/workflow-method-greenfield.excalidraw b/src/modules/bmm/docs/images/workflow-method-greenfield.excalidraw new file mode 100644 index 00000000..31d58905 --- /dev/null +++ b/src/modules/bmm/docs/images/workflow-method-greenfield.excalidraw @@ -0,0 +1,5919 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://marketplace.visualstudio.com/items?itemName=pomdtr.excalidraw-editor", + "elements": [ + { + "id": "title", + "type": "text", + "x": 284.6321356748704, + "y": 20, + "width": 673.7520141601562, + "height": 37.15738334525602, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 29.725906676204815, + "fontFamily": 1, + "text": "BMad Method Workflow - Standard Greenfield", + "textAlign": "center", + "verticalAlign": "top", + "locked": false, + "version": 67, + "versionNonce": 1431078555, + "index": "a0", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522299028, + "link": null, + "containerId": null, + "originalText": "BMad Method Workflow - Standard Greenfield", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "start-ellipse", + "type": "ellipse", + "x": 60, + "y": 80, + "width": 120, + "height": 60, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "#e3f2fd", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "start-group" + ], + "boundElements": [ + { + "type": "text", + "id": "start-text" + }, + { + "type": "arrow", + "id": "arrow-start-discovery" + } + ], + "locked": false, + "version": 2, + "versionNonce": 1364787547, + "index": "a1", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "updated": 1763522171079, + "link": null + }, + { + "id": "start-text", + "type": "text", + "x": 93, + "y": 98, + "width": 54, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "start-group" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "Start", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "start-ellipse", + "locked": false, + "version": 2, + "versionNonce": 1303811541, + "index": "a2", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171079, + "link": null, + "originalText": "Start", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "phase1-header", + "type": "text", + "x": 13.742901708014983, + "y": 180.0057616006372, + "width": 200, + "height": 30, + "angle": 0, + "strokeColor": "#2e7d32", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 24, + "fontFamily": 1, + "text": "PHASE 1", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 18, + "versionNonce": 1987415189, + "index": "a3", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522322404, + "link": null, + "containerId": null, + "originalText": "PHASE 1", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "phase1-subtitle", + "type": "text", + "x": 140.26189010000303, + "y": 168.98316506386624, + "width": 75.31195068359375, + "height": 40, + "angle": 0, + "strokeColor": "#666666", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 16, + "fontFamily": 1, + "text": "Discovery\n(Optional)", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 225, + "versionNonce": 1515322069, + "index": "a4", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522324513, + "link": null, + "containerId": null, + "originalText": "Discovery\n(Optional)", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-start-discovery", + "type": "arrow", + "x": 120, + "y": 140, + "width": 0, + "height": 100, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "start-ellipse", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "decision-discovery", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 100 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 2116462235, + "index": "a5", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171079, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "decision-discovery", + "type": "diamond", + "x": 40, + "y": 240, + "width": 160, + "height": 100, + "angle": 0, + "strokeColor": "#f57c00", + "backgroundColor": "#fff3e0", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "decision-discovery-group" + ], + "boundElements": [ + { + "type": "text", + "id": "decision-discovery-text" + }, + { + "type": "arrow", + "id": "arrow-start-discovery" + }, + { + "type": "arrow", + "id": "arrow-discovery-yes" + }, + { + "type": "arrow", + "id": "arrow-discovery-no" + } + ], + "locked": false, + "version": 2, + "versionNonce": 1508959381, + "index": "a6", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "updated": 1763522171079, + "link": null + }, + { + "id": "decision-discovery-text", + "type": "text", + "x": 55, + "y": 265, + "width": 130, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "decision-discovery-group" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "Include\nDiscovery?", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "decision-discovery", + "locked": false, + "version": 2, + "versionNonce": 627907387, + "index": "a7", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171079, + "link": null, + "originalText": "Include\nDiscovery?", + "autoResize": true, + "lineHeight": 1.5625 + }, + { + "id": "arrow-discovery-yes", + "type": "arrow", + "x": 120, + "y": 340, + "width": 0, + "height": 40, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "decision-discovery", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-brainstorm", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 40 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 133270005, + "index": "a8", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171079, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "label-yes-discovery", + "type": "text", + "x": 130, + "y": 350, + "width": 30, + "height": 20, + "angle": 0, + "strokeColor": "#2e7d32", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 16, + "fontFamily": 1, + "text": "Yes", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 2, + "versionNonce": 1362885595, + "index": "a9", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171079, + "link": null, + "containerId": null, + "originalText": "Yes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "proc-brainstorm", + "type": "rectangle", + "x": 40, + "y": 380, + "width": 160, + "height": 80, + "angle": 0, + "strokeColor": "#00acc1", + "backgroundColor": "#b2ebf2", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-brainstorm-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-brainstorm-text" + }, + { + "type": "arrow", + "id": "arrow-discovery-yes" + }, + { + "type": "arrow", + "id": "arrow-brainstorm-research" + } + ], + "locked": false, + "version": 2, + "versionNonce": 1836483413, + "index": "aA", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522171079, + "link": null + }, + { + "id": "proc-brainstorm-text", + "type": "text", + "x": 50, + "y": 395, + "width": 140, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-brainstorm-group" + ], + "fontSize": 14, + "fontFamily": 1, + "text": "Brainstorm\n<>", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-brainstorm", + "locked": false, + "version": 2, + "versionNonce": 765839483, + "index": "aB", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171079, + "link": null, + "originalText": "Brainstorm\n<>", + "autoResize": true, + "lineHeight": 1.7857142857142858 + }, + { + "id": "arrow-brainstorm-research", + "type": "arrow", + "x": 120, + "y": 460, + "width": 0, + "height": 30, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "proc-brainstorm", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-research", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 30 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 1054167221, + "index": "aC", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171079, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "proc-research", + "type": "rectangle", + "x": 40, + "y": 490, + "width": 160, + "height": 80, + "angle": 0, + "strokeColor": "#00acc1", + "backgroundColor": "#b2ebf2", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-research-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-research-text" + }, + { + "type": "arrow", + "id": "arrow-brainstorm-research" + }, + { + "type": "arrow", + "id": "arrow-research-brief" + } + ], + "locked": false, + "version": 2, + "versionNonce": 1080885531, + "index": "aD", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522171079, + "link": null + }, + { + "id": "proc-research-text", + "type": "text", + "x": 50, + "y": 505, + "width": 140, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-research-group" + ], + "fontSize": 14, + "fontFamily": 1, + "text": "Research\n<>", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-research", + "locked": false, + "version": 2, + "versionNonce": 162755093, + "index": "aE", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171079, + "link": null, + "originalText": "Research\n<>", + "autoResize": true, + "lineHeight": 1.7857142857142858 + }, + { + "id": "arrow-research-brief", + "type": "arrow", + "x": 120, + "y": 570.4516141612517, + "width": 0, + "height": 29.09677167749669, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "proc-research", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-product-brief", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 29.09677167749669 + ] + ], + "lastCommittedPoint": null, + "version": 3, + "versionNonce": 129474555, + "index": "aF", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522366664, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "proc-product-brief", + "type": "rectangle", + "x": 40, + "y": 600, + "width": 160, + "height": 80, + "angle": 0, + "strokeColor": "#00acc1", + "backgroundColor": "#b2ebf2", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-product-brief-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-product-brief-text" + }, + { + "type": "arrow", + "id": "arrow-research-brief" + } + ], + "locked": false, + "version": 5, + "versionNonce": 1883386587, + "index": "aG", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522387503, + "link": null + }, + { + "id": "proc-product-brief-text", + "type": "text", + "x": 72.69404602050781, + "y": 615, + "width": 94.61190795898438, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-product-brief-group" + ], + "fontSize": 14, + "fontFamily": 1, + "text": "Product Brief\n<>", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-product-brief", + "locked": false, + "version": 3, + "versionNonce": 1653785435, + "index": "aH", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522366663, + "link": null, + "originalText": "Product Brief\n<>", + "autoResize": true, + "lineHeight": 1.7857142857142858 + }, + { + "id": "arrow-discovery-no", + "type": "arrow", + "x": 199.6894797300442, + "y": 290.14816182452876, + "width": 154.3876762800684, + "height": 0.2869717617168135, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "decision-discovery", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-prd", + "focus": 0, + "gap": 5.918648042715176 + }, + "points": [ + [ + 0, + 0 + ], + [ + 154.3876762800684, + 0.2869717617168135 + ] + ], + "lastCommittedPoint": null, + "version": 133, + "versionNonce": 384615061, + "index": "aI", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522366664, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "label-no-discovery", + "type": "text", + "x": 220, + "y": 270, + "width": 25, + "height": 20, + "angle": 0, + "strokeColor": "#d32f2f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 16, + "fontFamily": 1, + "text": "No", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 2, + "versionNonce": 198980347, + "index": "aJ", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171079, + "link": null, + "containerId": null, + "originalText": "No", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-phase1-to-phase2", + "type": "arrow", + "x": 200.83459733658879, + "y": 647.2861823292017, + "width": 155.24475704444893, + "height": 343.9606227346032, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": null, + "endBinding": { + "elementId": "proc-prd", + "focus": 0.4199760568947118, + "gap": 3.21773034122549 + }, + "points": [ + [ + 0, + 0 + ], + [ + 66.30442041579451, + -291.0277369141115 + ], + [ + 155.24475704444893, + -343.9606227346032 + ] + ], + "lastCommittedPoint": null, + "version": 1159, + "versionNonce": 1603208699, + "index": "aK", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1763522391047, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "phase2-header", + "type": "text", + "x": 340, + "y": 180, + "width": 200, + "height": 30, + "angle": 0, + "strokeColor": "#2e7d32", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 24, + "fontFamily": 1, + "text": "PHASE 2", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 2, + "versionNonce": 292690843, + "index": "aL", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171079, + "link": null, + "containerId": null, + "originalText": "PHASE 2", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "phase2-subtitle", + "type": "text", + "x": 340, + "y": 210, + "width": 200, + "height": 20, + "angle": 0, + "strokeColor": "#666666", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 16, + "fontFamily": 1, + "text": "Planning (Required)", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 2, + "versionNonce": 184762261, + "index": "aM", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171079, + "link": null, + "containerId": null, + "originalText": "Planning (Required)", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "proc-prd", + "type": "rectangle", + "x": 359.2970847222632, + "y": 250.5934448656302, + "width": 160, + "height": 80, + "angle": 0, + "strokeColor": "#43a047", + "backgroundColor": "#c8e6c9", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-prd-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-prd-text" + }, + { + "type": "arrow", + "id": "arrow-discovery-no" + }, + { + "type": "arrow", + "id": "arrow-prd-validate" + }, + { + "id": "arrow-phase1-to-phase2", + "type": "arrow" + } + ], + "locked": false, + "version": 102, + "versionNonce": 1152453237, + "index": "aN", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522366662, + "link": null + }, + { + "id": "proc-prd-text", + "type": "text", + "x": 418.107097539646, + "y": 278.0934448656302, + "width": 42.379974365234375, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-prd-group" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "PRD", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-prd", + "locked": false, + "version": 101, + "versionNonce": 1467085781, + "index": "aO", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522366663, + "link": null, + "originalText": "PRD", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-prd-validate", + "type": "arrow", + "x": 439.38101944508776, + "y": 331.0450590268819, + "width": 0.2006820852784017, + "height": 28.50332681186643, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "proc-prd", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-validate-prd", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0.2006820852784017, + 28.50332681186643 + ] + ], + "lastCommittedPoint": null, + "version": 101, + "versionNonce": 901883893, + "index": "aP", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522366664, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "proc-validate-prd", + "type": "rectangle", + "x": 360, + "y": 360, + "width": 160, + "height": 80, + "angle": 0, + "strokeColor": "#43a047", + "backgroundColor": "#c8e6c9", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-validate-prd-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-validate-prd-text" + }, + { + "type": "arrow", + "id": "arrow-prd-validate" + }, + { + "type": "arrow", + "id": "arrow-validate-prd-hasui" + } + ], + "locked": false, + "version": 2, + "versionNonce": 1542331989, + "index": "aQ", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "proc-validate-prd-text", + "type": "text", + "x": 370, + "y": 375, + "width": 140, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-validate-prd-group" + ], + "fontSize": 14, + "fontFamily": 1, + "text": "Validate PRD\n<>", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-validate-prd", + "locked": false, + "version": 2, + "versionNonce": 944332155, + "index": "aR", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "Validate PRD\n<>", + "autoResize": true, + "lineHeight": 1.7857142857142858 + }, + { + "id": "arrow-validate-prd-hasui", + "type": "arrow", + "x": 440, + "y": 440, + "width": 0, + "height": 30, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "proc-validate-prd", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "decision-has-ui", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 30 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 1369541557, + "index": "aS", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "decision-has-ui", + "type": "diamond", + "x": 360, + "y": 470, + "width": 160, + "height": 100, + "angle": 0, + "strokeColor": "#f57c00", + "backgroundColor": "#fff3e0", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "decision-has-ui-group" + ], + "boundElements": [ + { + "type": "text", + "id": "decision-has-ui-text" + }, + { + "type": "arrow", + "id": "arrow-validate-prd-hasui" + }, + { + "type": "arrow", + "id": "arrow-has-ui-yes" + }, + { + "type": "arrow", + "id": "arrow-has-ui-no" + } + ], + "locked": false, + "version": 2, + "versionNonce": 1003877915, + "index": "aT", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "decision-has-ui-text", + "type": "text", + "x": 375, + "y": 495, + "width": 130, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "decision-has-ui-group" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "Has UI?", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "decision-has-ui", + "locked": false, + "version": 2, + "versionNonce": 222317845, + "index": "aU", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "Has UI?", + "autoResize": true, + "lineHeight": 3.125 + }, + { + "id": "arrow-has-ui-yes", + "type": "arrow", + "x": 440, + "y": 570, + "width": 0, + "height": 30, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "decision-has-ui", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-ux-design", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 30 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 528906939, + "index": "aV", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "label-yes-ui", + "type": "text", + "x": 450, + "y": 580, + "width": 30, + "height": 20, + "angle": 0, + "strokeColor": "#2e7d32", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 16, + "fontFamily": 1, + "text": "Yes", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 2, + "versionNonce": 1581245045, + "index": "aW", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "containerId": null, + "originalText": "Yes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "proc-ux-design", + "type": "rectangle", + "x": 360, + "y": 600, + "width": 160, + "height": 80, + "angle": 0, + "strokeColor": "#8e24aa", + "backgroundColor": "#e1bee7", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-ux-design-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-ux-design-text" + }, + { + "type": "arrow", + "id": "arrow-has-ui-yes" + }, + { + "type": "arrow", + "id": "arrow-ux-to-phase3" + } + ], + "locked": false, + "version": 2, + "versionNonce": 268266331, + "index": "aX", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "proc-ux-design-text", + "type": "text", + "x": 370, + "y": 628, + "width": 140, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-ux-design-group" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "Create UX", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-ux-design", + "locked": false, + "version": 2, + "versionNonce": 157666261, + "index": "aY", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "Create UX", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-has-ui-no", + "type": "arrow", + "x": 520, + "y": 520, + "width": 140, + "height": 0, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "decision-has-ui", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-architecture", + "focus": -0.3, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 140, + 0 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 26036219, + "index": "aZ", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "label-no-ui", + "type": "text", + "x": 540, + "y": 500, + "width": 25, + "height": 20, + "angle": 0, + "strokeColor": "#d32f2f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 16, + "fontFamily": 1, + "text": "No", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 2, + "versionNonce": 516393269, + "index": "aa", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "containerId": null, + "originalText": "No", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-ux-to-phase3", + "type": "arrow", + "x": 520, + "y": 640, + "width": 140, + "height": 0, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "proc-ux-design", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-architecture", + "focus": 0.3, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 140, + 0 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 976785563, + "index": "ab", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "phase3-header", + "type": "text", + "x": 660, + "y": 180, + "width": 200, + "height": 30, + "angle": 0, + "strokeColor": "#2e7d32", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 24, + "fontFamily": 1, + "text": "PHASE 3", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 2, + "versionNonce": 264936085, + "index": "ac", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "containerId": null, + "originalText": "PHASE 3", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "phase3-subtitle", + "type": "text", + "x": 660, + "y": 210, + "width": 220, + "height": 20, + "angle": 0, + "strokeColor": "#666666", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 16, + "fontFamily": 1, + "text": "Solutioning (Required)", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 2, + "versionNonce": 464635195, + "index": "ad", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "containerId": null, + "originalText": "Solutioning (Required)", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "proc-architecture", + "type": "rectangle", + "x": 680, + "y": 480, + "width": 160, + "height": 80, + "angle": 0, + "strokeColor": "#f4511e", + "backgroundColor": "#ffccbc", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-architecture-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-architecture-text" + }, + { + "type": "arrow", + "id": "arrow-has-ui-no" + }, + { + "type": "arrow", + "id": "arrow-ux-to-phase3" + }, + { + "type": "arrow", + "id": "arrow-arch-epics" + } + ], + "locked": false, + "version": 2, + "versionNonce": 86278133, + "index": "ae", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "proc-architecture-text", + "type": "text", + "x": 690, + "y": 508, + "width": 140, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-architecture-group" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "Architecture", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-architecture", + "locked": false, + "version": 2, + "versionNonce": 760964571, + "index": "af", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "Architecture", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-arch-epics", + "type": "arrow", + "x": 760, + "y": 560, + "width": 0, + "height": 30, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "proc-architecture", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-epics", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 30 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 1960491349, + "index": "ag", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "proc-epics", + "type": "rectangle", + "x": 680, + "y": 590, + "width": 160, + "height": 80, + "angle": 0, + "strokeColor": "#43a047", + "backgroundColor": "#c8e6c9", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-epics-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-epics-text" + }, + { + "type": "arrow", + "id": "arrow-arch-epics" + }, + { + "type": "arrow", + "id": "arrow-epics-test" + } + ], + "locked": false, + "version": 2, + "versionNonce": 1715991163, + "index": "ah", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "proc-epics-text", + "type": "text", + "x": 690, + "y": 618, + "width": 140, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-epics-group" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "Epics/Stories", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-epics", + "locked": false, + "version": 2, + "versionNonce": 2017642165, + "index": "ai", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "Epics/Stories", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-epics-test", + "type": "arrow", + "x": 760, + "y": 670, + "width": 0, + "height": 30, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "proc-epics", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-test-design", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 30 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 926542619, + "index": "aj", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "proc-test-design", + "type": "rectangle", + "x": 680, + "y": 700, + "width": 160, + "height": 80, + "angle": 0, + "strokeColor": "#e91e63", + "backgroundColor": "#f8bbd0", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-test-design-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-test-design-text" + }, + { + "type": "arrow", + "id": "arrow-epics-test" + }, + { + "type": "arrow", + "id": "arrow-test-validate" + } + ], + "locked": false, + "version": 2, + "versionNonce": 1644308501, + "index": "ak", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "proc-test-design-text", + "type": "text", + "x": 690, + "y": 715, + "width": 140, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-test-design-group" + ], + "fontSize": 14, + "fontFamily": 1, + "text": "Test Design\n<>", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-test-design", + "locked": false, + "version": 2, + "versionNonce": 1420021691, + "index": "al", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "Test Design\n<>", + "autoResize": true, + "lineHeight": 1.7857142857142858 + }, + { + "id": "arrow-test-validate", + "type": "arrow", + "x": 760, + "y": 780, + "width": 0, + "height": 30, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "proc-test-design", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-validate-arch", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 30 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 336485749, + "index": "am", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "proc-validate-arch", + "type": "rectangle", + "x": 680, + "y": 810, + "width": 160, + "height": 80, + "angle": 0, + "strokeColor": "#f4511e", + "backgroundColor": "#ffccbc", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-validate-arch-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-validate-arch-text" + }, + { + "type": "arrow", + "id": "arrow-test-validate" + }, + { + "type": "arrow", + "id": "arrow-validate-ready" + } + ], + "locked": false, + "version": 2, + "versionNonce": 1084760155, + "index": "an", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "proc-validate-arch-text", + "type": "text", + "x": 690, + "y": 825, + "width": 140, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-validate-arch-group" + ], + "fontSize": 14, + "fontFamily": 1, + "text": "Validate Arch\n<>", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-validate-arch", + "locked": false, + "version": 2, + "versionNonce": 363652821, + "index": "ao", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "Validate Arch\n<>", + "autoResize": true, + "lineHeight": 1.7857142857142858 + }, + { + "id": "arrow-validate-ready", + "type": "arrow", + "x": 760, + "y": 890, + "width": 0, + "height": 30, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "proc-validate-arch", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-impl-ready", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 30 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 353983739, + "index": "ap", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "proc-impl-ready", + "type": "rectangle", + "x": 680, + "y": 920, + "width": 160, + "height": 80, + "angle": 0, + "strokeColor": "#f4511e", + "backgroundColor": "#ffccbc", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-impl-ready-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-impl-ready-text" + }, + { + "type": "arrow", + "id": "arrow-validate-ready" + }, + { + "type": "arrow", + "id": "arrow-phase3-to-phase4" + } + ], + "locked": false, + "version": 2, + "versionNonce": 1769161781, + "index": "aq", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "proc-impl-ready-text", + "type": "text", + "x": 690, + "y": 935, + "width": 140, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-impl-ready-group" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "Implementation\nReadiness", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-impl-ready", + "locked": false, + "version": 2, + "versionNonce": 226100635, + "index": "ar", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "Implementation\nReadiness", + "autoResize": true, + "lineHeight": 1.5625 + }, + { + "id": "arrow-phase3-to-phase4", + "type": "arrow", + "x": 840, + "y": 960, + "width": 180, + "height": 0, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "proc-impl-ready", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-sprint-planning", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 180, + 0 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 591852949, + "index": "as", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "phase4-header", + "type": "text", + "x": 1020, + "y": 180, + "width": 200, + "height": 30, + "angle": 0, + "strokeColor": "#2e7d32", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 24, + "fontFamily": 1, + "text": "PHASE 4", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 2, + "versionNonce": 1358731835, + "index": "at", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "containerId": null, + "originalText": "PHASE 4", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "phase4-subtitle", + "type": "text", + "x": 1020, + "y": 210, + "width": 260, + "height": 20, + "angle": 0, + "strokeColor": "#666666", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 16, + "fontFamily": 1, + "text": "Implementation (Required)", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 2, + "versionNonce": 1046313717, + "index": "au", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "containerId": null, + "originalText": "Implementation (Required)", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "proc-sprint-planning", + "type": "rectangle", + "x": 1020, + "y": 920, + "width": 160, + "height": 80, + "angle": 0, + "strokeColor": "#1e88e5", + "backgroundColor": "#bbdefb", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-sprint-planning-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-sprint-planning-text" + }, + { + "type": "arrow", + "id": "arrow-phase3-to-phase4" + }, + { + "type": "arrow", + "id": "arrow-sprint-epic" + } + ], + "locked": false, + "version": 2, + "versionNonce": 2088999643, + "index": "av", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "proc-sprint-planning-text", + "type": "text", + "x": 1030, + "y": 948, + "width": 140, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-sprint-planning-group" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "Sprint Plan", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-sprint-planning", + "locked": false, + "version": 2, + "versionNonce": 859591765, + "index": "aw", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "Sprint Plan", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "label-epic-cycle", + "type": "text", + "x": 1020, + "y": 1030, + "width": 200, + "height": 25, + "angle": 0, + "strokeColor": "#6a1b9a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 20, + "fontFamily": 1, + "text": "โ†’ EPIC CYCLE", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 2, + "versionNonce": 1822525307, + "index": "ax", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "containerId": null, + "originalText": "โ†’ EPIC CYCLE", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-sprint-epic", + "type": "arrow", + "x": 1100, + "y": 1000, + "width": 0, + "height": 70, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "proc-sprint-planning", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-epic-context", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 70 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 1303970229, + "index": "ay", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "proc-epic-context", + "type": "rectangle", + "x": 1020, + "y": 1070, + "width": 160, + "height": 80, + "angle": 0, + "strokeColor": "#1e88e5", + "backgroundColor": "#bbdefb", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-epic-context-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-epic-context-text" + }, + { + "type": "arrow", + "id": "arrow-sprint-epic" + }, + { + "type": "arrow", + "id": "arrow-epic-validate-epic" + } + ], + "locked": false, + "version": 2, + "versionNonce": 1201201179, + "index": "az", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "proc-epic-context-text", + "type": "text", + "x": 1030, + "y": 1098, + "width": 140, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-epic-context-group" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "Epic Context", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-epic-context", + "locked": false, + "version": 2, + "versionNonce": 1123615509, + "index": "b00", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "Epic Context", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-epic-validate-epic", + "type": "arrow", + "x": 1100, + "y": 1150, + "width": 0, + "height": 30, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "proc-epic-context", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-validate-epic", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 30 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 1197221051, + "index": "b01", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "proc-validate-epic", + "type": "rectangle", + "x": 1020, + "y": 1180, + "width": 160, + "height": 80, + "angle": 0, + "strokeColor": "#1e88e5", + "backgroundColor": "#bbdefb", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-validate-epic-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-validate-epic-text" + }, + { + "type": "arrow", + "id": "arrow-epic-validate-epic" + }, + { + "type": "arrow", + "id": "arrow-validate-epic-story" + } + ], + "locked": false, + "version": 2, + "versionNonce": 124901493, + "index": "b02", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "proc-validate-epic-text", + "type": "text", + "x": 1030, + "y": 1195, + "width": 140, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-validate-epic-group" + ], + "fontSize": 14, + "fontFamily": 1, + "text": "Validate Epic\n<>", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-validate-epic", + "locked": false, + "version": 2, + "versionNonce": 1133368667, + "index": "b03", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "Validate Epic\n<>", + "autoResize": true, + "lineHeight": 1.7857142857142858 + }, + { + "id": "label-story-loop", + "type": "text", + "x": 1020, + "y": 1290, + "width": 200, + "height": 25, + "angle": 0, + "strokeColor": "#e65100", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 20, + "fontFamily": 1, + "text": "โ†’ STORY LOOP", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 2, + "versionNonce": 1692991957, + "index": "b04", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "containerId": null, + "originalText": "โ†’ STORY LOOP", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-validate-epic-story", + "type": "arrow", + "x": 1100, + "y": 1260, + "width": 0, + "height": 70, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "proc-validate-epic", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-create-story", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 70 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 2072015355, + "index": "b05", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "proc-create-story", + "type": "rectangle", + "x": 1020, + "y": 1330, + "width": 160, + "height": 80, + "angle": 0, + "strokeColor": "#1e88e5", + "backgroundColor": "#bbdefb", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-create-story-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-create-story-text" + }, + { + "type": "arrow", + "id": "arrow-validate-epic-story" + }, + { + "type": "arrow", + "id": "arrow-create-validate-story" + }, + { + "type": "arrow", + "id": "arrow-more-stories-yes" + } + ], + "locked": false, + "version": 2, + "versionNonce": 1349779253, + "index": "b06", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "proc-create-story-text", + "type": "text", + "x": 1030, + "y": 1358, + "width": 140, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-create-story-group" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "Create Story", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-create-story", + "locked": false, + "version": 2, + "versionNonce": 540441243, + "index": "b07", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "Create Story", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-create-validate-story", + "type": "arrow", + "x": 1100, + "y": 1410, + "width": 0, + "height": 30, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "proc-create-story", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-validate-story", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 30 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 7884949, + "index": "b08", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "proc-validate-story", + "type": "rectangle", + "x": 1020, + "y": 1440, + "width": 160, + "height": 80, + "angle": 0, + "strokeColor": "#1e88e5", + "backgroundColor": "#bbdefb", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-validate-story-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-validate-story-text" + }, + { + "type": "arrow", + "id": "arrow-create-validate-story" + }, + { + "type": "arrow", + "id": "arrow-validate-story-decision" + } + ], + "locked": false, + "version": 2, + "versionNonce": 509767483, + "index": "b09", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "proc-validate-story-text", + "type": "text", + "x": 1030, + "y": 1455, + "width": 140, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-validate-story-group" + ], + "fontSize": 14, + "fontFamily": 1, + "text": "Validate Story\n<>", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-validate-story", + "locked": false, + "version": 2, + "versionNonce": 1118533109, + "index": "b0A", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "Validate Story\n<>", + "autoResize": true, + "lineHeight": 1.7857142857142858 + }, + { + "id": "arrow-validate-story-decision", + "type": "arrow", + "x": 1100, + "y": 1520, + "width": 0, + "height": 30, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "proc-validate-story", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "decision-context-or-ready", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 30 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 677826523, + "index": "b0B", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "decision-context-or-ready", + "type": "diamond", + "x": 1010, + "y": 1550, + "width": 180, + "height": 120, + "angle": 0, + "strokeColor": "#f57c00", + "backgroundColor": "#fff3e0", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "decision-context-or-ready-group" + ], + "boundElements": [ + { + "type": "text", + "id": "decision-context-or-ready-text" + }, + { + "type": "arrow", + "id": "arrow-validate-story-decision" + }, + { + "type": "arrow", + "id": "arrow-context-path" + }, + { + "type": "arrow", + "id": "arrow-ready-path" + } + ], + "locked": false, + "version": 2, + "versionNonce": 303230805, + "index": "b0C", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "decision-context-or-ready-text", + "type": "text", + "x": 1025, + "y": 1585, + "width": 150, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "decision-context-or-ready-group" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "Context OR\nReady?", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "decision-context-or-ready", + "locked": false, + "version": 2, + "versionNonce": 5643387, + "index": "b0D", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "Context OR\nReady?", + "autoResize": true, + "lineHeight": 1.5625 + }, + { + "id": "arrow-context-path", + "type": "arrow", + "x": 1010, + "y": 1610, + "width": 70, + "height": 0, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "decision-context-or-ready", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-story-context", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + -70, + 0 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 1828994229, + "index": "b0E", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "label-context", + "type": "text", + "x": 951.14453125, + "y": 1580.75390625, + "width": 60, + "height": 20, + "angle": 0, + "strokeColor": "#2e7d32", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 16, + "fontFamily": 1, + "text": "Context", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 133, + "versionNonce": 619956571, + "index": "b0F", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522254711, + "link": null, + "containerId": null, + "originalText": "Context", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "proc-story-context", + "type": "rectangle", + "x": 760, + "y": 1570, + "width": 180, + "height": 80, + "angle": 0, + "strokeColor": "#1e88e5", + "backgroundColor": "#bbdefb", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-story-context-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-story-context-text" + }, + { + "type": "arrow", + "id": "arrow-context-path" + }, + { + "type": "arrow", + "id": "arrow-context-validate" + } + ], + "locked": false, + "version": 2, + "versionNonce": 1797578261, + "index": "b0G", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "proc-story-context-text", + "type": "text", + "x": 770, + "y": 1598, + "width": 160, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-story-context-group" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "Story Context", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-story-context", + "locked": false, + "version": 2, + "versionNonce": 1823439291, + "index": "b0H", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "Story Context", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-context-validate", + "type": "arrow", + "x": 850, + "y": 1650, + "width": 0, + "height": 30, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "proc-story-context", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-validate-context", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 30 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 325735285, + "index": "b0I", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "proc-validate-context", + "type": "rectangle", + "x": 760, + "y": 1680, + "width": 180, + "height": 80, + "angle": 0, + "strokeColor": "#1e88e5", + "backgroundColor": "#bbdefb", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-validate-context-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-validate-context-text" + }, + { + "type": "arrow", + "id": "arrow-context-validate" + }, + { + "type": "arrow", + "id": "arrow-validate-context-dev" + } + ], + "locked": false, + "version": 2, + "versionNonce": 1840155227, + "index": "b0J", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "proc-validate-context-text", + "type": "text", + "x": 770, + "y": 1695, + "width": 160, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-validate-context-group" + ], + "fontSize": 14, + "fontFamily": 1, + "text": "Validate Context\n<>", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-validate-context", + "locked": false, + "version": 2, + "versionNonce": 1914313941, + "index": "b0K", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "Validate Context\n<>", + "autoResize": true, + "lineHeight": 1.7857142857142858 + }, + { + "id": "arrow-validate-context-dev", + "type": "arrow", + "x": 940, + "y": 1720, + "width": 80, + "height": 0, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "proc-validate-context", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-dev-story", + "focus": -0.2, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 80, + 0 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 1774356219, + "index": "b0L", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "arrow-ready-path", + "type": "arrow", + "x": 1100, + "y": 1670, + "width": 0, + "height": 30, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "decision-context-or-ready", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-story-ready", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 30 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 1858714165, + "index": "b0M", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "label-ready", + "type": "text", + "x": 1110, + "y": 1680, + "width": 50, + "height": 20, + "angle": 0, + "strokeColor": "#2e7d32", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 16, + "fontFamily": 1, + "text": "Ready", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 2, + "versionNonce": 124645275, + "index": "b0N", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "containerId": null, + "originalText": "Ready", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "proc-story-ready", + "type": "rectangle", + "x": 1020, + "y": 1700, + "width": 160, + "height": 80, + "angle": 0, + "strokeColor": "#1e88e5", + "backgroundColor": "#bbdefb", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-story-ready-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-story-ready-text" + }, + { + "type": "arrow", + "id": "arrow-ready-path" + }, + { + "type": "arrow", + "id": "arrow-ready-dev" + } + ], + "locked": false, + "version": 2, + "versionNonce": 1650371477, + "index": "b0O", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "proc-story-ready-text", + "type": "text", + "x": 1030, + "y": 1728, + "width": 140, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-story-ready-group" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "Story Ready", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-story-ready", + "locked": false, + "version": 2, + "versionNonce": 2028160059, + "index": "b0P", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "Story Ready", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-ready-dev", + "type": "arrow", + "x": 1100, + "y": 1780, + "width": 0, + "height": 30, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "proc-story-ready", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-dev-story", + "focus": 0.2, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 30 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 1829662965, + "index": "b0Q", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "proc-dev-story", + "type": "rectangle", + "x": 1020, + "y": 1810, + "width": 160, + "height": 80, + "angle": 0, + "strokeColor": "#3f51b5", + "backgroundColor": "#c5cae9", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-dev-story-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-dev-story-text" + }, + { + "type": "arrow", + "id": "arrow-validate-context-dev" + }, + { + "type": "arrow", + "id": "arrow-ready-dev" + }, + { + "type": "arrow", + "id": "arrow-dev-review" + }, + { + "type": "arrow", + "id": "arrow-review-fail-loop" + } + ], + "locked": false, + "version": 2, + "versionNonce": 100992219, + "index": "b0R", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "proc-dev-story-text", + "type": "text", + "x": 1030, + "y": 1838, + "width": 140, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-dev-story-group" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "Develop Story", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-dev-story", + "locked": false, + "version": 2, + "versionNonce": 207522389, + "index": "b0S", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "Develop Story", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-dev-review", + "type": "arrow", + "x": 1100, + "y": 1890, + "width": 0, + "height": 30, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "proc-dev-story", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "decision-code-review", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 30 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 1449505147, + "index": "b0T", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "decision-code-review", + "type": "diamond", + "x": 1010, + "y": 1920, + "width": 180, + "height": 120, + "angle": 0, + "strokeColor": "#f57c00", + "backgroundColor": "#fff3e0", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "decision-code-review-group" + ], + "boundElements": [ + { + "type": "text", + "id": "decision-code-review-text" + }, + { + "type": "arrow", + "id": "arrow-dev-review" + }, + { + "type": "arrow", + "id": "arrow-review-pass" + }, + { + "type": "arrow", + "id": "arrow-review-fail" + } + ], + "locked": false, + "version": 2, + "versionNonce": 1898215349, + "index": "b0U", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "decision-code-review-text", + "type": "text", + "x": 1025, + "y": 1955, + "width": 150, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "decision-code-review-group" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "Code Review\nPass?", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "decision-code-review", + "locked": false, + "version": 2, + "versionNonce": 2068302363, + "index": "b0V", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "Code Review\nPass?", + "autoResize": true, + "lineHeight": 1.5625 + }, + { + "id": "arrow-review-fail", + "type": "arrow", + "x": 1010, + "y": 1980, + "width": 70, + "height": 170, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + -70, + 0 + ], + [ + -70, + -170 + ] + ], + "lastCommittedPoint": null, + "elbowed": true, + "version": 2, + "versionNonce": 361085205, + "index": "b0W", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "arrow-review-fail-loop", + "type": "arrow", + "x": 940, + "y": 1810, + "width": 80, + "height": 0, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": null, + "endBinding": { + "elementId": "proc-dev-story", + "focus": -0.5, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 80, + 0 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 966643387, + "index": "b0X", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "label-fail", + "type": "text", + "x": 880, + "y": 1960, + "width": 35, + "height": 20, + "angle": 0, + "strokeColor": "#d32f2f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 16, + "fontFamily": 1, + "text": "Fail", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 2, + "versionNonce": 318230133, + "index": "b0Y", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "containerId": null, + "originalText": "Fail", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-review-pass", + "type": "arrow", + "x": 1100, + "y": 2040, + "width": 0, + "height": 30, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "decision-code-review", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-story-done", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 30 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 336215899, + "index": "b0Z", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "label-pass", + "type": "text", + "x": 1110, + "y": 2050, + "width": 40, + "height": 20, + "angle": 0, + "strokeColor": "#2e7d32", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 16, + "fontFamily": 1, + "text": "Pass", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 2, + "versionNonce": 943732693, + "index": "b0a", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "containerId": null, + "originalText": "Pass", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "proc-story-done", + "type": "rectangle", + "x": 1020, + "y": 2070, + "width": 160, + "height": 80, + "angle": 0, + "strokeColor": "#3f51b5", + "backgroundColor": "#c5cae9", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-story-done-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-story-done-text" + }, + { + "type": "arrow", + "id": "arrow-review-pass" + }, + { + "type": "arrow", + "id": "arrow-done-more-stories" + } + ], + "locked": false, + "version": 2, + "versionNonce": 350198779, + "index": "b0b", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "proc-story-done-text", + "type": "text", + "x": 1030, + "y": 2098, + "width": 140, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-story-done-group" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "Story Done", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-story-done", + "locked": false, + "version": 2, + "versionNonce": 1601467701, + "index": "b0c", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "Story Done", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-done-more-stories", + "type": "arrow", + "x": 1100, + "y": 2150, + "width": 0, + "height": 30, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "proc-story-done", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "decision-more-stories", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 30 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 1478517915, + "index": "b0d", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "decision-more-stories", + "type": "diamond", + "x": 1010, + "y": 2180, + "width": 180, + "height": 120, + "angle": 0, + "strokeColor": "#f57c00", + "backgroundColor": "#fff3e0", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "decision-more-stories-group" + ], + "boundElements": [ + { + "type": "text", + "id": "decision-more-stories-text" + }, + { + "type": "arrow", + "id": "arrow-done-more-stories" + }, + { + "type": "arrow", + "id": "arrow-more-stories-yes" + }, + { + "type": "arrow", + "id": "arrow-more-stories-no" + } + ], + "locked": false, + "version": 2, + "versionNonce": 66717333, + "index": "b0e", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "decision-more-stories-text", + "type": "text", + "x": 1025, + "y": 2215, + "width": 150, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "decision-more-stories-group" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "More Stories\nin Epic?", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "decision-more-stories", + "locked": false, + "version": 2, + "versionNonce": 1434392891, + "index": "b0f", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "More Stories\nin Epic?", + "autoResize": true, + "lineHeight": 1.5625 + }, + { + "id": "arrow-more-stories-yes", + "type": "arrow", + "x": 1005, + "y": 2239.9, + "width": 280.5703125, + "height": 879.8335937500001, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": null, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + -271.71875, + 0 + ], + [ + -271.71875, + -879.8335937500001 + ], + [ + 8.8515625, + -879.8335937500001 + ] + ], + "lastCommittedPoint": null, + "elbowed": true, + "version": 266, + "versionNonce": 2028204117, + "index": "b0g", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522251385, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow", + "fixedSegments": [ + { + "index": 2, + "start": [ + -271.71875, + 0 + ], + "end": [ + -271.71875, + -879.8335937500001 + ] + } + ], + "startIsSpecial": false, + "endIsSpecial": false + }, + { + "id": "label-more-stories-yes", + "type": "text", + "x": 820, + "y": 2220, + "width": 30, + "height": 20, + "angle": 0, + "strokeColor": "#2e7d32", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 16, + "fontFamily": 1, + "text": "Yes", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 2, + "versionNonce": 1784560091, + "index": "b0h", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "containerId": null, + "originalText": "Yes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-more-stories-no", + "type": "arrow", + "x": 1100, + "y": 2300, + "width": 0, + "height": 30, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "decision-more-stories", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "proc-retrospective", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 30 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 488580437, + "index": "b0i", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "label-more-stories-no", + "type": "text", + "x": 1110, + "y": 2310, + "width": 25, + "height": 20, + "angle": 0, + "strokeColor": "#d32f2f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 16, + "fontFamily": 1, + "text": "No", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 2, + "versionNonce": 600852091, + "index": "b0j", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "containerId": null, + "originalText": "No", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "proc-retrospective", + "type": "rectangle", + "x": 1020, + "y": 2330, + "width": 160, + "height": 80, + "angle": 0, + "strokeColor": "#1e88e5", + "backgroundColor": "#bbdefb", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "roundness": { + "type": 3, + "value": 8 + }, + "groupIds": [ + "proc-retrospective-group" + ], + "boundElements": [ + { + "type": "text", + "id": "proc-retrospective-text" + }, + { + "type": "arrow", + "id": "arrow-more-stories-no" + }, + { + "type": "arrow", + "id": "arrow-retro-more-epics" + } + ], + "locked": false, + "version": 2, + "versionNonce": 1964618421, + "index": "b0k", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "proc-retrospective-text", + "type": "text", + "x": 1030, + "y": 2358, + "width": 140, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "proc-retrospective-group" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "Retrospective", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "proc-retrospective", + "locked": false, + "version": 2, + "versionNonce": 1217904411, + "index": "b0l", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "Retrospective", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-retro-more-epics", + "type": "arrow", + "x": 1100, + "y": 2410, + "width": 0, + "height": 30, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "proc-retrospective", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "decision-more-epics", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 30 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 2098959381, + "index": "b0m", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "decision-more-epics", + "type": "diamond", + "x": 1010, + "y": 2440, + "width": 180, + "height": 120, + "angle": 0, + "strokeColor": "#f57c00", + "backgroundColor": "#fff3e0", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "decision-more-epics-group" + ], + "boundElements": [ + { + "type": "text", + "id": "decision-more-epics-text" + }, + { + "type": "arrow", + "id": "arrow-retro-more-epics" + }, + { + "type": "arrow", + "id": "arrow-more-epics-yes" + }, + { + "type": "arrow", + "id": "arrow-more-epics-no" + } + ], + "locked": false, + "version": 2, + "versionNonce": 589767611, + "index": "b0n", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "decision-more-epics-text", + "type": "text", + "x": 1025, + "y": 2475, + "width": 150, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "decision-more-epics-group" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "More Epics?", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "decision-more-epics", + "locked": false, + "version": 2, + "versionNonce": 1629112693, + "index": "b0o", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "More Epics?", + "autoResize": true, + "lineHeight": 3.125 + }, + { + "id": "arrow-more-epics-yes", + "type": "arrow", + "x": 1005, + "y": 2499.9, + "width": 335.74609375, + "height": 1390, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "decision-more-epics", + "fixedPoint": [ + -0.027777777777777776, + 0.4991666666666674 + ], + "focus": 0, + "gap": 0 + }, + "endBinding": null, + "points": [ + [ + 0, + 0 + ], + [ + -325.74609375, + 0 + ], + [ + -325.74609375, + -1390 + ], + [ + 10, + -1390 + ] + ], + "lastCommittedPoint": null, + "elbowed": true, + "version": 818, + "versionNonce": 1779029653, + "index": "b0p", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522236433, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow", + "fixedSegments": [ + { + "index": 2, + "start": [ + -326.6484375, + -723.95 + ], + "end": [ + -326.6484375, + -1390 + ] + } + ], + "startIsSpecial": false, + "endIsSpecial": false + }, + { + "id": "label-more-epics-yes", + "type": "text", + "x": 712.078125, + "y": 2478.50390625, + "width": 30, + "height": 20, + "angle": 0, + "strokeColor": "#2e7d32", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 16, + "fontFamily": 1, + "text": "Yes", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 56, + "versionNonce": 1238151355, + "index": "b0q", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522225296, + "link": null, + "containerId": null, + "originalText": "Yes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-more-epics-no", + "type": "arrow", + "x": 1100, + "y": 2560, + "width": 0, + "height": 50, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "startBinding": { + "elementId": "decision-more-epics", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "end-ellipse", + "focus": 0, + "gap": 1 + }, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 50 + ] + ], + "lastCommittedPoint": null, + "version": 2, + "versionNonce": 836219131, + "index": "b0r", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "locked": false, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "label-more-epics-no", + "type": "text", + "x": 1110, + "y": 2570, + "width": 25, + "height": 20, + "angle": 0, + "strokeColor": "#d32f2f", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [], + "fontSize": 16, + "fontFamily": 1, + "text": "No", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 2, + "versionNonce": 1031024693, + "index": "b0s", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "containerId": null, + "originalText": "No", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "end-ellipse", + "type": "ellipse", + "x": 1040, + "y": 2610, + "width": 120, + "height": 60, + "angle": 0, + "strokeColor": "#1976d2", + "backgroundColor": "#e3f2fd", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "end-group" + ], + "boundElements": [ + { + "type": "text", + "id": "end-text" + }, + { + "type": "arrow", + "id": "arrow-more-epics-no" + } + ], + "locked": false, + "version": 2, + "versionNonce": 659413403, + "index": "b0t", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "updated": 1763522171080, + "link": null + }, + { + "id": "end-text", + "type": "text", + "x": 1077, + "y": 2628, + "width": 46, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "end-group" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "End", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "end-ellipse", + "locked": false, + "version": 2, + "versionNonce": 541745557, + "index": "b0u", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522171080, + "link": null, + "originalText": "End", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "legend-box", + "type": "rectangle", + "x": -383.37044904818777, + "y": 130.62309916565027, + "width": 280, + "height": 240, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "FOWhENd6l0IWkDrktqohE" + ], + "roundness": { + "type": 3, + "value": 8 + }, + "locked": false, + "version": 240, + "versionNonce": 899126491, + "index": "b0v", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "boundElements": [], + "updated": 1763522286451, + "link": null + }, + { + "id": "legend-title", + "type": "text", + "x": -303.37044904818777, + "y": 140.62309916565027, + "width": 120, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "FOWhENd6l0IWkDrktqohE" + ], + "fontSize": 20, + "fontFamily": 1, + "text": "Agent Legend", + "textAlign": "center", + "verticalAlign": "top", + "locked": false, + "version": 187, + "versionNonce": 354828667, + "index": "b0w", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522286451, + "link": null, + "containerId": null, + "originalText": "Agent Legend", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "legend-analyst", + "type": "rectangle", + "x": -373.37044904818777, + "y": 180.62309916565027, + "width": 20, + "height": 20, + "angle": 0, + "strokeColor": "#00acc1", + "backgroundColor": "#b2ebf2", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "FOWhENd6l0IWkDrktqohE" + ], + "locked": false, + "version": 187, + "versionNonce": 863394331, + "index": "b0x", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522286451, + "link": null + }, + { + "id": "legend-analyst-text", + "type": "text", + "x": -343.37044904818777, + "y": 182.62309916565027, + "width": 70, + "height": 20, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "FOWhENd6l0IWkDrktqohE" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "Analyst", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 187, + "versionNonce": 226123451, + "index": "b0y", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522286451, + "link": null, + "containerId": null, + "originalText": "Analyst", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "legend-pm", + "type": "rectangle", + "x": -373.37044904818777, + "y": 210.62309916565027, + "width": 20, + "height": 20, + "angle": 0, + "strokeColor": "#43a047", + "backgroundColor": "#c8e6c9", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "FOWhENd6l0IWkDrktqohE" + ], + "locked": false, + "version": 187, + "versionNonce": 1574227803, + "index": "b0z", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522286451, + "link": null + }, + { + "id": "legend-pm-text", + "type": "text", + "x": -343.37044904818777, + "y": 212.62309916565027, + "width": 30, + "height": 20, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "FOWhENd6l0IWkDrktqohE" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "PM", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 187, + "versionNonce": 1725443067, + "index": "b10", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522286451, + "link": null, + "containerId": null, + "originalText": "PM", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "legend-ux", + "type": "rectangle", + "x": -373.37044904818777, + "y": 240.62309916565027, + "width": 20, + "height": 20, + "angle": 0, + "strokeColor": "#8e24aa", + "backgroundColor": "#e1bee7", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "FOWhENd6l0IWkDrktqohE" + ], + "locked": false, + "version": 187, + "versionNonce": 2089219227, + "index": "b11", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522286451, + "link": null + }, + { + "id": "legend-ux-text", + "type": "text", + "x": -343.37044904818777, + "y": 242.62309916565027, + "width": 110, + "height": 20, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "FOWhENd6l0IWkDrktqohE" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "UX Designer", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 187, + "versionNonce": 1318299963, + "index": "b12", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522286451, + "link": null, + "containerId": null, + "originalText": "UX Designer", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "legend-architect", + "type": "rectangle", + "x": -373.37044904818777, + "y": 270.6230991656503, + "width": 20, + "height": 20, + "angle": 0, + "strokeColor": "#f4511e", + "backgroundColor": "#ffccbc", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "FOWhENd6l0IWkDrktqohE" + ], + "locked": false, + "version": 187, + "versionNonce": 1918945755, + "index": "b13", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522286451, + "link": null + }, + { + "id": "legend-architect-text", + "type": "text", + "x": -343.37044904818777, + "y": 272.6230991656503, + "width": 80, + "height": 20, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "FOWhENd6l0IWkDrktqohE" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "Architect", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 187, + "versionNonce": 755029627, + "index": "b14", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522286451, + "link": null, + "containerId": null, + "originalText": "Architect", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "legend-tea", + "type": "rectangle", + "x": -373.37044904818777, + "y": 300.6230991656503, + "width": 20, + "height": 20, + "angle": 0, + "strokeColor": "#e91e63", + "backgroundColor": "#f8bbd0", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "FOWhENd6l0IWkDrktqohE" + ], + "locked": false, + "version": 187, + "versionNonce": 2100711195, + "index": "b15", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522286451, + "link": null + }, + { + "id": "legend-tea-text", + "type": "text", + "x": -343.37044904818777, + "y": 302.6230991656503, + "width": 40, + "height": 20, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "FOWhENd6l0IWkDrktqohE" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "TEA", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 187, + "versionNonce": 1702081467, + "index": "b16", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522286451, + "link": null, + "containerId": null, + "originalText": "TEA", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "legend-sm", + "type": "rectangle", + "x": -373.37044904818777, + "y": 330.6230991656503, + "width": 20, + "height": 20, + "angle": 0, + "strokeColor": "#1e88e5", + "backgroundColor": "#bbdefb", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "FOWhENd6l0IWkDrktqohE" + ], + "locked": false, + "version": 187, + "versionNonce": 1977320539, + "index": "b17", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522286451, + "link": null + }, + { + "id": "legend-sm-text", + "type": "text", + "x": -343.37044904818777, + "y": 332.6230991656503, + "width": 30, + "height": 20, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "FOWhENd6l0IWkDrktqohE" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "SM", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 187, + "versionNonce": 373309691, + "index": "b18", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522286451, + "link": null, + "containerId": null, + "originalText": "SM", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "legend-dev", + "type": "rectangle", + "x": -223.37044904818777, + "y": 180.62309916565027, + "width": 20, + "height": 20, + "angle": 0, + "strokeColor": "#3f51b5", + "backgroundColor": "#c5cae9", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "FOWhENd6l0IWkDrktqohE" + ], + "locked": false, + "version": 187, + "versionNonce": 270821787, + "index": "b19", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522286451, + "link": null + }, + { + "id": "legend-dev-text", + "type": "text", + "x": -193.37044904818777, + "y": 182.62309916565027, + "width": 40, + "height": 20, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "FOWhENd6l0IWkDrktqohE" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "DEV", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 187, + "versionNonce": 1488617019, + "index": "b1A", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522286451, + "link": null, + "containerId": null, + "originalText": "DEV", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "legend-decision", + "type": "diamond", + "x": -223.37044904818777, + "y": 210.62309916565027, + "width": 30, + "height": 30, + "angle": 0, + "strokeColor": "#f57c00", + "backgroundColor": "#fff3e0", + "fillStyle": "solid", + "strokeWidth": 1, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "FOWhENd6l0IWkDrktqohE" + ], + "locked": false, + "version": 187, + "versionNonce": 451215067, + "index": "b1B", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522286451, + "link": null + }, + { + "id": "legend-decision-text", + "type": "text", + "x": -183.37044904818777, + "y": 217.62309916565027, + "width": 70, + "height": 20, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 0, + "opacity": 100, + "groupIds": [ + "FOWhENd6l0IWkDrktqohE" + ], + "fontSize": 16, + "fontFamily": 1, + "text": "Decision", + "textAlign": "left", + "verticalAlign": "top", + "locked": false, + "version": 187, + "versionNonce": 20343675, + "index": "b1C", + "isDeleted": false, + "strokeStyle": "solid", + "seed": 1, + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1763522286451, + "link": null, + "containerId": null, + "originalText": "Decision", + "autoResize": true, + "lineHeight": 1.25 + } + ], + "appState": { + "gridSize": 20, + "gridStep": 5, + "gridModeEnabled": false, + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} \ No newline at end of file diff --git a/src/modules/bmm/docs/images/workflow-method-greenfield.svg b/src/modules/bmm/docs/images/workflow-method-greenfield.svg new file mode 100644 index 00000000..7d2691fe --- /dev/null +++ b/src/modules/bmm/docs/images/workflow-method-greenfield.svg @@ -0,0 +1,2 @@ +BMad Method Workflow - Standard GreenfieldStartPHASE 1Discovery(Optional)IncludeDiscovery?YesBrainstorm<<optional>>Research<<optional>>Product Brief<<optional>>NoPHASE 2Planning (Required)PRDValidate PRD<<optional>>Has UI?YesCreate UXNoPHASE 3Solutioning (Required)ArchitectureEpics/StoriesTest Design<<recommended>>Validate Arch<<optional>>ImplementationReadinessPHASE 4Implementation (Required)Sprint Planโ†’ EPIC CYCLEEpic ContextValidate Epic<<optional>>โ†’ STORY LOOPCreate StoryValidate Story<<optional>>Context ORReady?ContextStory ContextValidate Context<<optional>>ReadyStory ReadyDevelop StoryCode ReviewPass?FailPassStory DoneMore Storiesin Epic?YesNoRetrospectiveMore Epics?YesNoEndAgent LegendAnalystPMUX DesignerArchitectTEASMDEVDecision \ No newline at end of file diff --git a/src/modules/bmm/docs/quick-start.md b/src/modules/bmm/docs/quick-start.md index 017713c3..4442045b 100644 --- a/src/modules/bmm/docs/quick-start.md +++ b/src/modules/bmm/docs/quick-start.md @@ -22,6 +22,12 @@ BMad Method (BMM) helps you build software through guided workflows with special 3. **Phase 3: Solutioning** (Track-dependent) - Design the architecture for BMad Method and Enterprise tracks 4. **Phase 4: Implementation** (Required) - Build your software Epic by Epic, Story by Story +### Complete Workflow Visualization + +![BMad Method Workflow - Standard Greenfield](./images/workflow-method-greenfield.svg) + +_Complete visual flowchart showing all phases, workflows, agents (color-coded), and decision points for the BMad Method standard greenfield track. Each box is color-coded by the agent responsible for that workflow._ + ## Installation ```bash diff --git a/src/modules/bmm/docs/scale-adaptive-system.md b/src/modules/bmm/docs/scale-adaptive-system.md index 90d3c522..becbab75 100644 --- a/src/modules/bmm/docs/scale-adaptive-system.md +++ b/src/modules/bmm/docs/scale-adaptive-system.md @@ -169,6 +169,12 @@ Tech-Spec โ†’ Implement PRD โ†’ (Optional UX) โ†’ Architecture โ†’ Create Epics and Stories โ†’ Implementation Readiness Check โ†’ Implement ``` +**Complete Workflow Visualization**: + +![BMad Method Workflow - Standard Greenfield](./images/workflow-method-greenfield.svg) + +_Detailed flowchart showing all phases, workflows, agents (color-coded), and decision points for the BMad Method track. Each colored box represents a different agent role._ + **Use For**: **Greenfield**: diff --git a/src/modules/bmm/docs/workflows-implementation.md b/src/modules/bmm/docs/workflows-implementation.md index 5282b458..aeff9cb1 100644 --- a/src/modules/bmm/docs/workflows-implementation.md +++ b/src/modules/bmm/docs/workflows-implementation.md @@ -10,6 +10,16 @@ Phase 4 (Implementation) workflows manage the iterative sprint-based development --- +## Complete Workflow Context + +Phase 4 is the final phase of the BMad Method workflow. To see how implementation fits into the complete methodology: + +![BMad Method Workflow - Standard Greenfield](./images/workflow-method-greenfield.svg) + +_Complete workflow showing Phases 1-4. Phase 4 (Implementation) is the rightmost column, showing the iterative epic and story cycles detailed below._ + +--- + ## Phase 4 Workflow Lifecycle ```mermaid diff --git a/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml b/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml index a80370d8..b6ad6e47 100644 --- a/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +++ b/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml @@ -66,13 +66,13 @@ web_bundle: - "{bmad_folder}/bmm/workflows/2-plan-workflows/prd/checklist.md" # Child workflow and its files - - "{bmad_folder}/bmm/workflows/2-plan-workflows/create-epics-and-stories/workflow.yaml" - - "{bmad_folder}/bmm/workflows/2-plan-workflows/create-epics-and-stories/instructions.md" - - "{bmad_folder}/bmm/workflows/2-plan-workflows/create-epics-and-stories/epics-template.md" + - "{bmad_folder}/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.yaml" + - "{bmad_folder}/bmm/workflows/3-solutioning/create-epics-and-stories/instructions.md" + - "{bmad_folder}/bmm/workflows/3-solutioning/create-epics-and-stories/epics-template.md" # Task dependencies (referenced in instructions.md) - "{bmad_folder}/core/tasks/workflow.xml" - "{bmad_folder}/core/tasks/advanced-elicitation.xml" - "{bmad_folder}/core/tasks/advanced-elicitation-methods.csv" child_workflows: - - create-epics-and-stories: "{bmad_folder}/bmm/workflows/2-plan-workflows/create-epics-and-stories/workflow.yaml" + - create-epics-and-stories: "{bmad_folder}/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.yaml" diff --git a/src/modules/bmm/workflows/2-plan-workflows/create-epics-and-stories/epics-template.md b/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/epics-template.md similarity index 100% rename from src/modules/bmm/workflows/2-plan-workflows/create-epics-and-stories/epics-template.md rename to src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/epics-template.md diff --git a/src/modules/bmm/workflows/2-plan-workflows/create-epics-and-stories/instructions.md b/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/instructions.md similarity index 100% rename from src/modules/bmm/workflows/2-plan-workflows/create-epics-and-stories/instructions.md rename to src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/instructions.md diff --git a/src/modules/bmm/workflows/2-plan-workflows/create-epics-and-stories/workflow.yaml b/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.yaml similarity index 83% rename from src/modules/bmm/workflows/2-plan-workflows/create-epics-and-stories/workflow.yaml rename to src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.yaml index 06c38e7c..fc777cfb 100644 --- a/src/modules/bmm/workflows/2-plan-workflows/create-epics-and-stories/workflow.yaml +++ b/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.yaml @@ -43,7 +43,7 @@ input_file_patterns: load_strategy: "FULL_LOAD" # Module path and component files -installed_path: "{project-root}/{bmad_folder}/bmm/workflows/2-plan-workflows/create-epics-and-stories" +installed_path: "{project-root}/{bmad_folder}/bmm/workflows/3-solutioning/create-epics-and-stories" instructions: "{installed_path}/instructions.md" template: "{installed_path}/epics-template.md" @@ -56,8 +56,8 @@ web_bundle: name: "create-epics-and-stories" description: "Transform PRD requirements into bite-sized stories organized in epics for 200k context dev agents" author: "BMad" - instructions: "{bmad_folder}/bmm/workflows/2-plan-workflows/create-epics-and-stories/instructions.md" - template: "{bmad_folder}/bmm/workflows/2-plan-workflows/create-epics-and-stories/epics-template.md" + instructions: "{bmad_folder}/bmm/workflows/3-solutioning/create-epics-and-stories/instructions.md" + template: "{bmad_folder}/bmm/workflows/3-solutioning/create-epics-and-stories/epics-template.md" web_bundle_files: - - "{bmad_folder}/bmm/workflows/2-plan-workflows/create-epics-and-stories/instructions.md" - - "{bmad_folder}/bmm/workflows/2-plan-workflows/create-epics-and-stories/epics-template.md" + - "{bmad_folder}/bmm/workflows/3-solutioning/create-epics-and-stories/instructions.md" + - "{bmad_folder}/bmm/workflows/3-solutioning/create-epics-and-stories/epics-template.md" diff --git a/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml b/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml index 9e470029..7cbc2657 100644 --- a/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +++ b/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml @@ -9,7 +9,7 @@ output_folder: "{config_source}:output_folder" user_name: "{config_source}:user_name" communication_language: "{config_source}:communication_language" document_output_language: "{config_source}:document_output_language" -story_path: "{config_source}:sprint_artifacts/stories" +story_path: "{config_source}:sprint_artifacts" date: system-generated sprint_artifacts: "{config_source}:sprint_artifacts" sprint_status: "{sprint_artifacts}/sprint-status.yaml || {output_folder}/sprint-status.yaml" diff --git a/src/modules/bmm/workflows/frame-expert/_shared/excalidraw-library.json b/src/modules/bmm/workflows/diagrams/_shared/excalidraw-library.json similarity index 100% rename from src/modules/bmm/workflows/frame-expert/_shared/excalidraw-library.json rename to src/modules/bmm/workflows/diagrams/_shared/excalidraw-library.json diff --git a/src/modules/bmm/workflows/frame-expert/_shared/excalidraw-templates.yaml b/src/modules/bmm/workflows/diagrams/_shared/excalidraw-templates.yaml similarity index 100% rename from src/modules/bmm/workflows/frame-expert/_shared/excalidraw-templates.yaml rename to src/modules/bmm/workflows/diagrams/_shared/excalidraw-templates.yaml diff --git a/src/modules/bmm/workflows/frame-expert/create-dataflow/checklist.md b/src/modules/bmm/workflows/diagrams/create-dataflow/checklist.md similarity index 100% rename from src/modules/bmm/workflows/frame-expert/create-dataflow/checklist.md rename to src/modules/bmm/workflows/diagrams/create-dataflow/checklist.md diff --git a/src/modules/bmm/workflows/frame-expert/create-dataflow/instructions.md b/src/modules/bmm/workflows/diagrams/create-dataflow/instructions.md similarity index 91% rename from src/modules/bmm/workflows/frame-expert/create-dataflow/instructions.md rename to src/modules/bmm/workflows/diagrams/create-dataflow/instructions.md index 98e044ac..e4a3afb8 100644 --- a/src/modules/bmm/workflows/frame-expert/create-dataflow/instructions.md +++ b/src/modules/bmm/workflows/diagrams/create-dataflow/instructions.md @@ -8,7 +8,7 @@ - Review user's request and extract: DFD level, processes, data stores, external entities, save location + Review user's request and extract: DFD level, processes, data stores, external entities Skip to Step 4 @@ -20,14 +20,13 @@ 3. Level 2 DFD - Detailed sub-processes 4. Custom - Specify your requirements - WAIT for selection, store in {{dfd_level}} + WAIT for selection - Ask process count - Ask data store count - Ask external entity count - Ask save location + Ask: "Describe the processes, data stores, and external entities in your system" + WAIT for user description + Summarize what will be included and confirm with user @@ -106,12 +105,12 @@ Verify DFD rules compliance Strip unused elements and elements with isDeleted: true - Save to {{save_location}} + Save to {{default_output_file}} NEVER delete the file if validation fails - always fix syntax errors - Run: node -e "JSON.parse(require('fs').readFileSync('{{save_location}}', 'utf8')); console.log('โœ“ Valid JSON')" + Run: node -e "JSON.parse(require('fs').readFileSync('{{default_output_file}}', 'utf8')); console.log('โœ“ Valid JSON')" Read the error message carefully - it shows the syntax error and position Open the file and navigate to the error location diff --git a/src/modules/bmm/workflows/diagrams/create-dataflow/workflow.yaml b/src/modules/bmm/workflows/diagrams/create-dataflow/workflow.yaml new file mode 100644 index 00000000..2532c408 --- /dev/null +++ b/src/modules/bmm/workflows/diagrams/create-dataflow/workflow.yaml @@ -0,0 +1,27 @@ +name: create-excalidraw-dataflow +description: "Create data flow diagrams (DFD) in Excalidraw format" +author: "BMad" + +# Config values +config_source: "{project-root}/{bmad_folder}/bmm/config.yaml" +output_folder: "{config_source}:output_folder" + +# Workflow components +installed_path: "{project-root}/{bmad_folder}/bmm/workflows/diagrams/create-dataflow" +shared_path: "{project-root}/{bmad_folder}/bmm/workflows/diagrams/_shared" +instructions: "{installed_path}/instructions.md" +validation: "{installed_path}/checklist.md" + +# Core Excalidraw resources (universal knowledge) +helpers: "{project-root}/{bmad_folder}/core/resources/excalidraw/excalidraw-helpers.md" +json_validation: "{project-root}/{bmad_folder}/core/resources/excalidraw/validate-json-instructions.md" + +# Domain-specific resources (technical diagrams) +templates: "{shared_path}/excalidraw-templates.yaml" +library: "{shared_path}/excalidraw-library.json" + +# Output file (respects user's configured output_folder) +default_output_file: "{output_folder}/diagrams/dataflow-{timestamp}.excalidraw" + +standalone: true +web_bundle: false diff --git a/src/modules/bmm/workflows/frame-expert/create-diagram/checklist.md b/src/modules/bmm/workflows/diagrams/create-diagram/checklist.md similarity index 100% rename from src/modules/bmm/workflows/frame-expert/create-diagram/checklist.md rename to src/modules/bmm/workflows/diagrams/create-diagram/checklist.md diff --git a/src/modules/bmm/workflows/frame-expert/create-diagram/instructions.md b/src/modules/bmm/workflows/diagrams/create-diagram/instructions.md similarity index 87% rename from src/modules/bmm/workflows/frame-expert/create-diagram/instructions.md rename to src/modules/bmm/workflows/diagrams/create-diagram/instructions.md index 754831e4..e22a55a8 100644 --- a/src/modules/bmm/workflows/frame-expert/create-diagram/instructions.md +++ b/src/modules/bmm/workflows/diagrams/create-diagram/instructions.md @@ -8,7 +8,7 @@ - Review user's request and extract: diagram type, components/entities, relationships, notation preferences, save location + Review user's request and extract: diagram type, components/entities, relationships, notation preferences Skip to Step 5 Only ask about missing info in Steps 1-2 @@ -24,15 +24,14 @@ 6. Network Diagram 7. Other - WAIT for selection, store in {{diagram_type}} + WAIT for selection - Ask component count (Small/Medium/Large/Very Large) - Ask relationship types (Simple/Hierarchical/Many-to-many/Mixed) - Ask notation standard (Standard/Simplified/Strict UML-ERD/Company specific) - Ask save location (Default/Custom/Architecture folder/Specific folder) - Store all responses in variables + Ask: "Describe the components/entities and their relationships" + Ask: "What notation standard? (Standard/Simplified/Strict UML-ERD)" + WAIT for user input + Summarize what will be included and confirm with user @@ -117,12 +116,12 @@ Strip unused elements and elements with isDeleted: true - Save to {{save_location}} + Save to {{default_output_file}} NEVER delete the file if validation fails - always fix syntax errors - Run: node -e "JSON.parse(require('fs').readFileSync('{{save_location}}', 'utf8')); console.log('โœ“ Valid JSON')" + Run: node -e "JSON.parse(require('fs').readFileSync('{{default_output_file}}', 'utf8')); console.log('โœ“ Valid JSON')" Read the error message carefully - it shows the syntax error and position Open the file and navigate to the error location @@ -131,7 +130,7 @@ Re-run validation with the same command Repeat until validation passes - Once validation passes, confirm: "Diagram created at {{save_location}}. Open to view?" + Once validation passes, confirm: "Diagram created at {{default_output_file}}. Open to view?" diff --git a/src/modules/bmm/workflows/diagrams/create-diagram/workflow.yaml b/src/modules/bmm/workflows/diagrams/create-diagram/workflow.yaml new file mode 100644 index 00000000..8013d85d --- /dev/null +++ b/src/modules/bmm/workflows/diagrams/create-diagram/workflow.yaml @@ -0,0 +1,27 @@ +name: create-excalidraw-diagram +description: "Create system architecture diagrams, ERDs, UML diagrams, or general technical diagrams in Excalidraw format" +author: "BMad" + +# Config values +config_source: "{project-root}/{bmad_folder}/bmm/config.yaml" +output_folder: "{config_source}:output_folder" + +# Workflow components +installed_path: "{project-root}/{bmad_folder}/bmm/workflows/diagrams/create-diagram" +shared_path: "{project-root}/{bmad_folder}/bmm/workflows/diagrams/_shared" +instructions: "{installed_path}/instructions.md" +validation: "{installed_path}/checklist.md" + +# Core Excalidraw resources (universal knowledge) +helpers: "{project-root}/{bmad_folder}/core/resources/excalidraw/excalidraw-helpers.md" +json_validation: "{project-root}/{bmad_folder}/core/resources/excalidraw/validate-json-instructions.md" + +# Domain-specific resources (technical diagrams) +templates: "{shared_path}/excalidraw-templates.yaml" +library: "{shared_path}/excalidraw-library.json" + +# Output file (respects user's configured output_folder) +default_output_file: "{output_folder}/diagrams/diagram-{timestamp}.excalidraw" + +standalone: true +web_bundle: false diff --git a/src/modules/bmm/workflows/frame-expert/create-flowchart/checklist.md b/src/modules/bmm/workflows/diagrams/create-flowchart/checklist.md similarity index 100% rename from src/modules/bmm/workflows/frame-expert/create-flowchart/checklist.md rename to src/modules/bmm/workflows/diagrams/create-flowchart/checklist.md diff --git a/src/modules/bmm/workflows/frame-expert/create-flowchart/instructions.md b/src/modules/bmm/workflows/diagrams/create-flowchart/instructions.md similarity index 97% rename from src/modules/bmm/workflows/frame-expert/create-flowchart/instructions.md rename to src/modules/bmm/workflows/diagrams/create-flowchart/instructions.md index 440bced3..9cae5bdc 100644 --- a/src/modules/bmm/workflows/frame-expert/create-flowchart/instructions.md +++ b/src/modules/bmm/workflows/diagrams/create-flowchart/instructions.md @@ -38,7 +38,6 @@ 5. Other - Describe your specific flowchart needs WAIT for user selection (1-5) - Store selection in {{flowchart_type}} Ask Question 2: "How many main steps are in this flow?" Present numbered options: @@ -72,7 +71,7 @@ Ask for specific path WAIT for user input - Store final path in {{save_location}} + Store final path in {{default_output_file}} @@ -217,12 +216,12 @@ Strip unused elements and elements with isDeleted: true - Save to {{save_location}} + Save to {{default_output_file}} NEVER delete the file if validation fails - always fix syntax errors - Run: node -e "JSON.parse(require('fs').readFileSync('{{save_location}}', 'utf8')); console.log('โœ“ Valid JSON')" + Run: node -e "JSON.parse(require('fs').readFileSync('{{default_output_file}}', 'utf8')); console.log('โœ“ Valid JSON')" Read the error message carefully - it shows the syntax error and position Open the file and navigate to the error location @@ -231,7 +230,7 @@ Re-run validation with the same command Repeat until validation passes - Once validation passes, confirm with user: "Flowchart created at {{save_location}}. Open to view?" + Once validation passes, confirm with user: "Flowchart created at {{default_output_file}}. Open to view?" diff --git a/src/modules/bmm/workflows/diagrams/create-flowchart/workflow.yaml b/src/modules/bmm/workflows/diagrams/create-flowchart/workflow.yaml new file mode 100644 index 00000000..475b2d80 --- /dev/null +++ b/src/modules/bmm/workflows/diagrams/create-flowchart/workflow.yaml @@ -0,0 +1,27 @@ +name: create-excalidraw-flowchart +description: "Create a flowchart visualization in Excalidraw format for processes, pipelines, or logic flows" +author: "BMad" + +# Config values +config_source: "{project-root}/{bmad_folder}/bmm/config.yaml" +output_folder: "{config_source}:output_folder" + +# Workflow components +installed_path: "{project-root}/{bmad_folder}/bmm/workflows/diagrams/create-flowchart" +shared_path: "{project-root}/{bmad_folder}/bmm/workflows/diagrams/_shared" +instructions: "{installed_path}/instructions.md" +validation: "{installed_path}/checklist.md" + +# Core Excalidraw resources (universal knowledge) +helpers: "{project-root}/{bmad_folder}/core/resources/excalidraw/excalidraw-helpers.md" +json_validation: "{project-root}/{bmad_folder}/core/resources/excalidraw/validate-json-instructions.md" + +# Domain-specific resources (technical diagrams) +templates: "{shared_path}/excalidraw-templates.yaml" +library: "{shared_path}/excalidraw-library.json" + +# Output file (respects user's configured output_folder) +default_output_file: "{output_folder}/diagrams/flowchart-{timestamp}.excalidraw" + +standalone: true +web_bundle: false diff --git a/src/modules/bmm/workflows/frame-expert/create-wireframe/checklist.md b/src/modules/bmm/workflows/diagrams/create-wireframe/checklist.md similarity index 100% rename from src/modules/bmm/workflows/frame-expert/create-wireframe/checklist.md rename to src/modules/bmm/workflows/diagrams/create-wireframe/checklist.md diff --git a/src/modules/bmm/workflows/frame-expert/create-wireframe/instructions.md b/src/modules/bmm/workflows/diagrams/create-wireframe/instructions.md similarity index 96% rename from src/modules/bmm/workflows/frame-expert/create-wireframe/instructions.md rename to src/modules/bmm/workflows/diagrams/create-wireframe/instructions.md index 4be8f3d7..0ff3645e 100644 --- a/src/modules/bmm/workflows/frame-expert/create-wireframe/instructions.md +++ b/src/modules/bmm/workflows/diagrams/create-wireframe/instructions.md @@ -21,7 +21,7 @@ 4. Tablet App 5. Multi-platform - WAIT for selection, store in {{wireframe_type}} + WAIT for selection @@ -108,12 +108,12 @@ Strip unused elements and elements with isDeleted: true - Save to {{save_location}} + Save to {{default_output_file}} NEVER delete the file if validation fails - always fix syntax errors - Run: node -e "JSON.parse(require('fs').readFileSync('{{save_location}}', 'utf8')); console.log('โœ“ Valid JSON')" + Run: node -e "JSON.parse(require('fs').readFileSync('{{default_output_file}}', 'utf8')); console.log('โœ“ Valid JSON')" Read the error message carefully - it shows the syntax error and position Open the file and navigate to the error location diff --git a/src/modules/bmm/workflows/diagrams/create-wireframe/workflow.yaml b/src/modules/bmm/workflows/diagrams/create-wireframe/workflow.yaml new file mode 100644 index 00000000..a426ec6d --- /dev/null +++ b/src/modules/bmm/workflows/diagrams/create-wireframe/workflow.yaml @@ -0,0 +1,27 @@ +name: create-excalidraw-wireframe +description: "Create website or app wireframes in Excalidraw format" +author: "BMad" + +# Config values +config_source: "{project-root}/{bmad_folder}/bmm/config.yaml" +output_folder: "{config_source}:output_folder" + +# Workflow components +installed_path: "{project-root}/{bmad_folder}/bmm/workflows/diagrams/create-wireframe" +shared_path: "{project-root}/{bmad_folder}/bmm/workflows/diagrams/_shared" +instructions: "{installed_path}/instructions.md" +validation: "{installed_path}/checklist.md" + +# Core Excalidraw resources (universal knowledge) +helpers: "{project-root}/{bmad_folder}/core/resources/excalidraw/excalidraw-helpers.md" +json_validation: "{project-root}/{bmad_folder}/core/resources/excalidraw/validate-json-instructions.md" + +# Domain-specific resources (technical diagrams) +templates: "{shared_path}/excalidraw-templates.yaml" +library: "{shared_path}/excalidraw-library.json" + +# Output file (respects user's configured output_folder) +default_output_file: "{output_folder}/diagrams/wireframe-{timestamp}.excalidraw" + +standalone: true +web_bundle: false diff --git a/src/modules/bmm/workflows/frame-expert/create-dataflow/workflow.yaml b/src/modules/bmm/workflows/frame-expert/create-dataflow/workflow.yaml deleted file mode 100644 index 929e2df7..00000000 --- a/src/modules/bmm/workflows/frame-expert/create-dataflow/workflow.yaml +++ /dev/null @@ -1,24 +0,0 @@ -name: create-dataflow -description: "Create data flow diagrams (DFD) in Excalidraw format" -author: "BMad" - -installed_path: "{project-root}/{bmad_folder}/bmm/workflows/frame-expert/create-dataflow" -shared_path: "{project-root}/{bmad_folder}/bmm/workflows/frame-expert/_shared" -instructions: "{installed_path}/instructions.md" -validation: "{installed_path}/checklist.md" - -helpers: "{shared_path}/excalidraw-helpers.md" -templates: "{shared_path}/excalidraw-templates.yaml" -library: "{shared_path}/excalidraw-library.json" - -variables: - dfd_level: "" - process_count: "" - datastore_count: "" - external_entities: "" - save_location: "" - -default_output_file: "{project-root}/docs/dataflow/dfd-{timestamp}.excalidraw" - -standalone: true -web_bundle: false diff --git a/src/modules/bmm/workflows/frame-expert/create-diagram/workflow.yaml b/src/modules/bmm/workflows/frame-expert/create-diagram/workflow.yaml deleted file mode 100644 index 31b1c49f..00000000 --- a/src/modules/bmm/workflows/frame-expert/create-diagram/workflow.yaml +++ /dev/null @@ -1,25 +0,0 @@ -name: create-diagram -description: "Create system architecture diagrams, ERDs, UML diagrams, or general technical diagrams in Excalidraw format" -author: "BMad" - -installed_path: "{project-root}/{bmad_folder}/bmm/workflows/frame-expert/create-diagram" -shared_path: "{project-root}/{bmad_folder}/bmm/workflows/frame-expert/_shared" -instructions: "{installed_path}/instructions.md" -validation: "{installed_path}/checklist.md" - -helpers: "{shared_path}/excalidraw-helpers.md" -templates: "{shared_path}/excalidraw-templates.yaml" -library: "{shared_path}/excalidraw-library.json" - -variables: - diagram_type: "" - component_count: "" - relationship_type: "" - notation_standard: "" - save_location: "" - theme_choice: "" - -default_output_file: "{project-root}/docs/diagrams/diagram-{timestamp}.excalidraw" - -standalone: true -web_bundle: false diff --git a/src/modules/bmm/workflows/frame-expert/create-flowchart/workflow.yaml b/src/modules/bmm/workflows/frame-expert/create-flowchart/workflow.yaml deleted file mode 100644 index cbee129a..00000000 --- a/src/modules/bmm/workflows/frame-expert/create-flowchart/workflow.yaml +++ /dev/null @@ -1,28 +0,0 @@ -name: create-flowchart -description: "Create a flowchart visualization in Excalidraw format for processes, pipelines, or logic flows" -author: "BMad" - -# Workflow components -installed_path: "{project-root}/{bmad_folder}/bmm/workflows/frame-expert/create-flowchart" -shared_path: "{project-root}/{bmad_folder}/bmm/workflows/frame-expert/_shared" -instructions: "{installed_path}/instructions.md" -validation: "{installed_path}/checklist.md" - -# Shared resources -helpers: "{shared_path}/excalidraw-helpers.md" -templates: "{shared_path}/excalidraw-templates.yaml" -library: "{shared_path}/excalidraw-library.json" - -# Variables -variables: - flowchart_type: "" # Will be elicited - complexity: "" # Will be elicited - decision_points: "" # Will be elicited - save_location: "" # Will be elicited - theme_choice: "" # Will be elicited - custom_colors: {} # For custom theme - -default_output_file: "{project-root}/docs/flowcharts/flowchart-{timestamp}.excalidraw" - -standalone: true -web_bundle: false diff --git a/src/modules/bmm/workflows/frame-expert/create-wireframe/workflow.yaml b/src/modules/bmm/workflows/frame-expert/create-wireframe/workflow.yaml deleted file mode 100644 index d8a9928c..00000000 --- a/src/modules/bmm/workflows/frame-expert/create-wireframe/workflow.yaml +++ /dev/null @@ -1,24 +0,0 @@ -name: create-wireframe -description: "Create website or app wireframes in Excalidraw format" -author: "BMad" - -installed_path: "{project-root}/{bmad_folder}/bmm/workflows/frame-expert/create-wireframe" -shared_path: "{project-root}/{bmad_folder}/bmm/workflows/frame-expert/_shared" -instructions: "{installed_path}/instructions.md" -validation: "{installed_path}/checklist.md" - -helpers: "{shared_path}/excalidraw-helpers.md" -templates: "{shared_path}/excalidraw-templates.yaml" -library: "{shared_path}/excalidraw-library.json" - -variables: - wireframe_type: "" - fidelity_level: "" - screen_count: "" - device_type: "" - save_location: "" - -default_output_file: "{project-root}/docs/wireframes/wireframe-{timestamp}.excalidraw" - -standalone: true -web_bundle: false diff --git a/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml b/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml index be646494..525c79a7 100644 --- a/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +++ b/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml @@ -60,24 +60,12 @@ phases: agent: "pm" command: "validate-prd" - - id: "create-epics-and-stories" - optional: true - agent: "pm" - command: "create-epics-and-stories" - note: "Optional: Create epic breakdown early (basic structure only)" - - id: "create-design" recommended: true agent: "ux-designer" command: "create-design" note: "Recommended - must integrate with existing UX patterns" - - id: "create-epics-and-stories-after-ux" - optional: true - agent: "pm" - command: "create-epics-and-stories" - note: "Optional: Create epic breakdown with UX context" - - phase: 2 name: "Solutioning" required: true @@ -89,6 +77,12 @@ phases: output: "Integration architecture with enterprise considerations" note: "Distills brownfield context + adds security/scalability/compliance design" + - id: "create-epics-and-stories" + required: true + agent: "pm" + command: "create-epics-and-stories" + note: "Required: Break down PRD into implementable epics and stories with full context (PRD + UX + Architecture)" + - id: "test-design" required: true agent: "tea" @@ -96,31 +90,25 @@ phases: output: "System-level testability review" note: "Enterprise requires testability validation - auto-detects system-level mode" - - id: "create-security-architecture" - optional: true - agent: "architect" - command: "create-security-architecture" - output: "Security architecture for brownfield integration" - note: "Future workflow - optional extended enterprise workflow for threat model, auth integration, audit requirements" + # - id: "create-security-architecture" + # optional: true + # agent: "architect" + # command: "create-security-architecture" + # output: "Security architecture for brownfield integration" + # note: "Future workflow - optional extended enterprise workflow for threat model, auth integration, audit requirements" - - id: "create-devops-strategy" - optional: true - agent: "architect" - command: "create-devops-strategy" - output: "DevOps strategy for brownfield deployment" - note: "Future workflow - optional extended enterprise workflow for CI/CD integration, deployment strategy, monitoring" + # - id: "create-devops-strategy" + # optional: true + # agent: "architect" + # command: "create-devops-strategy" + # output: "DevOps strategy for brownfield deployment" + # note: "Future workflow - optional extended enterprise workflow for CI/CD integration, deployment strategy, monitoring" - id: "validate-architecture" recommended: true agent: "architect" command: "validate-architecture" - - id: "create-epics-and-stories-final" - required: true - agent: "pm" - command: "create-epics-and-stories" - note: "Required: Create final epic breakdown with full context (PRD + UX + Architecture)" - - id: "implementation-readiness" required: true agent: "architect" diff --git a/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml b/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml index d43beb69..82b1e721 100644 --- a/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +++ b/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml @@ -48,24 +48,12 @@ phases: agent: "pm" command: "validate-prd" - - id: "create-epics-and-stories" - optional: true - agent: "pm" - command: "create-epics-and-stories" - note: "Optional: Create epic breakdown early (basic structure only)" - - id: "create-design" recommended: true agent: "ux-designer" command: "create-design" note: "Highly recommended for enterprise - design system and patterns" - - id: "create-epics-and-stories-after-ux" - optional: true - agent: "pm" - command: "create-epics-and-stories" - note: "Optional: Create epic breakdown with UX context" - - phase: 2 name: "Solutioning" required: true @@ -103,11 +91,11 @@ phases: agent: "architect" command: "validate-architecture" - - id: "create-epics-and-stories-final" + - id: "create-epics-and-stories" required: true agent: "pm" command: "create-epics-and-stories" - note: "Required: Create final epic breakdown with full context (PRD + UX + Architecture)" + note: "Required: Break down PRD into implementable epics and stories with full context (PRD + UX + Architecture)" - id: "implementation-readiness" required: true diff --git a/src/modules/bmm/workflows/workflow-status/paths/game-design.yaml b/src/modules/bmm/workflows/workflow-status/paths/game-design.yaml deleted file mode 100644 index 3a171f87..00000000 --- a/src/modules/bmm/workflows/workflow-status/paths/game-design.yaml +++ /dev/null @@ -1,52 +0,0 @@ -# Game Development - Use BMGD Module -# Game development workflows have been moved to the BMad Game Development module - -project_type: "game" -level: "all" -field_type: "any" -description: "โš ๏ธ Game development requires the BMGD module" - -error_message: | - โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” - - ๐ŸŽฎ **GAME DEVELOPMENT DETECTED** - - Game development workflows are now part of the **BMad Game Development (BMGD)** module, - which provides specialized workflows and agents for game creation. - - **To proceed with game development:** - - 1. Install the BMGD module: - ```bash - bmad install bmgd - ``` - - 2. The BMGD module includes: - - Game Designer, Game Developer, Game Architect agents - - Game Dev Scrum Master for sprint coordination - - Industry-standard game dev workflows: - โ€ข Phase 1 (Preproduction): brainstorm-game, game-brief - โ€ข Phase 2 (Design): GDD, narrative design - โ€ข Phase 3 (Technical): game architecture - โ€ข Phase 4 (Production): sprint planning, story management - - 3. After installation, load the Game Designer or Game Dev Scrum Master agent - to begin your game development workflow - - **Why a separate module?** - - Game development follows different phases than software development - - Specialized agents understand game-specific terminology and patterns - - Workflows configured for game development needs (playtesting, balancing, etc.) - - Can be used standalone or alongside BMM for complete coverage - - โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” - -# Placeholder phases - this file should not be used for actual workflow tracking -# Users should install BMGD module instead -phases: - - phase: 1 - name: "ERROR - Install BMGD Module" - workflows: - - id: "install-bmgd" - required: true - note: "Run: bmad install bmgd" diff --git a/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml b/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml index af3c6d72..f207f52f 100644 --- a/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml +++ b/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml @@ -59,23 +59,11 @@ phases: agent: "pm" command: "validate-prd" - - id: "create-epics-and-stories" - optional: true - agent: "pm" - command: "create-epics-and-stories" - note: "Optional: Create epic breakdown early (basic structure only)" - - id: "create-design" conditional: "if_has_ui" agent: "ux-designer" command: "create-design" - - id: "create-epics-and-stories-after-ux" - optional: true - agent: "pm" - command: "create-epics-and-stories" - note: "Optional: Create epic breakdown with UX context" - - phase: 2 name: "Solutioning" required: true @@ -87,11 +75,11 @@ phases: output: "Integration architecture - solution design for THIS project" note: "HIGHLY RECOMMENDED: Distills massive brownfield context into focused solution design. Prevents agent confusion." - - id: "create-epics-and-stories-final" + - id: "create-epics-and-stories" required: true agent: "pm" command: "create-epics-and-stories" - note: "Required: Create final epic breakdown with full context (PRD + UX + Architecture)" + note: "Required: Break down PRD into implementable epics and stories with full context (PRD + UX + Architecture)" - id: "test-design" recommended: true diff --git a/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml b/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml index e66e6119..1d1ced9b 100644 --- a/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +++ b/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml @@ -48,24 +48,12 @@ phases: command: "validate-prd" note: "Quality check for PRD completeness" - - id: "create-epics-and-stories" - optional: true - agent: "pm" - command: "create-epics-and-stories" - note: "Optional: Create epic breakdown early (basic structure only)" - - id: "create-design" conditional: "if_has_ui" agent: "ux-designer" command: "create-design" note: "Determined after PRD - user/agent decides if needed" - - id: "create-epics-and-stories-after-ux" - optional: true - agent: "pm" - command: "create-epics-and-stories" - note: "Optional: Create epic breakdown with UX context" - - phase: 2 name: "Solutioning" required: true @@ -77,11 +65,11 @@ phases: output: "System architecture document" note: "Complete system design for greenfield projects" - - id: "create-epics-and-stories-final" + - id: "create-epics-and-stories" required: true agent: "pm" command: "create-epics-and-stories" - note: "Required: Create final epic breakdown with full context (PRD + UX + Architecture)" + note: "Required: Break down PRD into implementable epics and stories with full context (PRD + UX + Architecture)" - id: "test-design" recommended: true diff --git a/src/modules/cis/agents/presentation-master.agent.yaml b/src/modules/cis/agents/presentation-master.agent.yaml new file mode 100644 index 00000000..79b7b7fa --- /dev/null +++ b/src/modules/cis/agents/presentation-master.agent.yaml @@ -0,0 +1,60 @@ +# Caravaggio - Visual Communication & Presentation Expert Agent Definition + +agent: + metadata: + id: "{bmad_folder}/cis/agents/presentation-master.md" + name: Caravaggio + title: Visual Communication & Presentation Expert + icon: ๐ŸŽจ + module: cis + + persona: + role: Visual Communication Expert + Presentation Designer + Educator + identity: Master presentation designer who's dissected thousands of successful presentationsโ€”from viral YouTube explainers to funded pitch decks to TED talks. Understands visual hierarchy, audience psychology, and information design. Knows when to be bold and casual, when to be polished and professional. Expert in Excalidraw's frame-based presentation capabilities and visual storytelling across all contexts. + communication_style: Energetic creative director with sarcastic wit and experimental flair. Talks like you're in the editing room togetherโ€”dramatic reveals, visual metaphors, "what if we tried THIS?!" energy. Treats every project like a creative challenge, celebrates bold choices, roasts bad design decisions with humor. + principles: | + - Know your audience - pitch decks โ‰  YouTube thumbnails โ‰  conference talks + - Visual hierarchy drives attention - design the eye's journey deliberately + - Clarity over cleverness - unless cleverness serves the message + - Every frame needs a job - inform, persuade, transition, or cut it + - Test the 3-second rule - can they grasp the core idea that fast? + - White space builds focus - cramming kills comprehension + - Consistency signals professionalism - establish and maintain visual language + - Story structure applies everywhere - hook, build tension, deliver payoff + + menu: + - trigger: slide-deck + workflow: "todo" + description: Create multi-slide presentation with professional layouts and visual hierarchy + + - trigger: explainer + workflow: "todo" + description: Design YouTube/video explainer layout with visual script and engagement hooks + + - trigger: pitch-deck + workflow: "todo" + description: Craft investor pitch presentation with data visualization and narrative arc + + - trigger: talk + workflow: "todo" + description: Build conference or workshop presentation materials with speaker notes + + - trigger: infographic + workflow: "todo" + description: Design creative information visualization with visual storytelling + + - trigger: visual-metaphor + workflow: "todo" + description: Create conceptual illustrations (Rube Goldberg machines, journey maps, creative processes) + + - trigger: concept-visual + workflow: "todo" + description: Generate single expressive image that explains ideas creatively and memorably + + - trigger: party-mode + workflow: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.yaml" + description: Consult 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