feat: transform QA agent into Test Architect with advanced quality ca… (#433)
* feat: transform QA agent into Test Architect with advanced quality capabilities - Add 6 specialized quality assessment commands - Implement risk-based testing with scoring - Create quality gate system with deterministic decisions - Add comprehensive test design and NFR validation - Update documentation with stage-based workflow integration * feat: transform QA agent into Test Architect with advanced quality capabilities - Add 6 specialized quality assessment commands - Implement risk-based testing with scoring - Create quality gate system with deterministic decisions - Add comprehensive test design and NFR validation - Update documentation with stage-based workflow integration * docs: refined the docs for test architect * fix: addressed review comments from manjaroblack, round 1 * fix: addressed review comments from manjaroblack, round 1 --------- Co-authored-by: Murat Ozcan <murat@mac.lan> Co-authored-by: Brian <bmadcode@gmail.com>
This commit is contained in:
159
bmad-core/tasks/qa-gate.md
Normal file
159
bmad-core/tasks/qa-gate.md
Normal file
@@ -0,0 +1,159 @@
|
||||
# qa-gate
|
||||
|
||||
Create or update a quality gate decision file for a story based on review findings.
|
||||
|
||||
## Purpose
|
||||
|
||||
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.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Story has been reviewed (manually or via review-story task)
|
||||
- Review findings are available
|
||||
- Understanding of story requirements and implementation
|
||||
|
||||
## Gate File Location
|
||||
|
||||
**ALWAYS** create file at: `docs/qa/gates/{epic}.{story}-{slug}.yml`
|
||||
|
||||
Slug rules:
|
||||
|
||||
- Convert to lowercase
|
||||
- Replace spaces with hyphens
|
||||
- Strip punctuation
|
||||
- Example: "User Auth - Login!" becomes "user-auth-login"
|
||||
|
||||
## Minimal Required Schema
|
||||
|
||||
```yaml
|
||||
schema: 1
|
||||
story: "{epic}.{story}"
|
||||
gate: PASS|CONCERNS|FAIL|WAIVED
|
||||
status_reason: "1-2 sentence explanation of gate decision"
|
||||
reviewer: "Quinn"
|
||||
updated: "{ISO-8601 timestamp}"
|
||||
top_issues: [] # Empty array if no issues
|
||||
waiver: { active: false } # Only set active: true if WAIVED
|
||||
```
|
||||
|
||||
## Schema with Issues
|
||||
|
||||
```yaml
|
||||
schema: 1
|
||||
story: "1.3"
|
||||
gate: CONCERNS
|
||||
status_reason: "Missing rate limiting on auth endpoints poses security risk."
|
||||
reviewer: "Quinn"
|
||||
updated: "2025-01-12T10:15:00Z"
|
||||
top_issues:
|
||||
- id: "SEC-001"
|
||||
severity: high # ONLY: low|medium|high
|
||||
finding: "No rate limiting on login endpoint"
|
||||
suggested_action: "Add rate limiting middleware before production"
|
||||
- id: "TEST-001"
|
||||
severity: medium
|
||||
finding: "No integration tests for auth flow"
|
||||
suggested_action: "Add integration test coverage"
|
||||
waiver: { active: false }
|
||||
```
|
||||
|
||||
## Schema when Waived
|
||||
|
||||
```yaml
|
||||
schema: 1
|
||||
story: "1.3"
|
||||
gate: WAIVED
|
||||
status_reason: "Known issues accepted for MVP release."
|
||||
reviewer: "Quinn"
|
||||
updated: "2025-01-12T10:15:00Z"
|
||||
top_issues:
|
||||
- id: "PERF-001"
|
||||
severity: low
|
||||
finding: "Dashboard loads slowly with 1000+ items"
|
||||
suggested_action: "Implement pagination in next sprint"
|
||||
waiver:
|
||||
active: true
|
||||
reason: "MVP release - performance optimization deferred"
|
||||
approved_by: "Product Owner"
|
||||
```
|
||||
|
||||
## Gate Decision Criteria
|
||||
|
||||
### PASS
|
||||
|
||||
- All acceptance criteria met
|
||||
- No high-severity issues
|
||||
- Test coverage meets project standards
|
||||
|
||||
### CONCERNS
|
||||
|
||||
- Non-blocking issues present
|
||||
- Should be tracked and scheduled
|
||||
- Can proceed with awareness
|
||||
|
||||
### FAIL
|
||||
|
||||
- Acceptance criteria not met
|
||||
- High-severity issues present
|
||||
- Recommend return to InProgress
|
||||
|
||||
### WAIVED
|
||||
|
||||
- Issues explicitly accepted
|
||||
- Requires approval and reason
|
||||
- Proceed despite known issues
|
||||
|
||||
## Severity Scale
|
||||
|
||||
**FIXED VALUES - NO VARIATIONS:**
|
||||
|
||||
- `low`: Minor issues, cosmetic problems
|
||||
- `medium`: Should fix soon, not blocking
|
||||
- `high`: Critical issues, should block release
|
||||
|
||||
## Issue ID Prefixes
|
||||
|
||||
- `SEC-`: Security issues
|
||||
- `PERF-`: Performance issues
|
||||
- `REL-`: Reliability issues
|
||||
- `TEST-`: Testing gaps
|
||||
- `MNT-`: Maintainability concerns
|
||||
- `ARCH-`: Architecture issues
|
||||
- `DOC-`: Documentation gaps
|
||||
- `REQ-`: Requirements issues
|
||||
|
||||
## Output Requirements
|
||||
|
||||
1. **ALWAYS** create gate file at: `docs/qa/gates/{epic}.{story}-{slug}.yml`
|
||||
2. **ALWAYS** append this exact format to story's QA Results section:
|
||||
```
|
||||
Gate: {STATUS} → docs/qa/gates/{epic}.{story}-{slug}.yml
|
||||
```
|
||||
3. Keep status_reason to 1-2 sentences maximum
|
||||
4. Use severity values exactly: `low`, `medium`, or `high`
|
||||
|
||||
## Example Story Update
|
||||
|
||||
After creating gate file, append to story's QA Results section:
|
||||
|
||||
```markdown
|
||||
## QA Results
|
||||
|
||||
### Review Date: 2025-01-12
|
||||
|
||||
### Reviewed By: Quinn (Test Architect)
|
||||
|
||||
[... existing review content ...]
|
||||
|
||||
### Gate Status
|
||||
|
||||
Gate: CONCERNS → docs/qa/gates/1.3-user-auth-login.yml
|
||||
```
|
||||
|
||||
## Key Principles
|
||||
|
||||
- Keep it minimal and predictable
|
||||
- Fixed severity scale (low/medium/high)
|
||||
- Always write to standard path
|
||||
- Always update story with gate reference
|
||||
- Clear, actionable findings
|
||||
Reference in New Issue
Block a user