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.
Files changed (103) hide show
  1. package/.claude-plugin/plugin.json +21 -0
  2. package/.codex-plugin/plugin.json +35 -0
  3. package/.cursor-plugin/plugin.json +22 -0
  4. package/README.md +173 -0
  5. package/bin/ai-core-framework.js +110 -0
  6. package/core/README.md +162 -0
  7. package/core/agents/README.md +32 -0
  8. package/core/agents/business-analyst.md +269 -0
  9. package/core/agents/developer.md +375 -0
  10. package/core/agents/qa-tester.md +477 -0
  11. package/core/agents/scrum-master.md +136 -0
  12. package/core/agents/tech-lead.md +345 -0
  13. package/core/config/backlog.schema.json +38 -0
  14. package/core/config/docs-policy.default.json +37 -0
  15. package/core/config/release.schema.json +120 -0
  16. package/core/config/ticket.schema.json +253 -0
  17. package/core/rules/00-global-rules.md +373 -0
  18. package/core/rules/01-git-workflow.md +388 -0
  19. package/core/rules/02-code-quality.md +77 -0
  20. package/core/rules/03-security.md +78 -0
  21. package/core/rules/04-documentation.md +72 -0
  22. package/core/rules/05-testing-mandatory.md +374 -0
  23. package/core/rules/06-approval-gates.md +388 -0
  24. package/core/rules/07-definition-of-ready.md +112 -0
  25. package/core/rules/08-definition-of-done.md +149 -0
  26. package/core/scripts/ai-core.sh +456 -0
  27. package/core/scripts/generate-views.sh +210 -0
  28. package/core/scripts/install-codex-prompts.sh +127 -0
  29. package/core/scripts/log-user-request.sh +113 -0
  30. package/core/scripts/setup-project.sh +183 -0
  31. package/core/scripts/sync-platforms.sh +322 -0
  32. package/core/scripts/validate-audit-log.sh +73 -0
  33. package/core/scripts/validate-docs.sh +365 -0
  34. package/core/scripts/validate-permissions.sh +132 -0
  35. package/core/scripts/validate-state.sh +611 -0
  36. package/core/scripts/workflow.sh +513 -0
  37. package/core/skills/README.md +21 -0
  38. package/core/skills/ai-core-commands/SKILL.md +86 -0
  39. package/core/skills/brainstorming/SKILL.md +40 -0
  40. package/core/skills/development-implement-task/SKILL.md +308 -0
  41. package/core/skills/executing-ticket/SKILL.md +28 -0
  42. package/core/skills/git-branch-status/SKILL.md +56 -0
  43. package/core/skills/git-cleanup-branches/SKILL.md +57 -0
  44. package/core/skills/git-scan-untracked/SKILL.md +50 -0
  45. package/core/skills/meta-generate-views/SKILL.md +54 -0
  46. package/core/skills/meta-request-log/SKILL.md +61 -0
  47. package/core/skills/meta-sprint-report/SKILL.md +59 -0
  48. package/core/skills/meta-sync-platforms/SKILL.md +53 -0
  49. package/core/skills/meta-ticket-health/SKILL.md +61 -0
  50. package/core/skills/meta-validate-audit-log/SKILL.md +42 -0
  51. package/core/skills/meta-validate-docs/SKILL.md +58 -0
  52. package/core/skills/meta-validate-permissions/SKILL.md +53 -0
  53. package/core/skills/meta-validate-state/SKILL.md +58 -0
  54. package/core/skills/planning-analyze-requirements/SKILL.md +471 -0
  55. package/core/skills/planning-backlog-status/SKILL.md +57 -0
  56. package/core/skills/planning-document-existing-requirements/SKILL.md +246 -0
  57. package/core/skills/planning-estimate-task/SKILL.md +60 -0
  58. package/core/skills/planning-groom-ticket/SKILL.md +442 -0
  59. package/core/skills/planning-mark-ready/SKILL.md +111 -0
  60. package/core/skills/planning-plan-refactor/SKILL.md +66 -0
  61. package/core/skills/planning-plan-sprint/SKILL.md +112 -0
  62. package/core/skills/planning-prioritize-backlog/SKILL.md +62 -0
  63. package/core/skills/planning-write-plan/SKILL.md +68 -0
  64. package/core/skills/project-detect-stack/SKILL.md +71 -0
  65. package/core/skills/project-discover-codebase/SKILL.md +74 -0
  66. package/core/skills/project-setup-project/SKILL.md +113 -0
  67. package/core/skills/qa-bug-status/SKILL.md +52 -0
  68. package/core/skills/qa-report-bug/SKILL.md +518 -0
  69. package/core/skills/qa-smoke-test/SKILL.md +387 -0
  70. package/core/skills/qa-triage-bug/SKILL.md +62 -0
  71. package/core/skills/qa-verify-fix/SKILL.md +446 -0
  72. package/core/skills/release-hotfix/SKILL.md +117 -0
  73. package/core/skills/release-release/SKILL.md +123 -0
  74. package/core/skills/release-rollback/SKILL.md +62 -0
  75. package/core/skills/review-create-pr/SKILL.md +418 -0
  76. package/core/skills/review-merge-pr/SKILL.md +425 -0
  77. package/core/skills/review-techlead-review/SKILL.md +547 -0
  78. package/core/skills/using-ai-core/SKILL.md +72 -0
  79. package/core/skills/verification-before-done/SKILL.md +35 -0
  80. package/core/skills/writing-implementation-plan/SKILL.md +45 -0
  81. package/core/templates/ci/ai-core-governance.yml +112 -0
  82. package/core/templates/ci/node-pnpm.yml +35 -0
  83. package/core/templates/pm/retrospective-template.md +47 -0
  84. package/core/templates/pm/sprint-plan-template.md +45 -0
  85. package/core/templates/pr/pull-request-template.md +247 -0
  86. package/core/templates/project/CODEOWNERS +11 -0
  87. package/core/templates/project/docs-policy.json +3 -0
  88. package/core/templates/project/project-config.yaml +137 -0
  89. package/core/templates/project/project-structure.yaml +76 -0
  90. package/core/templates/qa/bug-report-template.md +371 -0
  91. package/core/templates/qa/test-plan-template.md +57 -0
  92. package/core/templates/release/release-record-template.json +67 -0
  93. package/core/templates/requirements/PRD-template.md +58 -0
  94. package/core/templates/requirements/user-story-template.md +381 -0
  95. package/core/templates/technical/ADR-template.md +46 -0
  96. package/core/templates/technical/refactor-plan-template.md +84 -0
  97. package/core/templates/technical/tech-design-template.md +71 -0
  98. package/core/workflows/bug-lifecycle.md +56 -0
  99. package/core/workflows/feature-lifecycle.md +347 -0
  100. package/core/workflows/hotfix-lifecycle.md +65 -0
  101. package/core/workflows/sprint-lifecycle.md +56 -0
  102. package/lib/install-codex.js +85 -0
  103. package/package.json +36 -0
