Release 1.1.0 — one config file, and a process weight you choose

`project.yaml` at the repo root is now the single source of truth for a
project's configuration, replacing `production/stage.txt`,
`production/review-mode.txt` and `.claude/docs/technical-preferences.md` (all
three still read as a fallback; nothing is force-deleted).

**`modes.rigor` — one question instead of six.** `minimal`, `standard` or
`full` fronts six knobs: `modes.workflow`, `docs.density`, `qa.level`,
`modes.story_granularity`, `modes.review_mode` and `team.size`. It defaults to
`minimal`, which is a change from 1.0's behaviour: the heavier tier was
measured costing several times more to reach working code without producing a
better result, and returning nothing when a fresh developer inherited the
project. Pin `modes.rigor: standard` to keep 1.0's process level.

Also in this release:

- `/settings` to view or change any setting, and `project.local.yaml` for
  per-developer preferences that should not be committed.
- `system_overrides` to hold one system to a higher standard than the rest of
  the project, and `testing.strict` to set per test type whether missing
  evidence blocks a story or warns.
- A story that changes anything the player sees is not closed until the game
  has been launched, observed, and a screenshot retained in
  `production/qa/evidence/`. A parse check is not a run. This holds at every
  rigor level, including `minimal`, where automated tests are waived but the
  look is not.
- The code root is engine-specific and enforced as such: Godot `src/`, Unity
  `Assets/`, Unreal `Source/<Module>/`. Two of the three will not build a
  project laid out any other way.
- Migration tooling for existing projects: `.claude/scripts/migrate-v1-config.sh`
  converts a 1.0 layout, non-destructively by default, with a report to review
  before `--finalize` deletes anything.
- Ask-before-write holds regardless of personal automation settings.

