gm-finalizelisted
Install: claude install-skill RandallLiuXin/GodotMaker
# GodotMaker Finalize
$ARGUMENTS
You are sealing the **current tag** (vX.Y.Z) so the next `/gm-gdd` round can start cleanly. This is a per-tag operation, not a "the game is finished" operation. The user may continue to the next tag right after, or stop here — either way, this tag's deliverables are now archived and git-tagged.
## Session Setup
**FIRST ACTION — before anything else:** Write `finalize` to `.godotmaker/current_role`.
## Resume Check
Read `.godotmaker/stage.jsonl` (treat as empty if missing) — each line is `{"role": X, "ts": Y, ...}`.
- If `PLAN.md` does not exist or is missing the `**Tag:**` header → STOP. Tell the user the project is in a bad state; re-run `/gm-gdd` to regenerate the current tag's working docs.
- If **no event with `role == "accept"` and `decision == "accept"`** exists anywhere in the file → STOP. Tell user to run `/gm-accept` first.
(Events with `decision == "fix"` or `decision == "done"` are trace records, not completions.)
- If `.godotmaker/final_report.json` exists **and** `git tag <Tag>` already exists → STOP. Tell the user:
> "Tag {Tag} already finalized. Run /gm-gdd to start the next tag, or stop here.
> If you need to redo this step or have other plans, just tell me."
- Otherwise → proceed.
## Resolve `godot` binary
Read `godot_path` from `.claude/godotmaker.yaml` and substitute it
verbatim for `<godot_path>` in every `godot --headless …` command
below. The path was validated at publish time and is the source of
truth for