一键导入
qa
Use after /execute, before /review, when user says "QA", "test the app", "browser test", "check the UI", or for any feature with UI changes.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use after /execute, before /review, when user says "QA", "test the app", "browser test", "check the UI", or for any feature with UI changes.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when the plan is approved, user says "create beads", "beads for...", or plan documents exist.
Use when beads are created (/beads completed), user says "review beads", "check beads", "bead review", or before starting /execute.
Use when design is approved, user says "write the plan", "plan this", "create plan for...", or a design document exists.
Use when a plan is complete (/plan finished), user says "review the plan", "check the plan", or before running /beads on a new plan.
Use when beads exist and are ready for implementation. Triggers on "execute", "start implementation", "run beads", or when ready beads exist in the tracker.
Use after /execute completes, user says "review execution", "verify beads", or before creating a PR for executed work.
| name | qa |
| description | Use after /execute, before /review, when user says "QA", "test the app", "browser test", "check the UI", or for any feature with UI changes. |
| argument-hint | [feature-name] or [URL] |
Philosophy: The best test is the one that finds the bug before users do. Automated tests verify code logic; QA verifies user experience. Click the buttons, fill the forms, navigate the flows — and document every failure with screenshots and reproduction steps. Self-regulation prevents the QA process itself from causing more harm than good.
Duration targets: BRIEF ~10-15 minutes (quick smoke test), STANDARD ~20-40 minutes (full feature QA), COMPREHENSIVE ~40-60 minutes (exhaustive including edge cases and accessibility).
Unit and integration tests verify that code works as written. QA verifies that the application works as intended — from a user's perspective. The gap between these is where UI bugs, broken flows, accessibility failures, and confusing interactions hide. Browser-based QA catches what automated tests miss: the button that's there but invisible, the form that submits but shows no feedback, the flow that works but confuses.
Run this skill when:
/execute completes, before /reviewDo NOT use for:
/benchmarkAt every PAUSE point in this skill, call the AskUserQuestion tool to present structured options to the user. Do not present options as plain markdown text — use the tool.
For pattern details and examples: ../_shared/references/stage-gates.md
Fallback: Only if
AskUserQuestionis not available as a tool (check your tool list), fall back to presenting options as markdown text and waiting for freeform response.
| Mode | When | Coverage |
|---|---|---|
| BRIEF | Quick smoke test, small UI change | Happy path only, console errors, visual check |
| STANDARD | Typical feature QA | Happy path + error paths + form validation + accessibility basics |
| COMPREHENSIVE | Pre-release, complex UI | All paths + edge cases + accessibility audit + responsive + performance basics |
Phase 1: Scope & Setup
Phase 2: Diff-Aware Test Planning
Phase 3: Execute Tests (with self-regulation)
── PAUSE 1: "QA complete. Health score: {grade}." ──
Phase 4: Report & Baseline
Before starting, verify:
Step 1.1 — Identify Target Pages:
Diff-aware mode (default): Detect affected pages from the execution manifest and git diff:
docs/execution/{feature}/manifest.md for files changedManual mode: User specifies URLs or pages to test.
Step 1.2 — Detect Dev Server:
Auto-detect the local development server:
package.json scripts for dev server configurationStep 1.3 — Capture Baseline (if first run):
If no baseline exists at docs/qa/baseline.json (or project equivalent), capture one:
Step 2.1 — Build Test Matrix:
For each target page, plan tests based on mode:
## Test Matrix
| Page | Happy Path | Error Path | Forms | Accessibility | Responsive |
|------|-----------|-----------|-------|--------------|------------|
| {route} | ✅ | {STD+} | {if forms} | {STD+} | {COMP} |
Step 2.2 — Map to UC Tags (if available):
If execution manifest has UC references, map QA tests to use cases:
For each target page, execute tests with self-regulation:
Test categories and weights:
| Category | Weight | What to Check |
|---|---|---|
| Console Errors | 15% | New JS errors, unhandled promise rejections, failed network requests |
| Functional | 20% | Buttons work, forms submit, navigation flows, data loads |
| Forms & Validation | 15% | Required fields, error messages, submit/cancel, invalid input handling |
| Visual | 10% | Layout correct, no overlapping elements, text readable, images load |
| Accessibility | 15% | Keyboard navigation, ARIA labels, colour contrast, screen reader basics |
| Responsive | 10% | Mobile viewport, tablet viewport, no horizontal scroll |
| Performance | 5% | Page load <3s, no infinite spinners, no layout shift |
| Data | 10% | Correct data displayed, pagination works, empty states handled |
Self-Regulation (WTF-Likelihood Heuristic):
Track a running risk score starting at 0:
| Event | Score Impact |
|---|---|
| Found a real bug | +0 (expected) |
| Test caused an app crash | +15 |
| Test modified data unexpectedly | +20 |
| Browser became unresponsive | +10 |
| Test result seems wrong/flaky | +5 |
Thresholds:
For each finding:
### QA-{N}: {Title}
**Page:** {URL/route}
**Category:** {from table above}
**Severity:** Critical / High / Medium / Low
**UC Reference:** {UC-ID if mapped, or "N/A"}
**Steps to Reproduce:**
1. Navigate to {page}
2. {action}
3. {action}
**Expected:** {what should happen}
**Actual:** {what happens}
**Screenshot:** {if browser available, include screenshot reference}
**Console Errors:** {if any, include relevant error}
Step 4.1 — Calculate Health Score:
Weight findings by category and severity:
## QA Health Score
| Category | Weight | Issues Found | Weighted Score |
|----------|--------|-------------|---------------|
| Console Errors | 15% | {count} | {score} |
| Functional | 20% | {count} | {score} |
| ... | ... | ... | ... |
| **Total** | **100%** | **{total}** | **{grade}** |
**Scoring:** Each finding contributes to the weighted score based on severity:
- Critical: `category_weight × 4`
- High: `category_weight × 3`
- Medium: `category_weight × 2`
- Low: `category_weight × 1`
**Grade:** A (weighted score <5) / B (5-15) / C (16-30) / D (31-50) / F (>50)
Step 4.2 — Write Report:
Save to docs/reviews/qa-{timestamp}.md.
Step 4.3 — Update Baseline:
Save current state as baseline for future regression detection.
PAUSE 1: Present the health score and finding summary as formatted markdown, then:
AskUserQuestion:
question: "QA complete. Health score: {grade}. {N} findings ({critical} critical). How to proceed?"
header: "QA"
multiSelect: false
options:
- label: "Fix critical (Recommended)"
description: "Create beads for critical/high findings."
- label: "Accept report"
description: "Proceed to /review with QA findings noted."
- label: "Retest"
description: "Fix issues manually, then re-run QA on affected pages."
- label: "Full report"
description: "Walk through each finding in detail."
Testing Without Scope — Testing every page in the application instead of focusing on pages affected by the current changes. Diff-aware scoping exists to prevent wasted effort. Test what changed.
Ignoring Self-Regulation — Continuing to test when the risk score is high. If QA is crashing the app or corrupting data, stop. The point of QA is to find bugs, not create new ones.
No Reproduction Steps — "The page looks wrong" is not a finding. Every finding needs exact reproduction steps, expected vs actual behavior, and ideally a screenshot. Without these, the finding is unfixable.
Testing in Production — QA runs against the local dev server, never production. The point is to catch issues before they ship.
Manual-Only Testing — If agent-browser is available, use it. Manual testing is a fallback, not the default. Automated browser testing is faster, more consistent, and produces better documentation.
| Signal | Meaning | Next Action |
|---|---|---|
| Grade A-B | Feature is solid | Proceed to /review |
| Grade C | Issues found | Fix critical items, then /review |
| Grade D-F | Significant issues | Return to /execute to fix |
| Self-regulation triggered | QA causing harm | Stop, investigate, resume carefully |
When complete: "QA complete. Health score: {grade}. Report at docs/reviews/qa-{timestamp}.md."
Skill Version: 1.0 v1.0: Initial release. Diff-aware scoping from execution manifest, 8-category health scoring, WTF-likelihood self-regulation heuristic, UC tag mapping, baseline capture for regression detection. Inspired by gstack's /qa browser-based testing patterns.