@@ -0,0 +1,518 @@
1
+ ---
2
+ name: qa-report-bug
3
+ description: Use when the user asks to run /report-bug, file a bug from a reproducer, capture severity and environment details, or create a bug ticket from QA findings.
4
+ command: /report-bug
5
+ display_name: "Report Bug"
6
+ version: 1.0.0
7
+ owner_agent: qa-tester
8
+ # Also invokable by: any agent/user who discovers a bug
9
+ model_preference: sonnet
10
+ args:
11
+ - name: title
12
+ required: true
13
+ type: string
14
+ description: "Short bug title"
15
+ - name: severity
16
+ required: false
17
+ type: string
18
+ enum: [SEV-1, SEV-2, SEV-3, SEV-4, auto]
19
+ default: "auto"
20
+ description: "Severity (auto = AI assesses)"
21
+ preconditions:
22
+ - has_reproducer: true
23
+ - has_environment_info: true
24
+ postconditions:
25
+ - bug_ticket_created: true
26
+ - bug_status: NEW
27
+ - triage_notified: true
28
+ - sev1_escalated: "if applicable"
29
+ ---
30
+
31
+ # /report-bug
32
+
33
+ > File a well-formed bug report. Quality gate: no ambiguous reports.
34
+
35
+ ## 🎯 Purpose
36
+
37
+ Create bug ticket that developer can actually fix. Enforce:
38
+ 1. Clear reproducer (copy-pasteable)
39
+ 2. Expected vs actual behavior
40
+ 3. Environment details
41
+ 4. Severity assessment
42
+ 5. Evidence (logs, screenshots)
43
+
44
+ Bad bug reports waste dev time → strict template enforcement here.
45
+
46
+ ## 🚦 Trigger
47
+
48
+ **Manual**:
49
+ ```
50
+ /report-bug "Login returns 500 for emails with +"
51
+ /report-bug "Checkout crashes when cart has 100+ items" --severity=SEV-2
52
+ ```
53
+
54
+ **Auto**:
55
+ - From `/smoke-test` when tests fail
56
+ - From `/verify-fix` when bug still exists or new bug found
57
+
58
+ ## 📋 Preconditions (STRICT)
59
+
60
+ ### 1. Has reproducer
61
+ User/agent MUST provide:
62
+ - Steps to reproduce
63
+ - Environment (where observed)
64
+
65
+ If not → prompt interactive collection.
66
+
67
+ ### 2. Not duplicate
68
+ Check existing open bugs for similar:
69
+ - Grep bug titles in `project/bugs/*.json`
70
+ - If > 80% similarity → flag, ask if linking to existing
71
+
72
+ ### 3. Has evidence (soft requirement)
73
+ Ideally: screenshot, log excerpt, network trace.
74
+ If missing, still accept but flag in bug.
75
+
76
+ ## 🔄 Execution Flow
77
+
78
+ ```
79
+ ┌──────────────────────────────────────────────────────────┐
80
+ │ STEP 1: Collect info │
81
+ │ If args incomplete, interactive collection: │
82
+ │ - Title (clear, specific) │
83
+ │ - Steps to reproduce │
84
+ │ - Expected behavior │
85
+ │ - Actual behavior │
86
+ │ - Environment (OS, browser, env name, build) │
87
+ │ - Frequency (always, sometimes, once) │
88
+ │ - Evidence (screenshot/log) │
89
+ ├──────────────────────────────────────────────────────────┤
90
+ │ STEP 2: Validate reproducer │
91
+ │ - Steps numbered, clear │
92
+ │ - No ambiguous phrases ("sometimes breaks") │
93
+ │ - Expected != Actual (not just confusion) │
94
+ │ If fails: request clarification │
95
+ ├──────────────────────────────────────────────────────────┤
96
+ │ STEP 3: Check for duplicates │
97
+ │ - Search by title similarity │
98
+ │ - Search by symptom keywords │
99
+ │ If found: offer to link as duplicate │
100
+ ├──────────────────────────────────────────────────────────┤
101
+ │ STEP 4: Assess severity │
102
+ │ If --severity=auto: │
103
+ │ Rules (see RULE RB-003): │
104
+ │ - Data loss / security / prod down → SEV-1 │
105
+ │ - Major feature broken, no workaround → SEV-2 │
106
+ │ - Minor broken, workaround exists → SEV-3 │
107
+ │ - Cosmetic, edge case → SEV-4 │
108
+ │ Else: use provided severity │
109
+ │ │
110
+ │ Validate: reasoning supports severity │
111
+ ├──────────────────────────────────────────────────────────┤
112
+ │ STEP 5: Determine impact │
113
+ │ - Users affected: all | many | few | specific segment │
114
+ │ - Business impact: revenue / reputation / operations │
115
+ │ - Security impact: if any │
116
+ │ - Data impact: if any │
117
+ ├──────────────────────────────────────────────────────────┤
118
+ │ STEP 6: Identify related │
119
+ │ - Feature ticket (if relates to recent feature) │
120
+ │ - Similar past bugs │
121
+ │ - Relevant ADRs │
122
+ │ - Components affected │
123
+ ├──────────────────────────────────────────────────────────┤
124
+ │ STEP 7: Generate bug ID │
125
+ │ BUG-NNN (separate sequence from TICKET-) │
126
+ ├──────────────────────────────────────────────────────────┤
127
+ │ STEP 8: Create bug ticket │
128
+ │ Path: project/bugs/BUG-NNN.json │
129
+ │ Follow template: templates/qa/bug-report-template.md │
130
+ │ Initial status: NEW │
131
+ ├──────────────────────────────────────────────────────────┤
132
+ │ STEP 9: SEV-1 special handling │
133
+ │ If SEV-1: │
134
+ │ - Console: 🚨 SEV-1 BUG FILED │
135
+ │ - Immediate HANDOFF → scrum-master + tech-lead │
136
+ │ - Suggest: /hotfix BUG-NNN │
137
+ │ - (Optional) Pager/Slack urgent notification │
138
+ ├──────────────────────────────────────────────────────────┤
139
+ │ STEP 10: Normal handoff │
140
+ │ HANDOFF → scrum-master for triage │
141
+ │ Suggest: /triage-bug BUG-NNN │
142
+ └──────────────────────────────────────────────────────────┘
143
+ ```
144
+
145
+ ## 🔒 Hard Rules
146
+
147
+ ### RULE RB-001: Reproducer quality gate
148
+ **MUST** reject vague reports. Examples of unacceptable:
149
+ - ❌ "Login doesn't work"
150
+ - ❌ "Page is broken"
151
+ - ❌ "Sometimes it fails"
152
+
153
+ Require:
154
+ - ✅ Specific conditions
155
+ - ✅ Exact steps
156
+ - ✅ Observable outcome
157
+
158
+ If user insists on filing anyway → file with NEEDS_MORE_INFO status, not NEW.
159
+
160
+ ### RULE RB-002: No sensitive data
161
+ **MUST NOT** include:
162
+ - Real passwords, tokens, session cookies
163
+ - Customer PII (emails unless test account, credit cards, SSNs)
164
+ - Internal secret URLs
165
+
166
+ Redact as `[REDACTED_PASSWORD]`, `user+XXX@example.com`, etc.
167
+
168
+ ### RULE RB-003: Severity assessment rigorous
169
+ **MUST** justify severity with:
170
+ - User impact (how many, what percentage)
171
+ - Business impact (financial, reputational, legal)
172
+ - Workaround availability
173
+ - Data/security implications
174
+
175
+ No severity inflation (everything SEV-1) or deflation (SEV-1 marked SEV-3 to avoid interrupting).
176
+
177
+ Severity matrix:
178
+
179
+ | Criterion | SEV-1 | SEV-2 | SEV-3 | SEV-4 |
180
+ |-----------|-------|-------|-------|-------|
181
+ | Users affected | All / critical | Many / important | Few | Isolated |
182
+ | Data loss | Yes | Possible | No | No |
183
+ | Security breach | Yes | Possible | No | No |
184
+ | Production impact | Down / failing | Degraded | Minor | None |
185
+ | Workaround | No | Difficult | Exists | Trivial |
186
+
187
+ ### RULE RB-004: SEV-1 immediate escalation
188
+ **MUST** notify tech-lead + scrum-master immediately:
189
+ - Before typing full report (if observing SEV-1)
190
+ - Console output: `🚨 SEV-1`
191
+ - Even at 3am, file + escalate
192
+
193
+ Don't "wait until tomorrow" for SEV-1.
194
+
195
+ ### RULE RB-005: No fix suggestions required
196
+ Bug reporter **NOT required** to suggest fix. But **MAY** include hypothesis (helpful for dev).
197
+
198
+ If hypothesis included, label it clearly as "Hypothesis (not verified)".
199
+
200
+ ### RULE RB-006: Link to related
201
+ **MUST** link:
202
+ - Feature ticket (if bug in recent feature) → helps code context
203
+ - Similar past bugs → helps pattern recognition
204
+
205
+ ### RULE RB-007: Environment completeness
206
+ **MUST** capture:
207
+ - Environment name (dev/staging/prod)
208
+ - Build version / commit SHA
209
+ - Browser + version (for UI)
210
+ - OS + version
211
+ - Date/time observed
212
+ - User agent (for UI)
213
+
214
+ Missing env info = bug 50% harder to fix.
215
+
216
+ ### RULE RB-008: Frequency honest
217
+ **MUST** report actual frequency:
218
+ - Always (10/10)
219
+ - Usually (7/10)
220
+ - Sometimes (3-5/10)
221
+ - Rarely (1/10)
222
+ - Once (1/1, cannot re-test)
223
+
224
+ Don't say "always" if not sure.
225
+
226
+ ### RULE RB-009: Evidence preservation
227
+ Screenshots, logs, HAR files → save to `project/bugs/evidence/BUG-NNN/`.
228
+
229
+ Don't paste long logs in bug body → link to file.
230
+
231
+ ### RULE RB-010: No emotions in reports
232
+ **MUST NOT** include:
233
+ - Frustration language ("this is terrible")
234
+ - Blame ("developer broke everything")
235
+ - Customer language not useful for fixing
236
+
237
+ Stay factual. Reporter frustration is valid but doesn't help fix.
238
+
239
+ ## 📥 Input Examples
240
+
241
+ ### Example 1: Full form
242
+ ```
243
+ /report-bug "Login returns 500 for emails containing +"
244
+
245
+ Steps:
246
+ 1. Go to /login
247
+ 2. Enter email: "user+tag@example.com"
248
+ 3. Enter any password
249
+ 4. Click Login
250
+
251
+ Expected: Normal login flow (success or invalid credentials error)
252
+ Actual: HTTP 500, white error page
253
+
254
+ Environment: staging, build v1.2.0-rc.3
255
+ Browser: Chrome 134, macOS 14.4
256
+ Frequency: Always (5/5)
257
+ ```
258
+
259
+ ### Example 2: Minimal (will prompt)
260
+ ```
261
+ /report-bug "Cart broken"
262
+ ```
263
+ Expected response: Interactive collection of missing info.
264
+
265
+ ### Example 3: Auto-severity
266
+ ```
267
+ /report-bug "Customer DB shows 0 rows on dashboard"
268
+ ```
269
+ Auto assess: Data integrity concern → SEV-1.
270
+
271
+ ## 📤 Output Format (Created)
272
+
273
+ ```markdown
274
+ ## 🐛 Bug Filed: BUG-005
275
+
276
+ **Title**: Login returns 500 for emails containing +
277
+ **Severity**: SEV-2 (assessed automatically)
278
+ **Status**: NEW
279
+ **Filed by**: qa-tester-agent
280
+ **Filed**: 2026-04-18 19:00 UTC
281
+
282
+ ### Reproducer
283
+
284
+ **Steps**:
285
+ 1. Go to https://staging.app/login
286
+ 2. Enter email: `user+tag@example.com` (any plus sign in local part)
287
+ 3. Enter any password
288
+ 4. Click "Log in" button
289
+
290
+ **Expected**: Normal login flow — either successful login or "Invalid credentials" error message
291
+ **Actual**: HTTP 500 response, white error page with "Something went wrong"
292
+
293
+ ### Environment
294
+ | Field | Value |
295
+ |-------|-------|
296
+ | Environment | staging |
297
+ | Build | v1.2.0-rc.3 |
298
+ | Commit | abc1234 |
299
+ | Browser | Chrome 134.0.6998.88 |
300
+ | OS | macOS 14.4 |
301
+ | Observed | 2026-04-18 18:45 UTC |
302
+
303
+ ### Frequency
304
+ Always (5/5 attempts)
305
+
306
+ ### Evidence
307
+ - Screenshot: `project/bugs/evidence/BUG-005/screenshot-1.png`
308
+ - Network trace: `project/bugs/evidence/BUG-005/har.json`
309
+ - Server log excerpt:
310
+ ```
311
+ 2026-04-18T18:45:23Z ERROR handler/login.ts:42
312
+ Unhandled exception: InvalidEmailError
313
+ at validateEmail (src/auth/validators.ts:67)
314
+ at loginHandler (src/handlers/login.ts:34)
315
+ Email input: "user tag@example.com" <-- Note: space, not +!
316
+ ```
317
+
318
+ ### Severity Assessment
319
+
320
+ **SEV-2** because:
321
+ - Users affected: ~2-5% (emails with +)
322
+ - No workaround (users cannot log in)
323
+ - Core functionality broken (login)
324
+ - No data loss
325
+ - No security issue
326
+
327
+ Not SEV-1 because:
328
+ - Not all users affected
329
+ - Production still working for majority
330
+ - Not data loss / security
331
+
332
+ ### Impact Analysis
333
+ - **User count**: Estimated 2-5% of user base use + in emails (Gmail aliases common)
334
+ - **Business**: Revenue impact from locked-out users
335
+ - **Customer support**: Likely support tickets if deployed to prod
336
+
337
+ ### Hypothesis (not verified)
338
+
339
+ Looking at log: "user tag@example.com" instead of "user+tag@example.com"
340
+
341
+ Likely: URL decoding treating + as space (classic `encodeURIComponent` vs `+` issue). Form encoding should preserve + in email field.
342
+
343
+ ### Related
344
+
345
+ - **Feature**: None (auth system, no recent changes)
346
+ - **Similar past bugs**: None found
347
+ - **Components**: `src/handlers/login.ts`, `src/auth/validators.ts`
348
+ - **ADRs**: ADR-0003 (authentication strategy)
349
+
350
+ ### Ticket File
351
+
352
+ Created: `project/bugs/BUG-005.json`
353
+
354
+ ### Next Steps
355
+
356
+ 1. **Scrum Master**: `/triage-bug BUG-005` (confirm severity, assign sprint)
357
+ 2. **Tech Lead**: Review hypothesis, assign dev
358
+ 3. **Developer**: Fix + add regression test per RULE TEST-008
359
+ 4. **QA**: `/verify-fix BUG-005` after fix deploys
360
+
361
+ ---
362
+ HANDOFF → scrum-master
363
+ Action: /triage-bug BUG-005
364
+ ```
365
+
366
+ ## 📤 Output Format (SEV-1)
367
+
368
+ ```markdown
369
+ ## 🚨 SEV-1 BUG FILED: BUG-006
370
+
371
+ **🚨 IMMEDIATE ACTION REQUIRED 🚨**
372
+
373
+ **Title**: Payment processing fails - all transactions returning error
374
+ **Severity**: SEV-1 (CRITICAL)
375
+ **Status**: NEW
376
+ **Filed**: 2026-04-18 19:15 UTC
377
+
378
+ ### Impact
379
+ - **Production**: DOWN (payments)
380
+ - **Users affected**: 100% of purchase attempts
381
+ - **Revenue impact**: ~$5K/hour lost
382
+ - **Duration**: Started 19:00 UTC (15 min ago)
383
+
384
+ ### Reproducer
385
+ [Steps included]
386
+
387
+ ### Evidence
388
+ [Screenshots + error logs]
389
+
390
+ ### Hypothesis
391
+ [If any]
392
+
393
+ ### 🚨 Immediate Actions
394
+
395
+ 1. **Scrum Master**: Declare incident, notify stakeholders
396
+ 2. **Tech Lead**: `/hotfix BUG-006` NOW
397
+ 3. **DevOps**: Check recent deploys, consider rollback
398
+ 4. **Customer Success**: Prepare comms if not resolved in 30 min
399
+
400
+ ### Escalation
401
+
402
+ - [x] Tech Lead notified
403
+ - [x] Scrum Master notified
404
+ - [ ] Engineering Manager (if not resolved in 1h)
405
+ - [ ] Executive team (if not resolved in 2h)
406
+
407
+ ### Ticket File
408
+ Created: `project/bugs/BUG-006.json`
409
+
410
+ ---
411
+ HANDOFF → tech-lead + scrum-master (URGENT)
412
+ Action: /hotfix BUG-006 immediately
413
+ ```
414
+
415
+ ## 📤 Output Format (Duplicate)
416
+
417
+ ```markdown
418
+ ## ⚠️ Possible Duplicate
419
+
420
+ **Attempted to file**: "Login returns 500 for emails with +"
421
+
422
+ ### Existing similar bug:
423
+ - **BUG-003**: "Login 500 error for certain email formats"
424
+ - Status: IN_PROGRESS
425
+ - Assigned: @developer-alice
426
+ - Created: 2026-04-17 (1 day ago)
427
+ - Similarity: 92%
428
+
429
+ ### Options
430
+
431
+ 1. **Link as related**: Add your evidence to BUG-003 (recommended)
432
+ → `/comment BUG-003 "Also reproducible with + character..."`
433
+
434
+ 2. **File as new**: If you believe it's different
435
+ → `/report-bug ... --force-new --link-to=BUG-003`
436
+
437
+ 3. **Cancel**: Do nothing (already tracked)
438
+
439
+ What would you like to do?
440
+ ```
441
+
442
+ ## 📤 Output Format (Reject Low Quality)
443
+
444
+ ```markdown
445
+ ## ❌ Cannot File Bug - Insufficient Info
446
+
447
+ **Attempted**: "Login is broken"
448
+
449
+ ### Missing required information
450
+
451
+ - [ ] **Steps to reproduce**: What did you do exactly?
452
+ - [ ] **Expected**: What should happen?
453
+ - [ ] **Actual**: What does happen?
454
+ - [ ] **Environment**: Where did you see this?
455
+ - [ ] **Frequency**: Every time? Sometimes? Once?
456
+
457
+ ### Why this matters
458
+
459
+ Developer cannot fix "broken" — needs specific scenario. Example of good bug:
460
+
461
+ > Login returns 500 for emails with + sign.
462
+ > Steps: 1) Go to /login, 2) Enter "user+x@y.com", 3) Click login
463
+ > Expected: Normal flow. Actual: HTTP 500.
464
+ > Env: staging, Chrome 134. Always happens.
465
+
466
+ ### Options
467
+
468
+ 1. **Refile with details**:
469
+ ```
470
+ /report-bug "Login returns 500 for emails with +"
471
+ ```
472
+ (Provide full info when prompted)
473
+
474
+ 2. **Get help**: Ask scrum-master to help reproduce and file
475
+
476
+ ### No bug filed.
477
+ ```
478
+
479
+ ## 🚨 Failure Modes
480
+
481
+ | Scenario | Action |
482
+ |----------|--------|
483
+ | No reproducer | Interactive collection or reject |
484
+ | Duplicate found | Suggest linking to existing |
485
+ | Ambiguous severity | AI suggests, human confirms |
486
+ | SEV-1 after hours | File + page on-call immediately |
487
+ | Reporter gave bad info | Diplomatic pushback, guide to quality |
488
+ | Evidence file too large | Store in core, link reference |
489
+
490
+ ## 🔗 Related Commands
491
+
492
+ - **Before**: `/smoke-test` (often finds bugs) or manual discovery
493
+ - **After**:
494
+ - SEV-1: `/hotfix`
495
+ - Normal: `/triage-bug`
496
+ - After fix: `/verify-fix`
497
+ - **Alternative**: `/feedback` (for feature requests, not bugs)
498
+
499
+ ## 📊 Metrics Tracked
500
+
501
+ ```json
502
+ {
503
+ "timestamp": "2026-04-18T19:00:00Z",
504
+ "bug_id": "BUG-005",
505
+ "reporter": "qa-tester-agent",
506
+ "severity": "SEV-2",
507
+ "has_reproducer": true,
508
+ "has_evidence": true,
509
+ "auto_severity": true,
510
+ "duplicate_of": null,
511
+ "sev1_escalated": false,
512
+ "duration_to_file_minutes": 4
513
+ }
514
+ ```
515
+
516
+ ---
517
+ **Last updated**: 2026-04-18
518
+ **Maintainer**: QA Lead