skills/game-dev-commands/game-review/SKILL.md
Audits existing game code against design principles — checks server-authority, schema conventions, auth security, payment safety, narrative coherence, and MVP scope drift. Extract the optional component name or path from the user's message (defaults to entire src/). Use after building components or before committing.
npx skillsauth add fcsouza/agent-skills game-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
docs/mvp-first-draft.md if it exists (provides architectural intent for comparison)docs/build-registry.md if it exists (tracks what's built vs mocked)src/[component]/ or the specified pathsrc/betterauth-integration skillstripe-game-payments skillgame-state-sync skillredis-game-patterns skillbullmq-game-queues skillquest-narrative-coherence skillpostgres-game-schema skillmatchmaking-system skillgameplay-analytics skillRead all TypeScript files in the target scope. Apply these checks. For every finding, record: severity, file path, line number (approximate), description, fix suggestion, and the skill it violates.
message.userId or message.playerId from the client — must derive identity from server sessionsql\SELECT...`) outside of Drizzle's sql` tagged helper — must use Drizzle typed query builderdeletedAt soft-delete column on player-facing tables (players, inventory, characters)manaPoints, fireResistance as top-level columns)(playerId, type) composite for event/log tablesreq.body.userId or req.query.userId to identify the actor — must use auth.api.getSession() and derive from session/auth/login or /auth/signup routes/success) — must be webhook-drivenstripe.webhooks.constructEvent() to verify the signaturepublic/, client/, frontend/)checkout.session.completed events — could double-grant rewards on webhook replayattempts config — all jobs should have retry policybackoff config — should use exponential backoffremoveOnComplete and removeOnFail options to prevent queue bloat{entity}:{id}:{field} naming conventionEXPIRE — ephemeral state must have TTLZADD NX or GT to only update when score improves.env values or secrets hardcoded in source fileseval() or Function() constructor called with user inputIf docs/world-lore.md and docs/quest-registry.md both don't exist, output:
📋 Narrative coherence check: skipped (docs/quest-registry.md not found — run the game-quest skill to create it)
Then skip to Phase 3.
If either file exists:
docs/world-lore.md and docs/quest-registry.md⚠️ LORE CONFLICT: Character "Mira" referenced in src/quests/main.ts but not registered in quest-registry.mdIf docs/mvp-first-draft.md doesn't exist, output:
📋 Scope audit: skipped (docs/mvp-first-draft.md not found — run the game-architect skill first)
Then skip to Phase 4.
docs/mvp-first-draft.mdsrc/ for implementations of explicitly deferred features⚠️ SCOPE DRIFT: [feature] found in [file] but listed as out-of-scope in MVP plan Section 10Also check docs/build-registry.md for components marked "built" that don't appear in the MVP build sequence (Section 9) — these may be gold-plating.
Output a structured review report:
# Game Review Report
Scope: [path reviewed]
Generated: [timestamp]
## Summary
🔴 Critical: X | 🟡 Warning: Y | 🟢 Suggestion: Z
Then list all findings grouped by category (Engineering, Narrative, Scope). For each finding:
### [🔴/🟡/🟢] [Title]
**File:** `src/path/to/file.ts` (line ~42)
**Issue:** [what's wrong]
**Fix:** [concrete fix description]
**Skill ref:** [→ stripe-game-payments: webhook-first fulfillment]
End with:
## Next Steps
- Fix all 🔴 CRITICAL issues before committing
- Review the [top-violation-category] skill for correct patterns
- Run the game-build skill to rebuild any component with critical violations
If no issues found in a category, output:
### ✅ [Category] — No issues found
tools
Use when implementing client-server state synchronization, delta compression, optimistic updates, rollback netcode, or real-time game state reconciliation. Triggers: state sync, netcode, delta, rollback, interpolation, prediction.
testing
Use when designing virtual economies, currencies, sink/faucet balance, loot tables, crafting systems, shops, or inflation control. Triggers: economy, currency, sinks, loot, inflation, crafting, shop.
testing
Designs a single quest end-to-end — coherence check, objective tree, quest brief, and registry entry. Extract the quest name from the user's message. Requires docs/world-lore.md and docs/quest-registry.md.
testing
Adds or updates a single world lore entry (faction, location, NPC, or event) — validates against existing lore for consistency, applies the right template, and updates docs/world-lore.md. Extract the entry type (faction/location/npc/event) and name from the user's message.