Add v0.6.0: full skill/agent QA pass, 3 new agents tested, template cleanup

Skills fixed: sprint-status (stale escalation, threshold), retrospective
(existing file detection, missing data fallback), changelog (misc category,
task-ref count), patch-notes (BLOCKED on missing changelog, tone/template
paths), story-readiness (Phase 0 mode resolution, QL-STORY-READY gate),
art-bible, brainstorm, design-system, ux-design, dev-story, story-done,
create-architecture, create-control-manifest, map-systems, propagate-design-change,
quick-design, prototype, asset-spec.

Agents fixed: all 4 directors (gate verdict token format), engine-programmer,
ui-programmer, tools-programmer, technical-artist (engine version safety),
gameplay-programmer (ADR compliance), godot-gdextension-specialist (ABI warning),
systems-designer (escalation path to creative-director), accessibility-specialist
(model, tools, WCAG criterion format, findings template), live-ops-designer
(escalation paths, battle pass value language), qa-tester (model, test case
format, evidence routing, ambiguous criteria, regression scope).

Specs updated: smoke-check and adopt specs rewritten to match actual skill
behavior. catalog.yaml reset to blank template state. Removed
session-state marketing research file, removed session-state from gitignore.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Donchitos
2026-04-07 17:28:46 +10:00
parent a73ff759c9
commit 3614e1dbfb
37 changed files with 925 additions and 287 deletions

View File

