siesa-agents 2.1.1 → 2.1.3
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/README.md +83 -83
- package/bin/install.js +400 -399
- package/bin/prepare-publish.js +26 -26
- package/bin/restore-folders.js +26 -26
- package/bmad-core/agent-teams/team-all.yaml +15 -15
- package/bmad-core/agent-teams/team-fullstack.yaml +19 -19
- package/bmad-core/agent-teams/team-ide-minimal.yaml +11 -11
- package/bmad-core/agent-teams/team-no-ui.yaml +14 -14
- package/bmad-core/agents/analyst.md +84 -84
- package/bmad-core/agents/architect.md +94 -94
- package/bmad-core/agents/backend-agent.md +189 -189
- package/bmad-core/agents/bmad-master.md +110 -110
- package/bmad-core/agents/bmad-orchestrator.md +147 -147
- package/bmad-core/agents/dev.md +81 -81
- package/bmad-core/agents/frontend-agent.md +168 -168
- package/bmad-core/agents/pm.md +84 -84
- package/bmad-core/agents/po.md +79 -79
- package/bmad-core/agents/qa.md +91 -91
- package/bmad-core/agents/sm.md +65 -65
- package/bmad-core/agents/ux-expert.md +69 -69
- package/bmad-core/checklists/architect-checklist.md +440 -440
- package/bmad-core/checklists/backend-checklist.md +142 -142
- package/bmad-core/checklists/change-checklist.md +184 -184
- package/bmad-core/checklists/frontend-checklist.md +105 -105
- package/bmad-core/checklists/pm-checklist.md +372 -372
- package/bmad-core/checklists/po-master-checklist.md +434 -434
- package/bmad-core/checklists/story-dod-checklist.md +96 -96
- package/bmad-core/checklists/story-draft-checklist.md +155 -155
- package/bmad-core/core-config.yaml +22 -22
- package/bmad-core/data/backend-standards.md +439 -439
- package/bmad-core/data/bmad-kb.md +809 -809
- package/bmad-core/data/brainstorming-techniques.md +38 -38
- package/bmad-core/data/elicitation-methods.md +156 -156
- package/bmad-core/data/frontend-standards.md +323 -323
- package/bmad-core/data/technical-preferences.md +5 -5
- package/bmad-core/data/test-levels-framework.md +148 -148
- package/bmad-core/data/test-priorities-matrix.md +174 -174
- package/bmad-core/enhanced-ide-development-workflow.md +248 -248
- package/bmad-core/install-manifest.yaml +230 -230
- package/bmad-core/tasks/advanced-elicitation.md +119 -119
- package/bmad-core/tasks/apply-qa-fixes.md +150 -150
- package/bmad-core/tasks/brownfield-create-epic.md +162 -162
- package/bmad-core/tasks/brownfield-create-story.md +149 -149
- package/bmad-core/tasks/correct-course.md +72 -72
- package/bmad-core/tasks/create-brownfield-story.md +314 -314
- package/bmad-core/tasks/create-component.md +102 -102
- package/bmad-core/tasks/create-deep-research-prompt.md +280 -280
- package/bmad-core/tasks/create-doc.md +103 -103
- package/bmad-core/tasks/create-entity.md +132 -132
- package/bmad-core/tasks/create-feature.md +90 -90
- package/bmad-core/tasks/create-next-story.md +114 -114
- package/bmad-core/tasks/create-service.md +117 -117
- package/bmad-core/tasks/create-use-case.md +140 -140
- package/bmad-core/tasks/document-project.md +345 -345
- package/bmad-core/tasks/execute-checklist.md +88 -88
- package/bmad-core/tasks/facilitate-brainstorming-session.md +138 -138
- package/bmad-core/tasks/generate-ai-frontend-prompt.md +53 -53
- package/bmad-core/tasks/index-docs.md +175 -175
- package/bmad-core/tasks/kb-mode-interaction.md +77 -77
- package/bmad-core/tasks/nfr-assess.md +345 -345
- package/bmad-core/tasks/qa-gate.md +163 -163
- package/bmad-core/tasks/review-story.md +316 -316
- package/bmad-core/tasks/risk-profile.md +355 -355
- package/bmad-core/tasks/scaffold-backend.md +110 -110
- package/bmad-core/tasks/scaffold-frontend.md +78 -78
- package/bmad-core/tasks/shard-doc.md +187 -187
- package/bmad-core/tasks/test-design.md +176 -176
- package/bmad-core/tasks/trace-requirements.md +266 -266
- package/bmad-core/tasks/validate-next-story.md +136 -136
- package/bmad-core/templates/architecture-tmpl.yaml +662 -662
- package/bmad-core/templates/brainstorming-output-tmpl.yaml +156 -156
- package/bmad-core/templates/brownfield-architecture-tmpl.yaml +477 -477
- package/bmad-core/templates/brownfield-prd-tmpl.yaml +281 -281
- package/bmad-core/templates/competitor-analysis-tmpl.yaml +307 -307
- package/bmad-core/templates/front-end-architecture-tmpl.yaml +258 -258
- package/bmad-core/templates/front-end-spec-tmpl.yaml +350 -350
- package/bmad-core/templates/fullstack-architecture-tmpl.yaml +824 -824
- package/bmad-core/templates/market-research-tmpl.yaml +253 -253
- package/bmad-core/templates/prd-tmpl.yaml +203 -203
- package/bmad-core/templates/project-brief-tmpl.yaml +222 -222
- package/bmad-core/templates/qa-gate-tmpl.yaml +103 -103
- package/bmad-core/templates/story-tmpl.yaml +138 -138
- package/bmad-core/user-guide.md +530 -530
- package/bmad-core/utils/bmad-doc-template.md +327 -327
- package/bmad-core/utils/workflow-management.md +71 -71
- package/bmad-core/workflows/brownfield-fullstack.yaml +298 -298
- package/bmad-core/workflows/brownfield-service.yaml +188 -188
- package/bmad-core/workflows/brownfield-ui.yaml +198 -198
- package/bmad-core/workflows/greenfield-fullstack.yaml +241 -241
- package/bmad-core/workflows/greenfield-service.yaml +207 -207
- package/bmad-core/workflows/greenfield-ui.yaml +236 -236
- package/bmad-core/working-in-the-brownfield.md +606 -606
- package/claude/commands/BMad/agents/analyst.md +88 -0
- package/claude/commands/BMad/agents/architect.md +89 -0
- package/claude/commands/BMad/agents/backend.md +188 -0
- package/claude/commands/BMad/agents/bmad-master.md +114 -0
- package/claude/commands/BMad/agents/bmad-orchestrator.md +151 -0
- package/claude/commands/BMad/agents/dev.md +85 -0
- package/claude/commands/BMad/agents/frontend.md +151 -0
- package/claude/commands/BMad/agents/pm.md +88 -0
- package/claude/commands/BMad/agents/po.md +83 -0
- package/claude/commands/BMad/agents/qa.md +95 -0
- package/claude/commands/BMad/agents/sm.md +69 -0
- package/claude/commands/BMad/agents/ux-expert.md +73 -0
- package/claude/commands/BMad/tasks/advanced-elicitation.md +123 -0
- package/claude/commands/BMad/tasks/apply-qa-fixes.md +154 -0
- package/claude/commands/BMad/tasks/brownfield-create-epic.md +166 -0
- package/claude/commands/BMad/tasks/brownfield-create-story.md +153 -0
- package/claude/commands/BMad/tasks/correct-course.md +76 -0
- package/claude/commands/BMad/tasks/create-brownfield-story.md +318 -0
- package/claude/commands/BMad/tasks/create-deep-research-prompt.md +284 -0
- package/claude/commands/BMad/tasks/create-doc.md +107 -0
- package/claude/commands/BMad/tasks/create-next-story.md +118 -0
- package/claude/commands/BMad/tasks/document-project.md +349 -0
- package/claude/commands/BMad/tasks/execute-checklist.md +92 -0
- package/claude/commands/BMad/tasks/facilitate-brainstorming-session.md +142 -0
- package/claude/commands/BMad/tasks/generate-ai-frontend-prompt.md +57 -0
- package/claude/commands/BMad/tasks/index-docs.md +179 -0
- package/claude/commands/BMad/tasks/kb-mode-interaction.md +81 -0
- package/claude/commands/BMad/tasks/nfr-assess.md +349 -0
- package/claude/commands/BMad/tasks/qa-gate.md +167 -0
- package/claude/commands/BMad/tasks/review-story.md +320 -0
- package/claude/commands/BMad/tasks/risk-profile.md +359 -0
- package/claude/commands/BMad/tasks/shard-doc.md +191 -0
- package/claude/commands/BMad/tasks/test-design.md +180 -0
- package/claude/commands/BMad/tasks/trace-requirements.md +270 -0
- package/claude/commands/BMad/tasks/validate-next-story.md +140 -0
- package/claude/settings.local.json +20 -0
- package/github/b-mad-expert.md +742 -742
- package/github/chatmodes/analyst.chatmode.md +89 -89
- package/github/chatmodes/architect.chatmode.md +97 -97
- package/github/chatmodes/backend.chatmode.md +194 -194
- package/github/chatmodes/bmad-master.chatmode.md +115 -115
- package/github/chatmodes/bmad-orchestrator.chatmode.md +152 -152
- package/github/chatmodes/dev.chatmode.md +86 -86
- package/github/chatmodes/frontend.chatmode.md +157 -157
- package/github/chatmodes/pm.chatmode.md +89 -89
- package/github/chatmodes/po.chatmode.md +84 -84
- package/github/chatmodes/qa.chatmode.md +96 -96
- package/github/chatmodes/sm.chatmode.md +70 -70
- package/github/chatmodes/ux-expert.chatmode.md +74 -74
- package/index.js +9 -9
- package/package.json +37 -36
- package/vscode/mcp.json +11 -11
- package/vscode/settings.json +12 -12
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
# /nfr-assess Task
|
|
2
|
+
|
|
3
|
+
When this command is used, execute the following task:
|
|
4
|
+
|
|
5
|
+
<!-- Powered by BMAD™ Core -->
|
|
6
|
+
|
|
7
|
+
# nfr-assess
|
|
8
|
+
|
|
9
|
+
Quick NFR validation focused on the core four: security, performance, reliability, maintainability.
|
|
10
|
+
|
|
11
|
+
## Inputs
|
|
12
|
+
|
|
13
|
+
```yaml
|
|
14
|
+
required:
|
|
15
|
+
- story_id: '{epic}.{story}' # e.g., "1.3"
|
|
16
|
+
- story_path: `bmad-core/core-config.yaml` for the `devStoryLocation`
|
|
17
|
+
|
|
18
|
+
optional:
|
|
19
|
+
- architecture_refs: `bmad-core/core-config.yaml` for the `architecture.architectureFile`
|
|
20
|
+
- technical_preferences: `bmad-core/core-config.yaml` for the `technicalPreferences`
|
|
21
|
+
- acceptance_criteria: From story file
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Purpose
|
|
25
|
+
|
|
26
|
+
Assess non-functional requirements for a story and generate:
|
|
27
|
+
|
|
28
|
+
1. YAML block for the gate file's `nfr_validation` section
|
|
29
|
+
2. Brief markdown assessment saved to `qa.qaLocation/assessments/{epic}.{story}-nfr-{YYYYMMDD}.md`
|
|
30
|
+
|
|
31
|
+
## Process
|
|
32
|
+
|
|
33
|
+
### 0. Fail-safe for Missing Inputs
|
|
34
|
+
|
|
35
|
+
If story_path or story file can't be found:
|
|
36
|
+
|
|
37
|
+
- Still create assessment file with note: "Source story not found"
|
|
38
|
+
- Set all selected NFRs to CONCERNS with notes: "Target unknown / evidence missing"
|
|
39
|
+
- Continue with assessment to provide value
|
|
40
|
+
|
|
41
|
+
### 1. Elicit Scope
|
|
42
|
+
|
|
43
|
+
**Interactive mode:** Ask which NFRs to assess
|
|
44
|
+
**Non-interactive mode:** Default to core four (security, performance, reliability, maintainability)
|
|
45
|
+
|
|
46
|
+
```text
|
|
47
|
+
Which NFRs should I assess? (Enter numbers or press Enter for default)
|
|
48
|
+
[1] Security (default)
|
|
49
|
+
[2] Performance (default)
|
|
50
|
+
[3] Reliability (default)
|
|
51
|
+
[4] Maintainability (default)
|
|
52
|
+
[5] Usability
|
|
53
|
+
[6] Compatibility
|
|
54
|
+
[7] Portability
|
|
55
|
+
[8] Functional Suitability
|
|
56
|
+
|
|
57
|
+
> [Enter for 1-4]
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 2. Check for Thresholds
|
|
61
|
+
|
|
62
|
+
Look for NFR requirements in:
|
|
63
|
+
|
|
64
|
+
- Story acceptance criteria
|
|
65
|
+
- `docs/architecture/*.md` files
|
|
66
|
+
- `docs/technical-preferences.md`
|
|
67
|
+
|
|
68
|
+
**Interactive mode:** Ask for missing thresholds
|
|
69
|
+
**Non-interactive mode:** Mark as CONCERNS with "Target unknown"
|
|
70
|
+
|
|
71
|
+
```text
|
|
72
|
+
No performance requirements found. What's your target response time?
|
|
73
|
+
> 200ms for API calls
|
|
74
|
+
|
|
75
|
+
No security requirements found. Required auth method?
|
|
76
|
+
> JWT with refresh tokens
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Unknown targets policy:** If a target is missing and not provided, mark status as CONCERNS with notes: "Target unknown"
|
|
80
|
+
|
|
81
|
+
### 3. Quick Assessment
|
|
82
|
+
|
|
83
|
+
For each selected NFR, check:
|
|
84
|
+
|
|
85
|
+
- Is there evidence it's implemented?
|
|
86
|
+
- Can we validate it?
|
|
87
|
+
- Are there obvious gaps?
|
|
88
|
+
|
|
89
|
+
### 4. Generate Outputs
|
|
90
|
+
|
|
91
|
+
## Output 1: Gate YAML Block
|
|
92
|
+
|
|
93
|
+
Generate ONLY for NFRs actually assessed (no placeholders):
|
|
94
|
+
|
|
95
|
+
```yaml
|
|
96
|
+
# Gate YAML (copy/paste):
|
|
97
|
+
nfr_validation:
|
|
98
|
+
_assessed: [security, performance, reliability, maintainability]
|
|
99
|
+
security:
|
|
100
|
+
status: CONCERNS
|
|
101
|
+
notes: 'No rate limiting on auth endpoints'
|
|
102
|
+
performance:
|
|
103
|
+
status: PASS
|
|
104
|
+
notes: 'Response times < 200ms verified'
|
|
105
|
+
reliability:
|
|
106
|
+
status: PASS
|
|
107
|
+
notes: 'Error handling and retries implemented'
|
|
108
|
+
maintainability:
|
|
109
|
+
status: CONCERNS
|
|
110
|
+
notes: 'Test coverage at 65%, target is 80%'
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Deterministic Status Rules
|
|
114
|
+
|
|
115
|
+
- **FAIL**: Any selected NFR has critical gap or target clearly not met
|
|
116
|
+
- **CONCERNS**: No FAILs, but any NFR is unknown/partial/missing evidence
|
|
117
|
+
- **PASS**: All selected NFRs meet targets with evidence
|
|
118
|
+
|
|
119
|
+
## Quality Score Calculation
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
quality_score = 100
|
|
123
|
+
- 20 for each FAIL attribute
|
|
124
|
+
- 10 for each CONCERNS attribute
|
|
125
|
+
Floor at 0, ceiling at 100
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
If `technical-preferences.md` defines custom weights, use those instead.
|
|
129
|
+
|
|
130
|
+
## Output 2: Brief Assessment Report
|
|
131
|
+
|
|
132
|
+
**ALWAYS save to:** `qa.qaLocation/assessments/{epic}.{story}-nfr-{YYYYMMDD}.md`
|
|
133
|
+
|
|
134
|
+
```markdown
|
|
135
|
+
# NFR Assessment: {epic}.{story}
|
|
136
|
+
|
|
137
|
+
Date: {date}
|
|
138
|
+
Reviewer: Quinn
|
|
139
|
+
|
|
140
|
+
<!-- Note: Source story not found (if applicable) -->
|
|
141
|
+
|
|
142
|
+
## Summary
|
|
143
|
+
|
|
144
|
+
- Security: CONCERNS - Missing rate limiting
|
|
145
|
+
- Performance: PASS - Meets <200ms requirement
|
|
146
|
+
- Reliability: PASS - Proper error handling
|
|
147
|
+
- Maintainability: CONCERNS - Test coverage below target
|
|
148
|
+
|
|
149
|
+
## Critical Issues
|
|
150
|
+
|
|
151
|
+
1. **No rate limiting** (Security)
|
|
152
|
+
- Risk: Brute force attacks possible
|
|
153
|
+
- Fix: Add rate limiting middleware to auth endpoints
|
|
154
|
+
|
|
155
|
+
2. **Test coverage 65%** (Maintainability)
|
|
156
|
+
- Risk: Untested code paths
|
|
157
|
+
- Fix: Add tests for uncovered branches
|
|
158
|
+
|
|
159
|
+
## Quick Wins
|
|
160
|
+
|
|
161
|
+
- Add rate limiting: ~2 hours
|
|
162
|
+
- Increase test coverage: ~4 hours
|
|
163
|
+
- Add performance monitoring: ~1 hour
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Output 3: Story Update Line
|
|
167
|
+
|
|
168
|
+
**End with this line for the review task to quote:**
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
NFR assessment: qa.qaLocation/assessments/{epic}.{story}-nfr-{YYYYMMDD}.md
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Output 4: Gate Integration Line
|
|
175
|
+
|
|
176
|
+
**Always print at the end:**
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
Gate NFR block ready → paste into qa.qaLocation/gates/{epic}.{story}-{slug}.yml under nfr_validation
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Assessment Criteria
|
|
183
|
+
|
|
184
|
+
### Security
|
|
185
|
+
|
|
186
|
+
**PASS if:**
|
|
187
|
+
|
|
188
|
+
- Authentication implemented
|
|
189
|
+
- Authorization enforced
|
|
190
|
+
- Input validation present
|
|
191
|
+
- No hardcoded secrets
|
|
192
|
+
|
|
193
|
+
**CONCERNS if:**
|
|
194
|
+
|
|
195
|
+
- Missing rate limiting
|
|
196
|
+
- Weak encryption
|
|
197
|
+
- Incomplete authorization
|
|
198
|
+
|
|
199
|
+
**FAIL if:**
|
|
200
|
+
|
|
201
|
+
- No authentication
|
|
202
|
+
- Hardcoded credentials
|
|
203
|
+
- SQL injection vulnerabilities
|
|
204
|
+
|
|
205
|
+
### Performance
|
|
206
|
+
|
|
207
|
+
**PASS if:**
|
|
208
|
+
|
|
209
|
+
- Meets response time targets
|
|
210
|
+
- No obvious bottlenecks
|
|
211
|
+
- Reasonable resource usage
|
|
212
|
+
|
|
213
|
+
**CONCERNS if:**
|
|
214
|
+
|
|
215
|
+
- Close to limits
|
|
216
|
+
- Missing indexes
|
|
217
|
+
- No caching strategy
|
|
218
|
+
|
|
219
|
+
**FAIL if:**
|
|
220
|
+
|
|
221
|
+
- Exceeds response time limits
|
|
222
|
+
- Memory leaks
|
|
223
|
+
- Unoptimized queries
|
|
224
|
+
|
|
225
|
+
### Reliability
|
|
226
|
+
|
|
227
|
+
**PASS if:**
|
|
228
|
+
|
|
229
|
+
- Error handling present
|
|
230
|
+
- Graceful degradation
|
|
231
|
+
- Retry logic where needed
|
|
232
|
+
|
|
233
|
+
**CONCERNS if:**
|
|
234
|
+
|
|
235
|
+
- Some error cases unhandled
|
|
236
|
+
- No circuit breakers
|
|
237
|
+
- Missing health checks
|
|
238
|
+
|
|
239
|
+
**FAIL if:**
|
|
240
|
+
|
|
241
|
+
- No error handling
|
|
242
|
+
- Crashes on errors
|
|
243
|
+
- No recovery mechanisms
|
|
244
|
+
|
|
245
|
+
### Maintainability
|
|
246
|
+
|
|
247
|
+
**PASS if:**
|
|
248
|
+
|
|
249
|
+
- Test coverage meets target
|
|
250
|
+
- Code well-structured
|
|
251
|
+
- Documentation present
|
|
252
|
+
|
|
253
|
+
**CONCERNS if:**
|
|
254
|
+
|
|
255
|
+
- Test coverage below target
|
|
256
|
+
- Some code duplication
|
|
257
|
+
- Missing documentation
|
|
258
|
+
|
|
259
|
+
**FAIL if:**
|
|
260
|
+
|
|
261
|
+
- No tests
|
|
262
|
+
- Highly coupled code
|
|
263
|
+
- No documentation
|
|
264
|
+
|
|
265
|
+
## Quick Reference
|
|
266
|
+
|
|
267
|
+
### What to Check
|
|
268
|
+
|
|
269
|
+
```yaml
|
|
270
|
+
security:
|
|
271
|
+
- Authentication mechanism
|
|
272
|
+
- Authorization checks
|
|
273
|
+
- Input validation
|
|
274
|
+
- Secret management
|
|
275
|
+
- Rate limiting
|
|
276
|
+
|
|
277
|
+
performance:
|
|
278
|
+
- Response times
|
|
279
|
+
- Database queries
|
|
280
|
+
- Caching usage
|
|
281
|
+
- Resource consumption
|
|
282
|
+
|
|
283
|
+
reliability:
|
|
284
|
+
- Error handling
|
|
285
|
+
- Retry logic
|
|
286
|
+
- Circuit breakers
|
|
287
|
+
- Health checks
|
|
288
|
+
- Logging
|
|
289
|
+
|
|
290
|
+
maintainability:
|
|
291
|
+
- Test coverage
|
|
292
|
+
- Code structure
|
|
293
|
+
- Documentation
|
|
294
|
+
- Dependencies
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
## Key Principles
|
|
298
|
+
|
|
299
|
+
- Focus on the core four NFRs by default
|
|
300
|
+
- Quick assessment, not deep analysis
|
|
301
|
+
- Gate-ready output format
|
|
302
|
+
- Brief, actionable findings
|
|
303
|
+
- Skip what doesn't apply
|
|
304
|
+
- Deterministic status rules for consistency
|
|
305
|
+
- Unknown targets → CONCERNS, not guesses
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## Appendix: ISO 25010 Reference
|
|
310
|
+
|
|
311
|
+
<details>
|
|
312
|
+
<summary>Full ISO 25010 Quality Model (click to expand)</summary>
|
|
313
|
+
|
|
314
|
+
### All 8 Quality Characteristics
|
|
315
|
+
|
|
316
|
+
1. **Functional Suitability**: Completeness, correctness, appropriateness
|
|
317
|
+
2. **Performance Efficiency**: Time behavior, resource use, capacity
|
|
318
|
+
3. **Compatibility**: Co-existence, interoperability
|
|
319
|
+
4. **Usability**: Learnability, operability, accessibility
|
|
320
|
+
5. **Reliability**: Maturity, availability, fault tolerance
|
|
321
|
+
6. **Security**: Confidentiality, integrity, authenticity
|
|
322
|
+
7. **Maintainability**: Modularity, reusability, testability
|
|
323
|
+
8. **Portability**: Adaptability, installability
|
|
324
|
+
|
|
325
|
+
Use these when assessing beyond the core four.
|
|
326
|
+
|
|
327
|
+
</details>
|
|
328
|
+
|
|
329
|
+
<details>
|
|
330
|
+
<summary>Example: Deep Performance Analysis (click to expand)</summary>
|
|
331
|
+
|
|
332
|
+
```yaml
|
|
333
|
+
performance_deep_dive:
|
|
334
|
+
response_times:
|
|
335
|
+
p50: 45ms
|
|
336
|
+
p95: 180ms
|
|
337
|
+
p99: 350ms
|
|
338
|
+
database:
|
|
339
|
+
slow_queries: 2
|
|
340
|
+
missing_indexes: ['users.email', 'orders.user_id']
|
|
341
|
+
caching:
|
|
342
|
+
hit_rate: 0%
|
|
343
|
+
recommendation: 'Add Redis for session data'
|
|
344
|
+
load_test:
|
|
345
|
+
max_rps: 150
|
|
346
|
+
breaking_point: 200 rps
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
</details>
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# /qa-gate Task
|
|
2
|
+
|
|
3
|
+
When this command is used, execute the following task:
|
|
4
|
+
|
|
5
|
+
<!-- Powered by BMAD™ Core -->
|
|
6
|
+
|
|
7
|
+
# qa-gate
|
|
8
|
+
|
|
9
|
+
Create or update a quality gate decision file for a story based on review findings.
|
|
10
|
+
|
|
11
|
+
## Purpose
|
|
12
|
+
|
|
13
|
+
Generate a standalone quality gate file that provides a clear pass/fail decision with actionable feedback. This gate serves as an advisory checkpoint for teams to understand quality status.
|
|
14
|
+
|
|
15
|
+
## Prerequisites
|
|
16
|
+
|
|
17
|
+
- Story has been reviewed (manually or via review-story task)
|
|
18
|
+
- Review findings are available
|
|
19
|
+
- Understanding of story requirements and implementation
|
|
20
|
+
|
|
21
|
+
## Gate File Location
|
|
22
|
+
|
|
23
|
+
**ALWAYS** check the `bmad-core/core-config.yaml` for the `qa.qaLocation/gates`
|
|
24
|
+
|
|
25
|
+
Slug rules:
|
|
26
|
+
|
|
27
|
+
- Convert to lowercase
|
|
28
|
+
- Replace spaces with hyphens
|
|
29
|
+
- Strip punctuation
|
|
30
|
+
- Example: "User Auth - Login!" becomes "user-auth-login"
|
|
31
|
+
|
|
32
|
+
## Minimal Required Schema
|
|
33
|
+
|
|
34
|
+
```yaml
|
|
35
|
+
schema: 1
|
|
36
|
+
story: '{epic}.{story}'
|
|
37
|
+
gate: PASS|CONCERNS|FAIL|WAIVED
|
|
38
|
+
status_reason: '1-2 sentence explanation of gate decision'
|
|
39
|
+
reviewer: 'Quinn'
|
|
40
|
+
updated: '{ISO-8601 timestamp}'
|
|
41
|
+
top_issues: [] # Empty array if no issues
|
|
42
|
+
waiver: { active: false } # Only set active: true if WAIVED
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Schema with Issues
|
|
46
|
+
|
|
47
|
+
```yaml
|
|
48
|
+
schema: 1
|
|
49
|
+
story: '1.3'
|
|
50
|
+
gate: CONCERNS
|
|
51
|
+
status_reason: 'Missing rate limiting on auth endpoints poses security risk.'
|
|
52
|
+
reviewer: 'Quinn'
|
|
53
|
+
updated: '2025-01-12T10:15:00Z'
|
|
54
|
+
top_issues:
|
|
55
|
+
- id: 'SEC-001'
|
|
56
|
+
severity: high # ONLY: low|medium|high
|
|
57
|
+
finding: 'No rate limiting on login endpoint'
|
|
58
|
+
suggested_action: 'Add rate limiting middleware before production'
|
|
59
|
+
- id: 'TEST-001'
|
|
60
|
+
severity: medium
|
|
61
|
+
finding: 'No integration tests for auth flow'
|
|
62
|
+
suggested_action: 'Add integration test coverage'
|
|
63
|
+
waiver: { active: false }
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Schema when Waived
|
|
67
|
+
|
|
68
|
+
```yaml
|
|
69
|
+
schema: 1
|
|
70
|
+
story: '1.3'
|
|
71
|
+
gate: WAIVED
|
|
72
|
+
status_reason: 'Known issues accepted for MVP release.'
|
|
73
|
+
reviewer: 'Quinn'
|
|
74
|
+
updated: '2025-01-12T10:15:00Z'
|
|
75
|
+
top_issues:
|
|
76
|
+
- id: 'PERF-001'
|
|
77
|
+
severity: low
|
|
78
|
+
finding: 'Dashboard loads slowly with 1000+ items'
|
|
79
|
+
suggested_action: 'Implement pagination in next sprint'
|
|
80
|
+
waiver:
|
|
81
|
+
active: true
|
|
82
|
+
reason: 'MVP release - performance optimization deferred'
|
|
83
|
+
approved_by: 'Product Owner'
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Gate Decision Criteria
|
|
87
|
+
|
|
88
|
+
### PASS
|
|
89
|
+
|
|
90
|
+
- All acceptance criteria met
|
|
91
|
+
- No high-severity issues
|
|
92
|
+
- Test coverage meets project standards
|
|
93
|
+
|
|
94
|
+
### CONCERNS
|
|
95
|
+
|
|
96
|
+
- Non-blocking issues present
|
|
97
|
+
- Should be tracked and scheduled
|
|
98
|
+
- Can proceed with awareness
|
|
99
|
+
|
|
100
|
+
### FAIL
|
|
101
|
+
|
|
102
|
+
- Acceptance criteria not met
|
|
103
|
+
- High-severity issues present
|
|
104
|
+
- Recommend return to InProgress
|
|
105
|
+
|
|
106
|
+
### WAIVED
|
|
107
|
+
|
|
108
|
+
- Issues explicitly accepted
|
|
109
|
+
- Requires approval and reason
|
|
110
|
+
- Proceed despite known issues
|
|
111
|
+
|
|
112
|
+
## Severity Scale
|
|
113
|
+
|
|
114
|
+
**FIXED VALUES - NO VARIATIONS:**
|
|
115
|
+
|
|
116
|
+
- `low`: Minor issues, cosmetic problems
|
|
117
|
+
- `medium`: Should fix soon, not blocking
|
|
118
|
+
- `high`: Critical issues, should block release
|
|
119
|
+
|
|
120
|
+
## Issue ID Prefixes
|
|
121
|
+
|
|
122
|
+
- `SEC-`: Security issues
|
|
123
|
+
- `PERF-`: Performance issues
|
|
124
|
+
- `REL-`: Reliability issues
|
|
125
|
+
- `TEST-`: Testing gaps
|
|
126
|
+
- `MNT-`: Maintainability concerns
|
|
127
|
+
- `ARCH-`: Architecture issues
|
|
128
|
+
- `DOC-`: Documentation gaps
|
|
129
|
+
- `REQ-`: Requirements issues
|
|
130
|
+
|
|
131
|
+
## Output Requirements
|
|
132
|
+
|
|
133
|
+
1. **ALWAYS** create gate file at: `qa.qaLocation/gates` from `bmad-core/core-config.yaml`
|
|
134
|
+
2. **ALWAYS** append this exact format to story's QA Results section:
|
|
135
|
+
|
|
136
|
+
```text
|
|
137
|
+
Gate: {STATUS} → qa.qaLocation/gates/{epic}.{story}-{slug}.yml
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
3. Keep status_reason to 1-2 sentences maximum
|
|
141
|
+
4. Use severity values exactly: `low`, `medium`, or `high`
|
|
142
|
+
|
|
143
|
+
## Example Story Update
|
|
144
|
+
|
|
145
|
+
After creating gate file, append to story's QA Results section:
|
|
146
|
+
|
|
147
|
+
```markdown
|
|
148
|
+
## QA Results
|
|
149
|
+
|
|
150
|
+
### Review Date: 2025-01-12
|
|
151
|
+
|
|
152
|
+
### Reviewed By: Quinn (Test Architect)
|
|
153
|
+
|
|
154
|
+
[... existing review content ...]
|
|
155
|
+
|
|
156
|
+
### Gate Status
|
|
157
|
+
|
|
158
|
+
Gate: CONCERNS → qa.qaLocation/gates/{epic}.{story}-{slug}.yml
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Key Principles
|
|
162
|
+
|
|
163
|
+
- Keep it minimal and predictable
|
|
164
|
+
- Fixed severity scale (low/medium/high)
|
|
165
|
+
- Always write to standard path
|
|
166
|
+
- Always update story with gate reference
|
|
167
|
+
- Clear, actionable findings
|