ai-core-framework 0.1.0
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/.claude-plugin/plugin.json +21 -0
- package/.codex-plugin/plugin.json +35 -0
- package/.cursor-plugin/plugin.json +22 -0
- package/README.md +173 -0
- package/bin/ai-core-framework.js +110 -0
- package/core/README.md +162 -0
- package/core/agents/README.md +32 -0
- package/core/agents/business-analyst.md +269 -0
- package/core/agents/developer.md +375 -0
- package/core/agents/qa-tester.md +477 -0
- package/core/agents/scrum-master.md +136 -0
- package/core/agents/tech-lead.md +345 -0
- package/core/config/backlog.schema.json +38 -0
- package/core/config/docs-policy.default.json +37 -0
- package/core/config/release.schema.json +120 -0
- package/core/config/ticket.schema.json +253 -0
- package/core/rules/00-global-rules.md +373 -0
- package/core/rules/01-git-workflow.md +388 -0
- package/core/rules/02-code-quality.md +77 -0
- package/core/rules/03-security.md +78 -0
- package/core/rules/04-documentation.md +72 -0
- package/core/rules/05-testing-mandatory.md +374 -0
- package/core/rules/06-approval-gates.md +388 -0
- package/core/rules/07-definition-of-ready.md +112 -0
- package/core/rules/08-definition-of-done.md +149 -0
- package/core/scripts/ai-core.sh +456 -0
- package/core/scripts/generate-views.sh +210 -0
- package/core/scripts/install-codex-prompts.sh +127 -0
- package/core/scripts/log-user-request.sh +113 -0
- package/core/scripts/setup-project.sh +183 -0
- package/core/scripts/sync-platforms.sh +322 -0
- package/core/scripts/validate-audit-log.sh +73 -0
- package/core/scripts/validate-docs.sh +365 -0
- package/core/scripts/validate-permissions.sh +132 -0
- package/core/scripts/validate-state.sh +611 -0
- package/core/scripts/workflow.sh +513 -0
- package/core/skills/README.md +21 -0
- package/core/skills/ai-core-commands/SKILL.md +86 -0
- package/core/skills/brainstorming/SKILL.md +40 -0
- package/core/skills/development-implement-task/SKILL.md +308 -0
- package/core/skills/executing-ticket/SKILL.md +28 -0
- package/core/skills/git-branch-status/SKILL.md +56 -0
- package/core/skills/git-cleanup-branches/SKILL.md +57 -0
- package/core/skills/git-scan-untracked/SKILL.md +50 -0
- package/core/skills/meta-generate-views/SKILL.md +54 -0
- package/core/skills/meta-request-log/SKILL.md +61 -0
- package/core/skills/meta-sprint-report/SKILL.md +59 -0
- package/core/skills/meta-sync-platforms/SKILL.md +53 -0
- package/core/skills/meta-ticket-health/SKILL.md +61 -0
- package/core/skills/meta-validate-audit-log/SKILL.md +42 -0
- package/core/skills/meta-validate-docs/SKILL.md +58 -0
- package/core/skills/meta-validate-permissions/SKILL.md +53 -0
- package/core/skills/meta-validate-state/SKILL.md +58 -0
- package/core/skills/planning-analyze-requirements/SKILL.md +471 -0
- package/core/skills/planning-backlog-status/SKILL.md +57 -0
- package/core/skills/planning-document-existing-requirements/SKILL.md +246 -0
- package/core/skills/planning-estimate-task/SKILL.md +60 -0
- package/core/skills/planning-groom-ticket/SKILL.md +442 -0
- package/core/skills/planning-mark-ready/SKILL.md +111 -0
- package/core/skills/planning-plan-refactor/SKILL.md +66 -0
- package/core/skills/planning-plan-sprint/SKILL.md +112 -0
- package/core/skills/planning-prioritize-backlog/SKILL.md +62 -0
- package/core/skills/planning-write-plan/SKILL.md +68 -0
- package/core/skills/project-detect-stack/SKILL.md +71 -0
- package/core/skills/project-discover-codebase/SKILL.md +74 -0
- package/core/skills/project-setup-project/SKILL.md +113 -0
- package/core/skills/qa-bug-status/SKILL.md +52 -0
- package/core/skills/qa-report-bug/SKILL.md +518 -0
- package/core/skills/qa-smoke-test/SKILL.md +387 -0
- package/core/skills/qa-triage-bug/SKILL.md +62 -0
- package/core/skills/qa-verify-fix/SKILL.md +446 -0
- package/core/skills/release-hotfix/SKILL.md +117 -0
- package/core/skills/release-release/SKILL.md +123 -0
- package/core/skills/release-rollback/SKILL.md +62 -0
- package/core/skills/review-create-pr/SKILL.md +418 -0
- package/core/skills/review-merge-pr/SKILL.md +425 -0
- package/core/skills/review-techlead-review/SKILL.md +547 -0
- package/core/skills/using-ai-core/SKILL.md +72 -0
- package/core/skills/verification-before-done/SKILL.md +35 -0
- package/core/skills/writing-implementation-plan/SKILL.md +45 -0
- package/core/templates/ci/ai-core-governance.yml +112 -0
- package/core/templates/ci/node-pnpm.yml +35 -0
- package/core/templates/pm/retrospective-template.md +47 -0
- package/core/templates/pm/sprint-plan-template.md +45 -0
- package/core/templates/pr/pull-request-template.md +247 -0
- package/core/templates/project/CODEOWNERS +11 -0
- package/core/templates/project/docs-policy.json +3 -0
- package/core/templates/project/project-config.yaml +137 -0
- package/core/templates/project/project-structure.yaml +76 -0
- package/core/templates/qa/bug-report-template.md +371 -0
- package/core/templates/qa/test-plan-template.md +57 -0
- package/core/templates/release/release-record-template.json +67 -0
- package/core/templates/requirements/PRD-template.md +58 -0
- package/core/templates/requirements/user-story-template.md +381 -0
- package/core/templates/technical/ADR-template.md +46 -0
- package/core/templates/technical/refactor-plan-template.md +84 -0
- package/core/templates/technical/tech-design-template.md +71 -0
- package/core/workflows/bug-lifecycle.md +56 -0
- package/core/workflows/feature-lifecycle.md +347 -0
- package/core/workflows/hotfix-lifecycle.md +65 -0
- package/core/workflows/sprint-lifecycle.md +56 -0
- package/lib/install-codex.js +85 -0
- package/package.json +36 -0
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa-smoke-test
|
|
3
|
+
description: Use when the user asks to run /smoke-test, perform QA smoke testing for a ticket, verify a deployed build, record test results, or file bugs for failures.
|
|
4
|
+
command: /smoke-test
|
|
5
|
+
display_name: "Smoke Test"
|
|
6
|
+
version: 1.0.0
|
|
7
|
+
owner_agent: qa-tester
|
|
8
|
+
model_preference: sonnet
|
|
9
|
+
args:
|
|
10
|
+
- name: ticket_id
|
|
11
|
+
required: true
|
|
12
|
+
format: "TICKET-XXX"
|
|
13
|
+
description: "Ticket to smoke test"
|
|
14
|
+
- name: environment
|
|
15
|
+
required: false
|
|
16
|
+
type: string
|
|
17
|
+
default: "staging"
|
|
18
|
+
enum: [dev, staging, pre-prod]
|
|
19
|
+
description: "Target environment"
|
|
20
|
+
- name: depth
|
|
21
|
+
required: false
|
|
22
|
+
type: string
|
|
23
|
+
default: "standard"
|
|
24
|
+
enum: [quick, standard, thorough]
|
|
25
|
+
description: "Test coverage depth"
|
|
26
|
+
preconditions:
|
|
27
|
+
- ticket_exists: true
|
|
28
|
+
- ticket_status: QA
|
|
29
|
+
- environment_accessible: true
|
|
30
|
+
- build_deployed: true
|
|
31
|
+
postconditions:
|
|
32
|
+
- smoke_test_completed: true
|
|
33
|
+
- test_report_saved: true
|
|
34
|
+
- ticket_status: DONE | QA (if fails)
|
|
35
|
+
- bugs_filed: "for each failure found"
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
# /smoke-test
|
|
39
|
+
|
|
40
|
+
> Verify feature works end-to-end on deployed environment.
|
|
41
|
+
> **Gate**: QA → DONE transition.
|
|
42
|
+
|
|
43
|
+
## 🎯 Purpose
|
|
44
|
+
|
|
45
|
+
After merge to develop + deploy to staging, QA verifies:
|
|
46
|
+
1. All AC scenarios work in real environment
|
|
47
|
+
2. No obvious regressions in related flows
|
|
48
|
+
3. Non-functional aspects (performance, browser compat, security basics)
|
|
49
|
+
4. Feature is production-ready
|
|
50
|
+
|
|
51
|
+
Output: Pass → transition DONE, or Fail → file bugs, ticket back to IN_PROGRESS.
|
|
52
|
+
|
|
53
|
+
## 🚦 Trigger
|
|
54
|
+
|
|
55
|
+
**Manual**:
|
|
56
|
+
```
|
|
57
|
+
/smoke-test TICKET-042 # Standard depth, staging
|
|
58
|
+
/smoke-test TICKET-042 --depth=thorough # More extensive
|
|
59
|
+
/smoke-test TICKET-042 --env=pre-prod # Pre-prod check
|
|
60
|
+
/smoke-test TICKET-042 --depth=quick # Hotfix quick verify
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Auto**: Optional trigger after `/merge-pr` + deploy complete (via webhook).
|
|
64
|
+
|
|
65
|
+
## 📋 Preconditions
|
|
66
|
+
|
|
67
|
+
### 1. Ticket in QA state
|
|
68
|
+
Read ticket, verify `status = QA`. If not:
|
|
69
|
+
- IN_PROGRESS/IN_REVIEW → ABORT, merge first
|
|
70
|
+
- DONE → ABORT, already tested
|
|
71
|
+
- BLOCKED → ABORT, unblock first
|
|
72
|
+
|
|
73
|
+
### 2. Environment accessible
|
|
74
|
+
```bash
|
|
75
|
+
curl -sf --max-time 10 "$STAGING_URL/health" || ABORT "Staging not responding"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 3. Build with fix deployed
|
|
79
|
+
Check build version matches expected:
|
|
80
|
+
```bash
|
|
81
|
+
deployed_commit=$(curl -s "$STAGING_URL/version" | jq -r .commit)
|
|
82
|
+
expected_commit=$(cat project/tickets/${TICKET_ID}.json | jq -r .merge_info.merge_commit_sha)
|
|
83
|
+
# Verify deployed >= expected
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 4. Test environment has data
|
|
87
|
+
Required test accounts / test data exist. If not, setup before testing.
|
|
88
|
+
|
|
89
|
+
## 🔄 Execution Flow
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
┌──────────────────────────────────────────────────────────┐
|
|
93
|
+
│ STEP 1: Load context │
|
|
94
|
+
│ - Ticket + AC │
|
|
95
|
+
│ - Grooming notes │
|
|
96
|
+
│ - PR/commit info │
|
|
97
|
+
│ - Previous QA notes (if re-test) │
|
|
98
|
+
├──────────────────────────────────────────────────────────┤
|
|
99
|
+
│ STEP 2: Verify deployment │
|
|
100
|
+
│ - Ping environment │
|
|
101
|
+
│ - Confirm build version │
|
|
102
|
+
│ - Check service health │
|
|
103
|
+
├──────────────────────────────────────────────────────────┤
|
|
104
|
+
│ STEP 3: Execute AC scenarios │
|
|
105
|
+
│ For each scenario in ticket.acceptance_criteria: │
|
|
106
|
+
│ a. Setup preconditions (Given) │
|
|
107
|
+
│ b. Execute action (When) │
|
|
108
|
+
│ c. Verify outcome (Then) │
|
|
109
|
+
│ d. Record: PASS | FAIL | BLOCKED │
|
|
110
|
+
│ e. If FAIL: capture evidence (logs, screenshots) │
|
|
111
|
+
├──────────────────────────────────────────────────────────┤
|
|
112
|
+
│ STEP 4: Regression spot-check │
|
|
113
|
+
│ - Identify related features (same area) │
|
|
114
|
+
│ - Quick test core flows (login, signup, main CRUD) │
|
|
115
|
+
│ - Note any surprises │
|
|
116
|
+
├──────────────────────────────────────────────────────────┤
|
|
117
|
+
│ STEP 5: Depth-based additional tests │
|
|
118
|
+
│ quick: AC only, 1 browser │
|
|
119
|
+
│ standard: AC + regression + 2 browsers + mobile │
|
|
120
|
+
│ thorough: + edge cases + performance + security skim │
|
|
121
|
+
├──────────────────────────────────────────────────────────┤
|
|
122
|
+
│ STEP 6: Non-functional checks │
|
|
123
|
+
│ - Performance (response times within target) │
|
|
124
|
+
│ - No console errors in browser │
|
|
125
|
+
│ - No 5xx in server logs during test │
|
|
126
|
+
│ - Security: basic auth checks │
|
|
127
|
+
├──────────────────────────────────────────────────────────┤
|
|
128
|
+
│ STEP 7: Consolidate findings │
|
|
129
|
+
│ Categorize each failure: │
|
|
130
|
+
│ - AC failure → must fix, ticket stays QA/back │
|
|
131
|
+
│ - Regression → file bug, stays QA │
|
|
132
|
+
│ - Environmental → flag, retry │
|
|
133
|
+
│ - Minor cosmetic → file low-sev bug │
|
|
134
|
+
├──────────────────────────────────────────────────────────┤
|
|
135
|
+
│ STEP 8: Decision │
|
|
136
|
+
│ All PASS + no new regressions: │
|
|
137
|
+
│ → Transition ticket QA → DONE │
|
|
138
|
+
│ │
|
|
139
|
+
│ Any AC FAIL: │
|
|
140
|
+
│ → File bug(s) │
|
|
141
|
+
│ → Transition ticket QA → IN_PROGRESS (back to dev) │
|
|
142
|
+
│ │
|
|
143
|
+
│ Regression only (AC passes): │
|
|
144
|
+
│ → Ticket stays DONE (this feature works) │
|
|
145
|
+
│ → File separate regression bug (own ticket) │
|
|
146
|
+
├──────────────────────────────────────────────────────────┤
|
|
147
|
+
│ STEP 9: Generate report │
|
|
148
|
+
│ Save to: project/test-runs/TICKET-XXX-YYYYMMDD.md│
|
|
149
|
+
├──────────────────────────────────────────────────────────┤
|
|
150
|
+
│ STEP 10: Handoff │
|
|
151
|
+
│ Pass → scrum-master (ready for release) │
|
|
152
|
+
│ Fail → developer (bugs to fix) │
|
|
153
|
+
└──────────────────────────────────────────────────────────┘
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## 🔒 Hard Rules
|
|
157
|
+
|
|
158
|
+
### RULE SM-001: Must actually test
|
|
159
|
+
**MUST** execute tests on real environment. No "probably works" based on code review.
|
|
160
|
+
|
|
161
|
+
### RULE SM-002: Every AC scenario tested
|
|
162
|
+
**MUST NOT** skip scenarios. If any scenario blocked (e.g., no test data), flag and retry — don't declare pass.
|
|
163
|
+
|
|
164
|
+
### RULE SM-003: Evidence required for failures
|
|
165
|
+
Every FAIL **MUST** include:
|
|
166
|
+
- Steps tried
|
|
167
|
+
- Expected vs actual
|
|
168
|
+
- Screenshot/recording or log excerpt
|
|
169
|
+
- Timestamp
|
|
170
|
+
|
|
171
|
+
Without evidence, can't escalate/reproduce.
|
|
172
|
+
|
|
173
|
+
### RULE SM-004: Don't fix bugs
|
|
174
|
+
QA reports bugs, does NOT fix them. Even "small typo fix".
|
|
175
|
+
Exception: test data cleanup (OK).
|
|
176
|
+
|
|
177
|
+
### RULE SM-005: Timebox environmental issues
|
|
178
|
+
If environment blocks testing:
|
|
179
|
+
- 15 min troubleshooting
|
|
180
|
+
- Then escalate scrum-master (not proceed ignoring)
|
|
181
|
+
|
|
182
|
+
### RULE SM-006: Regression awareness
|
|
183
|
+
**MUST** think: "What else could this change have broken?"
|
|
184
|
+
Test at least 3 related flows.
|
|
185
|
+
|
|
186
|
+
### RULE SM-007: No sign-off with open SEV-1/SEV-2
|
|
187
|
+
Per RULE QA-006. Cannot transition ticket to DONE if:
|
|
188
|
+
- SEV-1 bug found in this smoke test
|
|
189
|
+
- SEV-2 bug in same feature area
|
|
190
|
+
|
|
191
|
+
### RULE SM-008: Document browser/device matrix
|
|
192
|
+
At least test 1 desktop browser + 1 mobile browser for UI changes.
|
|
193
|
+
Flag in report which were tested.
|
|
194
|
+
|
|
195
|
+
### RULE SM-009: Preserve test data hygiene
|
|
196
|
+
Per RULE QA-008: no production data.
|
|
197
|
+
|
|
198
|
+
### RULE SM-010: Honest reporting
|
|
199
|
+
No "looks good" without testing. No sign-off to unblock release pressure.
|
|
200
|
+
"Quality is a hill to die on."
|
|
201
|
+
|
|
202
|
+
## 📤 Output Format (Pass)
|
|
203
|
+
|
|
204
|
+
```markdown
|
|
205
|
+
## ✅ Smoke Test PASSED: TICKET-042
|
|
206
|
+
|
|
207
|
+
**Feature**: Password Reset via Email
|
|
208
|
+
**Environment**: staging
|
|
209
|
+
**Build**: v1.2.0-rc.3 (commit abc1234)
|
|
210
|
+
**Tested by**: qa-tester-agent
|
|
211
|
+
**Duration**: 28 min
|
|
212
|
+
**Depth**: standard
|
|
213
|
+
|
|
214
|
+
### AC Scenarios
|
|
215
|
+
| # | Scenario | Result |
|
|
216
|
+
|---|----------|--------|
|
|
217
|
+
| 1 | Happy path | ✅ PASS |
|
|
218
|
+
| 2 | Email not registered | ✅ PASS |
|
|
219
|
+
| 3 | Link expired | ✅ PASS |
|
|
220
|
+
| 4 | Rate limit | ✅ PASS |
|
|
221
|
+
|
|
222
|
+
**Coverage**: 4/4 scenarios
|
|
223
|
+
|
|
224
|
+
### Regression Spot-Check
|
|
225
|
+
| Area | Result |
|
|
226
|
+
|------|--------|
|
|
227
|
+
| Login (regular) | ✅ Works |
|
|
228
|
+
| Signup flow | ✅ Works |
|
|
229
|
+
| Session persistence | ✅ Works |
|
|
230
|
+
|
|
231
|
+
### Browser Matrix
|
|
232
|
+
| Browser | Desktop | Mobile |
|
|
233
|
+
|---------|---------|--------|
|
|
234
|
+
| Chrome 134 | ✅ | ✅ |
|
|
235
|
+
| Firefox 125 | ✅ | - |
|
|
236
|
+
| Safari 17 | ✅ | ✅ (iOS) |
|
|
237
|
+
|
|
238
|
+
### Performance
|
|
239
|
+
| Endpoint | p95 | Target | Status |
|
|
240
|
+
|----------|-----|--------|--------|
|
|
241
|
+
| POST /auth/request-reset | 320ms | <500ms | ✅ |
|
|
242
|
+
| POST /auth/reset-password | 380ms | <500ms | ✅ |
|
|
243
|
+
|
|
244
|
+
### Console / Logs
|
|
245
|
+
- Browser console: no errors
|
|
246
|
+
- Server logs: no 5xx during test
|
|
247
|
+
- Email delivery: all 10 test emails delivered within 60s
|
|
248
|
+
|
|
249
|
+
### Security Spot-Check
|
|
250
|
+
- [x] HTTPS enforced
|
|
251
|
+
- [x] No tokens in URL query strings (in Referer header)
|
|
252
|
+
- [x] Email enumeration prevented (timing-safe)
|
|
253
|
+
- [x] Rate limit normalizes email case
|
|
254
|
+
|
|
255
|
+
### Issues Found
|
|
256
|
+
None 🎉
|
|
257
|
+
|
|
258
|
+
### Decision
|
|
259
|
+
✅ **READY FOR RELEASE**
|
|
260
|
+
|
|
261
|
+
Ticket state: QA → DONE ✅
|
|
262
|
+
|
|
263
|
+
### Test Run Record
|
|
264
|
+
Saved to: `project/test-runs/TICKET-042-20260418.md`
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
HANDOFF → scrum-master
|
|
268
|
+
Action: Include in next release (/release command)
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
## 📤 Output Format (Fail)
|
|
272
|
+
|
|
273
|
+
```markdown
|
|
274
|
+
## ❌ Smoke Test FAILED: TICKET-042
|
|
275
|
+
|
|
276
|
+
**Feature**: Password Reset via Email
|
|
277
|
+
**Environment**: staging
|
|
278
|
+
**Build**: v1.2.0-rc.3
|
|
279
|
+
**Duration**: 42 min
|
|
280
|
+
**Failures**: 1 AC failure + 1 new bug
|
|
281
|
+
|
|
282
|
+
### AC Scenarios
|
|
283
|
+
| # | Scenario | Result |
|
|
284
|
+
|---|----------|--------|
|
|
285
|
+
| 1 | Happy path | ✅ PASS |
|
|
286
|
+
| 2 | Email not registered | ⚠️ PARTIAL (see below) |
|
|
287
|
+
| 3 | Link expired | ✅ PASS |
|
|
288
|
+
| 4 | Rate limit | ❌ FAIL (see BUG-002) |
|
|
289
|
+
|
|
290
|
+
### Failure Details
|
|
291
|
+
|
|
292
|
+
#### ❌ Scenario 4: Rate limit
|
|
293
|
+
**Expected**: 6th request within hour returns HTTP 429
|
|
294
|
+
**Actual**: All 20 requests returned 200
|
|
295
|
+
|
|
296
|
+
**Evidence**:
|
|
297
|
+
```
|
|
298
|
+
Request 1: 200 OK (0.18s)
|
|
299
|
+
Request 2: 200 OK (0.15s)
|
|
300
|
+
...
|
|
301
|
+
Request 20: 200 OK (0.21s)
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
**Hypothesis**: Rate limit middleware not applied to route, or Redis connection failing silently.
|
|
305
|
+
|
|
306
|
+
**Filed**: BUG-002 (SEV-2)
|
|
307
|
+
|
|
308
|
+
#### ⚠️ Scenario 2: Email not registered (PARTIAL)
|
|
309
|
+
**Working**:
|
|
310
|
+
- Correct generic message shown
|
|
311
|
+
- No email sent
|
|
312
|
+
|
|
313
|
+
**Issue**:
|
|
314
|
+
- Response time 180ms (registered email) vs 220ms (unregistered) — 40ms diff
|
|
315
|
+
- Possibly distinguishable via timing attack
|
|
316
|
+
|
|
317
|
+
**Filed**: BUG-003 (SEV-3, security hardening)
|
|
318
|
+
|
|
319
|
+
### Other Issues Found
|
|
320
|
+
|
|
321
|
+
#### BUG-004: Email HTML renders as plain text
|
|
322
|
+
(See separate bug report, filed as SEV-3)
|
|
323
|
+
|
|
324
|
+
### Regression Check
|
|
325
|
+
No regressions found in login/signup.
|
|
326
|
+
|
|
327
|
+
### Decision
|
|
328
|
+
|
|
329
|
+
❌ **NOT READY** - Must fix BUG-002 before release
|
|
330
|
+
|
|
331
|
+
Ticket state: QA → IN_PROGRESS (back to dev)
|
|
332
|
+
|
|
333
|
+
### Action Required
|
|
334
|
+
1. **Developer**: Pick up BUG-002, investigate rate limit middleware
|
|
335
|
+
2. **Tech Lead**: Review whether this indicates deeper architecture issue
|
|
336
|
+
3. **QA**: Will re-test once BUG-002 fix merges
|
|
337
|
+
|
|
338
|
+
### Bugs Filed
|
|
339
|
+
- BUG-002: Rate limit not enforced (SEV-2) — blocks release
|
|
340
|
+
- BUG-003: Timing attack on email existence (SEV-3)
|
|
341
|
+
- BUG-004: Email HTML not rendering (SEV-3)
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
HANDOFF → developer
|
|
345
|
+
Action: /implement-task BUG-002 (SEV-2 priority)
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
## 🚨 Failure Modes
|
|
349
|
+
|
|
350
|
+
| Scenario | Action |
|
|
351
|
+
|----------|--------|
|
|
352
|
+
| Environment down | Timebox 15 min, escalate SM |
|
|
353
|
+
| Build not deployed | Wait/ask SM for deploy status |
|
|
354
|
+
| Test account locked | Create fresh, document in ticket |
|
|
355
|
+
| Cannot reproduce scenario | Per RULE QA-007 timebox |
|
|
356
|
+
| External service failing | Flag, test what's possible, note limitations |
|
|
357
|
+
| Data cleanup fails | Flag, continue testing, tech-debt ticket |
|
|
358
|
+
|
|
359
|
+
## 🔗 Related Commands
|
|
360
|
+
|
|
361
|
+
- **Before**: `/merge-pr` (must be merged + deployed)
|
|
362
|
+
- **After**:
|
|
363
|
+
- Pass: ticket DONE, `/release` eventually
|
|
364
|
+
- Fail: `/report-bug` (usually auto-triggered)
|
|
365
|
+
- **Re-test**: `/smoke-test TICKET-042` after fix
|
|
366
|
+
|
|
367
|
+
## 📊 Metrics Tracked
|
|
368
|
+
|
|
369
|
+
```json
|
|
370
|
+
{
|
|
371
|
+
"timestamp": "2026-04-18T18:00:00Z",
|
|
372
|
+
"ticket_id": "TICKET-042",
|
|
373
|
+
"environment": "staging",
|
|
374
|
+
"depth": "standard",
|
|
375
|
+
"duration_minutes": 28,
|
|
376
|
+
"ac_scenarios_total": 4,
|
|
377
|
+
"ac_scenarios_passed": 4,
|
|
378
|
+
"regression_areas_tested": 3,
|
|
379
|
+
"bugs_filed": 0,
|
|
380
|
+
"result": "PASS",
|
|
381
|
+
"final_state": "DONE"
|
|
382
|
+
}
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
---
|
|
386
|
+
**Last updated**: 2026-04-18
|
|
387
|
+
**Maintainer**: QA Lead
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa-triage-bug
|
|
3
|
+
description: Use when the user asks to run /triage-bug, triage a NEW or NEEDS_MORE_INFO bug, set bug priority, identify ownership, or define the next QA action.
|
|
4
|
+
command: /triage-bug
|
|
5
|
+
display_name: "Triage Bug"
|
|
6
|
+
version: 1.0.0
|
|
7
|
+
status: READY
|
|
8
|
+
owner_agent: business-analyst
|
|
9
|
+
consults_agents:
|
|
10
|
+
- tech-lead
|
|
11
|
+
- qa-tester
|
|
12
|
+
model_preference: sonnet
|
|
13
|
+
args:
|
|
14
|
+
- name: bug_id
|
|
15
|
+
required: true
|
|
16
|
+
format: "BUG-XXX"
|
|
17
|
+
preconditions:
|
|
18
|
+
- bug_exists: true
|
|
19
|
+
- bug_status_in: [NEW, NEEDS_MORE_INFO]
|
|
20
|
+
postconditions:
|
|
21
|
+
- bug_priority_set: true
|
|
22
|
+
- owner_or_next_action_set: true
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# /triage-bug
|
|
26
|
+
|
|
27
|
+
> Classifies a bug by severity, priority, ownership, duplicate status, and next action.
|
|
28
|
+
|
|
29
|
+
## 🎯 Purpose
|
|
30
|
+
|
|
31
|
+
Turn a raw bug report into actionable work with business impact and routing.
|
|
32
|
+
|
|
33
|
+
## 🔄 Execution Flow
|
|
34
|
+
|
|
35
|
+
1. Load bug report and evidence.
|
|
36
|
+
2. Check for duplicates and related tickets.
|
|
37
|
+
3. Validate reproducer quality.
|
|
38
|
+
4. Assess severity using user impact, data/security risk, workaround, and business impact.
|
|
39
|
+
5. Assign priority and target fix window.
|
|
40
|
+
6. Route to hotfix, sprint backlog, needs info, duplicate, or won’t fix.
|
|
41
|
+
7. Update bug state and comments.
|
|
42
|
+
|
|
43
|
+
## 🔒 Hard Rules
|
|
44
|
+
|
|
45
|
+
- MUST justify severity.
|
|
46
|
+
- MUST escalate SEV-1 immediately to Tech Lead and Scrum Master.
|
|
47
|
+
- MUST NOT close as duplicate without linking original bug.
|
|
48
|
+
- MUST NOT downplay security/data issues.
|
|
49
|
+
|
|
50
|
+
## 📤 Outputs
|
|
51
|
+
|
|
52
|
+
- Severity and priority
|
|
53
|
+
- Triage decision
|
|
54
|
+
- Owner
|
|
55
|
+
- Linked tickets or bugs
|
|
56
|
+
- Next command, often `/hotfix` or `/verify-fix`
|
|
57
|
+
|
|
58
|
+
## 🔗 Related Commands
|
|
59
|
+
|
|
60
|
+
- `/report-bug`
|
|
61
|
+
- `/hotfix`
|
|
62
|
+
- `/verify-fix`
|