mirror of
https://github.com/Donchitos/Claude-Code-Game-Studios.git
synced 2026-10-16 01:37:05 +00:00
Release 1.1.2 — the default path works end to end
Fix release for 1.1.1: the minimal path end to end, engine commands that run on Godot, Unity and Unreal, hook warnings you can see, and verdicts that say when they could not check. Details in CHANGELOG.md; upgrade steps in UPGRADING.md (v1.1.1 → v1.1.2). Fixes #67 Fixes #131 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuJn2FdynEybfL5KC697nJ
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
7ed2c3e9c4
commit
b21fa0f7f2
+225
-4
@@ -7,13 +7,15 @@ of the template to the next.
|
||||
```bash
|
||||
git log --oneline | grep -i "release\|setup"
|
||||
```
|
||||
Or check `README.md` for the version badge.
|
||||
Or read `framework.version` in your `project.yaml`, or the newest entry in
|
||||
`CHANGELOG.md`.
|
||||
|
||||
---
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Upgrade Strategies](#upgrade-strategies)
|
||||
- [v1.1.1 → v1.1.2](#v111--v112)
|
||||
- [v1.1.0 → v1.1.1](#v110--v111)
|
||||
- [v1.0 → v1.1](#v10--v11)
|
||||
- [v1.0.0-beta → v1.0](#v100-beta--v10)
|
||||
@@ -36,7 +38,7 @@ Best when: you cloned the template and have your own commits on top of it —
|
||||
your repo shares history with the template.
|
||||
|
||||
```bash
|
||||
# Add the template as a remote (one-time setup)
|
||||
# Add the template as a remote (one-time setup; skip this if `git remote -v` already lists template)
|
||||
git remote add template https://github.com/Donchitos/Claude-Code-Game-Studios.git
|
||||
|
||||
# Fetch the new version
|
||||
@@ -77,6 +79,7 @@ Best when: your repo has no common history with the template but you do use git.
|
||||
> step below rather than skipping it.
|
||||
|
||||
```bash
|
||||
# One-time setup; skip it if `git remote -v` already lists template
|
||||
git remote add template https://github.com/Donchitos/Claude-Code-Game-Studios.git
|
||||
git fetch template main
|
||||
|
||||
@@ -141,6 +144,7 @@ Best when: you only want one specific feature (e.g., just the new skill, not
|
||||
the full update).
|
||||
|
||||
```bash
|
||||
# One-time setup; skip it if `git remote -v` already lists template
|
||||
git remote add template https://github.com/Donchitos/Claude-Code-Game-Studios.git
|
||||
git fetch template main
|
||||
|
||||
@@ -157,12 +161,229 @@ Commit SHAs for each version are listed in the version sections below.
|
||||
Best when: you didn't use git to set up the template (just downloaded a zip).
|
||||
|
||||
1. Download or clone the new version alongside your repo.
|
||||
2. Copy the files listed under **"Safe to overwrite"** directly.
|
||||
2. Copy the files listed under **"Safe to overwrite"** directly — except any
|
||||
file the list marks as yours, such as `.claude/docs/technical-preferences.md`.
|
||||
3. For files under **"Merge carefully"**, open both versions side-by-side
|
||||
and manually merge the structural changes while keeping your content.
|
||||
|
||||
---
|
||||
|
||||
## v1.1.1 → v1.1.2
|
||||
|
||||
**Released:** 2026-09-29
|
||||
**Commit range:** `v1.1.1..v1.1.2`
|
||||
**Key themes:** The default minimal path end to end; engine test, build and
|
||||
parse commands that report the right result; Unity and Unreal treated like
|
||||
Godot; hook warnings you can see; skills that read the whole argument
|
||||
|
||||
### What Changed
|
||||
|
||||
| Category | Changes |
|
||||
|----------|---------|
|
||||
| **Minimal path** | `/help`, `/story-done`, `/sprint-status` and the status line follow the minimal route; about 25 default labels corrected; 10 skills and 4 director gates read `design/game-brief.md` when there is no concept doc; `/dev-story` and `/story-done` write the session checkpoint |
|
||||
| **Engine commands** | `/setup-engine`, `/test-setup`, `/dev-story`, `/smoke-check`, the `qa-tester` agent and `run-and-observe.md` use commands run on Windows with Godot 4.6.1, Unity 6000.3.23f1 and Unreal 5.7; Unreal's Linux and macOS commands come from Epic's documentation |
|
||||
| **Unity / Unreal** | Eight rules gain Unity (`Assets/`) and Unreal (`Source/`, `Content/`, `.usf`/`.ush`) globs; the commit and asset hooks check every engine's data folder; the status line and three checklists find the code root |
|
||||
| **Hooks** | Warnings arrive as hook JSON (`hook_warn` in `yaml-helper.sh`); the commit and push checks find `git` anywhere in a command, skip quoted here-doc text, and run for the PowerShell tool; the commit check validates the staged copy of each data file; session start caps the checkpoint it prints |
|
||||
| **Skills (7)** | `/adopt`, `/balance-check`, `/gate-check`, `/review-all-gdds`, `/scope-check`, `/sprint-status`, `/story-readiness` read `$ARGUMENTS`, not its first word |
|
||||
| **Agents** | Nearly every agent file changed: directors answer each gate in the verdict words its definition file gives; `creative-director`, `producer` and `technical-director` keep memory in the project; `devops-engineer` is trunk-based and, with `community-manager`, runs on Sonnet; `qa-tester`'s Unity and Unreal templates compile; Unity and Unreal agents check their engine reference; agents that don't write code draft and ask before writing |
|
||||
|
||||
No setting changes meaning, and nothing is migrated automatically.
|
||||
|
||||
---
|
||||
|
||||
### Files: Safe to Overwrite
|
||||
|
||||
**Existing files to overwrite (no user content):**
|
||||
```
|
||||
.claude/skills/** ← nearly every skill changed, including
|
||||
gate-check/references/gate-production.md
|
||||
.claude/hooks/*.sh ← validate-commit, validate-push,
|
||||
validate-assets, validate-skill-change,
|
||||
session-start, detect-gaps, pre-compact,
|
||||
post-compact, log-agent, log-agent-stop,
|
||||
log-instructions, yaml-helper
|
||||
.claude/statusline.sh
|
||||
.claude/scripts/artifact-check.sh, project-coherence.sh, migrate-v1-config.sh,
|
||||
gdd-structure-check.sh, review-scope.sh
|
||||
.claude/scripts/review-receipts.sh ← falls back to shasum, which every Mac has
|
||||
.claude/scripts/godot-parse-check.gd ← new: /dev-story's Godot parse check
|
||||
.claude/scripts/story-status.sh ← new: the story list /help and
|
||||
/sprint-status route from
|
||||
.claude/agents/*.md ← nearly every agent changed (see Agents
|
||||
above); merge any you edited, and see
|
||||
Director agents' memory below
|
||||
.claude/docs/** ← EXCEPT technical-preferences.md, which
|
||||
is yours and unchanged in 1.1.2.
|
||||
Includes templates/game-brief.md
|
||||
(new Reference game line)
|
||||
docs/WORKFLOW-GUIDE.md, docs/skill-flow-diagrams.md,
|
||||
docs/COLLABORATIVE-DESIGN-PRINCIPLE.md, docs/engine-reference/README.md
|
||||
docs/engine-reference/godot/current-best-practices.md, breaking-changes.md,
|
||||
deprecated-apis.md, modules/rendering.md;
|
||||
docs/engine-reference/unity/current-best-practices.md,
|
||||
plugins/addressables.md;
|
||||
docs/engine-reference/unreal/modules/networking.md,
|
||||
docs/engine-reference/unreal/current-best-practices.md,
|
||||
plugins/gameplay-ability-system.md
|
||||
← corrected examples; the Godot, Unity
|
||||
and Unreal references gain Command Line
|
||||
sections (build and test commands per
|
||||
platform, with sources). If /setup-engine
|
||||
has updated your copy of one, merge
|
||||
that file instead
|
||||
README.md, CHANGELOG.md, UPGRADING.md ← keep your README if it is your game's
|
||||
CCGS Skill Testing Framework/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Files: Merge Carefully
|
||||
|
||||
**`.claude/settings.json`** — if you have not edited it, overwrite it with the
|
||||
shipped file. If you have, change the `matcher` of the
|
||||
`PreToolUse` entry that runs `validate-commit.sh` and `validate-push.sh` from
|
||||
`"Bash"` to `"Bash|PowerShell"`, and copy the new `deny` rules: the
|
||||
`PowerShell(…)` ones, `Bash(git push *--force*)` / `Bash(git push * -f*)`, and
|
||||
the variants of recursive delete, `git clean`, `git reset --hard` and force push
|
||||
(`rm -fr`, `rm -rf*` with no space, the `--recursive` / `--force` spellings such
|
||||
as `rm -r --force`, `git clean* -f*`, `git clean* -df*` and the other `git clean`
|
||||
force forms, the `git *clean* …`, `git *push* -f*` / `-uf*` / `+*` and
|
||||
`git *reset *--hard*` forms that also catch git options before the subcommand
|
||||
(`git -C x clean -f`), `git push * +*`, `git * push *--force*`,
|
||||
`Remove-Item * -r*`). The `git clean` rules name the common force forms rather
|
||||
than `git clean -*f*`, which would also deny a dry run such as
|
||||
`git clean -n config/`, and no allow rule can undo a deny. The `git` rules match
|
||||
anywhere after `git`, so a git command whose text fits one of them is denied even
|
||||
when nothing dangerous runs: a commit message that mentions one of these
|
||||
commands, or plain prose such as `git commit -m "push + pull"` (`push` then ` +`)
|
||||
— reword the message. A dry run written with `-f` first,
|
||||
`git clean -fn`, is denied too; write it `git clean -n`. 1.1.1's
|
||||
`Bash(git clean -f*)` is covered by the new rules and can go.
|
||||
|
||||
**`.claude/rules/*.md`** — if you have not edited a rule, overwrite it with the
|
||||
shipped file. If you have, keep your text, copy
|
||||
every `paths:` line from the shipped file — they changed in eight rules — and
|
||||
merge the five changed bodies named below. Without
|
||||
the Unity (`Assets/**`) and Unreal (`Source/**`, `Content/**`) globs the rule
|
||||
never loads on those engines. Keep each glob in double quotes — an unquoted
|
||||
`*` breaks the frontmatter, and a rule whose frontmatter does not parse loads
|
||||
on every file. The code-rule globs now name their file types (`*.cs`,
|
||||
`*.{h,cpp}`), `data-files.md`'s end in `*.json`, and five rule bodies changed:
|
||||
`test-standards.md` names tests per engine, `shader-code.md`,
|
||||
`gameplay-code.md` and `engine-code.md` give Unity and Unreal examples, and
|
||||
`agent-memory.md` names every engine's code root.
|
||||
|
||||
**`src/CLAUDE.md`** — if you have not edited it, overwrite it with the shipped
|
||||
file. If you have, merge: its File Routing section now
|
||||
points to the `specialists` block of `project.yaml` instead of `CLAUDE.md`.
|
||||
|
||||
**`.gitignore`** — add `/reports/` and `/test-results/` (gdUnit4 and Unity test
|
||||
output), and `!addons/gdUnit4/bin/` on the line after `bin/`: without it the
|
||||
`bin/` rule keeps gdUnit4's test runner out of your commits, and a fresh clone
|
||||
or CI has no runner.
|
||||
|
||||
**Your `project.yaml` `commands:` block** — `/setup-engine` wrote these into your
|
||||
project, so updating the template does not change them. If you set up an engine
|
||||
on 1.1.0 or 1.1.1:
|
||||
|
||||
| Engine | Key | Old (1.1.1) | New |
|
||||
|---|---|---|---|
|
||||
| Godot | `test` | `godot --headless --script tests/gdunit4_runner.gd` | `godot --headless -s -d --remote-debug tcp://127.0.0.1:0 res://addons/gdUnit4/bin/GdUnitCmdTool.gd -a res://tests --ignoreHeadlessMode` |
|
||||
| Unity | `build` | `Unity -batchmode -quit -projectPath . -buildTarget <TARGET>` | `"<Unity editor>" -batchmode -quit -projectPath . -buildTarget <TARGET> -build<PLATFORM>Player Builds/<Target>/<Game>.exe` (e.g. `-buildWindows64Player`) |
|
||||
| Unity | `test` | `Unity -runTests -projectPath . -testPlatform PlayMode` | `"<Unity editor>" -batchmode -runTests -projectPath . -testPlatform EditMode -testResults test-results/editmode.xml` |
|
||||
| Unity | `smoke` | `Unity -batchmode -quit -projectPath . -executeMethod SmokeCheck.Run` | `"<Unity editor>" -batchmode -quit -projectPath . -logFile -` |
|
||||
| Unreal | `build` | `RunUAT.bat BuildCookRun -project=<project>.uproject -platform=Win64 -build -cook` | `"<UE root>/Engine/Binaries/DotNET/AutomationTool/AutomationTool.exe" BuildCookRun -project="$(pwd -W 2>/dev/null || pwd)/<project>.uproject" -platform=Win64 -build -cook` |
|
||||
| Unreal | `test` | `UnrealEditor-Cmd.exe <project>.uproject -ExecCmds="Automation RunTests <project>; Quit" -unattended -nullrhi` | `"<UE root>/Engine/Binaries/Win64/UnrealEditor-Cmd.exe" "$(pwd -W 2>/dev/null || pwd)/<project>.uproject" -ExecCmds="Automation RunTests <project>.; Quit" -unattended -nullrhi -stdout -FullStdOutLogOutput` |
|
||||
| Unreal | `smoke` | `UnrealEditor-Cmd.exe <project>.uproject -game -nullrhi -unattended -ExecCmds="Quit"` | `"<UE root>/Engine/Binaries/Win64/UnrealEditor-Cmd.exe" "$(pwd -W 2>/dev/null || pwd)/<project>.uproject" -game -nullrhi -unattended -stdout -ExecCmds="Quit"` |
|
||||
| Unreal | `run` | `UnrealEditor.exe <project>.uproject -game -windowed -ResX=1280 -ResY=720` | `"<UE root>/Engine/Binaries/Win64/UnrealEditor.exe" "$(pwd -W 2>/dev/null || pwd)/<project>.uproject" -game -windowed -ResX=1280 -ResY=720` |
|
||||
|
||||
Godot also needs gdUnit4 installed under `addons/gdUnit4/`. If `godot` is not
|
||||
on your `PATH` (the default on Windows and macOS), `/setup-engine` now writes the
|
||||
editor's full path instead: put it, double-quoted, at the start of each Godot
|
||||
`commands.*` value, make the value a single-quoted YAML scalar, and record the
|
||||
same path as `engine.path` —
|
||||
`build: '"C:/Program Files/Godot/Godot_v4.6.1-stable_win64.exe" --headless --export-debug "Windows Desktop"'`.
|
||||
For Unity,
|
||||
`<Unity editor>` is the editor's full path, quoted — bare `Unity` can resolve to
|
||||
Unity's separate CLI, which rejects `-batchmode` with exit 2, the same code as a
|
||||
failed test. The quoted path needs a single-quoted YAML value:
|
||||
`test: '"C:/Program Files/Unity/Hub/Editor/<version>/Editor/Unity.exe" -batchmode …'`.
|
||||
|
||||
The Unreal rows are the Windows commands. On Linux, `build` is
|
||||
`"<UE root>/Engine/Build/BatchFiles/RunUAT.sh" BuildCookRun … -platform=Linux -build -cook`
|
||||
and `test`, `run` and `smoke` use `"<UE root>/Engine/Binaries/Linux/UnrealEditor"`
|
||||
with the same arguments. On macOS keep only `build` (`RunUAT.sh … -platform=Mac`)
|
||||
and set the other three yourself: Epic documents no command-line editor inside
|
||||
`UnrealEditor.app`. `/setup-engine`'s Unreal section has the exact lines.
|
||||
|
||||
For Unreal, `<UE root>` is the engine folder (`engine.path`) — no editor binary
|
||||
is on `PATH` — and the project path must be absolute: UE 5.7 does not find a
|
||||
relative `<project>.uproject` and exits 1 before running anything.
|
||||
`$(pwd -W 2>/dev/null || pwd)` gives the `C:/…` form in Git Bash, even with
|
||||
`MSYS_NO_PATHCONV` set. These values contain double quotes, so they take
|
||||
single-quoted YAML scalars too.
|
||||
|
||||
**`.github/workflows/tests.yml` (Godot)** — if `/test-setup` wrote it, add
|
||||
`permissions:` with `contents: read` and `checks: write` to the `test` job, as
|
||||
the shipped template now does. The gdUnit4 action publishes a check run, and a
|
||||
new repository's token is read-only, so without it the job fails even when
|
||||
every test passes. In the test step, copy the shipped `uses:` line
|
||||
(`godot-gdunit-labs/gdUnit4-action@v1`), set `godot-version` to the full release
|
||||
`godot --version` prints (e.g. `4.6.1`; 1.1.1 filled in VERSION.md's `4.6`,
|
||||
which is not one), and add `version: 'installed'`: without it the action deletes
|
||||
the gdUnit4 you commit under `addons/` and installs the latest release. If you
|
||||
protect `main`, require the `Run GdUnit4 Tests` job's check, not `test-results`,
|
||||
which passes even when a test fails.
|
||||
|
||||
**`.github/workflows/tests.yml` (Unreal)** — if `/test-setup` wrote it, add the
|
||||
`Build Editor Target` step from the shipped `/test-setup` before the test step,
|
||||
set `UE_ROOT` on the runner, and replace `-log` with
|
||||
`-stdout -FullStdOutLogOutput` so the results reach the CI log. The 1.1.1
|
||||
template ran `Automation RunTests MyGame.`; change the filter to your project's
|
||||
test root (`<Project>.`, as in `commands.test`), or no test matches. A fresh checkout
|
||||
has no compiled game module, so without the build the editor quits before
|
||||
running a test. Change `runs-on: self-hosted` to `runs-on: [self-hosted, windows]`:
|
||||
with the bare label, GitHub can give the job to any self-hosted runner the
|
||||
repository has, including a Linux one with no Unreal on it. Change each
|
||||
`shell: bash` to `shell: bash --noprofile --norc -eo pipefail "{0}"`: the
|
||||
Windows runner passes bash its script path unquoted, so every step fails when
|
||||
the runner's folder has a space in it.
|
||||
|
||||
**Tests written on 1.1.x** — Unity never compiled tests under `tests/`: move them
|
||||
to `Assets/Tests/EditMode/` or `Assets/Tests/PlayMode/`, each with an assembly
|
||||
definition (`/test-setup` shows the layout). Unreal never built `Source/Tests/`:
|
||||
move tests to `Source/<Module>/Private/Tests/`, and replace
|
||||
`EAutomationTestFlags::GameFilter` with
|
||||
`EAutomationTestFlags::EditorContext | EAutomationTestFlags::ProductFilter`.
|
||||
|
||||
**Director agents' memory** — `creative-director`, `producer` and
|
||||
`technical-director` now declare `memory: project`, so they read and write
|
||||
`.claude/agent-memory/<agent>/` in this project. Notes they saved before are in
|
||||
`~/.claude/agent-memory/<agent>/` and are no longer read; copy the ones that
|
||||
belong to this project across. If you edited those agent files, change
|
||||
`memory: user` to `memory: project` in their frontmatter.
|
||||
|
||||
**`production/session-state/active.md`** — no action. The first `/dev-story` or
|
||||
`/story-done` adds the STATUS and CHECKPOINT blocks at the top of an older file
|
||||
and leaves the rest alone.
|
||||
|
||||
**`design/game-brief.md`** — optional: add a `**Reference game:**` line (see the
|
||||
template).
|
||||
|
||||
**Python 3** — now listed as required. If you ran without it, every setting was
|
||||
silently at its default; install it and your `project.yaml` takes effect.
|
||||
|
||||
**`modes.review_mode` / `production/review-mode.txt`** — 1.1.x's `/sprint-plan`
|
||||
wrote a review mode into `project.yaml` and `production/review-mode.txt` the first
|
||||
time it ran, which pinned it over `modes.rigor` for good. If you did not choose
|
||||
that value yourself, remove both so `modes.rigor` applies again (`/settings`
|
||||
shows where each value comes from).
|
||||
|
||||
**`project.yaml`** — optionally set `framework.version: 1.1.2`. Nothing reads it
|
||||
for this release.
|
||||
|
||||
---
|
||||
|
||||
## v1.1.0 → v1.1.1
|
||||
|
||||
**Released:** 2026-09-24
|
||||
@@ -537,7 +758,7 @@ individual run with `--review [mode]` on any gate-using skill:
|
||||
|
||||
```
|
||||
/design-system combat --review lean
|
||||
/gate-check concept --review full
|
||||
/gate-check systems-design --review full
|
||||
/brainstorm my-game-idea --review solo
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user