@hyperdrive.bot/bmad-workflow 1.0.21 → 1.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/assets/agents/dev-barry.md +69 -0
  2. package/assets/agents/dev.md +323 -0
  3. package/assets/agents/qa.md +92 -0
  4. package/assets/agents/sm-bob.md +65 -0
  5. package/assets/agents/sm.md +296 -0
  6. package/assets/config/default-config.yaml +6 -0
  7. package/assets/templates/epic-tmpl.yaml +277 -0
  8. package/assets/templates/prd-tmpl.yaml +261 -0
  9. package/assets/templates/qa-gate-tmpl.yaml +103 -0
  10. package/assets/templates/story-tmpl.yaml +138 -0
  11. package/dist/commands/eject.d.ts +76 -0
  12. package/dist/commands/eject.js +232 -0
  13. package/dist/commands/init.d.ts +47 -0
  14. package/dist/commands/init.js +265 -0
  15. package/dist/commands/stories/develop.js +1 -0
  16. package/dist/commands/stories/qa.d.ts +1 -0
  17. package/dist/commands/stories/qa.js +7 -0
  18. package/dist/commands/workflow.d.ts +6 -3
  19. package/dist/commands/workflow.js +106 -26
  20. package/dist/models/bmad-config-schema.d.ts +51 -0
  21. package/dist/models/bmad-config-schema.js +53 -0
  22. package/dist/services/agents/gemini-agent-runner.js +7 -2
  23. package/dist/services/agents/opencode-agent-runner.js +7 -2
  24. package/dist/services/file-system/asset-resolver.d.ts +117 -0
  25. package/dist/services/file-system/asset-resolver.js +234 -0
  26. package/dist/services/file-system/file-manager.d.ts +13 -0
  27. package/dist/services/file-system/file-manager.js +32 -0
  28. package/dist/services/file-system/path-resolver.d.ts +22 -1
  29. package/dist/services/file-system/path-resolver.js +36 -9
  30. package/dist/services/orchestration/dependency-graph-executor.js +1 -0
  31. package/dist/services/orchestration/workflow-orchestrator.d.ts +11 -0
  32. package/dist/services/orchestration/workflow-orchestrator.js +79 -10
  33. package/dist/utils/config-merge.d.ts +60 -0
  34. package/dist/utils/config-merge.js +52 -0
  35. package/package.json +4 -2