@@ -2,17 +2,16 @@
## Skill Summary
`/adopt` performs brownfield onboarding: it reads an existing non-Claude-Code
project's source files, detects the engine and language, and generates a
matching CLAUDE.md stub plus a populated `technical-preferences.md` to bring
the project under the Claude Code Game Studios framework. It may also produce
skeleton GDD files if enough design intent can be inferred from the code.
`/adopt` audits an existing project's artifacts — GDDs, ADRs, stories, infrastructure
files, and `technical-preferences.md` — for format compliance with the template's
skill pipeline. It classifies every gap by severity (BLOCKING / HIGH / MEDIUM / LOW),
composes a numbered, ordered migration plan, and writes it to `docs/adoption-plan-[date].md`
after explicit user approval via `AskUserQuestion`.
Each generated file is gated behind a "May I write" ask. If an existing CLAUDE.md
or `technical-preferences.md` is detected, the skill offers to merge rather than
overwrite. The skill has no director gates. Verdicts: COMPLETE (full analysis done
and files written), PARTIAL (analysis complete but some fields are ambiguous),
or BLOCKED (cannot proceed — no source code found or user declined all writes).
This skill is distinct from `/project-stage-detect` (which checks what exists).
`/adopt` checks whether what exists will actually work with the template's skills.
No director gates apply. The skill does NOT invoke any director agents.
---
@@ -22,149 +21,194 @@ Verified automatically by `/skill-test static` — no fixture needed.
- [ ] Has required frontmatter fields: `name`, `description`, `argument-hint`, `user-invocable`, `allowed-tools`
- [ ] Has ≥2 phase headings
- [ ] Contains verdict keywords: COMPLETE, PARTIAL, BLOCKED
- [ ] Contains "May I write" collaborative protocol language before each file creation
- [ ] Has a next-step handoff at the end (e.g., `/setup-engine` to refine or `/brainstorm`)
- [ ] Contains severity tier keywords: BLOCKING, HIGH, MEDIUM, LOW
- [ ] Contains "May I write" or `AskUserQuestion` language before writing the adoption plan
- [ ] Has a next-step handoff at the end (e.g., offering to fix the highest-priority gap immediately)
---
## Director Gate Checks
None. `/adopt` is a brownfield onboarding utility. No director gates apply.
None. `/adopt` is a brownfield audit utility. No director gates apply.
---
## Test Cases
### Case 1: Happy Path — Existing Unity project with C# code detected
### Case 1: Happy Path — All GDDs compliant, no gaps, COMPLIANT
**Fixture:**
- `src/` contains `.cs` files with Unity-specific namespaces (`using UnityEngine;`)
- No CLAUDE.md overrides, no `technical-preferences.md` beyond placeholders
- Project has a recognizable folder structure (Assets/, Scripts/)
- `design/gdd/` contains 3 GDD files; each has all 8 required sections with content
- `docs/architecture/adr-0001.md` exists with `## Status`, `## Engine Compatibility`,
and all other required sections
- `production/stage.txt` exists
- `docs/architecture/tr-registry.yaml` and `docs/architecture/control-manifest.md` exist
- Engine configured in `technical-preferences.md`
**Input:** `/adopt`
**Expected behavior:**
1. Skill scans `src/` and detects C# files with Unity API imports
2. Skill identifies engine as Unity, language as C#
3. Skill produces a draft `technical-preferences.md` with engine/language fields populated
4. Skill produces a draft CLAUDE.md stub with detected project structure
5. Skill asks "May I write `technical-preferences.md`?" and then "May I write CLAUDE.md?"
6. Files are written after approval; verdict is COMPLETE
1. Skill emits "Scanning project artifacts..." then reads all artifacts silently
2. Reports detected phase, GDD count, ADR count, story count
3. Phase 2 audit: all 3 GDDs have all 8 sections, Status field present and valid
4. ADR audit: all required sections present
5. Infrastructure audit: all critical files exist
6. Phase 3: zero BLOCKING, zero HIGH, zero MEDIUM, zero LOW gaps
7. Summary reports: "No blocking gaps — this project is template-compatible"
8. Uses `AskUserQuestion` to ask about writing the plan; user selects write
9. Adoption plan is written to `docs/adoption-plan-[date].md`
10. Phase 7 offers next action: no blocking gaps, offers options for next steps
**Assertions:**
- [ ] Engine detected as Unity (not Godot or Unreal)
- [ ] Language detected as C#
- [ ] Draft is shown to user before any "May I write" ask
- [ ] "May I write" is asked separately for each file
- [ ] Verdict is COMPLETE after both files are written
- [ ] Skill reads silently before presenting any output
- [ ] "Scanning project artifacts..." appears before the silent read phase
- [ ] Gap counts show 0 BLOCKING, 0 HIGH, 0 MEDIUM (or only LOW)
- [ ] `AskUserQuestion` is used before writing the adoption plan
- [ ] Adoption plan file is written to `docs/adoption-plan-[date].md`
- [ ] Phase 7 offers a specific next action (not just a list)
---
### Case 2: Mixed Languages — Partial analysis, asks user to clarify
### Case 2: Non-Compliant Documents — GDDs missing sections, NEEDS MIGRATION
**Fixture:**
- `src/` contains both `.gd` (GDScript) and `.cs` (C#) files
- Engine cannot be definitively identified from the mix
- `design/gdd/` contains 2 GDD files:
- `combat.md` — missing `## Acceptance Criteria` and `## Formulas` sections
- `movement.md` — all 8 sections present
- One ADR (`adr-0001.md`) is missing `## Status` section
- `docs/architecture/tr-registry.yaml` does not exist
**Input:** `/adopt`
**Expected behavior:**
1. Skill scans source and detects conflicting language signals
2. Skill reports: "Mixed language signals detected (GDScript + C#) — cannot auto-identify engine"
3. Skill presents the ambiguous findings and asks the user to confirm: Godot with C# or Unity?
4. After user clarifies, skill resumes analysis with confirmed engine
5. Produces a PARTIAL analysis noting fields that required manual clarification
1. Skill scans all artifacts
2. Phase 2 audit finds:
- `combat.md`: 2 missing sections (Acceptance Criteria, Formulas)
- `adr-0001.md`: missing `## Status` — BLOCKING impact
- `tr-registry.yaml`: missing — HIGH impact
3. Phase 3 classifies:
- BLOCKING: `adr-0001.md` missing `## Status` (story-readiness silently passes)
- HIGH: `tr-registry.yaml` missing; `combat.md` missing Acceptance Criteria (can't generate stories)
- MEDIUM: `combat.md` missing Formulas
4. Phase 4 builds ordered migration plan:
- Step 1 (BLOCKING): Add `## Status` to `adr-0001.md` — command: `/architecture-decision retrofit`
- Step 2 (HIGH): Run `/architecture-review` to bootstrap tr-registry.yaml
- Step 3 (HIGH): Add Acceptance Criteria to `combat.md` — command: `/design-system retrofit`
- Step 4 (MEDIUM): Add Formulas to `combat.md`
5. Gap Preview shows BLOCKING items as bullets (actual file names), HIGH/MEDIUM as counts
6. `AskUserQuestion` asks to write the plan; writes after approval
7. Phase 7 offers to fix the highest-priority gap (ADR Status) immediately
**Assertions:**
- [ ] Skill does NOT guess or silently pick an engine when signals conflict
- [ ] Ambiguous findings are reported to the user explicitly
- [ ] User choice is incorporated into the generated config
- [ ] Verdict is PARTIAL (not COMPLETE) when manual clarification was required
- [ ] BLOCKING gaps are listed as explicit file-name bullets in the Gap Preview
- [ ] HIGH and MEDIUM shown as counts in Gap Preview
- [ ] Migration plan items are in BLOCKING-first order
- [ ] Each plan item includes the fix command or manual steps
- [ ] `AskUserQuestion` is used before writing
- [ ] Phase 7 offers to immediately retrofit the first BLOCKING item
---
### Case 3: CLAUDE.md Already Exists — Offers merge rather than overwrite
### Case 3: Mixed State — Some docs compliant, some not, partial report
**Fixture:**
- `CLAUDE.md` exists with custom content (project name, existing imports)
- `technical-preferences.md` exists with some fields populated
- 4 GDD files: 2 fully compliant, 2 with gaps (one missing Tuning Knobs, one missing Edge Cases)
- ADRs: 3 files — 2 compliant, 1 missing `## ADR Dependencies`
- Stories: 5 files — 3 have TR-ID references, 2 do not
- Infrastructure: all critical files present; `technical-preferences.md` fully configured
**Input:** `/adopt`
**Expected behavior:**
1. Skill reads existing CLAUDE.md and detects it is already populated
2. Skill reports: "CLAUDE.md already exists — offering to merge, not overwrite"
3. Skill presents a diff of new fields vs. existing content
4. Skill asks "May I merge new fields into CLAUDE.md?" (not "May I write")
5. If user approves: only new or changed fields are added; existing content preserved
1. Skill audits all artifact types
2. Audit summary shows totals: "4 GDDs (2 fully compliant, 2 with gaps); 3 ADRs
(2 fully compliant, 1 with gaps); 5 stories (3 with TR-IDs, 2 without)"
3. Gap classification:
- No BLOCKING gaps
- HIGH: 1 ADR missing `## ADR Dependencies`
- MEDIUM: 2 GDDs with missing sections; 2 stories missing TR-IDs
- LOW: none
4. Migration plan lists HIGH gap first, then MEDIUM gaps in order
5. Note included: "Existing stories continue to work — do not regenerate stories
that are in progress or done"
6. `AskUserQuestion` to write plan; writes after approval
**Assertions:**
- [ ] Skill does NOT overwrite existing CLAUDE.md without explicit user approval for a full replace
- [ ] Merge option is offered when the file already exists
- [ ] Diff is shown before the merge ask
- [ ] Existing custom content is preserved in the merged output
- [ ] Per-artifact compliance tallies are shown (N compliant, M with gaps)
- [ ] Existing story compatibility note is included in the plan
- [ ] No BLOCKING gaps results in no BLOCKING section in migration plan
- [ ] HIGH gap precedes MEDIUM gaps in plan ordering
- [ ] `AskUserQuestion` is used before writing
---
### Case 4: No Source Code Found — Stops with error
### Case 4: No Artifacts Found — Fresh project, guidance to run /start
**Fixture:**
- Repository has only documentation files (`.md`) and no source code in `src/`
- No engine-identifiable files anywhere in the repo
- Repository has no files in `design/gdd/`, `docs/architecture/`, `production/epics/`
- `production/stage.txt` does not exist
- `src/` directory does not exist or has fewer than 10 files
- No game-concept.md, no systems-index.md
**Input:** `/adopt`
**Expected behavior:**
1. Skill scans `src/` and all likely code locations — finds nothing
2. Skill outputs: "No source code detected — cannot perform brownfield analysis"
3. Skill suggests alternatives: run `/start` for a new project, or point to a
different directory if source is located elsewhere
4. No files are written
1. Phase 1 existence check finds no artifacts
2. Skill infers "Fresh" — no brownfield work to migrate
3. Uses `AskUserQuestion`:
- "This looks like a fresh project — no existing artifacts found. `/adopt` is for
projects with work to migrate. What would you like to do?"
- Options: "Run `/start`", "My artifacts are in a non-standard location", "Cancel"
4. Skill stops — does not proceed to audit regardless of user selection
**Assertions:**
- [ ] Verdict is BLOCKED
- [ ] Error message explicitly states no source code was found
- [ ] Alternatives (`/start` or directory guidance) are provided
- [ ] No "May I write" prompts appear (nothing to write)
- [ ] `AskUserQuestion` is used (not a plain text message) when no artifacts are found
- [ ] `/start` is presented as a named option
- [ ] Skill stops after the question — no audit phases run
- [ ] No adoption plan file is written
---
### Case 5: Director Gate Check — No gate; adopt is a utility onboarding skill
### Case 5: Director Gate Check — No gate; adopt is a utility audit skill
**Fixture:**
- Existing project with detectable source code
- Project with a mix of compliant and non-compliant GDDs
**Input:** `/adopt`
**Expected behavior:**
1. Skill completes full brownfield analysis and produces config files
1. Skill completes full audit and produces migration plan
2. No director agents are spawned at any point
3. No gate IDs (CD-*, TD-*, AD-*, PR-*) appear in output
4. No `/gate-check` is invoked during the skill run
**Assertions:**
- [ ] No director gate is invoked
- [ ] No gate skip messages appear
- [ ] Skill reaches COMPLETE or PARTIAL without any gate verdict
- [ ] Skill reaches plan-writing or cancellation without any gate verdict
---
## Protocol Compliance
- [ ] Scans source before generating any config content
- [ ] Shows draft config to user before asking to write
- [ ] Asks "May I write" (or "May I merge") before each file operation
- [ ] Detects existing files and offers merge path rather than silent overwrite
- [ ] Ends with COMPLETE, PARTIAL, or BLOCKED verdict
- [ ] Emits "Scanning project artifacts..." before silent read phase
- [ ] Reads all artifacts silently before presenting any results
- [ ] Shows Adoption Audit Summary and Gap Preview before asking to write
- [ ] Uses `AskUserQuestion` before writing the adoption plan file
- [ ] Adoption plan written to `docs/adoption-plan-[date].md` — not to any other path
- [ ] Migration plan items ordered: BLOCKING first, HIGH second, MEDIUM third, LOW last
- [ ] Phase 7 always offers a single specific next action (not a generic list)
- [ ] Never regenerates existing artifacts — only fills gaps in what exists
- [ ] Does not invoke director gates at any point
---
## Coverage Notes
- The Unreal Engine + Blueprint detection case (`.uasset`, `.umap` files)
follows the same happy path pattern as Case 1 and is not separately tested.
- Multi-directory source layouts (monorepo style) are not tested; the skill
assumes a conventional single-project structure.
- GDD skeleton generation from inferred design intent is noted as a capability
but not fixture-tested here — it follows from the PARTIAL analysis pattern.
- The `gdds`, `adrs`, `stories`, and `infra` argument modes narrow the audit scope;
each follows the same pattern as the full audit but limited to that artifact type.
Not separately fixture-tested here.
- The systems-index.md parenthetical status value check (BLOCKING) is a special case
that triggers an immediate fix offer before writing the plan; not separately tested.
- The review-mode.txt prompt (Phase 6b) runs after plan writing if `production/review-mode.txt`
does not exist; not separately tested here.