Upgrading from 1.0 or earlier: see UPGRADING.md. Full list of changes:
CHANGELOG.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016xvzG3i7pWQg4LjyDwWMXd
This commit is contained in:
Donchitos
2026-09-23 12:25:11 +10:00
co-authored by Claude Opus 5
parent 984023ddac
commit d05699707f
291 changed files with 24374 additions and 7740 deletions
+19 -18
View File
@@ -7,7 +7,7 @@ framework. It is self-contained and separate from any game project.
| File | Purpose |
|------|---------|
| `catalog.yaml` | Master registry for all 73 skills and 49 agents. Contains category, spec path, and last-test tracking fields. Always read this first when running any test command. |
| `catalog.yaml` | Master registry for all 74 skills and 49 agents. Contains category, spec path, and last-test tracking fields. Always read this first when running any test command. |
| `quality-rubric.md` | Category-specific pass/fail metrics. Read the matching `###` section for the skill's category when running `/skill-test category`. |
| `skills/[category]/[name].md` | Behavioral spec for a skill — 5 test cases + protocol compliance assertions. |
| `agents/[tier]/[name].md` | Behavioral spec for an agent — 5 test cases + protocol compliance assertions. |
@@ -34,7 +34,7 @@ authoring → design-system, quick-design, architecture-decision, art-bible,
create-architecture, ux-design, ux-review
readiness → story-readiness, story-done
pipeline → create-epics, create-stories, dev-story, create-control-manifest,
propagate-design-change, map-systems
propagate-design-change, map-systems, vertical-slice
analysis → consistency-check, balance-check, content-audit, code-review,
tech-debt, scope-check, estimate, perf-profile, asset-audit,
security-audit, test-evidence-review, test-flakiness
@@ -48,22 +48,23 @@ utility → all remaining skills
## Agent tiers
```
directors → creative-director, technical-director, producer, art-director
leads → lead-programmer, narrative-director, audio-director, ux-designer,
qa-lead, release-manager, localization-lead
specialists → gameplay-programmer, engine-programmer, ui-programmer,
tools-programmer, network-programmer, ai-programmer,
level-designer, sound-designer, technical-artist
godot → godot-specialist, godot-gdscript-specialist, godot-csharp-specialist,
godot-shader-specialist, godot-gdextension-specialist
unity → unity-specialist, unity-ui-specialist, unity-shader-specialist,
unity-dots-specialist, unity-addressables-specialist
unreal → unreal-specialist, ue-gas-specialist, ue-replication-specialist,
ue-umg-specialist, ue-blueprint-specialist
operations → devops-engineer, security-engineer, performance-analyst,
analytics-engineer, community-manager
creative → writer, world-builder, game-designer, economy-designer,
systems-designer, prototyper
directors → creative-director, technical-director, producer, art-director
leads → lead-programmer, narrative-director, audio-director, game-designer,
systems-designer, level-designer, qa-lead
specialists → gameplay-programmer, engine-programmer, network-programmer,
ai-programmer, tools-programmer, ui-programmer, ux-designer,
technical-artist, sound-designer, performance-analyst, prototyper,
writer, world-builder
engine/godot → godot-specialist, godot-gdscript-specialist, godot-csharp-specialist,
godot-shader-specialist, godot-gdextension-specialist
engine/unity → unity-specialist, unity-ui-specialist, unity-shader-specialist,
unity-dots-specialist, unity-addressables-specialist
engine/unreal → unreal-specialist, ue-gas-specialist, ue-replication-specialist,
ue-umg-specialist, ue-blueprint-specialist
operations → devops-engineer, release-manager, live-ops-designer,
community-manager, analytics-engineer, economy-designer,
localization-lead
qa → qa-tester, security-engineer, accessibility-specialist
```
## Workflow for testing a skill
+39 -20
View File
@@ -3,9 +3,27 @@
Quality assurance infrastructure for the **Claude Code Game Studios** framework.
Tests the skills and agents themselves — not any game built with them.
> **This folder is self-contained and optional.**
> Game developers using CCGS don't need it. To remove it entirely:
> `rm -rf "CCGS Skill Testing Framework"` — nothing in `.claude/` depends on it.
**This ships as part of the template, and it is meant to.** CCGS is a template
you are expected to customize — edit a skill, add your own, retune an agent. This
folder is how you check that what you changed still holds up: `catalog.yaml`
tracks all 74 skills and 49 agents, `quality-rubric.md` defines per-category
pass/fail metrics, and `templates/` gives you the spec format for anything new
you write. Driven by `/skill-test` and `/skill-improve`.
> **If you remove it, two of the four `/skill-test` modes stop working.**
>
> | Mode | Without this folder |
> |------|---------------------|
> | `/skill-test static` | **Works** — the 7 structural checks read `SKILL.md` only |
> | `/skill-test audit` | **Degrades** — reports that no catalog exists |
> | `/skill-test spec` | **Breaks** — the behavioral specs live here |
> | `/skill-test category` | **Breaks** — reads `quality-rubric.md` from here |
> | `/skill-improve` | **Degrades** — its test-fix-retest loop loses the spec pass |
>
> Earlier revisions of this file called the folder "optional" and said "nothing
> in `.claude/` depends on it." That was wrong — `/skill-test` references this
> directory 16 times and `/skill-improve` once. Removing it is a real trade, not
> a free cleanup, so the table above states the actual cost.
---
@@ -15,7 +33,7 @@ Tests the skills and agents themselves — not any game built with them.
CCGS Skill Testing Framework/
├── README.md ← you are here
├── CLAUDE.md ← tells Claude how to use this framework
├── catalog.yaml ← master registry: all 73 skills + 49 agents, coverage tracking
├── catalog.yaml ← master registry: all 74 skills + 49 agents, coverage tracking
├── quality-rubric.md ← category-specific pass/fail metrics for /skill-test category
│
├── skills/ ← behavioral spec files for skills (one per skill)
@@ -31,13 +49,14 @@ CCGS Skill Testing Framework/
│
├── agents/ ← behavioral spec files for agents (one per agent)
│ ├── directors/ ← creative-director, technical-director, producer, art-director
│ ├── leads/ ← lead-programmer, narrative-director, audio-director, etc.
│ ├── specialists/ ← engine/code/shader/UI specialists
│ ├── godot/ ← Godot-specific specialists
│ ├── unity/ ← Unity-specific specialists
│ ├── unreal/ ← Unreal-specific specialists
│ ├── operations/ ← QA, live-ops, release, localization, etc.
│ └── creative/ ← writer, world-builder, game-designer, etc.
│ ├── leads/ ← lead-programmer, narrative-director, audio-director, game-designer, systems-designer, level-designer, qa-lead
│ ├── specialists/ ← gameplay/engine/network/AI/tools/UI programmers, technical-artist, sound-designer, ux-designer, performance-analyst, prototyper, writer, world-builder
│ ├── engine/ ← engine-specific specialists, split per engine:
│ │ ├── godot/ ← Godot-specific specialists
│ │ ├── unity/ ← Unity-specific specialists
│ │ └── unreal/ ← Unreal-specific specialists
│ ├── operations/ ← devops, release, live-ops, community, analytics, economy, localization
│ └── qa/ ← qa-tester, security-engineer, accessibility-specialist
│
├── templates/ ← spec file templates for writing new specs
│ ├── skill-test-spec.md ← template for skill behavioral specs
@@ -56,7 +75,7 @@ All testing is driven by two skills already in the framework:
```
/skill-test static [skill-name] # Check one skill (7 checks)
/skill-test static all # Check all 73 skills
/skill-test static all # Check all 74 skills
```
### Run a behavioral spec test
@@ -105,16 +124,16 @@ All testing is driven by two skills already in the framework:
## Agent tiers
| Tier | Agents |
| Tier (directory) | Agents |
|------|--------|
| `directors` | creative-director, technical-director, producer, art-director |
| `leads` | lead-programmer, narrative-director, audio-director, ux-designer, qa-lead, release-manager, localization-lead |
| `specialists` | gameplay-programmer, engine-programmer, ui-programmer, tools-programmer, network-programmer, ai-programmer, level-designer, sound-designer, technical-artist |
| `godot` | godot-specialist, godot-gdscript-specialist, godot-csharp-specialist, godot-shader-specialist, godot-gdextension-specialist |
| `unity` | unity-specialist, unity-ui-specialist, unity-shader-specialist, unity-dots-specialist, unity-addressables-specialist |
| `unreal` | unreal-specialist, ue-gas-specialist, ue-replication-specialist, ue-umg-specialist, ue-blueprint-specialist |
| `operations` | devops-engineer, security-engineer, performance-analyst, analytics-engineer, community-manager |
| `creative` | writer, world-builder, game-designer, economy-designer, systems-designer, prototyper |
| `leads` | lead-programmer, narrative-director, audio-director, game-designer, systems-designer, level-designer, qa-lead |
| `specialists` | gameplay-programmer, engine-programmer, network-programmer, ai-programmer, tools-programmer, ui-programmer, ux-designer, technical-artist, sound-designer, performance-analyst, prototyper, writer, world-builder |
| `engine/godot` | godot-specialist, godot-gdscript-specialist, godot-csharp-specialist, godot-shader-specialist, godot-gdextension-specialist |
| `engine/unity` | unity-specialist, unity-ui-specialist, unity-shader-specialist, unity-dots-specialist, unity-addressables-specialist |
| `engine/unreal` | unreal-specialist, ue-gas-specialist, ue-replication-specialist, ue-umg-specialist, ue-blueprint-specialist |
| `operations` | devops-engineer, release-manager, live-ops-designer, community-manager, analytics-engineer, economy-designer, localization-lead |
| `qa` | qa-tester, security-engineer, accessibility-specialist |
---
@@ -14,7 +14,7 @@ Verified by reading the agent's `.claude/agents/art-director.md` frontmatter:
- [ ] `description:` field is present and domain-specific (references visual identity, art bible, asset standards — not generic)
- [ ] `allowed-tools:` list is read-focused; image review capability if supported; no Bash unless asset pipeline checks are justified
- [ ] Model tier is `claude-sonnet-4-6` (NOT Opus — coordination-rules.md assigns Sonnet to art-director)
- [ ] Model tier is `claude-sonnet-5` (NOT Opus — coordination-rules.md assigns Sonnet to art-director)
- [ ] Agent definition does not claim authority over UX interaction flows or audio direction
---
@@ -14,7 +14,7 @@ Verified by reading the agent's `.claude/agents/creative-director.md` frontmatte
- [ ] `description:` field is present and domain-specific (references creative vision, pillars, GDD alignment — not generic)
- [ ] `allowed-tools:` list is read-heavy; should not include Bash unless justified by a creative workflow need
- [ ] Model tier is `claude-opus-4-6` per coordination-rules.md (directors with gate synthesis = Opus)
- [ ] Model tier is `claude-opus-4-8` per coordination-rules.md (directors with gate synthesis = Opus)
- [ ] Agent definition does not claim authority over technical architecture or production scheduling
---
@@ -14,7 +14,7 @@ Verified by reading the agent's `.claude/agents/producer.md` frontmatter:
- [ ] `description:` field is present and domain-specific (references scope, sprint, milestone, production — not generic)
- [ ] `allowed-tools:` list is primarily read-focused; Bash only if sprint/milestone files require parsing
- [ ] Model tier is `claude-opus-4-6` per coordination-rules.md (directors with gate synthesis = Opus)
- [ ] Model tier is `claude-opus-4-8` per coordination-rules.md (directors with gate synthesis = Opus)
- [ ] Agent definition does not claim authority over design decisions or technical architecture
---
@@ -14,7 +14,7 @@ Verified by reading the agent's `.claude/agents/technical-director.md` frontmatt
- [ ] `description:` field is present and domain-specific (references architecture, feasibility, ADR — not generic)
- [ ] `allowed-tools:` list may include Read for architecture documents; Bash only if required for technical checks
- [ ] Model tier is `claude-opus-4-6` per coordination-rules.md (directors with gate synthesis = Opus)
- [ ] Model tier is `claude-opus-4-8` per coordination-rules.md (directors with gate synthesis = Opus)
- [ ] Agent definition does not claim authority over game design decisions or creative direction
---
@@ -14,7 +14,7 @@ Verified by reading the agent's `.claude/agents/audio-director.md` frontmatter:
- [ ] `description:` field is present and domain-specific (references music direction, sound design, mix, audio implementation — not generic)
- [ ] `allowed-tools:` list is read-focused; no Bash unless audio asset pipeline checks are justified
- [ ] Model tier is `claude-sonnet-4-6` per coordination-rules.md
- [ ] Model tier is `claude-sonnet-5` per coordination-rules.md
- [ ] Agent definition does not claim authority over visual design, code implementation, or narrative content
---
@@ -14,7 +14,7 @@ Verified by reading the agent's `.claude/agents/game-designer.md` frontmatter:
- [ ] `description:` field is present and domain-specific (references core loop, progression, combat rules, economy, player-facing design — not generic)
- [ ] `allowed-tools:` list is read-focused; includes Read for GDDs and design docs; no Bash unless design tooling requires it
- [ ] Model tier is `claude-sonnet-4-6` per coordination-rules.md
- [ ] Model tier is `claude-sonnet-5` per coordination-rules.md
- [ ] Agent definition does not claim authority over code implementation, visual art style, or standalone narrative lore decisions
---
@@ -14,7 +14,7 @@ Verified by reading the agent's `.claude/agents/lead-programmer.md` frontmatter:
- [ ] `description:` field is present and domain-specific (references code architecture, feasibility, code review, coding standards — not generic)
- [ ] `allowed-tools:` list includes Read for source files; Bash may be included for static analysis or test runs; no write access outside `src/` without explicit delegation
- [ ] Model tier is `claude-sonnet-4-6` per coordination-rules.md
- [ ] Model tier is `claude-sonnet-5` per coordination-rules.md
- [ ] Agent definition does not claim authority over game design, creative direction, or production scheduling
---
@@ -14,7 +14,7 @@ Verified by reading the agent's `.claude/agents/level-designer.md` frontmatter:
- [ ] `description:` field is present and domain-specific (references level layout, encounter design, pacing, environmental storytelling — not generic)
- [ ] `allowed-tools:` list is read-focused; includes Read for level design documents and GDDs; no Bash unless level tooling requires it
- [ ] Model tier is `claude-sonnet-4-6` per coordination-rules.md
- [ ] Model tier is `claude-sonnet-5` per coordination-rules.md
- [ ] Agent definition does not claim authority over narrative dialogue, AI behavior code, or visual art style
---
@@ -14,7 +14,7 @@ Verified by reading the agent's `.claude/agents/narrative-director.md` frontmatt
- [ ] `description:` field is present and domain-specific (references story, character, world-building, consistency — not generic)
- [ ] `allowed-tools:` list is read-focused; includes Read for lore documents, GDDs, and narrative docs; no Bash unless justified
- [ ] Model tier is `claude-sonnet-4-6` per coordination-rules.md
- [ ] Model tier is `claude-sonnet-5` per coordination-rules.md
- [ ] Agent definition does not claim authority over visual style, technical systems, or production scheduling
---
@@ -14,7 +14,7 @@ Verified by reading the agent's `.claude/agents/qa-lead.md` frontmatter:
- [ ] `description:` field is present and domain-specific (references test strategy, story readiness, coverage, bug triage — not generic)
- [ ] `allowed-tools:` list is read-focused; may include Read for story files, test files, and coding-standards; Bash only if running test commands is required
- [ ] Model tier is `claude-sonnet-4-6` per coordination-rules.md
- [ ] Model tier is `claude-sonnet-5` per coordination-rules.md
- [ ] Agent definition does not claim authority over implementation decisions or game design
---
@@ -57,7 +57,7 @@ Verified by reading the agent's `.claude/agents/qa-lead.md` frontmatter:
- [ ] Does not abandon the coverage requirement — asks for a deterministic alternative if the current approach is ruled flaky
### Case 5: Context pass — uses provided context
**Scenario:** Agent receives a gate context block that includes the coding-standards.md testing standards section, which specifies: Logic stories require blocking automated unit tests, Visual/Feel stories require screenshots + lead sign-off (advisory), Config/Data stories require smoke check pass (advisory). A story classified as "Logic" type is submitted with only a manual walkthrough document as evidence.
**Scenario:** Agent receives a gate context block that includes the coding-standards.md testing standards section, which specifies: Logic stories require blocking automated unit tests, Visual/Feel stories require a blocking retained screenshot + lead sign-off, Config/Data stories require smoke check pass (advisory). A story classified as "Logic" type is submitted with only a manual walkthrough document as evidence.
**Expected:** Assessment references the specific test evidence requirements from coding-standards.md, identifies that a "Logic" story requires an automated unit test (not just a manual walkthrough), and returns INADEQUATE with the specific requirement cited.
**Assertions:**
- [ ] References the specific story type classification ("Logic") from the provided context
@@ -14,7 +14,7 @@ Verified by reading the agent's `.claude/agents/systems-designer.md` frontmatter
- [ ] `description:` field is present and domain-specific (references formulas, progression curves, balance math, economy — not generic)
- [ ] `allowed-tools:` list is read-focused; may include Bash for formula evaluation scripts if the project uses them; no write access outside `design/balance/` without delegation
- [ ] Model tier is `claude-sonnet-4-6` per coordination-rules.md
- [ ] Model tier is `claude-sonnet-5` per coordination-rules.md
- [ ] Agent definition does not claim authority over narrative, visual design, or conceptual mechanic rule ownership
---
+22
View File
@@ -146,6 +146,17 @@ skills:
priority: high
category: pipeline
- name: vertical-slice
spec: ""
last_static: ""
last_static_result: ""
last_spec: ""
last_spec_result: ""
last_category: ""
last_category_result: ""
priority: high
category: pipeline
- name: design-system
spec: CCGS Skill Testing Framework/skills/authoring/design-system.md
last_static: ""
@@ -797,6 +808,17 @@ skills:
priority: low
category: utility
- name: settings
spec: ""
last_static: ""
last_static_result: ""
last_spec: ""
last_spec_result: ""
last_category: ""
last_category_result: ""
priority: low
category: utility
agents:
# Tier 1 Directors (Opus)
- name: creative-director
@@ -90,7 +90,7 @@ multi-dimensional verdicts and integrate correctly with director gate mode.
### `pipeline`
**Skills**: create-epics, create-stories, dev-story, create-control-manifest, propagate-design-change, map-systems
**Skills**: create-epics, create-stories, dev-story, create-control-manifest, propagate-design-change, map-systems, vertical-slice
Pipeline skills produce artifacts that other skills consume. They must write files
with correct schema, respect layer/priority ordering, and gate before writing.
@@ -169,12 +169,11 @@ Verified automatically by `/skill-test static` — no fixture needed.
- [ ] Each skipped gate is explicitly noted in output: "[GATE-ID] skipped — Solo mode"
- [ ] Verdict is based on artifact and quality checks only
**Note on Case 3 correction:**
The Case 3 assertions previously stated "Skill does not ask the user which gate to check
if current stage is determinable." This is correct. However, the skill DOES use
AskUserQuestion to confirm the auto-detected transition before running full checks —
this is a confirmation step, not a gate selection. Assertions for Case 3 should not
treat this confirmation as a failure.
**Note on Case 3:**
The skill does not ask which gate to check when the current stage is determinable.
It DOES use AskUserQuestion to confirm the auto-detected transition before running
full checks — that is a confirmation step, not a gate selection. Assertions for
Case 3 must not treat this confirmation as a failure.
---
@@ -51,8 +51,8 @@ None. `/qa-plan` is a planning utility. Story readiness gates are separate.
3. Skill assigns test types per coding-standards.md table:
- Logic story → Unit test (BLOCKING)
- Integration story → Integration test (BLOCKING)
- Visual story → Screenshot + lead sign-off (ADVISORY)
- UI story → Manual walkthrough doc (ADVISORY)
- Visual story → Retained screenshot + lead sign-off (BLOCKING)
- UI story → Retained screenshot of each screen (BLOCKING)
4. Skill drafts QA plan with story-by-story test type breakdown
5. Skill asks "May I write to `production/qa/qa-plan-sprint-003.md`?"
6. File is written on approval; verdict is COMPLETE