EVILVIDEOGAMENERD — the outsider who breaks your game
Reviewer settings (live)
!node ${CLAUDE_SKILL_DIR}/../../scripts/gate.mjs evilvideogamenerd || echo GATE_UNAVAILABLE
NO_CONFIG→ stop and run the devinit skill first.CONFIG_ERROR→ repair and validate the policy before continuing; do not substitute defaults.- Copy a template into the project with
node ${CLAUDE_SKILL_DIR}/../../scripts/install-template.mjs <skill>/templates/<file> <destination>(it never overwrites). Templates with{{placeholders}}are read, filled and written instead.
Modes ($ARGUMENTS)
| Argument | What to do |
|---|---|
player / qa / critic [focus] | A review round (procedure below). Default mode: nerd.default_mode |
recheck | A round whose only job is to recheck ledger rows with status fix-submitted, still-open or regressed |
status | Summarize qa/nerd/ledger.md by severity and status; do not launch the reviewer |
setup | Steps 1–2 only: the reviewer's folder and tooling |
Your role (main agent)
You prepare, launch and triage. The reviewer works alone.
- Never put design intent, GDD content, numbers, roadmap items or project rules into its prompt. Write the briefing as a player-facing note: how to launch, controls, what changed in patch-note style.
- Never close its findings. You may set
fix-submitted(with a commit or note). Only the reviewer on recheck, or a human, setsverified-fixed; only a human setswontfix. - Disagreeing with a finding ("that is intended") is the user's call. Record it with the user's decision.
Round procedure
-
Reviewer folder (
paths.nerd, defaultqa/nerd/). Create it if missing:ledger.md:install-template.mjs evilvideogamenerd/templates/ledger.md qa/nerd/ledger.md;report-template.md:install-template.mjs evilvideogamenerd/templates/report.md qa/nerd/report-template.md;reports/,screens/,logs/,scripts/(created by the reviewer as needed).
The reviewer cannot read the plugin folder, so its templates must live here.
-
Tooling. Work out what the reviewer can actually use, and say it plainly:
- MCP play: a Godot MCP with screenshot and input tools is available (GoPeak recommended; setup in the stopgen skill,
setup-mcp). Needed forplayerandcritic. - Chaos runner:
<project_dir>/tools/qa/chaos_runner.gdexists. If it does not, offer to install it (user OK):install-template.mjs evilvideogamenerd/templates/chaos_runner.gd <project_dir>/tools/qa/chaos_runner.gd. It needs the Godot binary, not a display. - None: tell the user the round can only be partial (
qacode review) and ask whether to continue.
- MCP play: a Godot MCP with screenshot and input tools is available (GoPeak recommended; setup in the stopgen skill,
-
Session file. Write
qa/nerd/.session.json:{"mode": "...", "round": N, "focus": "...", "capabilities": ["mcp-play", "chaos"], "version": "<process.current_version>", "started": "<ISO date>"}. The round number is the previous one plus one (seereports/). The isolation hook reads the mode from this file. -
Briefing from templates/briefing.md: player-facing information only.
-
Launch the
evil-video-game-nerdsubagent (its listed type may carry agodot-gamedev:prefix). Pass the briefing, the report path to write, and "templates are in qa/nerd/". Up tonerd.max_roundsrounds per session. -
Triage the report with the user:
- Blocker/Critical → roadmap Must items for the current version (antislop-game).
- Others → roadmap or backlog by severity × frequency.
- Rejected findings → ledger
wontfixwith the user's reason. - Suspected findings and hunches → nothing until reproduced.
-
Fix, then recheck. After fixes, set
fix-submittedin the ledger and runrecheck. Repeat up tonerd.max_rounds. -
Delete
qa/nerd/.session.jsonwhen the session ends.
What isolation means here (be honest about it)
- The plugin's
nerd-guardhook applies only to this subagent. It blocks reading the GDD, roadmap, decisions, playtests,AGENTS.md,CLAUDE.mdand.gamedev/. Inplayer/criticmode it allows onlydocs/player/,qa/nerd/and its memory, and only playing tools. It allows writes only toqa/nerd/and its memory, and never MCP tools that edit the game or call methods at runtime. omitClaudeMdneeds Claude Code 2.1.271 or newer. It skips the initial user/project/local instructions; managed policy still loads, and subdirectory instructions can load when files are accessed. This does not guarantee an instruction-free context. The reviewer keeps project memory in.claude/agent-memory/…evil-video-game-nerd…/, orqa/nerd/memory.mdwhen agent memory is unavailable.- Bash filtering is best-effort, not a sandbox. Tell the user this if they need guaranteed isolation; the alternative is a separate checkout without
docs/. docs/player/must stay free of design intent (gdddocs rule); otherwise the isolation leaks through the front door.
Gates
The release-candidate gate (antislop-game gate) fails while the ledger has Blocker or Critical rows that are not verified-fixed or wontfix.