mirror of
https://github.com/Donchitos/Claude-Code-Game-Studios.git
synced 2026-06-27 04:51:46 +00:00
* Add /vertical-slice skill, prototype overhaul, and workflow integration - Add /vertical-slice skill for pre-production validation (Phase 4 gate) - Overhaul /prototype skill with two-mode design: concept prototype (Phase 1) vs vertical slice (Phase 4), with clearer differentiation and higher standards for VS - Update prototyper agent to own both prototype and vertical-slice workflows - Add prototype-report.md and vertical-slice-report.md output templates - Update WORKFLOW-GUIDE, quick-start, skills-reference, agent-coordination-map, and skill-flow-diagrams to fully integrate both skills into the 7-phase pipeline - Remove orphaned empty quick-prototype/ directory Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * sync v1 counts + polish Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Add entity inventory flow, relax vertical-slice gate, improve UX authoring prompts - /asset-spec: new Phase 0b entity & screen inventory when no argument and no existing inventory — reads GDDs/art-bible, proposes categorized list, writes design/assets/entity-inventory.md collaboratively - /asset-spec: entity/character target falls back to inline user description when no source doc exists, rather than failing - /gate-check: vertical slice changed from blocking to CONCERNS-only when absent; built-but-broken slice still fails; adds entity inventory as gate artifact - /ux-design: convert inline approval prompts to AskUserQuestion for structured option capture at key authoring decision points - workflow-catalog.yaml: entity-inventory step added to pre-production; UX spec min_count raised to 3; vertical-slice and prototype marked required: false with updated descriptions - .gitignore: exclude marrow/ eval tooling directory Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Add missing AskUserQuestion widgets to 7 skills Audit found 11 decision points across 7 skills where structured option prompts were missing — using plain text, auto-selection, or no gate at all. Skills patched: - create-epics: per-epic approval + producer CONCERNS verdict - sprint-plan: producer CONCERNS verdict with scope/timeline options - milestone-review: AT RISK / OFF TRACK producer verdicts require acknowledgement - retrospective: existing-retro handling converted from plain text [A]/[B] - quick-design: classification confirmation + draft approve/revise/redirect - tech-debt add mode: category (6 options) + effort (S/M/L/XL) structured capture - regression-suite: no-arg mode selection instead of silent auto-detect - hotfix: severity confirmation gate before workflow begins Also added AskUserQuestion to allowed-tools headers for retrospective, quick-design, tech-debt, regression-suite, and hotfix. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Prep v1 stable: fix WORKFLOW-GUIDE counts, stale agent names, and skill model fields - WORKFLOW-GUIDE.md: correct agent count (48→49), skill count (66/68→73), add 6 missing skills to Appendix B, fix Creative category count (2→4), replace 3 non-existent agent names with correct ue-*/unity-* specialists, add missing godot-csharp/gdextension specialists to hierarchy, fix production/stories/ paths → production/epics/ - coordination-rules.md: replace "not yet used" with opt-in env var note - quick-start.md: rename duplicate "Validate the concept" label → "Prototype the mechanic" - skill-flow-diagrams.md: remove duplicate legacy UX pipeline section - All 62 skills missing model: field now have explicit model: sonnet Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: comprehensive skill audit — consistency, UX, and flow gaps Two-pass audit fixing ~35 bugs across 41 files. Pre-production flow: - Brainstorm next-steps split into Path A (design-first) and Path B (prototype-first) — eliminates "prototype after architecture" confusion - /architecture-review added to pre-production flow in brainstorm and create-architecture handoffs - gate-check traceability check corrected to requirements-traceability.md - dev-story TR registry error now points to /architecture-review (not /create-epics) - start now writes production/stage.txt on first onboarding AskUserQuestion gaps filled: - balance-check, code-review, hotfix, day-one-patch, consistency-check all gain closing widgets and/or missing allowed-tools declarations - hotfix git branch creation now requires user confirmation - sprint-plan review-mode setup moved to Phase 0 (before gates run) - team-combat gains architecture→implementation approval gate - design-review APPROVED path consolidated from 3 widgets to 1 multiSelect All 9 team-* skills: - Phase 0 review-mode resolution added (solo/lean/full now respected) - team-audio output path fixed (design/gdd/ → design/audio/) - team-level final doc compilation delegated to level-designer subagent - team-narrative localization-lead added to composition list - team-qa sprint path fixed (flat files, not directories) - team-release NO-GO override captures written justification - team-live-ops Cancel verdict now explicitly BLOCKED Other fixes: - Art bible path standardized to design/art/art-bible.md (3 wrong refs) - AD-PHASE-GATE added to lean-mode skip list in director-gates.md - design-system duplicate 5d heading fixed; skeleton decline path added; mandatory agent spawns now respect review mode - story-readiness acceptance criteria thresholds now type-aware - create-stories gains multi-ADR and no-ADR handling guidance - consistency-check creates docs/consistency-failures.md on first run - retrospective frontmatter bash injection replaced with explicit Bash call - smoke-check ls -t gains PowerShell fallback - Conventional Commits format documented in coding-standards.md - gate-check: ADR acceptance gate, QA plan check, chain-of-verification tool-action requirement all added Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: expose --review flag in argument-hints for all team-* skills All 9 team-* skills already implement Phase 0 review-mode resolution internally (full/lean/solo), but none advertised [--review full|lean|solo] in their argument-hint. Users had no way to discover the per-run override. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: add SECURITY.md with coordinated disclosure policy Defines scope, reporting process (GitHub private vulnerability reporting), contributor security guidelines for hooks/skills/agents, and 90-day coordinated disclosure timeline. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: add CONTRIBUTING.md with framework contribution guidelines Covers what PRs are welcome, skill/hook/agent technical requirements, the collaborative principle, testing expectations, commit format, and platform compatibility requirements. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: add v1.0.0-beta → v1.0 upgrade section to UPGRADING.md Documents the 17 commits since the beta tag: new /vertical-slice gate, entity inventory flow in /map-systems, AskUserQuestion widgets across 7 skills, --review flag exposure on team-* skills, bug fixes (#21, #36, #42, #43, #45), and the new CONTRIBUTING.md and SECURITY.md. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
245 lines
12 KiB
Markdown
245 lines
12 KiB
Markdown
---
|
||
name: team-qa
|
||
description: "Orchestrate the QA team through a full testing cycle. Coordinates qa-lead (strategy + test plan) and qa-tester (test case writing + bug reporting) to produce a complete QA package for a sprint or feature. Covers: test plan generation, test case writing, smoke check gate, manual QA execution, and sign-off report."
|
||
argument-hint: "[sprint | feature: system-name] [--review full|lean|solo]"
|
||
user-invocable: true
|
||
allowed-tools: Read, Glob, Grep, Write, Task, AskUserQuestion
|
||
model: sonnet
|
||
agent: qa-lead
|
||
---
|
||
|
||
When this skill is invoked, orchestrate the QA team through a structured testing cycle.
|
||
|
||
**Decision Points:** At each phase transition, use `AskUserQuestion` to present
|
||
the user with the subagent's proposals as selectable options. Write the agent's
|
||
full analysis in conversation, then capture the decision with concise labels.
|
||
The user must approve before moving to the next phase.
|
||
|
||
## Phase 0: Resolve Review Mode
|
||
|
||
1. If `--review [mode]` was passed as an argument, use that mode.
|
||
2. Else read `production/review-mode.txt` — use whatever is written there.
|
||
3. Else default to `lean`.
|
||
|
||
Modes:
|
||
- `full` — spawn all director and lead gates as described
|
||
- `lean` — skip director gates unless they are PHASE-GATE type (CD-PHASE-GATE, TD-PHASE-GATE, PR-PHASE-GATE, AD-PHASE-GATE)
|
||
- `solo` — skip all director gate spawning entirely; run the skill without any agent gates
|
||
|
||
Store the resolved mode for use in all subsequent phases.
|
||
|
||
## Team Composition
|
||
|
||
- **qa-lead** — QA strategy, test plan generation, story classification, sign-off report
|
||
- **qa-tester** — Test case writing, bug report writing, manual QA documentation
|
||
|
||
## How to Delegate
|
||
|
||
Use the Task tool to spawn each team member as a subagent:
|
||
- `subagent_type: qa-lead` — Strategy, planning, classification, sign-off
|
||
- `subagent_type: qa-tester` — Test case writing and bug report writing
|
||
|
||
Always provide full context in each agent's prompt (story file paths, QA plan path, scope constraints). Launch independent qa-tester tasks in parallel where possible (e.g., multiple stories in Phase 5 can be scaffolded simultaneously).
|
||
|
||
## Pipeline
|
||
|
||
### Phase 1: Load Context
|
||
|
||
Before doing anything else, gather the full scope:
|
||
|
||
1. Detect the current sprint or feature scope from the argument:
|
||
- If argument is a sprint identifier (e.g., `sprint-03`): Glob `production/sprints/` for files matching `*[sprint-identifier]*.md`. Read the matched file. If multiple match, use the most recently modified.
|
||
- If argument is `feature: [system-name]`: glob story files tagged for that system
|
||
- If no argument: read `production/session-state/active.md` and `production/sprint-status.yaml` (if present) to infer the active sprint
|
||
|
||
2. Read `production/stage.txt` to confirm the current project phase.
|
||
|
||
3. Count stories found and report to the user:
|
||
> "QA cycle starting for [sprint/feature]. Found [N] stories. Current stage: [stage]. Ready to begin QA strategy?"
|
||
|
||
### Phase 2: QA Strategy (qa-lead)
|
||
|
||
Spawn `qa-lead` via Task to review all in-scope stories and produce a QA strategy.
|
||
|
||
Prompt the qa-lead to:
|
||
- Read each story file
|
||
- Classify each story by type: **Logic** / **Integration** / **Visual/Feel** / **UI** / **Config/Data**
|
||
- Identify which stories require automated test evidence vs. manual QA
|
||
- Flag any stories with missing acceptance criteria or missing test evidence that would block QA
|
||
- Estimate manual QA effort (number of test sessions needed)
|
||
- **Before assessing smoke status, check for an existing smoke check report**: Glob `production/qa/smoke-*.md` and read the most recently modified file (if found). If a report exists, use its verdict and findings directly — do not re-interview the user. If no report exists, note: "No prior smoke check report found — run `/smoke-check sprint` before proceeding." and set smoke check status to UNKNOWN (treat as PASS WITH WARNINGS for the purpose of continuing). Produce a smoke check verdict: **PASS** / **PASS WITH WARNINGS [list]** / **FAIL [list of failures]** / **UNKNOWN (no report found)**
|
||
- Produce a strategy summary table and smoke check result:
|
||
|
||
| Story | Type | Automated Required | Manual Required | Blocker? |
|
||
|-------|------|--------------------|-----------------|----------|
|
||
|
||
**Smoke Check**: [PASS / PASS WITH WARNINGS / FAIL / UNKNOWN] — [source: `production/qa/smoke-[date].md` or "no report found"] — [details if not PASS]
|
||
|
||
If the smoke check result is **FAIL**, the qa-lead must list the failures prominently. QA cannot proceed past the strategy phase with a failed smoke check.
|
||
|
||
Present the qa-lead's full strategy to the user, then use `AskUserQuestion`:
|
||
|
||
```
|
||
question: "QA Strategy Review"
|
||
options:
|
||
- "Looks good — proceed to test plan"
|
||
- "Adjust story types before proceeding"
|
||
- "Skip blocked stories and proceed with the rest"
|
||
- "Smoke check failed — fix issues and re-run /team-qa"
|
||
- "Cancel — resolve blockers first"
|
||
```
|
||
|
||
If smoke check **FAIL**: do not proceed to Phase 3. Surface the failures from the smoke check report and stop. The user must fix them, re-run `/smoke-check sprint`, and then re-run `/team-qa`.
|
||
If smoke check **UNKNOWN**: surface a warning — "No smoke check report found. Recommend running `/smoke-check sprint` before QA. Proceeding with caution."
|
||
If smoke check **PASS WITH WARNINGS**: note the warnings for the sign-off report and continue.
|
||
If blockers are present: list them explicitly. The user may choose to skip blocked stories or cancel the cycle.
|
||
|
||
### Phase 3: Test Plan Generation
|
||
|
||
Using the strategy from Phase 2, produce a structured test plan document.
|
||
|
||
The test plan should cover:
|
||
- **Scope**: sprint/feature name, story count, dates
|
||
- **Story Classification Table**: from Phase 2 strategy
|
||
- **Automated Test Requirements**: which stories need test files, expected paths in `tests/`
|
||
- **Manual QA Scope**: which stories need manual walkthrough and what to validate
|
||
- **Out of Scope**: what is explicitly not being tested this cycle and why
|
||
- **Entry Criteria**: what must be true before QA can begin. Always include: (1) Smoke check PASS or PASS WITH WARNINGS report exists at `production/qa/smoke-*.md`, (2) build is stable (no crashes on launch), (3) all Must Have stories have Status: in-progress or done in `production/sprint-status.yaml`. Add any sprint-specific criteria beyond these.
|
||
- **Exit Criteria**: what constitutes a completed QA cycle (all stories PASS or FAIL with bugs filed)
|
||
|
||
Ask: "May I write the QA plan to `production/qa/qa-plan-[sprint]-[date].md`?"
|
||
|
||
Write only after receiving approval.
|
||
|
||
### Phase 4: Test Case Writing (qa-tester)
|
||
|
||
> **Smoke check** is performed as part of Phase 2 (QA Strategy). If the smoke check returned FAIL in Phase 2, the cycle was stopped there. This phase only runs when the Phase 2 smoke check was PASS, PASS WITH WARNINGS, or UNKNOWN.
|
||
|
||
For each story requiring manual QA (Visual/Feel, UI, Integration without automated tests):
|
||
|
||
Spawn `qa-tester` via Task for each story (run in parallel where possible), providing:
|
||
- The story file path
|
||
- The relevant section of the QA plan for that story
|
||
- The GDD acceptance criteria for the system being tested (if available)
|
||
- Instructions to write detailed test cases covering all acceptance criteria
|
||
|
||
Each test case set should include:
|
||
- **Preconditions**: game state required before testing begins
|
||
- **Steps**: numbered, unambiguous actions
|
||
- **Expected Result**: what should happen
|
||
- **Actual Result**: field left blank for the tester to fill in
|
||
- **Pass/Fail**: field left blank
|
||
|
||
Present the test cases to the user for review before execution. Group by story.
|
||
|
||
Use `AskUserQuestion` per story group (batched 3-4 at a time):
|
||
|
||
```
|
||
question: "Test cases ready for [Story Group]. Review before manual QA begins?"
|
||
options:
|
||
- "Approved — begin manual QA for these stories"
|
||
- "Revise test cases for [story name]"
|
||
- "Skip manual QA for [story name] — not ready"
|
||
```
|
||
|
||
### Phase 5: Manual QA Execution
|
||
|
||
Walk through each story in the approved manual QA list.
|
||
|
||
Batch stories into groups of 3-4 and use `AskUserQuestion` for each:
|
||
|
||
```
|
||
question: "Manual QA — [Story Title]\n[brief description of what to test]"
|
||
options:
|
||
- "PASS — all acceptance criteria verified"
|
||
- "PASS WITH NOTES — minor issues found (describe after)"
|
||
- "FAIL — criteria not met (describe after)"
|
||
- "BLOCKED — cannot test yet (reason)"
|
||
```
|
||
|
||
After each FAIL result: use `AskUserQuestion` to collect the failure description, then spawn `qa-tester` via Task to write a formal bug report in `production/qa/bugs/`.
|
||
|
||
Bug report naming: `BUG-[NNN]-[short-slug].md` (increment NNN from existing bugs in the directory).
|
||
|
||
After collecting all results, summarize:
|
||
- Stories PASS: [count]
|
||
- Stories PASS WITH NOTES: [count]
|
||
- Stories FAIL: [count] — bugs filed: [IDs]
|
||
- Stories BLOCKED: [count]
|
||
|
||
### Phase 6: QA Sign-Off Report
|
||
|
||
Spawn `qa-lead` via Task to produce the sign-off report using all results from Phases 4–6.
|
||
|
||
The sign-off report format:
|
||
|
||
```markdown
|
||
## QA Sign-Off Report: [Sprint/Feature]
|
||
**Date**: [date]
|
||
|
||
### Test Coverage Summary
|
||
| Story | Type | Auto Test | Manual QA | Result |
|
||
|-------|------|-----------|-----------|--------|
|
||
| [title] | Logic | PASS | — | PASS |
|
||
| [title] | Visual | — | PASS | PASS |
|
||
|
||
### Bugs Found
|
||
| ID | Story | Severity | Status |
|
||
|----|-------|----------|--------|
|
||
| BUG-001 | [story] | S2 | Open |
|
||
|
||
### Verdict: APPROVED / APPROVED WITH CONDITIONS / NOT APPROVED
|
||
|
||
**Conditions** (if any): [list what must be fixed before the build advances]
|
||
|
||
### Next Step
|
||
[guidance based on verdict]
|
||
```
|
||
|
||
Verdict rules:
|
||
- **APPROVED**: All stories PASS or PASS WITH NOTES; no S1/S2 bugs open
|
||
- **APPROVED WITH CONDITIONS**: S3/S4 bugs open, or PASS WITH NOTES issues documented; no S1/S2 bugs
|
||
- **NOT APPROVED**: Any S1/S2 bugs open; or stories FAIL without documented workaround
|
||
|
||
Next step guidance by verdict:
|
||
- APPROVED: "Build is ready for the next phase. Run `/gate-check` to validate advancement."
|
||
- APPROVED WITH CONDITIONS: "Resolve conditions before advancing. S3/S4 bugs may be deferred to polish."
|
||
- NOT APPROVED: "Resolve S1/S2 bugs and re-run `/team-qa` or targeted manual QA before advancing."
|
||
|
||
Ask: "May I write this QA sign-off report to `production/qa/qa-signoff-[sprint]-[date].md`?"
|
||
|
||
Write only after receiving approval.
|
||
|
||
## Error Recovery Protocol
|
||
|
||
If any spawned agent (via Task) returns BLOCKED, errors, or cannot complete:
|
||
|
||
1. **Surface immediately**: Report "[AgentName]: BLOCKED — [reason]" to the user before continuing to dependent phases
|
||
2. **Assess dependencies**: Check whether the blocked agent's output is required by subsequent phases. If yes, do not proceed past that dependency point without user input.
|
||
3. **Offer options** via AskUserQuestion with choices:
|
||
- Skip this agent and note the gap in the final report
|
||
- Retry with narrower scope
|
||
- Stop here and resolve the blocker first
|
||
4. **Always produce a partial report** — output whatever was completed. Never discard work because one agent blocked.
|
||
|
||
Common blockers:
|
||
- Input file missing (story not found, GDD absent) → redirect to the skill that creates it
|
||
- ADR status is Proposed → do not implement; run `/architecture-decision` first
|
||
- Scope too large → split into two stories via `/create-stories`
|
||
- Conflicting instructions between ADR and story → surface the conflict, do not guess
|
||
|
||
## Output
|
||
|
||
A summary covering: stories in scope, smoke check result, manual QA results, bugs filed (with IDs and severities), and the final APPROVED / APPROVED WITH CONDITIONS / NOT APPROVED verdict.
|
||
|
||
Verdict: **COMPLETE** — QA cycle finished.
|
||
Verdict: **BLOCKED** — smoke check failed or critical blocker prevented cycle completion; partial report produced.
|
||
|
||
## Session State Update
|
||
|
||
After the final phase completes (sign-off report written or BLOCKED verdict reached), silently append to `production/session-state/active.md`:
|
||
|
||
```
|
||
<!-- QA RUN: [date] | Sprint: [sprint identifier or "ad-hoc"] | Verdict: [PASS/FAIL/CONCERNS] | Report: production/qa/qa-[date].md -->
|
||
```
|