Files
Claude-Code-Game-Studios/.claude/skills/create-epics/CONTRACT.md
T
DonchitosandClaude Opus 5 d05699707f 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
2026-09-23 12:25:11 +10:00

5.3 KiB

/create-epics — Handoff Contract

Role in Pipeline

Translates approved GDDs and architecture documents into one EPIC.md file per architectural module, defining scope, ADR governance, engine risk, and requirement traceability — sits between architecture review and story decomposition.

Inputs Required

Files That Must Exist

File Required Fields / Sections Read-Only?
design/gdd/systems-index.md System list, layer assignments, priority order Yes
design/gdd/[system].md ## Summary, ## Acceptance Criteria, ## Overview (all 8 required sections) Yes
docs/architecture/architecture.md Module ownership, API boundaries Yes
docs/architecture/adr-NNNN-[slug].md (all governing ADRs) Status:, GDD Requirements Addressed, Decision, Engine Compatibility Yes
docs/architecture/control-manifest.md Manifest Version: date in header Yes
docs/architecture/tr-registry.yaml TR-IDs with id, system, requirement text Yes
docs/engine-reference/[engine]/VERSION.md Engine name, version, risk levels Yes

Preconditions

  • /create-control-manifest has been run and docs/architecture/control-manifest.md exists
  • /architecture-review has passed (at minimum Foundation and Core ADRs are Accepted)
  • All in-scope GDDs have status Approved or Designed in systems-index.md
  • The target layer's GDDs are stable — do not run for Feature layer until Core is nearly complete

Outputs Produced

Files Written

File Guaranteed Fields / Sections Notes
production/epics/[epic-slug]/EPIC.md Layer, GDD path, Architecture Module, Status: Ready, ## Governing ADRs table, ## GDD Requirements table with TR-IDs and ADR coverage, ## Definition of Done, ## Overview Created per approved epic
production/epics/index.md Epic, Layer, System, GDD, Stories, Status columns Created or appended

Output Guarantees

  • Every EPIC.md contains a ## Governing ADRs table with at least one row (or a documented note if none apply)
  • Every EPIC.md contains a ## GDD Requirements table where each row has a TR-ID and an ADR Coverage cell (either ADR-NNNN ✅ or ❌ No ADR)
  • The GDD: field in the EPIC.md header is a valid relative path to the source GDD
  • The Layer: field is one of: Foundation, Core, Feature, Presentation
  • The Status: field is set to Ready
  • The Stories: field reads Not yet created — run /create-stories [epic-slug]
  • Untraced requirements (TR-IDs with no ADR) are flagged in the GDD Requirements table with ❌ No ADR
  • production/epics/index.md has an entry for every epic written in this run

Immutability Rules

  • READS but does NOT modify: design/gdd/systems-index.md, all GDD files, docs/architecture/architecture.md, all ADR files in docs/architecture/adr-NNNN-[slug].md pattern, docs/architecture/control-manifest.md, docs/architecture/tr-registry.yaml, docs/engine-reference/[engine]/VERSION.md
  • MODIFIES: production/epics/[epic-slug]/EPIC.md (creates), production/epics/index.md (creates or updates)

Hard Constraints (Never Violate)

  • Never create story files — this skill stops at the epic level
  • Never invent content not sourced from GDDs, ADRs, or architecture docs
  • Never skip the per-epic approval prompt before writing
  • Never write an EPIC.md without first presenting the epic definition to the user
  • Never mark a TR-ID as covered by an ADR unless that ADR's Status: is Accepted
  • Never create epics for a layer whose dependency layer is not yet substantially complete

Downstream Skill Expects

Next skill: /create-stories

It will read:

  • production/epics/[epic-slug]/EPIC.md — specifically: Layer:, GDD: path, Architecture Module:, the full ## Governing ADRs table (ADR IDs and summaries), and the full ## GDD Requirements table (TR-IDs and ADR coverage status)
  • production/epics/index.md — to enumerate available epics when no argument is given

It assumes:

  • The GDD: path in EPIC.md resolves to a readable file
  • Every ADR listed in ## Governing ADRs exists as a file and has an Accepted status
  • TR-IDs in ## GDD Requirements match entries in docs/architecture/tr-registry.yaml
  • The epic slug used in the directory name matches the slug referenced in index.md
  • Status: Ready means stories have NOT yet been created (it will replace this line)

Known Fragile Points

  • If the EPIC.md template structure changes (section names, header field names, table column order), /create-stories will silently fail to parse governance data and may produce incomplete or incorrect stories
  • If tr-registry.yaml is regenerated with renumbered IDs after EPIC.md files are written, the TR-IDs in existing EPIC.md files become stale and mislead /create-stories
  • If an ADR is retroactively changed from Accepted to Proposed after the epic is written, the EPIC.md will still show it as governing — /create-stories will embed it without a BLOCKED flag
  • If systems-index.md layer assignments change after epics are created, the Layer: field in existing EPIC.md files will be incorrect and /create-stories will use the wrong layer context
  • production/epics/index.md is append-updated — if an epic is regenerated, a duplicate row may appear