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
@@ -1,9 +1,9 @@
|
||||
---
|
||||
name: bug-report
|
||||
description: "Structured bug report from a description, or analyze code for potential bugs. Reproduction steps, severity."
|
||||
argument-hint: "[description] | analyze [path-to-file]"
|
||||
argument-hint: "[description] | analyze [path-to-file] | verify [BUG-ID] | close [BUG-ID]"
|
||||
user-invocable: true
|
||||
allowed-tools: Read, Glob, Grep, Bash, Write, Edit, Bash(bash "*/.claude/skills/bug-report/../../hooks/yaml-helper.sh" resolve_config *)
|
||||
allowed-tools: Read, Glob, Grep, Bash, Write, Edit, AskUserQuestion, Bash(bash "*/.claude/skills/bug-report/../../hooks/yaml-helper.sh" resolve_config *)
|
||||
model: sonnet
|
||||
---
|
||||
|
||||
@@ -42,22 +42,15 @@ If no argument is provided, ask the user for a bug description before proceeding
|
||||
## Summary
|
||||
**Title**: [Concise, descriptive title]
|
||||
**ID**: BUG-[NNNN]
|
||||
**Severity**: [S1-Critical / S2-Major / S3-Minor / S4-Trivial]
|
||||
**Severity**: [S1-Critical / S2-High / S3-Medium / S4-Low]
|
||||
**Priority**: [P1-Fix this sprint / P2-Fix soon / P3-Backlog / P4-Won't fix]
|
||||
|
||||
> **These labels must match `/bug-triage`'s priority table exactly** — it parses
|
||||
> this field out of the file you are writing. P4 is the easiest to get wrong:
|
||||
> `P4-Wishlist` ("would be nice someday") and `P4 — Won't fix / Deferred`
|
||||
> ("accepted risk, not doing it") mean opposite things, and nothing at runtime
|
||||
> surfaces a disagreement between the producer and consumer of the field. If you change this ladder, change
|
||||
> `.claude/skills/bug-triage/SKILL.md` in the same commit.
|
||||
**Status**: Open
|
||||
**Reported**: [Date]
|
||||
**Reporter**: [Name]
|
||||
**Reporter**: [the reporter's name as the user gives it, else `—`; never an email address or account ID taken from the session]
|
||||
|
||||
## Classification
|
||||
- **Category**: [Gameplay / UI / Audio / Visual / Performance / Crash / Network]
|
||||
- **System**: [Which game system is affected]
|
||||
- **System**: [Which game system is affected — when the bug spans systems, the one whose code must change; the others go under Related systems]
|
||||
- **Frequency**: [Always / Often (>50%) / Sometimes (10-50%) / Rare (<10%)]
|
||||
- **Regression**: [Yes/No/Unknown -- was this working before?]
|
||||
|
||||
@@ -93,6 +86,11 @@ If no argument is provided, ask the user for a bug description before proceeding
|
||||
[Any additional context or observations]
|
||||
```
|
||||
|
||||
The **Severity** and **Priority** labels use `/bug-triage`'s S and P numbers and
|
||||
names, which it parses out of this file. `P4-Won't fix` is its `P4 — Won't fix /
|
||||
Deferred` (an accepted risk), not a wishlist. If you change either ladder, change
|
||||
`.claude/skills/bug-triage/SKILL.md` too.
|
||||
|
||||
---
|
||||
|
||||
## Phase 2B: Analyze Mode
|
||||
@@ -107,19 +105,29 @@ If no argument is provided, ask the user for a bug description before proceeding
|
||||
|
||||
## Phase 2C: Verify Mode
|
||||
|
||||
Read `production/qa/bugs/[BUG-ID].md`. Extract the reproduction steps and expected result.
|
||||
**Find the bug file by its number**, here and in close mode: Glob
|
||||
`production/qa/bugs/BUG-*.md` and take the file whose number matches `[BUG-ID]`,
|
||||
whatever its zero-padding — an older three-digit file with a slug is found by
|
||||
its number too. If none
|
||||
matches, stop: "No bug [BUG-ID] in `production/qa/bugs/`." Verdict: **BLOCKED**
|
||||
— no such bug.
|
||||
|
||||
Read that file. Extract the reproduction steps and expected result.
|
||||
|
||||
1. **Re-run reproduction steps** — use Grep/Glob to check whether the root cause code path still exists as described. If the fix removed or changed it, note the change.
|
||||
2. **Run the related test** — if the bug's system has a test file in `tests/`, run it via Bash and report pass/fail.
|
||||
2. **Run the related test** — if the bug's system has a test file in the engine's test root (`tests/` Godot, `Assets/Tests/` Unity, `Source/<Module>/Private/Tests/` Unreal — `.claude/docs/directory-structure.md`), run it via Bash with `commands.test` from `project.yaml`, narrowed to the affected suite where the runner allows — never a runner line written from memory, which drops the flags the engine needs (gdUnit4 hangs without `--remote-debug tcp://127.0.0.1:0`) — and report pass/fail. `commands.test` unset → no test ran: name the unset key and go on to step 3.
|
||||
3. **Check for regression** — grep the codebase for any new occurrence of the pattern that caused the bug.
|
||||
4. **Manual verification** — when no related test ran (none covers the bug — the usual case where `qa.level` waives tests — `commands.test` is unset, or the run did not complete), or the bug's Category is Visual or UI, whose look no automated test checks, ask via `AskUserQuestion`: "Did you play the reproduction steps in [bug file] on a build with the fix? Which build?" —
|
||||
`[No longer occurs]` / `[Still occurs]` / `[Not played yet]`.
|
||||
Record the answer and the build as the user gives them; a changed code path is never taken as their answer.
|
||||
|
||||
Produce a verification verdict:
|
||||
|
||||
- **VERIFIED FIXED** — reproduction steps no longer produce the bug; related tests pass
|
||||
- **STILL PRESENT** — bug reproduces as described; fix did not resolve the issue
|
||||
- **CANNOT VERIFY** — automated checks inconclusive; manual playtest required
|
||||
- **VERIFIED FIXED** — the bug is gone by every check that applies: any related test ran and passed, and, where step 4 asked, the user answered `[No longer occurs]` for a named build. With no test run, that play alone is the verification — a manual one, recorded as such: `[user], manual, build [X]`. A changed code path on its own is never a pass
|
||||
- **STILL PRESENT** — a related test fails on the bug's case, or the user answered `[Still occurs]`; the fix did not resolve the issue
|
||||
- **CANNOT VERIFY** — step 4 was answered `[Not played yet]`: name what is missing or could not run (no related test, `commands.test` unset, a run that did not complete, a Visual or UI bug), and say that playing the reproduction steps settles it — run `/bug-report verify [BUG-ID]` again once played
|
||||
|
||||
Ask: "May I update `production/qa/bugs/[BUG-ID].md` to set Status: Verified Fixed / Still Present / Cannot Verify?"
|
||||
Ask: "May I update `production/qa/bugs/[bug file]` to set Status: Verified Fixed / Still Present / Cannot Verify?" — naming the file found above, whatever its padding or slug. With the Status, write a `**Verified by**:` line under it: `[test file(s)] — ran and passed`, or `[user], manual, build [X]` for a manual verification.
|
||||
|
||||
If STILL PRESENT: reopen the bug, set Status back to Open, and suggest re-running `/hotfix [BUG-ID]`.
|
||||
|
||||
@@ -127,24 +135,24 @@ If STILL PRESENT: reopen the bug, set Status back to Open, and suggest re-runnin
|
||||
|
||||
## Phase 2D: Close Mode
|
||||
|
||||
Read `production/qa/bugs/[BUG-ID].md`. Confirm Status is `Verified Fixed` before closing. If status is anything else, stop: "Bug [ID] must be Verified Fixed before it can be closed. Run `/bug-report verify [BUG-ID]` first."
|
||||
Read the bug file, found by its number as in verify mode. Confirm Status is `Verified Fixed` before closing. If status is anything else, stop: "Bug [ID] must be Verified Fixed before it can be closed. Run `/bug-report verify [BUG-ID]` first."
|
||||
|
||||
Append a closure record to the bug file:
|
||||
Show the closure record below and the Status change, then ask: "May I update `production/qa/bugs/[bug file]` to mark it Closed?" Nothing is written before a yes; on no, stop — the bug stays Verified Fixed.
|
||||
|
||||
On yes, append the closure record to the bug file:
|
||||
|
||||
```markdown
|
||||
## Closure Record
|
||||
**Closed**: [date]
|
||||
**Resolution**: Fixed — [one-line description of what was changed]
|
||||
**Fix commit / PR**: [if known]
|
||||
**Verified by**: qa-tester
|
||||
**Verified by**: [the verify record's `**Verified by**:` line — the test that ran and passed, or "[user], manual, build [X]"]
|
||||
**Closed by**: [user]
|
||||
**Regression test**: [test file path, or "Manual verification"]
|
||||
**Regression test**: [test file path, or "Manual verification" when verify recorded a manual play]
|
||||
**Status**: Closed
|
||||
```
|
||||
|
||||
Update the top-level `**Status**: Open` field to `**Status**: Closed`.
|
||||
|
||||
Ask: "May I update `production/qa/bugs/[BUG-ID].md` to mark it Closed?"
|
||||
Then update the top-level `**Status**:` field to `**Status**: Closed`.
|
||||
|
||||
After closing, check `production/qa/bug-triage-*.md` — if the bug appears in an open triage report, note: "Bug [ID] is referenced in the triage report. Run `/bug-triage` to refresh the open bug count."
|
||||
|
||||
@@ -154,7 +162,14 @@ After closing, check `production/qa/bug-triage-*.md` — if the bug appears in a
|
||||
|
||||
Present the completed bug report(s) to the user.
|
||||
|
||||
Ask: "May I write this to `production/qa/bugs/BUG-[NNNN].md`?"
|
||||
**Allocate the ID** before asking: Glob `production/qa/bugs/BUG-*.md`, take the
|
||||
highest number and add 1, zero-padded to four digits (`BUG-0001` when there are
|
||||
none). Several reports in one run (analyze mode) take consecutive IDs from
|
||||
there, one each — never the same ID twice.
|
||||
|
||||
Ask: "May I write this to `production/qa/bugs/BUG-[NNNN].md`?" For several
|
||||
reports, ask once and name every file: "May I write these to
|
||||
`production/qa/bugs/BUG-[NNNN].md`, `production/qa/bugs/BUG-[NNNN+1].md`, …?"
|
||||
|
||||
If yes, write the file, creating the directory if needed. Verdict: **COMPLETE** — bug report filed.
|
||||
|
||||
@@ -174,6 +189,9 @@ After saving, suggest based on mode:
|
||||
- Run `/bug-report verify [BUG-ID]` — confirm the fix actually works before closing
|
||||
- Never mark a bug closed without verification — a fix that doesn't verify is still Open
|
||||
|
||||
**After verify returns CANNOT VERIFY:**
|
||||
- Play the reproduction steps on a build with the fix, then run `/bug-report verify [BUG-ID]` again and answer its question
|
||||
|
||||
**After verify returns VERIFIED FIXED:**
|
||||
- Run `/bug-report close [BUG-ID]` — write the closure record and update status
|
||||
- Run `/bug-triage` to refresh the open bug count and remove it from the active list
|
||||
|
||||
Reference in New Issue
Block a user