mirror of
https://github.com/Donchitos/Claude-Code-Game-Studios.git
synced 2026-10-16 01:37:05 +00:00
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:
co-authored by
Claude Opus 5
parent
984023ddac
commit
d05699707f
@@ -1,11 +1,48 @@
|
||||
---
|
||||
name: code-review
|
||||
description: "Performs an architectural and quality code review on a specified file or set of files. Checks for coding standard compliance, architectural pattern adherence, SOLID principles, testability, and performance concerns."
|
||||
description: "Architectural code review — coding standards, SOLID, testability, performance concerns."
|
||||
argument-hint: "[path-to-file-or-directory]"
|
||||
user-invocable: true
|
||||
allowed-tools: Read, Glob, Grep, Bash, Task, AskUserQuestion
|
||||
allowed-tools: Read, Glob, Grep, Bash, Agent, AskUserQuestion
|
||||
model: sonnet
|
||||
agent: lead-programmer
|
||||
---
|
||||
|
||||
!`source "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/yaml-helper.sh" 2>/dev/null && resolve_config --keys automation`
|
||||
|
||||
|
||||
|
||||
Every `AskUserQuestion` call follows `.claude/docs/automation-modes.md`
|
||||
(collaborative asks always · guided major-only · autonomous logs and proceeds;
|
||||
`automation_always_ask` categories always prompt).
|
||||
|
||||
## Insufficient input — check this before producing any report
|
||||
|
||||
**If the inputs this skill needs do not exist, the answer is "could not run" —
|
||||
not a filled-in report.** Check first, and stop if the check fails.
|
||||
|
||||
1. List the inputs this skill reads (data files, prior reports, profiler output,
|
||||
test results, registries, source code).
|
||||
2. For each, record `FOUND` or `ABSENT` — not "assumed present".
|
||||
3. If any input required for a section is ABSENT, that section is
|
||||
**`NOT ASSESSED — NO DATA`**. Do not estimate it, do not infer it from an
|
||||
adjacent artifact, and do not leave a mandated cell to be filled by whoever
|
||||
reads the template next.
|
||||
4. If **every** required input is ABSENT, stop and report
|
||||
**`NOT ASSESSED — NO DATA`** as the whole verdict, naming what was missing and
|
||||
which skill produces it.
|
||||
|
||||
**A verdict of `NOT ASSESSED` is a success.** It is the correct, useful answer to
|
||||
"what does the data say?" when there is no data. The failure mode this prevents is
|
||||
specific and has been observed in practice: report templates whose verdict
|
||||
enum had no "could not run" state produced **false clean passes** — an asset audit
|
||||
returning COMPLIANT on a project with no assets and no standards, and a
|
||||
performance profile reporting ">99% headroom against a 16.67ms budget" with zero
|
||||
profiler data and no budget ever set.
|
||||
|
||||
**Absence of evidence is never evidence of absence.** A scan that finds no
|
||||
matches because there are no files to scan has not verified anything. Say which of
|
||||
the two happened — a reader cannot tell from a green result.
|
||||
|
||||
---
|
||||
|
||||
## Phase 1: Load Target Files
|
||||
@@ -16,14 +53,22 @@ Read the target file(s) in full. Read CLAUDE.md for project coding standards.
|
||||
|
||||
## Phase 2: Identify Engine Specialists
|
||||
|
||||
Read `.claude/docs/technical-preferences.md`, section `## Engine Specialists`. Note:
|
||||
Read the `specialists` block from `project.yaml`; if it is absent, fall back to the `## Engine Specialists` section of `.claude/docs/technical-preferences.md`. Note:
|
||||
|
||||
- The **Primary** specialist (used for architecture and broad engine concerns)
|
||||
- The **Language/Code Specialist** (used when reviewing the project's primary language files)
|
||||
- The **Shader Specialist** (used when reviewing shader files)
|
||||
- The **UI Specialist** (used when reviewing UI code)
|
||||
- The **Primary** specialist — `<engine>-specialist` derived from `engine.name` (Godot→`godot-specialist`, Unity→`unity-specialist`, Unreal→`unreal-specialist`); used for architecture and broad engine concerns
|
||||
- The **Language/Code Specialist** — `specialists.code` — used when reviewing the project's primary language files
|
||||
- The **Shader Specialist** — `specialists.shader` — used when reviewing shader files
|
||||
- The **UI Specialist** — `specialists.ui` — used when reviewing UI code
|
||||
|
||||
If the section reads `[TO BE CONFIGURED]`, no engine is pinned — skip engine specialist steps.
|
||||
**A value of `null` means UNSET — treat that key as absent and skip its
|
||||
specialist. Never spawn it as an agent name.** The v1.0 migration writes `null`
|
||||
for any specialist the legacy file did not name, and it writes the whole block
|
||||
whenever *one* member is set — so a project that configured only its code
|
||||
specialist carries `shader: null` and `ui: null`. The config reader returns the
|
||||
four-character string `"null"` for these, which is not empty and therefore reads
|
||||
as configured. `null`, empty, and missing are the same state here.
|
||||
|
||||
If no engine is configured (no `engine.name` in `project.yaml`, and `technical-preferences.md` reads `[TO BE CONFIGURED]` or is missing), skip engine specialist steps. **Record `Engine validation: NOT ASSESSED — no engine configured (`engine.name` unset in `project.yaml`)` in this run's output.** A skipped check that says nothing is indistinguishable from a check that passed; the reader cannot tell engine guidance was never sought.
|
||||
|
||||
---
|
||||
|
||||
@@ -40,7 +85,12 @@ Look for patterns like `ADR-NNN` or `docs/architecture/ADR-`.
|
||||
|
||||
If no ADR references found, note: "No ADR references found — ADR compliance check skipped. For full ADR compliance review, provide the story path: `/code-review [files] [story-path]`."
|
||||
|
||||
For each referenced ADR: read the file, extract the **Decision** and **Consequences** sections, then classify any deviation:
|
||||
For each referenced ADR, load **only the sections this check needs — never an unbounded full read.** A substantial ADR exceeds the 25k-token `Read` cap, and a capped read's only recovery is paging the remainder — the most expensive way to read a file (measured ~103k vs ~54k tokens on a 34k-token ADR). Use the same pattern as `/dev-story` and `/create-stories`:
|
||||
|
||||
1. **Map the headings** (cheap — line numbers only): `Grep pattern="^## " path="[adr-file]" output_mode="content" -n`
|
||||
2. **Bounded-read only `## Decision` and `## Consequences`**, using the line numbers to set `Read(offset, limit)` spans that end where the next heading begins. If the heading map is empty (a nonstandard ADR predating the template), fall back to one full `Read`; if that truncates at the cap, grep for the decision/consequence content directly rather than paging the remainder.
|
||||
|
||||
From those two sections, classify any deviation:
|
||||
|
||||
- **ARCHITECTURAL VIOLATION** (BLOCKING): Uses a pattern explicitly rejected in the ADR
|
||||
- **ADR DRIFT** (WARNING): Meaningfully diverges from the chosen approach without using a forbidden pattern
|
||||
@@ -91,7 +141,26 @@ Identify the system category (engine, gameplay, AI, networking, UI, tools) and e
|
||||
|
||||
## Phase 7: Specialist Reviews (Parallel)
|
||||
|
||||
Spawn all applicable specialists simultaneously via Task — do not wait for one before starting the next.
|
||||
Spawn all applicable specialists simultaneously via `Agent` — do not wait for one before starting the next.
|
||||
|
||||
> **Verify every specialist finding before reporting it. Do not pass findings
|
||||
> through unchecked.** For each finding, record in the report:
|
||||
>
|
||||
> - **File and line** it refers to.
|
||||
> - **Evidence** — the quoted code, or the concrete input/state that triggers it.
|
||||
> - **Confidence** — `VERIFIED` (you checked it yourself) or `UNVERIFIED —
|
||||
> specialist claim` (you could not).
|
||||
>
|
||||
> A finding you could not verify is reported as unverified or dropped, never
|
||||
> promoted to a defect on the strength of confident phrasing.
|
||||
>
|
||||
> **Why this is mandatory.** Agents are reliable when deriving and unreliable when
|
||||
> diagnosing existing code. Measured in practice: three separate agents
|
||||
> produced three different **wrong** claims about the same six-line function,
|
||||
> every one fluent enough to pass a skim — including a spawned specialist here
|
||||
> alleging a float-precision bug that enumerating the inputs disproves. Without
|
||||
> this step the parent review is a laundering channel: a guess enters as a
|
||||
> specialist finding and leaves as a reviewed defect.
|
||||
|
||||
### Engine Specialists
|
||||
|
||||
@@ -106,7 +175,7 @@ Also spawn the **Primary Specialist** for any file touching engine architecture
|
||||
|
||||
### QA Testability Review
|
||||
|
||||
For Logic and Integration stories, also spawn `qa-tester` via Task in parallel with the engine specialists. Pass:
|
||||
For Logic and Integration stories, also spawn `qa-tester` via `Agent` in parallel with the engine specialists. Pass:
|
||||
- The implementation files being reviewed
|
||||
- The story's `## QA Test Cases` section (the pre-written test specs from qa-lead)
|
||||
- The story's `## Acceptance Criteria`
|
||||
@@ -136,16 +205,16 @@ Collect all specialist findings before producing output.
|
||||
[qa-tester findings: test hooks, coverage gaps, untestable paths, new edge cases]
|
||||
[If BLOCKING: implementation must expose [X] before tests in ## QA Test Cases can run]
|
||||
|
||||
### ADR Compliance: [NO ADRS FOUND / COMPLIANT / DRIFT / VIOLATION]
|
||||
### ADR Compliance: [NOT ASSESSED / NO ADRS FOUND / COMPLIANT / DRIFT / VIOLATION]
|
||||
[List each ADR checked, result, and any deviations with severity]
|
||||
|
||||
### Standards Compliance: [X/6 passing]
|
||||
[List failures with line references]
|
||||
|
||||
### Architecture: [CLEAN / MINOR ISSUES / VIOLATIONS FOUND]
|
||||
### Architecture: [NOT ASSESSED / CLEAN / MINOR ISSUES / VIOLATIONS FOUND]
|
||||
[List specific architectural concerns]
|
||||
|
||||
### SOLID: [COMPLIANT / ISSUES FOUND]
|
||||
### SOLID: [NOT ASSESSED / COMPLIANT / ISSUES FOUND]
|
||||
[List specific violations]
|
||||
|
||||
### Game-Specific Concerns
|
||||
@@ -160,7 +229,7 @@ Collect all specialist findings before producing output.
|
||||
### Suggestions
|
||||
[Nice-to-have improvements]
|
||||
|
||||
### Verdict: [APPROVED / APPROVED WITH SUGGESTIONS / CHANGES REQUIRED]
|
||||
### Verdict: [NOT ASSESSED / APPROVED / APPROVED WITH SUGGESTIONS / CHANGES REQUIRED]
|
||||
```
|
||||
|
||||
This skill is read-only — no files are written.
|
||||
@@ -170,7 +239,7 @@ This skill is read-only — no files are written.
|
||||
## Phase 9: Next Steps
|
||||
|
||||
Use `AskUserQuestion`:
|
||||
- Prompt: "Code review complete — verdict: [APPROVED / CHANGES REQUIRED / MAJOR REVISION]. How would you like to proceed?"
|
||||
- Prompt: "Code review complete — verdict: [NOT ASSESSED / APPROVED / CHANGES REQUIRED / MAJOR REVISION]. How would you like to proceed?"
|
||||
- Options (adjust based on verdict):
|
||||
- If APPROVED:
|
||||
- `[A] Run /story-done to mark the story complete`
|
||||
|
||||
Reference in New Issue
Block a user