@@ -0,0 +1,261 @@
1
+ # <!-- Powered by BMAD™ Core -->
2
+ template:
3
+ id: prd-template-v2
4
+ name: Product Requirements Document
5
+ version: 2.1
6
+ output:
7
+ format: markdown
8
+ filename: docs/prd.md
9
+ title: "{{project_name}} Product Requirements Document (PRD)"
10
+
11
+ workflow:
12
+ mode: interactive
13
+ elicitation: advanced-elicitation
14
+
15
+ # Excalidraw diagram resources (shared across visual sections)
16
+ excalidraw:
17
+ shared_path: "{project-root}/_bmad/bmm/workflows/excalidraw-diagrams/_shared"
18
+ helpers: "{project-root}/_bmad/core/resources/excalidraw/excalidraw-helpers.md"
19
+ templates: "{project-root}/_bmad/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml"
20
+ library: "{project-root}/_bmad/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json"
21
+ workflows:
22
+ diagram: "{project-root}/_bmad/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml"
23
+ wireframe: "{project-root}/_bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml"
24
+ dataflow: "{project-root}/_bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml"
25
+
26
+ sections:
27
+ - id: goals-context
28
+ title: Goals and Background Context
29
+ instruction: |
30
+ Ask if Project Brief document is available. If NO Project Brief exists, STRONGLY recommend creating one first using project-brief-tmpl (it provides essential foundation: problem statement, target users, success metrics, MVP scope, constraints). If user insists on PRD without brief, gather this information during Goals section. If Project Brief exists, review and use it to populate Goals (bullet list of desired outcomes) and Background Context (1-2 paragraphs on what this solves and why) so we can determine what is and is not in scope for PRD mvp. Either way this is critical to determine the requirements. Include Change Log table.
31
+ sections:
32
+ - id: goals
33
+ title: Goals
34
+ type: bullet-list
35
+ instruction: Bullet list of 1 line desired outcomes the PRD will deliver if successful - user and project desires
36
+ - id: background
37
+ title: Background Context
38
+ type: paragraphs
39
+ instruction: 1-2 short paragraphs summarizing the background context, such as what we learned in the brief without being redundant with the goals, what and why this solves a problem, what the current landscape or need is
40
+ - id: changelog
41
+ title: Change Log
42
+ type: table
43
+ columns: [Date, Version, Description, Author]
44
+ instruction: Track document versions and changes
45
+
46
+ - id: requirements
47
+ title: Requirements
48
+ instruction: Draft the list of functional and non functional requirements under the two child sections
49
+ elicit: true
50
+ sections:
51
+ - id: functional
52
+ title: Functional
53
+ type: numbered-list
54
+ prefix: FR
55
+ instruction: Each Requirement will be a bullet markdown and an identifier sequence starting with FR
56
+ examples:
57
+ - "FR6: The Todo List uses AI to detect and warn against potentially duplicate todo items that are worded differently."
58
+ - id: non-functional
59
+ title: Non Functional
60
+ type: numbered-list
61
+ prefix: NFR
62
+ instruction: Each Requirement will be a bullet markdown and an identifier sequence starting with NFR
63
+ examples:
64
+ - "NFR1: AWS service usage must aim to stay within free-tier limits where feasible."
65
+
66
+ - id: ui-goals
67
+ title: User Interface Design Goals
68
+ condition: PRD has UX/UI requirements
69
+ instruction: |
70
+ Capture high-level UI/UX vision to guide Design Architect and to inform story creation. Steps:
71
+
72
+ 1. Pre-fill all subsections with educated guesses based on project context
73
+ 2. Present the complete rendered section to user
74
+ 3. Clearly let the user know where assumptions were made
75
+ 4. Ask targeted questions for unclear/missing elements or areas needing more specification
76
+ 5. This is NOT detailed UI spec - focus on product vision and user goals
77
+ elicit: true
78
+ choices:
79
+ accessibility: [None, WCAG AA, WCAG AAA]
80
+ platforms: [Web Responsive, Mobile Only, Desktop Only, Cross-Platform]
81
+ sections:
82
+ - id: ux-vision
83
+ title: Overall UX Vision
84
+ - id: interaction-paradigms
85
+ title: Key Interaction Paradigms
86
+ - id: core-screens
87
+ title: Core Screens and Views
88
+ instruction: From a product perspective, what are the most critical screens or views necessary to deliver the the PRD values and goals? This is meant to be Conceptual High Level to Drive Rough Epic or User Stories
89
+ examples:
90
+ - "Login Screen"
91
+ - "Main Dashboard"
92
+ - "Item Detail Page"
93
+ - "Settings Page"
94
+ sections:
95
+ - id: wireframes
96
+ title: Core Screen Wireframes
97
+ condition: Core screens list approved by user
98
+ instruction: |
99
+ After the core screens list is approved, offer to generate low-fidelity wireframes using the Excalidraw wireframe workflow. Steps:
100
+
101
+ 1. Ask: "Would you like me to generate low-fi wireframes for the core screens? These help the UX Designer and Architect visualize layout intent."
102
+ 2. If yes, check if a theme.json already exists from a prior diagram in this PRD session — reuse it for visual consistency
103
+ 3. Invoke the create-wireframe workflow for each core screen (or a combined multi-screen wireframe)
104
+ 4. Save to {{output_folder}}/excalidraw-diagrams/prd-wireframes-{timestamp}.excalidraw
105
+ 5. Reference the wireframe file path in this section of the PRD output
106
+ 6. If no, skip — this is optional and should not block PRD progress
107
+ elicit: true
108
+ workflow_ref: "{{excalidraw.workflows.wireframe}}"
109
+ - id: accessibility
110
+ title: "Accessibility: {None|WCAG AA|WCAG AAA|Custom Requirements}"
111
+ - id: branding
112
+ title: Branding
113
+ instruction: Any known branding elements or style guides that must be incorporated?
114
+ examples:
115
+ - "Replicate the look and feel of early 1900s black and white cinema, including animated effects replicating film damage or projector glitches during page or state transitions."
116
+ - "Attached is the full color pallet and tokens for our corporate branding."
117
+ - id: target-platforms
118
+ title: "Target Device and Platforms: {Web Responsive|Mobile Only|Desktop Only|Cross-Platform}"
119
+ examples:
120
+ - "Web Responsive, and all mobile platforms"
121
+ - "iPhone Only"
122
+ - "ASCII Windows Desktop"
123
+
124
+ - id: technical-assumptions
125
+ title: Technical Assumptions
126
+ instruction: |
127
+ Gather technical decisions that will guide the Architect. Steps:
128
+
129
+ 1. Check if .bmad-core/data/technical-preferences.yaml or an attached technical-preferences file exists - use it to pre-populate choices
130
+ 2. Ask user about: languages, frameworks, starter templates, libraries, APIs, deployment targets
131
+ 3. For unknowns, offer guidance based on project goals and MVP scope
132
+ 4. Document ALL technical choices with rationale (why this choice fits the project)
133
+ 5. These become constraints for the Architect - be specific and complete
134
+ elicit: true
135
+ choices:
136
+ repository: [Monorepo, Polyrepo]
137
+ architecture: [Monolith, Microservices, Serverless]
138
+ testing: [Unit Only, Unit + Integration, Full Testing Pyramid]
139
+ sections:
140
+ - id: repository-structure
141
+ title: "Repository Structure: {Monorepo|Polyrepo|Multi-repo}"
142
+ - id: service-architecture
143
+ title: Service Architecture
144
+ instruction: "CRITICAL DECISION - Document the high-level service architecture (e.g., Monolith, Microservices, Serverless functions within a Monorepo)."
145
+ - id: testing-requirements
146
+ title: Testing Requirements
147
+ instruction: "CRITICAL DECISION - Document the testing requirements, unit only, integration, e2e, manual, need for manual testing convenience methods)."
148
+ - id: additional-assumptions
149
+ title: Additional Technical Assumptions and Requests
150
+ instruction: Throughout the entire process of drafting this document, if any other technical assumptions are raised or discovered appropriate for the architect, add them here as additional bulleted items
151
+
152
+ - id: architecture-diagram
153
+ title: Architecture Overview Diagram
154
+ condition: Technical Assumptions section completed
155
+ instruction: |
156
+ After Technical Assumptions are finalized, offer to generate a system architecture diagram using the Excalidraw diagram workflow. This visual becomes the primary reference for the Architect and development team. Steps:
157
+
158
+ 1. Ask: "Would you like me to generate a system architecture diagram? It captures service boundaries, databases, and integrations visually — the Architect reads this FIRST."
159
+ 2. If yes, extract components from Technical Assumptions: services, databases, external APIs, deployment targets
160
+ 3. Check if a theme.json exists from a prior diagram in this PRD session — reuse for consistency
161
+ 4. Invoke the create-diagram workflow with extracted components and relationships
162
+ 5. Save to {{output_folder}}/excalidraw-diagrams/prd-architecture-{timestamp}.excalidraw
163
+ 6. Reference the diagram file path in this section of the PRD output
164
+ 7. If no, skip — but note this is highly recommended for multi-service or distributed architectures
165
+ elicit: true
166
+ workflow_ref: "{{excalidraw.workflows.diagram}}"
167
+
168
+ - id: data-flow-diagram
169
+ title: Data Flow Diagram
170
+ condition: Requirements section completed AND system involves multiple data sources or API integrations
171
+ instruction: |
172
+ For systems with multiple data sources, API integrations, or complex data pipelines, offer to generate a data flow diagram. Steps:
173
+
174
+ 1. Ask: "Your requirements mention multiple data sources/integrations. Would you like a data flow diagram showing how data moves through the system?"
175
+ 2. If yes, extract data entities, processes, data stores, and external systems from Requirements and Technical Assumptions
176
+ 3. Reuse existing theme.json if available from prior diagrams in this PRD session
177
+ 4. Invoke the create-dataflow workflow
178
+ 5. Save to {{output_folder}}/excalidraw-diagrams/prd-dataflow-{timestamp}.excalidraw
179
+ 6. Reference the diagram file path in this section of the PRD output
180
+ 7. If no or condition not met, skip entirely — this is optional
181
+ elicit: true
182
+ workflow_ref: "{{excalidraw.workflows.dataflow}}"
183
+
184
+ - id: epic-list
185
+ title: Epic List
186
+ instruction: |
187
+ Present a high-level list of all epics for user approval. Each epic should have a title and a short (1 sentence) goal statement. This allows the user to review the overall structure before diving into details.
188
+
189
+ CRITICAL: Epics MUST be logically sequential following agile best practices:
190
+
191
+ - Each epic should deliver a significant, end-to-end, fully deployable increment of testable functionality
192
+ - Epic 1 must establish foundational project infrastructure (app setup, Git, CI/CD, core services) unless we are adding new functionality to an existing app, while also delivering an initial piece of functionality, even as simple as a health-check route or display of a simple canary page - remember this when we produce the stories for the first epic!
193
+ - Each subsequent epic builds upon previous epics' functionality delivering major blocks of functionality that provide tangible value to users or business when deployed
194
+ - Not every project needs multiple epics, an epic needs to deliver value. For example, an API completed can deliver value even if a UI is not complete and planned for a separate epic.
195
+ - Err on the side of less epics, but let the user know your rationale and offer options for splitting them if it seems some are too large or focused on disparate things.
196
+ - Cross Cutting Concerns should flow through epics and stories and not be final stories. For example, adding a logging framework as a last story of an epic, or at the end of a project as a final epic or story would be terrible as we would not have logging from the beginning.
197
+ elicit: true
198
+ examples:
199
+ - "Epic 1: Foundation & Core Infrastructure: Establish project setup, authentication, and basic user management"
200
+ - "Epic 2: Core Business Entities: Create and manage primary domain objects with CRUD operations"
201
+ - "Epic 3: User Workflows & Interactions: Enable key user journeys and business processes"
202
+ - "Epic 4: Reporting & Analytics: Provide insights and data visualization for users"
203
+
204
+ - id: epic-details
205
+ title: Epic {{epic_number}} {{epic_title}}
206
+ repeatable: true
207
+ instruction: |
208
+ After the epic list is approved, present each epic with all its stories and acceptance criteria as a complete review unit.
209
+
210
+ For each epic provide expanded goal (2-3 sentences describing the objective and value all the stories will achieve).
211
+
212
+ CRITICAL STORY SEQUENCING REQUIREMENTS:
213
+
214
+ - Stories within each epic MUST be logically sequential
215
+ - Each story should be a "vertical slice" delivering complete functionality aside from early enabler stories for project foundation
216
+ - No story should depend on work from a later story or epic
217
+ - Identify and note any direct prerequisite stories
218
+ - Focus on "what" and "why" not "how" (leave technical implementation to Architect) yet be precise enough to support a logical sequential order of operations from story to story.
219
+ - Ensure each story delivers clear user or business value, try to avoid enablers and build them into stories that deliver value.
220
+ - Size stories for AI agent execution: Each story must be completable by a single AI agent in one focused session without context overflow
221
+ - Think "junior developer working for 2-4 hours" - stories must be small, focused, and self-contained
222
+ - If a story seems complex, break it down further as long as it can deliver a vertical slice
223
+ elicit: true
224
+ template: "{{epic_goal}}"
225
+ sections:
226
+ - id: story
227
+ title: Story {{epic_number}}.{{story_number}} {{story_title}}
228
+ repeatable: true
229
+ template: |
230
+ As a {{user_type}},
231
+ I want {{action}},
232
+ so that {{benefit}}.
233
+ sections:
234
+ - id: acceptance-criteria
235
+ title: Acceptance Criteria
236
+ type: numbered-list
237
+ item_template: "{{criterion_number}}: {{criteria}}"
238
+ repeatable: true
239
+ instruction: |
240
+ Define clear, comprehensive, and testable acceptance criteria that:
241
+
242
+ - Precisely define what "done" means from a functional perspective
243
+ - Are unambiguous and serve as basis for verification
244
+ - Include any critical non-functional requirements from the PRD
245
+ - Consider local testability for backend/data components
246
+ - Specify UI/UX requirements and framework adherence where applicable
247
+ - Avoid cross-cutting concerns that should be in other stories or PRD sections
248
+
249
+ - id: checklist-results
250
+ title: Checklist Results Report
251
+ instruction: Before running the checklist and drafting the prompts, offer to output the full updated PRD. If outputting it, confirm with the user that you will be proceeding to run the checklist and produce the report. Once the user confirms, execute the pm-checklist and populate the results in this section.
252
+
253
+ - id: next-steps
254
+ title: Next Steps
255
+ sections:
256
+ - id: ux-expert-prompt
257
+ title: UX Expert Prompt
258
+ instruction: This section will contain the prompt for the UX Expert, keep it short and to the point to initiate create architecture mode using this document as input.
259
+ - id: architect-prompt
260
+ title: Architect Prompt
261
+ instruction: This section will contain the prompt for the Architect, keep it short and to the point to initiate create architecture mode using this document as input.
@@ -0,0 +1,103 @@
1
+ # <!-- Powered by BMAD™ Core -->
2
+ template:
3
+ id: qa-gate-template-v1
4
+ name: Quality Gate Decision
5
+ version: 1.0
6
+ output:
7
+ format: yaml
8
+ filename: qa.qaLocation/gates/{{epic_num}}.{{story_num}}-{{story_slug}}.yml
9
+ title: "Quality Gate: {{epic_num}}.{{story_num}}"
10
+
11
+ # Required fields (keep these first)
12
+ schema: 1
13
+ story: "{{epic_num}}.{{story_num}}"
14
+ story_title: "{{story_title}}"
15
+ gate: "{{gate_status}}" # PASS|CONCERNS|FAIL|WAIVED
16
+ status_reason: "{{status_reason}}" # 1-2 sentence summary of why this gate decision
17
+ reviewer: "Quinn (Test Architect)"
18
+ updated: "{{iso_timestamp}}"
19
+
20
+ # Always present but only active when WAIVED
21
+ waiver: { active: false }
22
+
23
+ # Issues (if any) - Use fixed severity: low | medium | high
24
+ top_issues: []
25
+
26
+ # Risk summary (from risk-profile task if run)
27
+ risk_summary:
28
+ totals: { critical: 0, high: 0, medium: 0, low: 0 }
29
+ recommendations:
30
+ must_fix: []
31
+ monitor: []
32
+
33
+ # Examples section using block scalars for clarity
34
+ examples:
35
+ with_issues: |
36
+ top_issues:
37
+ - id: "SEC-001"
38
+ severity: high # ONLY: low|medium|high
39
+ finding: "No rate limiting on login endpoint"
40
+ suggested_action: "Add rate limiting middleware before production"
41
+ - id: "TEST-001"
42
+ severity: medium
43
+ finding: "Missing integration tests for auth flow"
44
+ suggested_action: "Add test coverage for critical paths"
45
+
46
+ when_waived: |
47
+ waiver:
48
+ active: true
49
+ reason: "Accepted for MVP release - will address in next sprint"
50
+ approved_by: "Product Owner"
51
+
52
+ # ============ Optional Extended Fields ============
53
+ # Uncomment and use if your team wants more detail
54
+
55
+ optional_fields_examples:
56
+ quality_and_expiry: |
57
+ quality_score: 75 # 0-100 (optional scoring)
58
+ expires: "2025-01-26T00:00:00Z" # Optional gate freshness window
59
+
60
+ evidence: |
61
+ evidence:
62
+ tests_reviewed: 15
63
+ risks_identified: 3
64
+ trace:
65
+ ac_covered: [1, 2, 3] # AC numbers with test coverage
66
+ ac_gaps: [4] # AC numbers lacking coverage
67
+
68
+ nfr_validation: |
69
+ nfr_validation:
70
+ security: { status: CONCERNS, notes: "Rate limiting missing" }
71
+ performance: { status: PASS, notes: "" }
72
+ reliability: { status: PASS, notes: "" }
73
+ maintainability: { status: PASS, notes: "" }
74
+
75
+ history: |
76
+ history: # Append-only audit trail
77
+ - at: "2025-01-12T10:00:00Z"
78
+ gate: FAIL
79
+ note: "Initial review - missing tests"
80
+ - at: "2025-01-12T15:00:00Z"
81
+ gate: CONCERNS
82
+ note: "Tests added but rate limiting still missing"
83
+
84
+ risk_summary: |
85
+ risk_summary: # From risk-profile task
86
+ totals:
87
+ critical: 0
88
+ high: 0
89
+ medium: 0
90
+ low: 0
91
+ # 'highest' is emitted only when risks exist
92
+ recommendations:
93
+ must_fix: []
94
+ monitor: []
95
+
96
+ recommendations: |
97
+ recommendations:
98
+ immediate: # Must fix before production
99
+ - action: "Add rate limiting to auth endpoints"
100
+ refs: ["api/auth/login.ts:42-68"]
101
+ future: # Can be addressed later
102
+ - action: "Consider caching for better performance"
103
+ refs: ["services/data.service.ts"]
@@ -0,0 +1,138 @@
1
+ # <!-- Powered by BMAD™ Core -->
2
+ template:
3
+ id: story-template-v2
4
+ name: Story Document
5
+ version: 2.0
6
+ output:
7
+ format: markdown
8
+ filename: docs/stories/{{epic_num}}.{{story_num}}.{{story_title_short}}.md
9
+ title: "Story {{epic_num}}.{{story_num}}: {{story_title_short}}"
10
+
11
+ workflow:
12
+ mode: interactive
13
+ elicitation: advanced-elicitation
14
+
15
+ agent_config:
16
+ editable_sections:
17
+ - Status
18
+ - Story
19
+ - Acceptance Criteria
20
+ - Tasks / Subtasks
21
+ - Dev Notes
22
+ - Testing
23
+ - Change Log
24
+
25
+ sections:
26
+ - id: status
27
+ title: Status
28
+ type: choice
29
+ choices: [Draft, Approved, InProgress, Review, Done]
30
+ instruction: Select the current status of the story
31
+ owner: scrum-master
32
+ editors: [scrum-master, dev-agent]
33
+
34
+ - id: story
35
+ title: Story
36
+ type: template-text
37
+ template: |
38
+ **As a** {{role}},
39
+ **I want** {{action}},
40
+ **so that** {{benefit}}
41
+ instruction: Define the user story using the standard format with role, action, and benefit
42
+ elicit: true
43
+ owner: scrum-master
44
+ editors: [scrum-master]
45
+
46
+ - id: acceptance-criteria
47
+ title: Acceptance Criteria
48
+ type: numbered-list
49
+ instruction: Copy the acceptance criteria numbered list from the epic file
50
+ elicit: true
51
+ owner: scrum-master
52
+ editors: [scrum-master]
53
+
54
+ - id: tasks-subtasks
55
+ title: Tasks / Subtasks
56
+ type: bullet-list
57
+ instruction: |
58
+ Break down the story into specific tasks and subtasks needed for implementation.
59
+ Reference applicable acceptance criteria numbers where relevant.
60
+ template: |
61
+ - [ ] Task 1 (AC: # if applicable)
62
+ - [ ] Subtask1.1...
63
+ - [ ] Task 2 (AC: # if applicable)
64
+ - [ ] Subtask 2.1...
65
+ - [ ] Task 3 (AC: # if applicable)
66
+ - [ ] Subtask 3.1...
67
+ elicit: true
68
+ owner: scrum-master
69
+ editors: [scrum-master, dev-agent]
70
+
71
+ - id: dev-notes
72
+ title: Dev Notes
73
+ instruction: |
74
+ Populate relevant information, only what was pulled from actual artifacts from docs folder, relevant to this story:
75
+ - Do not invent information
76
+ - If known add Relevant Source Tree info that relates to this story
77
+ - If there were important notes from previous story that are relevant to this one, include them here
78
+ - Put enough information in this section so that the dev agent should NEVER need to read the architecture documents, these notes along with the tasks and subtasks must give the Dev Agent the complete context it needs to comprehend with the least amount of overhead the information to complete the story, meeting all AC and completing all tasks+subtasks
79
+ elicit: true
80
+ owner: scrum-master
81
+ editors: [scrum-master]
82
+ sections:
83
+ - id: testing-standards
84
+ title: Testing
85
+ instruction: |
86
+ List Relevant Testing Standards from Architecture the Developer needs to conform to:
87
+ - Test file location
88
+ - Test standards
89
+ - Testing frameworks and patterns to use
90
+ - Any specific testing requirements for this story
91
+ elicit: true
92
+ owner: scrum-master
93
+ editors: [scrum-master]
94
+
95
+ - id: change-log
96
+ title: Change Log
97
+ type: table
98
+ columns: [Date, Version, Description, Author]
99
+ instruction: Track changes made to this story document
100
+ owner: scrum-master
101
+ editors: [scrum-master, dev-agent, qa-agent]
102
+
103
+ - id: dev-agent-record
104
+ title: Dev Agent Record
105
+ instruction: This section is populated by the development agent during implementation
106
+ owner: dev-agent
107
+ editors: [dev-agent]
108
+ sections:
109
+ - id: agent-model
110
+ title: Agent Model Used
111
+ template: "{{agent_model_name_version}}"
112
+ instruction: Record the specific AI agent model and version used for development
113
+ owner: dev-agent
114
+ editors: [dev-agent]
115
+
116
+ - id: debug-log-references
117
+ title: Debug Log References
118
+ instruction: Reference any debug logs or traces generated during development
119
+ owner: dev-agent
120
+ editors: [dev-agent]
121
+
122
+ - id: completion-notes
123
+ title: Completion Notes List
124
+ instruction: Notes about the completion of tasks and any issues encountered
125
+ owner: dev-agent
126
+ editors: [dev-agent]
127
+
128
+ - id: file-list
129
+ title: File List
130
+ instruction: List all files created, modified, or affected during story implementation
131
+ owner: dev-agent
132
+ editors: [dev-agent]
133
+
134
+ - id: qa-results
135
+ title: QA Results
136
+ instruction: Results from QA Agent QA review of the completed story implementation
137
+ owner: qa-agent
138
+ editors: [qa-agent]
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Eject Command
3
+ *
4
+ * Copies bundled assets (agents, templates, config) into a local project directory
5
+ * for full customization. After eject, the CLI resolves assets from the local path
6
+ * instead of bundled defaults.
7
+ *
8
+ * @example
9
+ * ```bash
10
+ * bmad-workflow eject
11
+ * bmad-workflow eject --target ./my-assets
12
+ * bmad-workflow eject --agents-only
13
+ * bmad-workflow eject --templates-only
14
+ * bmad-workflow eject --force
15
+ * ```
16
+ */
17
+ import { Command } from '@oclif/core';
18
+ import { FileManager } from '../services/file-system/file-manager.js';
19
+ /**
20
+ * Subdirectory definition for eject operations
21
+ */
22
+ export interface EjectSubdir {
23
+ /** Name of subdirectory under assets/ */
24
+ name: string;
25
+ /** Target name (may differ from source for config) */
26
+ targetName?: string;
27
+ }
28
+ /**
29
+ * Summary of eject operation
30
+ */
31
+ export interface EjectSummary {
32
+ copied: Map<string, number>;
33
+ skipped: string[];
34
+ targetPath: string;
35
+ }
36
+ /**
37
+ * Resolve the bundled assets directory path.
38
+ *
39
+ * From dist/commands/eject.js → ../../assets
40
+ */
41
+ export declare function getAssetsDir(): string;
42
+ /**
43
+ * Determine which subdirectories to eject based on flags
44
+ */
45
+ export declare function getSubdirs(agentsOnly: boolean, templatesOnly: boolean): EjectSubdir[];
46
+ /**
47
+ * Copy assets from source to target with skip/force logic
48
+ */
49
+ export declare function copyAssets(assetsDir: string, targetPath: string, subdirs: EjectSubdir[], force: boolean, fileManager: FileManager): Promise<EjectSummary>;
50
+ /**
51
+ * Create or update .bmad-workflow.yaml with bmad_path
52
+ */
53
+ export declare function updateConfig(targetPath: string, projectRoot?: string): void;
54
+ /**
55
+ * Format summary output lines
56
+ */
57
+ export declare function formatSummary(summary: EjectSummary): string[];
58
+ /**
59
+ * Eject Command
60
+ *
61
+ * Copies bundled assets into a local project directory for customization.
62
+ */
63
+ export default class EjectCommand extends Command {
64
+ static description: string;
65
+ static examples: {
66
+ command: string;
67
+ description: string;
68
+ }[];
69
+ static flags: {
70
+ 'agents-only': import("@oclif/core/interfaces").BooleanFlag<boolean>;
71
+ force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
72
+ target: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
73
+ 'templates-only': import("@oclif/core/interfaces").BooleanFlag<boolean>;
74
+ };
75
+ run(): Promise<void>;
76
+ }