ma-agents 2.16.3 → 2.17.1
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.
- package/lib/agents.js +4 -4
- package/lib/bmad-customizations/bmm-mil498.customize.yaml +9 -6
- package/lib/bmad-customizations/mil498.md +7 -6
- package/lib/bmad-workflows/mil498/ocd/instructions.md +99 -0
- package/lib/bmad-workflows/mil498/ocd/workflow.yaml +15 -0
- package/lib/bmad-workflows/mil498/sdd/instructions.md +104 -0
- package/lib/bmad-workflows/mil498/sdd/workflow.yaml +16 -0
- package/lib/bmad-workflows/mil498/sdp/instructions.md +98 -0
- package/lib/bmad-workflows/mil498/sdp/workflow.yaml +15 -0
- package/lib/bmad-workflows/mil498/srs/instructions.md +103 -0
- package/lib/bmad-workflows/mil498/srs/workflow.yaml +15 -0
- package/lib/bmad-workflows/mil498/ssdd/instructions.md +118 -0
- package/lib/bmad-workflows/mil498/ssdd/workflow.yaml +15 -0
- package/lib/bmad-workflows/mil498/sss/instructions.md +96 -0
- package/lib/bmad-workflows/mil498/sss/workflow.yaml +15 -0
- package/lib/bmad-workflows/mil498/std/instructions.md +97 -0
- package/lib/bmad-workflows/mil498/std/workflow.yaml +15 -0
- package/lib/bmad.js +61 -33
- package/package.json +1 -1
package/lib/agents.js
CHANGED
|
@@ -152,7 +152,7 @@ const agents = [
|
|
|
152
152
|
version: '1.0.0',
|
|
153
153
|
category: 'bmad',
|
|
154
154
|
description: 'Specialized SRE Agent for BMAD-METHOD',
|
|
155
|
-
getProjectPath: () => path.join(process.cwd(), '_bmad', 'skills'),
|
|
155
|
+
getProjectPath: () => path.join(process.cwd(), '_bmad', 'skills', 'sre'),
|
|
156
156
|
getGlobalPath: () => {
|
|
157
157
|
const platform = os.platform();
|
|
158
158
|
if (platform === 'win32') {
|
|
@@ -194,7 +194,7 @@ const agents = [
|
|
|
194
194
|
version: '1.0.0',
|
|
195
195
|
category: 'bmad',
|
|
196
196
|
description: 'Specialized DevOps Agent for BMAD-METHOD',
|
|
197
|
-
getProjectPath: () => path.join(process.cwd(), '_bmad', 'skills'),
|
|
197
|
+
getProjectPath: () => path.join(process.cwd(), '_bmad', 'skills', 'devops'),
|
|
198
198
|
getGlobalPath: () => {
|
|
199
199
|
const platform = os.platform();
|
|
200
200
|
if (platform === 'win32') {
|
|
@@ -215,7 +215,7 @@ const agents = [
|
|
|
215
215
|
version: '1.0.0',
|
|
216
216
|
category: 'bmad',
|
|
217
217
|
description: 'Specialized Cyber Security Analyst (Yael) for BMAD-METHOD',
|
|
218
|
-
getProjectPath: () => path.join(process.cwd(), '_bmad', 'skills'),
|
|
218
|
+
getProjectPath: () => path.join(process.cwd(), '_bmad', 'skills', 'cyber'),
|
|
219
219
|
getGlobalPath: () => {
|
|
220
220
|
const platform = os.platform();
|
|
221
221
|
if (platform === 'win32') {
|
|
@@ -236,7 +236,7 @@ const agents = [
|
|
|
236
236
|
version: '1.0.0',
|
|
237
237
|
category: 'bmad',
|
|
238
238
|
description: 'MIL-STD-498 Documentation Expert',
|
|
239
|
-
getProjectPath: () => path.join(process.cwd(), '_bmad', 'skills'),
|
|
239
|
+
getProjectPath: () => path.join(process.cwd(), '_bmad', 'skills', 'mil498'),
|
|
240
240
|
getGlobalPath: () => {
|
|
241
241
|
const platform = os.platform();
|
|
242
242
|
if (platform === 'win32') {
|
|
@@ -14,20 +14,23 @@ persona:
|
|
|
14
14
|
|
|
15
15
|
menu:
|
|
16
16
|
- trigger: bmad-mil-generate-srs
|
|
17
|
-
workflow: "bmm/workflows/mil498/
|
|
17
|
+
workflow: "bmm/workflows/mil498/srs/workflow.yaml"
|
|
18
18
|
description: "Generate SRS (Software Requirements Specification)"
|
|
19
19
|
- trigger: bmad-mil-generate-sdd
|
|
20
|
-
workflow: "bmm/workflows/mil498/
|
|
20
|
+
workflow: "bmm/workflows/mil498/sdd/workflow.yaml"
|
|
21
21
|
description: "Generate SDD (Software Design Description)"
|
|
22
22
|
- trigger: bmad-mil-generate-sdp
|
|
23
|
-
workflow: "bmm/workflows/mil498/
|
|
23
|
+
workflow: "bmm/workflows/mil498/sdp/workflow.yaml"
|
|
24
24
|
description: "Generate SDP (Software Development Plan)"
|
|
25
25
|
- trigger: bmad-mil-generate-ocd
|
|
26
|
-
workflow: "bmm/workflows/mil498/
|
|
26
|
+
workflow: "bmm/workflows/mil498/ocd/workflow.yaml"
|
|
27
27
|
description: "Generate OCD (Operational Concept Description)"
|
|
28
28
|
- trigger: bmad-mil-generate-sss
|
|
29
|
-
workflow: "bmm/workflows/mil498/
|
|
29
|
+
workflow: "bmm/workflows/mil498/sss/workflow.yaml"
|
|
30
30
|
description: "Generate SSS (System/Subsystem Specification)"
|
|
31
31
|
- trigger: bmad-mil-generate-std
|
|
32
|
-
workflow: "bmm/workflows/mil498/
|
|
32
|
+
workflow: "bmm/workflows/mil498/std/workflow.yaml"
|
|
33
33
|
description: "Generate STD (Software Test Description)"
|
|
34
|
+
- trigger: bmad-mil-generate-ssdd
|
|
35
|
+
workflow: "bmm/workflows/mil498/ssdd/workflow.yaml"
|
|
36
|
+
description: "Generate SSDD (System/Subsystem Design Description)"
|
|
@@ -62,12 +62,13 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
62
62
|
<menu>
|
|
63
63
|
<item cmd="MH">[MH] Redisplay Menu Help</item>
|
|
64
64
|
<item cmd="CH">[CH] Chat with Joseph about MIL-STD-498</item>
|
|
65
|
-
<item cmd="GS" workflow="{project-root}/_bmad/bmm/workflows/mil498/
|
|
66
|
-
<item cmd="GD" workflow="{project-root}/_bmad/bmm/workflows/mil498/
|
|
67
|
-
<item cmd="GP" workflow="{project-root}/_bmad/bmm/workflows/mil498/
|
|
68
|
-
<item cmd="GO" workflow="{project-root}/_bmad/bmm/workflows/mil498/
|
|
69
|
-
<item cmd="SS" workflow="{project-root}/_bmad/bmm/workflows/mil498/
|
|
70
|
-
<item cmd="GT" workflow="{project-root}/_bmad/bmm/workflows/mil498/
|
|
65
|
+
<item cmd="GS" workflow="{project-root}/_bmad/bmm/workflows/mil498/srs/workflow.yaml">[GS] Generate SRS: Software Requirements Specification</item>
|
|
66
|
+
<item cmd="GD" workflow="{project-root}/_bmad/bmm/workflows/mil498/sdd/workflow.yaml">[GD] Generate SDD: Software Design Description</item>
|
|
67
|
+
<item cmd="GP" workflow="{project-root}/_bmad/bmm/workflows/mil498/sdp/workflow.yaml">[GP] Generate SDP: Software Development Plan</item>
|
|
68
|
+
<item cmd="GO" workflow="{project-root}/_bmad/bmm/workflows/mil498/ocd/workflow.yaml">[GO] Generate OCD: Operational Concept Description</item>
|
|
69
|
+
<item cmd="SS" workflow="{project-root}/_bmad/bmm/workflows/mil498/sss/workflow.yaml">[SS] Generate SSS: System/Subsystem Specification</item>
|
|
70
|
+
<item cmd="GT" workflow="{project-root}/_bmad/bmm/workflows/mil498/std/workflow.yaml">[GT] Generate STD: Software Test Description</item>
|
|
71
|
+
<item cmd="SD" workflow="{project-root}/_bmad/bmm/workflows/mil498/ssdd/workflow.yaml">[SD] Generate SSDD: System/Subsystem Design Description</item>
|
|
71
72
|
<item cmd="DA">[DA] Dismiss Agent</item>
|
|
72
73
|
</menu>
|
|
73
74
|
</agent>
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Generate Operational Concept Description (OCD)
|
|
2
|
+
|
|
3
|
+
> MIL-STD-498 Data Item Description: DI-IPSC-81430
|
|
4
|
+
|
|
5
|
+
## Objective
|
|
6
|
+
|
|
7
|
+
Generate a compliant OCD document by describing the system from the user's and stakeholder's perspective, extracting operational concepts from existing project artifacts into the MIL-STD-498 OCD template structure.
|
|
8
|
+
|
|
9
|
+
## Step 1 — Discover Project Artifacts
|
|
10
|
+
|
|
11
|
+
Search the project for the following artifacts. Communicate in {communication_language}. Inform {user_name} which artifacts were found and which are missing.
|
|
12
|
+
|
|
13
|
+
| Priority | Artifact | Search Pattern |
|
|
14
|
+
|----------|----------|----------------|
|
|
15
|
+
| Required | PRD | `**/prd.md`, `**/prd-*.md` |
|
|
16
|
+
| Recommended | Architecture | `**/architecture.md`, `**/architecture-*.md` |
|
|
17
|
+
| Recommended | UX Designs | `**/ux-design*.md`, `**/ux-*.md` |
|
|
18
|
+
| Optional | Product Brief | `**/product-brief*.md` |
|
|
19
|
+
| Optional | Epics & Stories | `**/epics*.md`, `**/stories/*.md` |
|
|
20
|
+
|
|
21
|
+
If the **PRD** is missing, warn the user and ask whether to proceed with available data or stop.
|
|
22
|
+
|
|
23
|
+
## Step 2 — Load Template
|
|
24
|
+
|
|
25
|
+
Read the OCD template from:
|
|
26
|
+
`{template}`
|
|
27
|
+
|
|
28
|
+
This defines the required DID sections and content expectations for each paragraph.
|
|
29
|
+
|
|
30
|
+
## Step 3 — Generate Document
|
|
31
|
+
|
|
32
|
+
Write the document in {document_output_language}, populating each template section. The OCD should be written in language accessible to users and stakeholders, minimizing technical jargon.
|
|
33
|
+
|
|
34
|
+
### Section 1: Scope
|
|
35
|
+
- **1.1 Identification**: Extract system name, version, identifiers from PRD
|
|
36
|
+
- **1.2 System overview**: Summarize the system purpose from the user's perspective
|
|
37
|
+
- **1.3 Document overview**: Describe this OCD document's purpose and contents
|
|
38
|
+
|
|
39
|
+
### Section 2: Referenced documents
|
|
40
|
+
- List all project artifacts used as input sources
|
|
41
|
+
|
|
42
|
+
### Section 3: Current system or situation
|
|
43
|
+
- **3.1 Background, objectives, and scope**: Describe the problem domain and business objectives from the PRD
|
|
44
|
+
- **3.2 Operational policies and constraints**: Current business rules and constraints
|
|
45
|
+
- **3.3 Description of current system or situation**: How things work today — existing workflows, pain points, limitations. Include:
|
|
46
|
+
- Operational environment
|
|
47
|
+
- Major components and interconnections
|
|
48
|
+
- Interfaces to external systems
|
|
49
|
+
- User roles and their current interactions
|
|
50
|
+
- **3.4 Users or involved personnel**: Identify all user types and stakeholders from PRD/UX
|
|
51
|
+
- **3.5 Support concept**: Current support and maintenance approach (if applicable)
|
|
52
|
+
|
|
53
|
+
### Section 4: Justification for and nature of changes
|
|
54
|
+
- **4.1 Justification for changes**: Why the new system is needed — business drivers from PRD
|
|
55
|
+
- **4.2 Description of needed changes**: What must change to meet objectives
|
|
56
|
+
- **4.3 Priorities among the changes**: Rank changes by business importance
|
|
57
|
+
|
|
58
|
+
### Section 5: Concept for the proposed system
|
|
59
|
+
- **5.1 Background, objectives, and scope**: Vision for the new system from Product Brief/PRD
|
|
60
|
+
- **5.2 Operational policies and constraints**: New policies and constraints
|
|
61
|
+
- **5.3 Description of the proposed system**: How the new system will work. For each operational scenario:
|
|
62
|
+
- User roles involved
|
|
63
|
+
- Step-by-step workflow
|
|
64
|
+
- System behavior and responses
|
|
65
|
+
- Extract scenarios from UX Designs and Stories
|
|
66
|
+
- **5.4 Users or involved personnel**: How user roles change with the new system
|
|
67
|
+
- **5.5 Support concept**: Planned support and maintenance approach
|
|
68
|
+
|
|
69
|
+
### Section 6: Operational scenarios
|
|
70
|
+
- Document key end-to-end scenarios from UX Designs and Epics
|
|
71
|
+
- Each scenario should describe: trigger, actors, sequence of actions, expected outcomes
|
|
72
|
+
- Include both normal operation and exception/error scenarios
|
|
73
|
+
|
|
74
|
+
### Section 7: Notes
|
|
75
|
+
- Glossary, acronyms, and background information
|
|
76
|
+
|
|
77
|
+
## Step 4 — Validate
|
|
78
|
+
|
|
79
|
+
Before presenting to the user, verify:
|
|
80
|
+
- All template sections are populated or marked "Not applicable" with justification
|
|
81
|
+
- Document is written from the user/stakeholder perspective, not the developer perspective
|
|
82
|
+
- Operational scenarios are complete and realistic
|
|
83
|
+
- Document is written in {document_output_language}
|
|
84
|
+
|
|
85
|
+
## Step 5 — Review
|
|
86
|
+
|
|
87
|
+
Present the complete document to {user_name} for review.
|
|
88
|
+
Highlight any sections where information was inferred or assumptions were made.
|
|
89
|
+
Offer to refine any section based on feedback.
|
|
90
|
+
|
|
91
|
+
## Step 6 — Save
|
|
92
|
+
|
|
93
|
+
Write the final document to:
|
|
94
|
+
`{output_folder}/planning-artifacts/OCD.md`
|
|
95
|
+
|
|
96
|
+
Confirm the file was saved and display a summary of:
|
|
97
|
+
- Number of user roles identified
|
|
98
|
+
- Number of operational scenarios documented
|
|
99
|
+
- Any sections marked "Not applicable"
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
name: "bmad-mil-generate-ocd"
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
description: "Generate a MIL-STD-498 Operational Concept Description (OCD). Use when the user says 'generate OCD' or 'generate operational concept description'"
|
|
4
|
+
|
|
5
|
+
config_source: "{project-root}/_bmad/bmm/config.yaml"
|
|
6
|
+
user_name: "{config_source}:user_name"
|
|
7
|
+
communication_language: "{config_source}:communication_language"
|
|
8
|
+
document_output_language: "{config_source}:document_output_language"
|
|
9
|
+
output_folder: "{config_source}:output_folder"
|
|
10
|
+
date: system-generated
|
|
11
|
+
|
|
12
|
+
installed_path: "{project-root}/_bmad/bmm/workflows/mil498/ocd"
|
|
13
|
+
instructions: "{installed_path}/instructions.md"
|
|
14
|
+
|
|
15
|
+
template: "{project-root}/_bmad/bmm/templates/mil498/OCD.md"
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Generate Software Design Description (SDD)
|
|
2
|
+
|
|
3
|
+
> MIL-STD-498 Data Item Description: DI-IPSC-81435
|
|
4
|
+
|
|
5
|
+
## Objective
|
|
6
|
+
|
|
7
|
+
Generate a compliant SDD document by mapping the system's software design and architecture to the MIL-STD-498 Software Design Description template structure. This document describes the design of a CSCI (Computer Software Configuration Item).
|
|
8
|
+
|
|
9
|
+
**Note**: This workflow uses the SSDD template structure adapted for CSCI-level design, as both SDD and SSDD follow the same DID pattern but at different abstraction levels.
|
|
10
|
+
|
|
11
|
+
## Step 1 — Discover Project Artifacts
|
|
12
|
+
|
|
13
|
+
Search the project for the following artifacts. Communicate in {communication_language}. Inform {user_name} which artifacts were found and which are missing.
|
|
14
|
+
|
|
15
|
+
| Priority | Artifact | Search Pattern |
|
|
16
|
+
|----------|----------|----------------|
|
|
17
|
+
| Required | Architecture | `**/architecture.md`, `**/architecture-*.md` |
|
|
18
|
+
| Required | PRD | `**/prd.md`, `**/prd-*.md` |
|
|
19
|
+
| Recommended | Epics & Stories | `**/epics*.md`, `**/epic-*.md`, `**/stories/*.md` |
|
|
20
|
+
| Recommended | SRS | `**/SRS.md` |
|
|
21
|
+
| Optional | UX Designs | `**/ux-design*.md`, `**/ux-*.md` |
|
|
22
|
+
| Optional | Product Brief | `**/product-brief*.md` |
|
|
23
|
+
|
|
24
|
+
If **required** artifacts are missing, warn the user and ask whether to proceed with available data or stop.
|
|
25
|
+
|
|
26
|
+
## Step 2 — Load Template
|
|
27
|
+
|
|
28
|
+
Read the design document template from:
|
|
29
|
+
`{template}`
|
|
30
|
+
|
|
31
|
+
This defines the required DID sections. Adapt the system-level language to CSCI-level software design.
|
|
32
|
+
|
|
33
|
+
## Step 3 — Generate Document
|
|
34
|
+
|
|
35
|
+
Write the document in {document_output_language}, populating each template section:
|
|
36
|
+
|
|
37
|
+
### Section 1: Scope
|
|
38
|
+
- **1.1 Identification**: Identify the CSCI by name, version, and project-unique identifier
|
|
39
|
+
- **1.2 System overview**: Summarize the system and this CSCI's role within it
|
|
40
|
+
- **1.3 Document overview**: Describe this SDD document's purpose and contents
|
|
41
|
+
|
|
42
|
+
### Section 2: Referenced documents
|
|
43
|
+
- List all project artifacts and external references used
|
|
44
|
+
|
|
45
|
+
### Section 3: CSCI-wide design decisions
|
|
46
|
+
|
|
47
|
+
Describe design decisions that apply across the entire CSCI:
|
|
48
|
+
- **Architectural patterns**: Extract from Architecture document (e.g., MVC, microservices, event-driven)
|
|
49
|
+
- **Technology stack**: Languages, frameworks, libraries, and their versions
|
|
50
|
+
- **Behavioral design**: How the CSCI behaves from the user's perspective
|
|
51
|
+
- **Database/data design**: How data stores appear to users and external systems
|
|
52
|
+
- **Safety, security, privacy**: Approaches to meeting these requirements
|
|
53
|
+
- **Other decisions**: Flexibility, availability, maintainability approaches
|
|
54
|
+
|
|
55
|
+
Each decision should reference the requirement(s) it satisfies.
|
|
56
|
+
|
|
57
|
+
### Section 4: CSCI architectural design
|
|
58
|
+
|
|
59
|
+
- **4.1 CSCI components**: Identify all software components (modules, packages, services). Assign project-unique identifiers. Show static relationships (component diagrams). State each component's purpose and allocated requirements
|
|
60
|
+
- **4.2 Concept of execution**: Describe dynamic behavior — data flow, control flow, state transitions, timing, concurrency, error handling. Use diagrams where helpful
|
|
61
|
+
- **4.3 Interface design**: Document interfaces between components and with external entities. For each interface provide:
|
|
62
|
+
- Data elements with types, sizes, formats, units, ranges
|
|
63
|
+
- Communication methods and protocols
|
|
64
|
+
- Error handling and recovery
|
|
65
|
+
|
|
66
|
+
### Section 5: CSCI detailed design
|
|
67
|
+
|
|
68
|
+
For each component identified in Section 4.1, describe:
|
|
69
|
+
- Internal structure and sub-components
|
|
70
|
+
- Algorithms and processing logic (map from Stories/Epics)
|
|
71
|
+
- Internal data structures and data flows
|
|
72
|
+
- Constraints and limitations
|
|
73
|
+
|
|
74
|
+
### Section 6: Requirements traceability
|
|
75
|
+
- **6.a**: Map each CSCI component to the requirements it addresses (from SRS or PRD)
|
|
76
|
+
- **6.b**: Map each requirement to the components that implement it
|
|
77
|
+
|
|
78
|
+
### Section 7: Notes
|
|
79
|
+
- Glossary of design terms, acronyms, and abbreviations
|
|
80
|
+
|
|
81
|
+
## Step 4 — Validate
|
|
82
|
+
|
|
83
|
+
Before presenting to the user, verify:
|
|
84
|
+
- All template sections are populated or marked "Not applicable" with justification
|
|
85
|
+
- Components have unique identifiers
|
|
86
|
+
- Design decisions reference their driving requirements
|
|
87
|
+
- Interfaces are described consistently from both sides
|
|
88
|
+
- Document is written in {document_output_language}
|
|
89
|
+
|
|
90
|
+
## Step 5 — Review
|
|
91
|
+
|
|
92
|
+
Present the complete document to {user_name} for review.
|
|
93
|
+
Highlight any design decisions where assumptions were made.
|
|
94
|
+
Offer to refine any section based on feedback.
|
|
95
|
+
|
|
96
|
+
## Step 6 — Save
|
|
97
|
+
|
|
98
|
+
Write the final document to:
|
|
99
|
+
`{output_folder}/planning-artifacts/SDD.md`
|
|
100
|
+
|
|
101
|
+
Confirm the file was saved and display a summary of:
|
|
102
|
+
- Number of components identified
|
|
103
|
+
- Number of interfaces documented
|
|
104
|
+
- Any sections marked "Not applicable"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
name: "bmad-mil-generate-sdd"
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
description: "Generate a MIL-STD-498 Software Design Description (SDD). Use when the user says 'generate SDD' or 'generate software design description'"
|
|
4
|
+
|
|
5
|
+
config_source: "{project-root}/_bmad/bmm/config.yaml"
|
|
6
|
+
user_name: "{config_source}:user_name"
|
|
7
|
+
communication_language: "{config_source}:communication_language"
|
|
8
|
+
document_output_language: "{config_source}:document_output_language"
|
|
9
|
+
output_folder: "{config_source}:output_folder"
|
|
10
|
+
date: system-generated
|
|
11
|
+
|
|
12
|
+
installed_path: "{project-root}/_bmad/bmm/workflows/mil498/sdd"
|
|
13
|
+
instructions: "{installed_path}/instructions.md"
|
|
14
|
+
|
|
15
|
+
# SDD uses SSDD template structure adapted for CSCI-level design
|
|
16
|
+
template: "{project-root}/_bmad/bmm/templates/mil498/SSDD.md"
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Generate Software Development Plan (SDP)
|
|
2
|
+
|
|
3
|
+
> MIL-STD-498 Data Item Description: DI-IPSC-81427
|
|
4
|
+
|
|
5
|
+
## Objective
|
|
6
|
+
|
|
7
|
+
Generate a compliant SDP document by extracting project planning, methodology, and management information from existing project artifacts into the MIL-STD-498 SDP template structure.
|
|
8
|
+
|
|
9
|
+
## Step 1 — Discover Project Artifacts
|
|
10
|
+
|
|
11
|
+
Search the project for the following artifacts. Communicate in {communication_language}. Inform {user_name} which artifacts were found and which are missing.
|
|
12
|
+
|
|
13
|
+
| Priority | Artifact | Search Pattern |
|
|
14
|
+
|----------|----------|----------------|
|
|
15
|
+
| Required | Product Brief | `**/product-brief*.md` |
|
|
16
|
+
| Required | PRD | `**/prd.md`, `**/prd-*.md` |
|
|
17
|
+
| Recommended | Architecture | `**/architecture.md`, `**/architecture-*.md` |
|
|
18
|
+
| Recommended | Project Context | `**/project-context.md` |
|
|
19
|
+
| Optional | Sprint Status | `**/sprint-status*.yaml`, `**/sprint-status*.md` |
|
|
20
|
+
| Optional | Epics | `**/epics*.md` |
|
|
21
|
+
|
|
22
|
+
If **required** artifacts are missing, warn the user and ask whether to proceed with available data or stop.
|
|
23
|
+
|
|
24
|
+
## Step 2 — Load Template
|
|
25
|
+
|
|
26
|
+
Read the SDP template from:
|
|
27
|
+
`{template}`
|
|
28
|
+
|
|
29
|
+
This defines the required DID sections and content expectations for each paragraph.
|
|
30
|
+
|
|
31
|
+
## Step 3 — Generate Document
|
|
32
|
+
|
|
33
|
+
Write the document in {document_output_language}, populating each template section:
|
|
34
|
+
|
|
35
|
+
### Section 1: Scope
|
|
36
|
+
- **1.1 Identification**: Extract project name, version, identifiers from PRD
|
|
37
|
+
- **1.2 System overview**: Summarize from Product Brief and PRD
|
|
38
|
+
- **1.3 Document overview**: Describe this SDP document's purpose
|
|
39
|
+
- **1.4 Relationship to other plans**: Reference any related project plans
|
|
40
|
+
|
|
41
|
+
### Section 2: Referenced documents
|
|
42
|
+
- List all project artifacts and standards used
|
|
43
|
+
|
|
44
|
+
### Section 3: Overview of required work
|
|
45
|
+
- **Requirements and constraints**: From PRD scope and constraints
|
|
46
|
+
- **Documentation requirements**: What MIL-STD-498 documents are planned
|
|
47
|
+
- **Life cycle position**: Current project phase
|
|
48
|
+
- **Acquisition strategy**: From Product Brief
|
|
49
|
+
- **Schedule and resource constraints**: From PRD or Sprint Status
|
|
50
|
+
- **Other constraints**: Security, methods, standards, interdependencies
|
|
51
|
+
|
|
52
|
+
### Section 4: Plans for general software development activities
|
|
53
|
+
- **4.1 Software development process**: Describe the BMAD-METHOD lifecycle and how it maps to MIL-STD-498 activities
|
|
54
|
+
- **4.2 General plans for software development**: High-level approach to requirements analysis, design, implementation, testing
|
|
55
|
+
- Map the BMAD workflow (Product Brief → PRD → Architecture → Epics → Stories → Implementation) to MIL-STD-498 activities
|
|
56
|
+
|
|
57
|
+
### Section 5: Plans for performing detailed software development activities
|
|
58
|
+
- **Requirements analysis**: How requirements are gathered and validated (BMAD PRD creation)
|
|
59
|
+
- **Software design**: How architecture and detailed design are produced
|
|
60
|
+
- **Coding and testing**: Implementation approach, testing strategy
|
|
61
|
+
- **Integration**: How components are integrated
|
|
62
|
+
- **Qualification testing**: Test planning and execution approach
|
|
63
|
+
|
|
64
|
+
### Section 6: Schedules and activity network
|
|
65
|
+
- Map Epics/Sprint plans to a development schedule if available
|
|
66
|
+
- Identify milestones and deliverables
|
|
67
|
+
|
|
68
|
+
### Section 7: Project organization and resources
|
|
69
|
+
- Development team structure from Product Brief
|
|
70
|
+
- Tools, environments, and infrastructure from Architecture/Project Context
|
|
71
|
+
|
|
72
|
+
### Additional sections (as defined in template)
|
|
73
|
+
- Populate all remaining template sections based on available project information
|
|
74
|
+
- Mark sections "Not applicable" with justification where information is unavailable
|
|
75
|
+
|
|
76
|
+
## Step 4 — Validate
|
|
77
|
+
|
|
78
|
+
Before presenting to the user, verify:
|
|
79
|
+
- All template sections are populated or marked "Not applicable" with justification
|
|
80
|
+
- Development process description accurately reflects the actual methodology
|
|
81
|
+
- Schedule information is consistent with available Sprint/Epic data
|
|
82
|
+
- Document is written in {document_output_language}
|
|
83
|
+
|
|
84
|
+
## Step 5 — Review
|
|
85
|
+
|
|
86
|
+
Present the complete document to {user_name} for review.
|
|
87
|
+
Highlight any sections where information was inferred or assumptions were made.
|
|
88
|
+
Offer to refine any section based on feedback.
|
|
89
|
+
|
|
90
|
+
## Step 6 — Save
|
|
91
|
+
|
|
92
|
+
Write the final document to:
|
|
93
|
+
`{output_folder}/planning-artifacts/SDP.md`
|
|
94
|
+
|
|
95
|
+
Confirm the file was saved and display a summary of:
|
|
96
|
+
- Development phases identified
|
|
97
|
+
- Key milestones documented
|
|
98
|
+
- Any sections marked "Not applicable"
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
name: "bmad-mil-generate-sdp"
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
description: "Generate a MIL-STD-498 Software Development Plan (SDP). Use when the user says 'generate SDP' or 'generate software development plan'"
|
|
4
|
+
|
|
5
|
+
config_source: "{project-root}/_bmad/bmm/config.yaml"
|
|
6
|
+
user_name: "{config_source}:user_name"
|
|
7
|
+
communication_language: "{config_source}:communication_language"
|
|
8
|
+
document_output_language: "{config_source}:document_output_language"
|
|
9
|
+
output_folder: "{config_source}:output_folder"
|
|
10
|
+
date: system-generated
|
|
11
|
+
|
|
12
|
+
installed_path: "{project-root}/_bmad/bmm/workflows/mil498/sdp"
|
|
13
|
+
instructions: "{installed_path}/instructions.md"
|
|
14
|
+
|
|
15
|
+
template: "{project-root}/_bmad/bmm/templates/mil498/SDP.md"
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Generate Software Requirements Specification (SRS)
|
|
2
|
+
|
|
3
|
+
> MIL-STD-498 Data Item Description: DI-IPSC-81433
|
|
4
|
+
|
|
5
|
+
## Objective
|
|
6
|
+
|
|
7
|
+
Generate a compliant SRS document by extracting and organizing software requirements from existing project artifacts into the MIL-STD-498 SRS template structure.
|
|
8
|
+
|
|
9
|
+
## Step 1 — Discover Project Artifacts
|
|
10
|
+
|
|
11
|
+
Search the project for the following artifacts. Communicate in {communication_language}. Inform {user_name} which artifacts were found and which are missing.
|
|
12
|
+
|
|
13
|
+
| Priority | Artifact | Search Pattern |
|
|
14
|
+
|----------|----------|----------------|
|
|
15
|
+
| Required | PRD | `**/prd.md`, `**/prd-*.md` |
|
|
16
|
+
| Required | Architecture | `**/architecture.md`, `**/architecture-*.md` |
|
|
17
|
+
| Recommended | UX Designs | `**/ux-design*.md`, `**/ux-*.md` |
|
|
18
|
+
| Recommended | Epics | `**/epics*.md`, `**/epic-*.md` |
|
|
19
|
+
| Optional | Product Brief | `**/product-brief*.md` |
|
|
20
|
+
| Optional | Existing SRS | `**/SRS.md` |
|
|
21
|
+
|
|
22
|
+
If **required** artifacts are missing, warn the user and ask whether to proceed with available data or stop.
|
|
23
|
+
|
|
24
|
+
If an existing SRS is found, ask the user whether to update it or generate from scratch.
|
|
25
|
+
|
|
26
|
+
## Step 2 — Load Template
|
|
27
|
+
|
|
28
|
+
Read the SRS template from:
|
|
29
|
+
`{template}`
|
|
30
|
+
|
|
31
|
+
This defines the required DID sections and content expectations for each paragraph.
|
|
32
|
+
|
|
33
|
+
## Step 3 — Generate Document
|
|
34
|
+
|
|
35
|
+
Write the document in {document_output_language}, populating each template section:
|
|
36
|
+
|
|
37
|
+
### Section 1: Scope
|
|
38
|
+
- **1.1 Identification**: Extract software name, version, CSCI identifiers from the PRD and Architecture
|
|
39
|
+
- **1.2 System overview**: Summarize purpose, nature, development history from PRD
|
|
40
|
+
- **1.3 Document overview**: Describe this SRS document's purpose and contents
|
|
41
|
+
|
|
42
|
+
### Section 2: Referenced documents
|
|
43
|
+
- List all project artifacts used as input sources, with their titles and versions
|
|
44
|
+
|
|
45
|
+
### Section 3: Requirements
|
|
46
|
+
|
|
47
|
+
- **3.1 Required states and modes**: Identify operational modes from Architecture (e.g., normal, degraded, maintenance, training). If none, state "The CSCI does not have distinct operational states or modes"
|
|
48
|
+
- **3.2 CSCI capability requirements**: Map each Epic/feature from the PRD to a numbered capability requirement (3.2.1, 3.2.2, etc.). Each requirement must have:
|
|
49
|
+
- A unique project identifier (e.g., SRS-CAP-001)
|
|
50
|
+
- Clear, testable acceptance criteria
|
|
51
|
+
- Parameters: response times, throughput, accuracy, capacity as applicable
|
|
52
|
+
- Error handling and boundary conditions
|
|
53
|
+
- **3.3 CSCI external interface requirements**: Map external interfaces from the Architecture document. Include user interfaces, hardware interfaces, software interfaces, and communication interfaces
|
|
54
|
+
- **3.4 CSCI internal interface requirements**: Document internal component interfaces from Architecture
|
|
55
|
+
- **3.5 CSCI internal data requirements**: Identify persistent data stores, databases, and data models
|
|
56
|
+
- **3.6 Adaptation requirements**: Document any site-specific or installation-specific requirements
|
|
57
|
+
- **3.7 Safety requirements**: Extract from PRD/Architecture if applicable
|
|
58
|
+
- **3.8 Security and privacy requirements**: Extract from PRD/Architecture
|
|
59
|
+
- **3.9 CSCI environment requirements**: Document runtime environment constraints
|
|
60
|
+
- **3.10 Computer resource requirements**: Extract hardware/software constraints from Architecture
|
|
61
|
+
- **3.11 Software quality factors**: Document quality attributes (reliability, maintainability, portability, etc.)
|
|
62
|
+
- **3.12 Design and implementation constraints**: Technology stack constraints from Architecture
|
|
63
|
+
- **3.13 Personnel-related requirements**: Any user skill or training requirements
|
|
64
|
+
- **3.14 Training-related requirements**: If applicable
|
|
65
|
+
- **3.15 Logistics-related requirements**: If applicable
|
|
66
|
+
- **3.16 Other requirements**: Any requirements not covered above
|
|
67
|
+
- **3.17 Packaging requirements**: Deployment and distribution requirements
|
|
68
|
+
- **3.18 Precedence and criticality of requirements**: Rank requirements by priority
|
|
69
|
+
|
|
70
|
+
### Section 4: Qualification provisions
|
|
71
|
+
- For each requirement in Section 3, specify the qualification method: Demonstration, Test, Analysis, or Inspection
|
|
72
|
+
|
|
73
|
+
### Section 5: Requirements traceability
|
|
74
|
+
- **5.a**: Map each SRS requirement to its parent system requirement
|
|
75
|
+
- **5.b**: Map each system requirement to the SRS requirements that address it
|
|
76
|
+
|
|
77
|
+
### Section 6: Notes
|
|
78
|
+
- Glossary of terms, acronyms, and abbreviations used in this document
|
|
79
|
+
|
|
80
|
+
## Step 4 — Validate
|
|
81
|
+
|
|
82
|
+
Before presenting to the user, verify:
|
|
83
|
+
- All template sections are populated or marked "Not applicable" with justification
|
|
84
|
+
- Every requirement has a unique identifier (SRS-xxx-nnn format)
|
|
85
|
+
- Every requirement is testable and traceable
|
|
86
|
+
- Cross-references between sections are consistent
|
|
87
|
+
- Document is written in {document_output_language}
|
|
88
|
+
|
|
89
|
+
## Step 5 — Review
|
|
90
|
+
|
|
91
|
+
Present the complete document to {user_name} for review.
|
|
92
|
+
Highlight any sections where information was inferred or assumptions were made.
|
|
93
|
+
Offer to refine any section based on feedback.
|
|
94
|
+
|
|
95
|
+
## Step 6 — Save
|
|
96
|
+
|
|
97
|
+
Write the final document to:
|
|
98
|
+
`{output_folder}/planning-artifacts/SRS.md`
|
|
99
|
+
|
|
100
|
+
Confirm the file was saved and display a summary of:
|
|
101
|
+
- Total number of requirements identified
|
|
102
|
+
- Number of capabilities documented
|
|
103
|
+
- Any sections marked "Not applicable"
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
name: "bmad-mil-generate-srs"
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
description: "Generate a MIL-STD-498 Software Requirements Specification (SRS). Use when the user says 'generate SRS' or 'generate software requirements specification'"
|
|
4
|
+
|
|
5
|
+
config_source: "{project-root}/_bmad/bmm/config.yaml"
|
|
6
|
+
user_name: "{config_source}:user_name"
|
|
7
|
+
communication_language: "{config_source}:communication_language"
|
|
8
|
+
document_output_language: "{config_source}:document_output_language"
|
|
9
|
+
output_folder: "{config_source}:output_folder"
|
|
10
|
+
date: system-generated
|
|
11
|
+
|
|
12
|
+
installed_path: "{project-root}/_bmad/bmm/workflows/mil498/srs"
|
|
13
|
+
instructions: "{installed_path}/instructions.md"
|
|
14
|
+
|
|
15
|
+
template: "{project-root}/_bmad/bmm/templates/mil498/SRS.md"
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Generate System/Subsystem Design Description (SSDD)
|
|
2
|
+
|
|
3
|
+
> MIL-STD-498 Data Item Description: DI-IPSC-81432
|
|
4
|
+
|
|
5
|
+
## Objective
|
|
6
|
+
|
|
7
|
+
Generate a compliant SSDD document by extracting and organizing system architectural design decisions from existing project artifacts into the MIL-STD-498 SSDD template structure. The SSDD describes the system-level design — how the system is organized into components (HWCIs, CSCIs, and manual operations) and how they interact.
|
|
8
|
+
|
|
9
|
+
## Step 1 — Discover Project Artifacts
|
|
10
|
+
|
|
11
|
+
Search the project for the following artifacts. Communicate in {communication_language}. Inform {user_name} which artifacts were found and which are missing.
|
|
12
|
+
|
|
13
|
+
| Priority | Artifact | Search Pattern |
|
|
14
|
+
|----------|----------|----------------|
|
|
15
|
+
| Required | PRD | `**/prd.md`, `**/prd-*.md` |
|
|
16
|
+
| Required | Architecture | `**/architecture.md`, `**/architecture-*.md` |
|
|
17
|
+
| Recommended | Product Brief | `**/product-brief*.md` |
|
|
18
|
+
| Recommended | SSS | `**/SSS.md` |
|
|
19
|
+
| Optional | UX Designs | `**/ux-design*.md`, `**/ux-*.md` |
|
|
20
|
+
| Optional | Epics | `**/epics*.md`, `**/epic-*.md` |
|
|
21
|
+
| Optional | Any client documentation | Ask {user_name} if there are additional documents to consider |
|
|
22
|
+
|
|
23
|
+
If **required** artifacts are missing, warn the user and ask whether to proceed with available data or stop.
|
|
24
|
+
|
|
25
|
+
## Step 2 — Load Template
|
|
26
|
+
|
|
27
|
+
Read the SSDD template from:
|
|
28
|
+
`{template}`
|
|
29
|
+
|
|
30
|
+
This defines the required DID sections and content expectations for each paragraph.
|
|
31
|
+
|
|
32
|
+
## Step 3 — Generate Document
|
|
33
|
+
|
|
34
|
+
Write the document in {document_output_language}, populating each template section:
|
|
35
|
+
|
|
36
|
+
### Section 1: Scope
|
|
37
|
+
- **1.1 Identification**: Extract system name, version, and project-unique identifiers from PRD/Product Brief
|
|
38
|
+
- **1.2 System overview**: Summarize system purpose, history, stakeholders, and operating sites from Product Brief and PRD
|
|
39
|
+
- **1.3 Document overview**: Describe this SSDD document's purpose, contents, and any security/privacy considerations
|
|
40
|
+
|
|
41
|
+
### Section 2: Referenced documents
|
|
42
|
+
- List all project artifacts, standards, and external references used as inputs
|
|
43
|
+
|
|
44
|
+
### Section 3: System-wide design decisions
|
|
45
|
+
|
|
46
|
+
Document design decisions that apply across the entire system. For each decision, reference the requirement(s) it satisfies:
|
|
47
|
+
|
|
48
|
+
- **a. Input/output design**: System inputs, outputs, and user/external interfaces. Describe what the system accepts and produces from the Architecture document
|
|
49
|
+
- **b. Behavioral design**: System behavior in response to inputs and conditions — actions, response times, performance characteristics, algorithms, handling of invalid inputs. Extract from PRD and Architecture
|
|
50
|
+
- **c. Database/data design**: How databases and data files appear to users. Data models and storage approaches from Architecture
|
|
51
|
+
- **d. Safety, security, privacy**: Selected approaches to meeting these requirements from PRD
|
|
52
|
+
- **e. Hardware design choices**: Physical characteristics if applicable (for hardware-software systems)
|
|
53
|
+
- **f. Other system-wide decisions**: Flexibility, availability, maintainability approaches. Technology stack selections and their rationale from Architecture
|
|
54
|
+
|
|
55
|
+
### Section 4: System architectural design
|
|
56
|
+
|
|
57
|
+
- **4.1 System components**:
|
|
58
|
+
- Identify all system components (CSCIs, HWCIs, manual operations) from the Architecture document
|
|
59
|
+
- Assign project-unique identifiers to each component
|
|
60
|
+
- Show static relationships using component/block diagrams
|
|
61
|
+
- State each component's purpose and the system requirements allocated to it
|
|
62
|
+
- Identify each component's development status (new, reuse, reengineer)
|
|
63
|
+
- For computer systems: describe hardware resources (processors, memory, I/O, storage, networking) with specifications
|
|
64
|
+
|
|
65
|
+
- **4.2 Concept of execution**:
|
|
66
|
+
- Describe dynamic relationships between components from Architecture
|
|
67
|
+
- Include: execution flow, data flow, state transitions, timing/sequencing, priorities, interrupt handling, concurrency, dynamic allocation
|
|
68
|
+
- Use sequence diagrams or flow diagrams where helpful
|
|
69
|
+
|
|
70
|
+
- **4.3 Interface design**:
|
|
71
|
+
- **4.3.1 Interface identification and diagrams**: List all interfaces with unique identifiers, identify fixed vs. developing interfaces, provide interface diagrams
|
|
72
|
+
- **4.3.x (per interface)**: For each interface, document:
|
|
73
|
+
- Interfacing entities and their characteristics
|
|
74
|
+
- Data elements: names, types, sizes, formats, units, ranges, accuracy, constraints
|
|
75
|
+
- Data assemblies: records, messages, files, displays with structure and relationships
|
|
76
|
+
- Communication methods: links, message formats, flow control, data rates, routing
|
|
77
|
+
- Protocols: layers, packeting, error control, synchronization
|
|
78
|
+
- Physical compatibility considerations
|
|
79
|
+
|
|
80
|
+
### Section 5: Requirements traceability
|
|
81
|
+
- **5.a**: Map each system component to the system requirements it satisfies
|
|
82
|
+
- **5.b**: Map each system requirement to the components that address it
|
|
83
|
+
|
|
84
|
+
### Section 6: Notes
|
|
85
|
+
- Glossary of terms, acronyms, and abbreviations
|
|
86
|
+
- Background information to aid understanding
|
|
87
|
+
|
|
88
|
+
## Step 4 — Validate
|
|
89
|
+
|
|
90
|
+
Before presenting to the user, verify:
|
|
91
|
+
- All template sections are populated or marked "Not applicable" with justification
|
|
92
|
+
- Every component has a unique identifier
|
|
93
|
+
- System-wide design decisions reference their driving requirements
|
|
94
|
+
- Interface descriptions are complete and consistent from both sides
|
|
95
|
+
- Requirements traceability covers all system requirements
|
|
96
|
+
- Document is written in {document_output_language}
|
|
97
|
+
|
|
98
|
+
## Step 5 — Review
|
|
99
|
+
|
|
100
|
+
Present the complete document to {user_name} for review.
|
|
101
|
+
Highlight any sections where information was inferred or assumptions were made.
|
|
102
|
+
Specifically ask about:
|
|
103
|
+
- Are all system components identified?
|
|
104
|
+
- Are the interface descriptions accurate?
|
|
105
|
+
- Are there additional design decisions not captured in the Architecture?
|
|
106
|
+
|
|
107
|
+
Offer to refine any section based on feedback.
|
|
108
|
+
|
|
109
|
+
## Step 6 — Save
|
|
110
|
+
|
|
111
|
+
Write the final document to:
|
|
112
|
+
`{output_folder}/planning-artifacts/SSDD.md`
|
|
113
|
+
|
|
114
|
+
Confirm the file was saved and display a summary of:
|
|
115
|
+
- Number of system components identified
|
|
116
|
+
- Number of interfaces documented
|
|
117
|
+
- Number of system-wide design decisions captured
|
|
118
|
+
- Any sections marked "Not applicable"
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
name: "bmad-mil-generate-ssdd"
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
description: "Generate a MIL-STD-498 System/Subsystem Design Description (SSDD). Use when the user says 'generate SSDD' or 'generate system design description'"
|
|
4
|
+
|
|
5
|
+
config_source: "{project-root}/_bmad/bmm/config.yaml"
|
|
6
|
+
user_name: "{config_source}:user_name"
|
|
7
|
+
communication_language: "{config_source}:communication_language"
|
|
8
|
+
document_output_language: "{config_source}:document_output_language"
|
|
9
|
+
output_folder: "{config_source}:output_folder"
|
|
10
|
+
date: system-generated
|
|
11
|
+
|
|
12
|
+
installed_path: "{project-root}/_bmad/bmm/workflows/mil498/ssdd"
|
|
13
|
+
instructions: "{installed_path}/instructions.md"
|
|
14
|
+
|
|
15
|
+
template: "{project-root}/_bmad/bmm/templates/mil498/SSDD.md"
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Generate System/Subsystem Specification (SSS)
|
|
2
|
+
|
|
3
|
+
> MIL-STD-498 Data Item Description: DI-IPSC-81431
|
|
4
|
+
|
|
5
|
+
## Objective
|
|
6
|
+
|
|
7
|
+
Generate a compliant SSS document by extracting and organizing system-level requirements from existing project artifacts into the MIL-STD-498 SSS template structure. The SSS specifies requirements at the system or subsystem level, not at the software (CSCI) level.
|
|
8
|
+
|
|
9
|
+
## Step 1 — Discover Project Artifacts
|
|
10
|
+
|
|
11
|
+
Search the project for the following artifacts. Communicate in {communication_language}. Inform {user_name} which artifacts were found and which are missing.
|
|
12
|
+
|
|
13
|
+
| Priority | Artifact | Search Pattern |
|
|
14
|
+
|----------|----------|----------------|
|
|
15
|
+
| Required | Product Brief | `**/product-brief*.md` |
|
|
16
|
+
| Required | PRD | `**/prd.md`, `**/prd-*.md` |
|
|
17
|
+
| Recommended | Architecture | `**/architecture.md`, `**/architecture-*.md` |
|
|
18
|
+
| Optional | OCD | `**/OCD.md` |
|
|
19
|
+
| Optional | UX Designs | `**/ux-design*.md` |
|
|
20
|
+
|
|
21
|
+
If **required** artifacts are missing, warn the user and ask whether to proceed with available data or stop.
|
|
22
|
+
|
|
23
|
+
## Step 2 — Load Template
|
|
24
|
+
|
|
25
|
+
Read the SSS template from:
|
|
26
|
+
`{template}`
|
|
27
|
+
|
|
28
|
+
This defines the required DID sections and content expectations for each paragraph.
|
|
29
|
+
|
|
30
|
+
## Step 3 — Generate Document
|
|
31
|
+
|
|
32
|
+
Write the document in {document_output_language}, populating each template section. Keep requirements at the **system/subsystem level** — avoid low-level software implementation details.
|
|
33
|
+
|
|
34
|
+
### Section 1: Scope
|
|
35
|
+
- **1.1 Identification**: Extract system name, version, identifiers from PRD/Product Brief
|
|
36
|
+
- **1.2 System overview**: Summarize system purpose, nature, and stakeholders
|
|
37
|
+
- **1.3 Document overview**: Describe this SSS document's purpose and contents
|
|
38
|
+
|
|
39
|
+
### Section 2: Referenced documents
|
|
40
|
+
- List all project artifacts and external standards used
|
|
41
|
+
|
|
42
|
+
### Section 3: Requirements
|
|
43
|
+
|
|
44
|
+
- **3.1 Required states and modes**: Identify system-level operational states from Architecture/PRD (e.g., operational, maintenance, degraded, emergency). If none, state so explicitly
|
|
45
|
+
- **3.2 System capability requirements**: Map high-level PRD features and Product Brief goals to system capabilities. Each capability requirement (3.2.1, 3.2.2, etc.) must have:
|
|
46
|
+
- A unique identifier (SSS-CAP-001 format)
|
|
47
|
+
- Clear, testable statement
|
|
48
|
+
- Performance parameters where applicable
|
|
49
|
+
- Behavior under error conditions
|
|
50
|
+
- **3.3 System external interface requirements**: Map top-level external interfaces from Architecture — other systems, hardware, users, networks
|
|
51
|
+
- **3.4 System internal interface requirements**: Map interfaces between major subsystems or components
|
|
52
|
+
- **3.5 System internal data requirements**: System-level data stores, data flows between subsystems
|
|
53
|
+
- **3.6 Adaptation requirements**: Installation and site-specific configuration needs
|
|
54
|
+
- **3.7 Safety requirements**: System-level safety requirements
|
|
55
|
+
- **3.8 Security and privacy requirements**: System-level security requirements from PRD
|
|
56
|
+
- **3.9 System environment requirements**: Physical, regulatory, and operational environment constraints
|
|
57
|
+
- **3.10 Computer resource requirements**: System-level hardware and infrastructure requirements
|
|
58
|
+
- **3.11 System quality factors**: Reliability, availability, maintainability, portability requirements
|
|
59
|
+
- **3.12 Design and implementation constraints**: Technology and methodology constraints
|
|
60
|
+
- **3.13-3.18**: Additional requirement categories as defined in the template
|
|
61
|
+
|
|
62
|
+
### Section 4: Qualification provisions
|
|
63
|
+
- For each requirement in Section 3, specify the qualification method: Demonstration, Test, Analysis, or Inspection
|
|
64
|
+
|
|
65
|
+
### Section 5: Requirements traceability
|
|
66
|
+
- **5.a**: For subsystem specs, map each requirement to parent system requirements
|
|
67
|
+
- **5.b**: Map parent requirements to subsystem requirements that address them
|
|
68
|
+
|
|
69
|
+
### Section 6: Notes
|
|
70
|
+
- Glossary of terms, acronyms, and abbreviations
|
|
71
|
+
|
|
72
|
+
## Step 4 — Validate
|
|
73
|
+
|
|
74
|
+
Before presenting to the user, verify:
|
|
75
|
+
- All template sections are populated or marked "Not applicable" with justification
|
|
76
|
+
- Requirements are at the system level (not CSCI/software level)
|
|
77
|
+
- Every requirement has a unique identifier and is testable
|
|
78
|
+
- Qualification methods are specified for all requirements
|
|
79
|
+
- Document is written in {document_output_language}
|
|
80
|
+
|
|
81
|
+
## Step 5 — Review
|
|
82
|
+
|
|
83
|
+
Present the complete document to {user_name} for review.
|
|
84
|
+
Highlight any sections where information was inferred or assumptions were made.
|
|
85
|
+
Offer to refine any section based on feedback.
|
|
86
|
+
|
|
87
|
+
## Step 6 — Save
|
|
88
|
+
|
|
89
|
+
Write the final document to:
|
|
90
|
+
`{output_folder}/planning-artifacts/SSS.md`
|
|
91
|
+
|
|
92
|
+
Confirm the file was saved and display a summary of:
|
|
93
|
+
- Total system requirements identified
|
|
94
|
+
- Number of capabilities documented
|
|
95
|
+
- Qualification methods assigned
|
|
96
|
+
- Any sections marked "Not applicable"
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
name: "bmad-mil-generate-sss"
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
description: "Generate a MIL-STD-498 System/Subsystem Specification (SSS). Use when the user says 'generate SSS' or 'generate system specification'"
|
|
4
|
+
|
|
5
|
+
config_source: "{project-root}/_bmad/bmm/config.yaml"
|
|
6
|
+
user_name: "{config_source}:user_name"
|
|
7
|
+
communication_language: "{config_source}:communication_language"
|
|
8
|
+
document_output_language: "{config_source}:document_output_language"
|
|
9
|
+
output_folder: "{config_source}:output_folder"
|
|
10
|
+
date: system-generated
|
|
11
|
+
|
|
12
|
+
installed_path: "{project-root}/_bmad/bmm/workflows/mil498/sss"
|
|
13
|
+
instructions: "{installed_path}/instructions.md"
|
|
14
|
+
|
|
15
|
+
template: "{project-root}/_bmad/bmm/templates/mil498/SSS.md"
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Generate Software Test Description (STD)
|
|
2
|
+
|
|
3
|
+
> MIL-STD-498 Data Item Description: DI-IPSC-81439
|
|
4
|
+
|
|
5
|
+
## Objective
|
|
6
|
+
|
|
7
|
+
Generate a compliant STD document by mapping test cases and procedures from project artifacts to the MIL-STD-498 STD template structure. The STD defines the test preparations, test cases, and test procedures for software qualification testing.
|
|
8
|
+
|
|
9
|
+
## Step 1 — Discover Project Artifacts
|
|
10
|
+
|
|
11
|
+
Search the project for the following artifacts. Communicate in {communication_language}. Inform {user_name} which artifacts were found and which are missing.
|
|
12
|
+
|
|
13
|
+
| Priority | Artifact | Search Pattern |
|
|
14
|
+
|----------|----------|----------------|
|
|
15
|
+
| Required | Epics & Stories | `**/epics*.md`, `**/epic-*.md`, `**/stories/*.md` |
|
|
16
|
+
| Required | Architecture | `**/architecture.md`, `**/architecture-*.md` |
|
|
17
|
+
| Recommended | SRS | `**/SRS.md` |
|
|
18
|
+
| Recommended | PRD | `**/prd.md`, `**/prd-*.md` |
|
|
19
|
+
| Optional | Existing test files | `**/test/**`, `**/tests/**`, `**/__tests__/**`, `**/*.test.*`, `**/*.spec.*` |
|
|
20
|
+
|
|
21
|
+
If **required** artifacts are missing, warn the user and ask whether to proceed with available data or stop.
|
|
22
|
+
|
|
23
|
+
## Step 2 — Load Template
|
|
24
|
+
|
|
25
|
+
Read the STD template from:
|
|
26
|
+
`{template}`
|
|
27
|
+
|
|
28
|
+
This defines the required DID sections and content expectations for each paragraph.
|
|
29
|
+
|
|
30
|
+
## Step 3 — Generate Document
|
|
31
|
+
|
|
32
|
+
Write the document in {document_output_language}, populating each template section:
|
|
33
|
+
|
|
34
|
+
### Section 1: Scope
|
|
35
|
+
- **1.1 Identification**: Extract system and software identifiers from PRD/Architecture
|
|
36
|
+
- **1.2 System overview**: Summarize the system and the CSCI(s) being tested
|
|
37
|
+
- **1.3 Document overview**: Describe this STD document's purpose and contents
|
|
38
|
+
|
|
39
|
+
### Section 2: Referenced documents
|
|
40
|
+
- List all project artifacts, test standards, and other references used
|
|
41
|
+
|
|
42
|
+
### Section 3: Test preparations
|
|
43
|
+
|
|
44
|
+
For each test identified, provide (organized as 3.x subsections):
|
|
45
|
+
|
|
46
|
+
- **3.x.1 Hardware preparation**: Test environment hardware requirements from Architecture — servers, devices, network configuration. Include setup procedures
|
|
47
|
+
- **3.x.2 Software preparation**: Test environment software requirements — OS, databases, dependencies, test frameworks. Include installation and configuration steps
|
|
48
|
+
- **3.x.3 Other pre-test preparations**: Test data setup, user accounts, external service mocks, environment variables. Include any prerequisites that must be satisfied
|
|
49
|
+
|
|
50
|
+
### Section 4: Test descriptions
|
|
51
|
+
|
|
52
|
+
For each test case (organized as 4.x subsections), derive from Story acceptance criteria and SRS requirements:
|
|
53
|
+
|
|
54
|
+
- **4.x.1 Test identifier**: Unique identifier (STD-TEST-001 format)
|
|
55
|
+
- **4.x.2 Test objective**: What requirement(s) this test verifies. Reference SRS requirement IDs if available
|
|
56
|
+
- **4.x.3 Input data**: Specific test inputs, preconditions, and initial state
|
|
57
|
+
- **4.x.4 Expected results**: Precise expected outputs, state changes, and behaviors
|
|
58
|
+
- **4.x.5 Criteria for evaluating results**: Pass/fail criteria
|
|
59
|
+
- **4.x.6 Test procedure**: Step-by-step procedure to execute the test
|
|
60
|
+
- **4.x.7 Assumptions and constraints**: Any assumptions about the test environment
|
|
61
|
+
|
|
62
|
+
Group test cases by capability/feature (mapping to Epics) for clarity.
|
|
63
|
+
|
|
64
|
+
### Section 5: Requirements traceability
|
|
65
|
+
- Map each test case to the SRS requirement(s) it verifies
|
|
66
|
+
- Ensure every SRS requirement has at least one associated test case
|
|
67
|
+
- Identify any requirements that cannot be tested and explain why
|
|
68
|
+
|
|
69
|
+
### Section 6: Notes
|
|
70
|
+
- Glossary of test terminology and abbreviations
|
|
71
|
+
- References to test automation frameworks or tools used
|
|
72
|
+
|
|
73
|
+
## Step 4 — Validate
|
|
74
|
+
|
|
75
|
+
Before presenting to the user, verify:
|
|
76
|
+
- All template sections are populated or marked "Not applicable" with justification
|
|
77
|
+
- Every test case has a unique identifier and clear pass/fail criteria
|
|
78
|
+
- Requirements traceability is complete (all requirements covered)
|
|
79
|
+
- Test procedures are detailed enough to be repeatable
|
|
80
|
+
- Document is written in {document_output_language}
|
|
81
|
+
|
|
82
|
+
## Step 5 — Review
|
|
83
|
+
|
|
84
|
+
Present the complete document to {user_name} for review.
|
|
85
|
+
Highlight any requirements without test coverage.
|
|
86
|
+
Offer to refine any section based on feedback.
|
|
87
|
+
|
|
88
|
+
## Step 6 — Save
|
|
89
|
+
|
|
90
|
+
Write the final document to:
|
|
91
|
+
`{output_folder}/planning-artifacts/STD.md`
|
|
92
|
+
|
|
93
|
+
Confirm the file was saved and display a summary of:
|
|
94
|
+
- Total number of test cases defined
|
|
95
|
+
- Requirements coverage percentage
|
|
96
|
+
- Any untestable requirements identified
|
|
97
|
+
- Any sections marked "Not applicable"
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
name: "bmad-mil-generate-std"
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
description: "Generate a MIL-STD-498 Software Test Description (STD). Use when the user says 'generate STD' or 'generate software test description'"
|
|
4
|
+
|
|
5
|
+
config_source: "{project-root}/_bmad/bmm/config.yaml"
|
|
6
|
+
user_name: "{config_source}:user_name"
|
|
7
|
+
communication_language: "{config_source}:communication_language"
|
|
8
|
+
document_output_language: "{config_source}:document_output_language"
|
|
9
|
+
output_folder: "{config_source}:output_folder"
|
|
10
|
+
date: system-generated
|
|
11
|
+
|
|
12
|
+
installed_path: "{project-root}/_bmad/bmm/workflows/mil498/std"
|
|
13
|
+
instructions: "{installed_path}/instructions.md"
|
|
14
|
+
|
|
15
|
+
template: "{project-root}/_bmad/bmm/templates/mil498/STD.md"
|
package/lib/bmad.js
CHANGED
|
@@ -74,6 +74,7 @@ async function applyCustomizations(projectRoot = process.cwd(), modules = ['bmm'
|
|
|
74
74
|
};
|
|
75
75
|
|
|
76
76
|
// 1. Apply YAML customizations (filtered by selected agents)
|
|
77
|
+
// These must be in place BEFORE recompile so BMAD can use them during compilation
|
|
77
78
|
if (fs.existsSync(sourceDir)) {
|
|
78
79
|
await fs.ensureDir(configTargetDir);
|
|
79
80
|
const files = await fs.readdir(sourceDir);
|
|
@@ -89,7 +90,8 @@ async function applyCustomizations(projectRoot = process.cwd(), modules = ['bmm'
|
|
|
89
90
|
}
|
|
90
91
|
}
|
|
91
92
|
|
|
92
|
-
// 2. Apply detailed agent templates (.md files, filtered by selected agents)
|
|
93
|
+
// 2. Apply detailed agent templates to custom dir (.md files, filtered by selected agents)
|
|
94
|
+
// These go to _bmad/custom/agents/ for BMAD's custom agent resolution
|
|
93
95
|
if (fs.existsSync(sourceDir)) {
|
|
94
96
|
await fs.ensureDir(agentTargetDir);
|
|
95
97
|
const files = await fs.readdir(sourceDir);
|
|
@@ -104,21 +106,9 @@ async function applyCustomizations(projectRoot = process.cwd(), modules = ['bmm'
|
|
|
104
106
|
}
|
|
105
107
|
}
|
|
106
108
|
|
|
107
|
-
//
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
await fs.copy(workflowSourceDir, workflowTargetDir);
|
|
111
|
-
console.log(chalk.cyan(` + Applied BMAD workflows`));
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// 4. Apply MIL-STD-498 templates
|
|
115
|
-
if (fs.existsSync(templateSourceDir)) {
|
|
116
|
-
await fs.ensureDir(templateTargetDir);
|
|
117
|
-
await fs.copy(templateSourceDir, templateTargetDir);
|
|
118
|
-
console.log(chalk.cyan(` + Applied MIL-STD-498 templates`));
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
// Recompile agents to apply changes
|
|
109
|
+
// Recompile agents to apply YAML customizations
|
|
110
|
+
// IMPORTANT: Steps 3-5 must run AFTER recompile because the recompile regenerates
|
|
111
|
+
// the _bmad/bmm/ tree and would wipe any files placed there beforehand.
|
|
122
112
|
let command = 'npx bmad-method install --yes';
|
|
123
113
|
if (modules && modules.length > 0) {
|
|
124
114
|
command += ` --modules ${modules.join(',')}`;
|
|
@@ -135,7 +125,39 @@ async function applyCustomizations(projectRoot = process.cwd(), modules = ['bmm'
|
|
|
135
125
|
console.error(chalk.red(` BMAD recompile failed: ${error.message}`));
|
|
136
126
|
}
|
|
137
127
|
|
|
138
|
-
//
|
|
128
|
+
// 3. Apply workflows (AFTER recompile so they persist)
|
|
129
|
+
if (fs.existsSync(workflowSourceDir)) {
|
|
130
|
+
await fs.ensureDir(workflowTargetDir);
|
|
131
|
+
await fs.copy(workflowSourceDir, workflowTargetDir);
|
|
132
|
+
console.log(chalk.cyan(` + Applied BMAD workflows`));
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// 4. Apply MIL-STD-498 templates (AFTER recompile so they persist)
|
|
136
|
+
if (fs.existsSync(templateSourceDir)) {
|
|
137
|
+
await fs.ensureDir(templateTargetDir);
|
|
138
|
+
await fs.copy(templateSourceDir, templateTargetDir);
|
|
139
|
+
console.log(chalk.cyan(` + Applied MIL-STD-498 templates`));
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// 5. Copy agent templates to compiled location (AFTER recompile)
|
|
143
|
+
// BMAD recompile doesn't generate custom agents (mil498, cyber) in _bmad/bmm/agents/.
|
|
144
|
+
// Without this, updateAgentInstructions() creates the file with only the MA-AGENTS block.
|
|
145
|
+
if (fs.existsSync(sourceDir)) {
|
|
146
|
+
const compiledAgentDir = path.join(projectRoot, BMAD_DIR, 'bmm', 'agents');
|
|
147
|
+
await fs.ensureDir(compiledAgentDir);
|
|
148
|
+
const files = await fs.readdir(sourceDir);
|
|
149
|
+
for (const file of files) {
|
|
150
|
+
if (file.endsWith('.md')) {
|
|
151
|
+
const matchingAgentId = Object.entries(agentMdMap).find(([, mdFile]) => mdFile === file)?.[0];
|
|
152
|
+
if (!matchingAgentId || selectedAgentIds.length === 0 || selectedAgentIds.includes(matchingAgentId)) {
|
|
153
|
+
await fs.copy(path.join(sourceDir, file), path.join(compiledAgentDir, file));
|
|
154
|
+
console.log(chalk.cyan(` + Applied compiled agent: ${file}`));
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// 6. Register custom workflows in BMAD CSV registries (after recompile)
|
|
139
161
|
if (selectedAgentIds.length === 0 || selectedAgentIds.includes('bmm-mil498')) {
|
|
140
162
|
await registerMilWorkflows(projectRoot);
|
|
141
163
|
}
|
|
@@ -149,65 +171,71 @@ async function registerMilWorkflows(projectRoot) {
|
|
|
149
171
|
const milEntries = [
|
|
150
172
|
{
|
|
151
173
|
name: 'Generate SRS', code: 'GS',
|
|
152
|
-
file: '_bmad/bmm/workflows/mil498/
|
|
174
|
+
file: '_bmad/bmm/workflows/mil498/srs/workflow.yaml',
|
|
153
175
|
command: 'bmad-mil-generate-srs',
|
|
154
176
|
description: 'Generate a MIL-STD-498 Software Requirements Specification from BMAD project artifacts'
|
|
155
177
|
},
|
|
156
178
|
{
|
|
157
179
|
name: 'Generate SDD', code: 'GD',
|
|
158
|
-
file: '_bmad/bmm/workflows/mil498/
|
|
180
|
+
file: '_bmad/bmm/workflows/mil498/sdd/workflow.yaml',
|
|
159
181
|
command: 'bmad-mil-generate-sdd',
|
|
160
182
|
description: 'Generate a MIL-STD-498 Software Design Description from architecture and design docs'
|
|
161
183
|
},
|
|
162
184
|
{
|
|
163
185
|
name: 'Generate SDP', code: 'GP',
|
|
164
|
-
file: '_bmad/bmm/workflows/mil498/
|
|
186
|
+
file: '_bmad/bmm/workflows/mil498/sdp/workflow.yaml',
|
|
165
187
|
command: 'bmad-mil-generate-sdp',
|
|
166
188
|
description: 'Generate a MIL-STD-498 Software Development Plan from project planning artifacts'
|
|
167
189
|
},
|
|
168
190
|
{
|
|
169
191
|
name: 'Generate OCD', code: 'GO',
|
|
170
|
-
file: '_bmad/bmm/workflows/mil498/
|
|
192
|
+
file: '_bmad/bmm/workflows/mil498/ocd/workflow.yaml',
|
|
171
193
|
command: 'bmad-mil-generate-ocd',
|
|
172
194
|
description: 'Generate a MIL-STD-498 Operational Concept Description from PRD and architecture'
|
|
173
195
|
},
|
|
174
196
|
{
|
|
175
197
|
name: 'Generate SSS', code: 'SS',
|
|
176
|
-
file: '_bmad/bmm/workflows/mil498/
|
|
198
|
+
file: '_bmad/bmm/workflows/mil498/sss/workflow.yaml',
|
|
177
199
|
command: 'bmad-mil-generate-sss',
|
|
178
200
|
description: 'Generate a MIL-STD-498 System/Subsystem Specification from project requirements'
|
|
179
201
|
},
|
|
180
202
|
{
|
|
181
203
|
name: 'Generate STD', code: 'GT',
|
|
182
|
-
file: '_bmad/bmm/workflows/mil498/
|
|
204
|
+
file: '_bmad/bmm/workflows/mil498/std/workflow.yaml',
|
|
183
205
|
command: 'bmad-mil-generate-std',
|
|
184
206
|
description: 'Generate a MIL-STD-498 Software Test Description from epics stories and architecture'
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
name: 'Generate SSDD', code: 'SD',
|
|
210
|
+
file: '_bmad/bmm/workflows/mil498/ssdd/workflow.yaml',
|
|
211
|
+
command: 'bmad-mil-generate-ssdd',
|
|
212
|
+
description: 'Generate a MIL-STD-498 System/Subsystem Design Description from architecture and PRD'
|
|
185
213
|
}
|
|
186
214
|
];
|
|
187
215
|
|
|
188
|
-
// Append
|
|
216
|
+
// Append or update entries in module-help.csv
|
|
189
217
|
const moduleHelpPath = path.join(projectRoot, BMAD_DIR, 'bmm', 'module-help.csv');
|
|
190
218
|
if (fs.existsSync(moduleHelpPath)) {
|
|
191
219
|
let content = await fs.readFile(moduleHelpPath, 'utf-8');
|
|
192
220
|
for (const entry of milEntries) {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
221
|
+
const row = `bmm,anytime,${entry.name},${entry.code},,${entry.file},${entry.command},false,mil498,Create Mode,${entry.description},planning_artifacts,document,`;
|
|
222
|
+
// Remove any existing line for this command, then append the current one
|
|
223
|
+
const lines = content.split('\n').filter(line => !line.includes(entry.command));
|
|
224
|
+
content = lines.join('\n').trimEnd() + '\n' + row + '\n';
|
|
197
225
|
}
|
|
198
226
|
await fs.writeFile(moduleHelpPath, content, 'utf-8');
|
|
199
227
|
console.log(chalk.cyan(` + Registered MIL-STD-498 workflows in module-help.csv`));
|
|
200
228
|
}
|
|
201
229
|
|
|
202
|
-
// Append
|
|
230
|
+
// Append or update entries in bmad-help.csv
|
|
203
231
|
const bmadHelpPath = path.join(projectRoot, BMAD_DIR, '_config', 'bmad-help.csv');
|
|
204
232
|
if (fs.existsSync(bmadHelpPath)) {
|
|
205
233
|
let content = await fs.readFile(bmadHelpPath, 'utf-8');
|
|
206
234
|
for (const entry of milEntries) {
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
235
|
+
const row = `bmm,anytime,${entry.name},${entry.code},,${entry.file},${entry.command},false,mil498,bmad:MIL-STD-498 compliance:agent:mil498,Joseph,📜 MIL-STD-498 Expert,Create Mode,${entry.description},planning_artifacts,document`;
|
|
236
|
+
// Remove any existing line for this command, then append the current one
|
|
237
|
+
const lines = content.split('\n').filter(line => !line.includes(entry.command));
|
|
238
|
+
content = lines.join('\n').trimEnd() + '\n' + row + '\n';
|
|
211
239
|
}
|
|
212
240
|
await fs.writeFile(bmadHelpPath, content, 'utf-8');
|
|
213
241
|
console.log(chalk.cyan(` + Registered MIL-STD-498 workflows in bmad-help.csv`));
|