mirror of
https://github.com/Donchitos/Claude-Code-Game-Studios.git
synced 2026-10-16 01:37:05 +00:00
`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
10 KiB
10 KiB
/architecture-decision — Handoff Contract
Role in Pipeline
Authors a new Architecture Decision Record (ADR) by guiding a collaborative design session, cross-referencing the engine reference library and existing architectural stances, and writing a fully-structured ADR file to docs/architecture/ — which then unblocks stories and epics that depend on the decision.
Two checks inside the run emit NOT ASSESSED rather than passing silently, and
a reader of the resulting ADR should expect them: engine validation when no
engine is configured (engine.name unset and no legacy fallback), and GDD
sync when the referenced design docs cannot be read. A skipped check that says
nothing is indistinguishable from a check that passed.
Inputs Required
Files That Must Exist
| File | Required Fields / Sections | Read-Only? |
|---|---|---|
docs/engine-reference/[engine]/VERSION.md |
Engine name + version, LLM knowledge cutoff date, post-cutoff risk levels per domain | Yes |
docs/engine-reference/[engine]/modules/[domain].md |
Domain-specific API reference (read if exists for the decision's domain) | Yes |
docs/engine-reference/[engine]/breaking-changes.md |
Post-cutoff breaking changes in the relevant domain | Yes |
docs/engine-reference/[engine]/deprecated-apis.md |
APIs that must not be referenced in the new ADR | Yes |
docs/registry/architecture.yaml |
All existing architectural stances (state ownership, interface contracts, forbidden patterns, performance budgets) — checked for conflicts before the design begins | Yes |
docs/architecture/ (existing ADRs) |
Scanned to determine the next sequential ADR number | Yes |
design/gdd/[system].md (GDDs relevant to the decision) |
Specific rules, formulas, performance constraints, or integration points that motivate the decision | Yes |
project.yaml |
engine.name — derives the primary specialist (<engine>-specialist) to spawn for validation (Step 4.5) |
Yes |
.claude/docs/technical-preferences.md |
Engine Specialists section — legacy fallback, used only when engine.name is absent or empty in project.yaml |
Yes — required only when engine.name is absent |
Preconditions
- An engine must be configured (
docs/engine-reference/[engine]/VERSION.mdmust exist) — if not, the skill prompts to run/setup-enginefirst - The title or subject of the decision must be provided by the user before Step 0 proceeds (if no argument is given, the skill asks)
- If in retrofit mode (
retrofit [path]argument), the target ADR file must already exist on disk - Any conflict with a registered architectural stance in
docs/registry/architecture.yamlmust be resolved or explicitly accepted as an exception before the ADR is drafted (Step 2a is a BLOCKING gate)
Outputs Produced
Files Written
| File | Guaranteed Fields / Sections | Notes |
|---|---|---|
docs/architecture/adr-NNNN-[slug].md |
## Status, ## Date, ## Engine Compatibility (table with engine, domain, knowledge risk, post-cutoff APIs, verification required), ## ADR Dependencies (table with depends-on, enables, blocks, ordering note), ## Context (problem statement, constraints, requirements), ## Decision (+ architecture diagram + key interfaces), ## Alternatives Considered, ## Consequences (positive, negative, risks), ## GDD Requirements Addressed (table), ## Performance Implications, ## Migration Plan, ## Validation Criteria, ## Related Decisions |
created after user approves ("May I write this ADR to docs/architecture/adr-NNNN-[slug].md?") |
docs/registry/architecture.yaml |
New stance entries (state ownership, interface contracts, performance budgets, forbidden patterns) derived from the ADR; existing entries marked status: superseded_by if overridden |
appended after separate user approval ("May I update docs/registry/architecture.yaml with these N new stances?") |
Output Guarantees
- The ADR number is the next sequential integer after the highest existing
adr-NNNN-*filename indocs/architecture/ ## Statusis always present and set toProposedunless the user explicitly confirmsAcceptedduring the session## Engine Compatibilityis always populated using verified data from the engine reference docs — never from training data alone when the domain carries MEDIUM or HIGH risk## GDD Requirements Addressedis always present (if no GDD motivated the decision, it documents which GDDs the decision will constrain or enable)## ADR Dependenciesis always present (fields set to "None" if no ordering constraints exist)- Engine specialist validation (Step 4.5) runs before the file is written if an engine specialist is configured; blocking issues found by the specialist cause the Decision section to be revised before saving
Immutability Rules
- READS but does NOT modify: all existing ADR files in
docs/architecture/(including in retrofit mode — existing sections are never touched), all GDD files indesign/gdd/,docs/engine-reference/**,project.yaml,.claude/docs/technical-preferences.md(legacy fallback) - MODIFIES:
docs/architecture/adr-NNNN-[slug].md(new file created; or missing sections appended in retrofit mode),docs/registry/architecture.yaml(append only; existing entries getstatus: superseded_byannotation, never deleted or rewritten) - In retrofit mode: appends only the missing sections — never modifies any section that is already present in the target ADR file
Hard Constraints (Never Violate)
- Never sets
Status: Acceptedwithout explicit user confirmation — the default on creation is alwaysStatus: Proposed - Acceptance route:
/architecture-decision accept ADR-NNNN— the only path that setsAccepted. It refuses when a dependency is still Proposed, and prompts for confirmation regardless ofmodes.automation. Without this route acceptance would be enforced by ten skills, owned per the authority below, and reachable by nobody. - Acceptance authority: the user, or
technical-directoron the user's explicit confirmation — no other agent, and not this skill on its own. Recorded here because every consumer enforces the consequences of acceptance, and without this line nothing would say who can produce it. This narrows who may set the field; it does not relax the confirmation rule above. - Never assigns an ADR number that is already in use — always scan
docs/architecture/first and use the next sequential number - Never proceeds past the architectural stance conflict check (Step 2a) if a conflict exists — surface the conflict and require resolution or explicit exception acknowledgment before drafting
- Never references APIs listed in
docs/engine-reference/[engine]/deprecated-apis.mdin the Decision or Key Interfaces sections - Never writes the ADR file without asking: "May I write this ADR to docs/architecture/adr-NNNN-[slug].md?"
- Never writes to
docs/registry/architecture.yamlwithout a separate ask: "May I update docs/registry/architecture.yaml with these N new stances?" - In retrofit mode: never modifies any existing section — only appends absent sections
Downstream Skill Expects
Next skills: /create-epics, /create-stories, /dev-story, /architecture-review
/create-epics reads ADRs expecting:
## Statusfield — value must beAcceptedfor epics to reference it## GDD Requirements Addressedtable — used to link epics to GDD traceability## Engine Compatibilitysection — checked during the Technical Setup → Pre-Production gate
/create-stories reads ADRs expecting:
## Implementation Guidelinessection — provides the concrete patterns programmer agents must follow (note: this section is generated during/create-stories, not by/architecture-decisionitself; the ADR must have a Decision section detailed enough to derive these guidelines)## ADR Dependenciestable — stories referencing aDepends OnADR that is stillProposedare automatically setStatus: Blocked
/dev-story reads ADRs expecting:
## Decision(full text, verbatim — not summarized)## Implementation Guidelines(verbatim)## Engine Compatibility(post-cutoff API risks, verification required)## ADR Dependencies(to detect if this ADR's dependencies are unresolved)
/architecture-review reads ADRs expecting:
- All required sections present (it flags gaps)
## Statusis set (required for coverage matrix)## Engine Compatibilityis stamped with the correct engine version
Known Fragile Points
- If the ADR number scan misses a file (e.g., a file in a subdirectory of
docs/architecture/or with a non-standard naming pattern), a duplicate number can be assigned — all ADR files must follow theadr-NNNN-[slug].mdnaming convention at the top level ofdocs/architecture/ - Stories that were
Status: Blockedpending this ADR must be manually updated toStatus: Readyafter the ADR reachesAccepted— the skill surfaces a reminder but does not automatically update story files - The
## GDD Requirements Addressedtable is populated based on what the user tells the skill during the collaborative session; if the user does not know which GDDs motivated the decision, this table may be incomplete —/create-epicsand/gate-checkboth rely on this linkage for traceability - Engine specialist validation (Step 4.5) is skipped only when both sources are unset —
engine.nameabsent or empty inproject.yamland.claude/docs/technical-preferences.mdstill reading[TO BE CONFIGURED]. A project configured solely viaproject.yamldoes get specialist validation. When both are unset, post-cutoff engine API risks are not caught before the ADR is written docs/registry/architecture.yamlis append-only by design; if a stance entry becomes permanently invalid (not superseded by another ADR), it must be manually removed — there is no cleanup mechanism- In retrofit mode, if the existing ADR has sections present but empty (e.g., a
## Statusheading with no value), the skill treats the section as present and does not fill it — an empty Status is effectively invisible to downstream skills like/story-readiness