From game-creator
Scaffolds and implements playable 2D (Phaser) or 3D (Three.js) game prototypes with core loop, input, scoring, and dev server. Use for quick games or fast prototypes via /quick-game.
npx claudepluginhub opusgamelabs/game-creator --plugin game-creatorThis skill uses the workspace's default tool permissions.
- Take your time to do this thoroughly
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Checks Next.js compilation errors using a running Turbopack dev server after code edits. Fixes actionable issues before reporting complete. Replaces `next build`.
Build a playable game prototype as fast as possible. This is /make-game without the polish — just scaffold + implement the core loop. Get something on screen, then incrementally add layers with /add-assets, /design-game, /add-audio, /game-deploy, and /monetize-game.
What you'll get:
What you skip (run these later if you want):
/add-assets — pixel art sprites (2D) or 3D models/design-game — visual polish, particles, transitions/add-audio — music and sound effects/record-promo — promo video capture/game-deploy — deploy to here.now/monetize-game — Play.fun integrationParse $ARGUMENTS to determine the game concept:
Direct specification: [2d|3d] [game-name]
2d (Phaser) or 3d (Three.js). If not specified, default to 2d.Tweet URL: If arguments contain a tweet URL (x.com/*/status/*, twitter.com/*/status/*, fxtwitter.com/*/status/*):
fetch-tweet skillMeshy API Key (3D only): If 3D, check for MESHY_API_KEY. If missing, ask the user (link to https://app.meshy.ai). Store for model generation.
Infrastructure (main thread):
~/.claude/plugins/cache/local-plugins/game-creator/*/templates/ or templates/ relative to this plugingame-creator repo, create in examples/<game-name>/. Otherwise, create in ./<game-name>/.templates/phaser-2d/ → targettemplates/threejs-3d/ → targetpackage.json name and index.html titlenpm installnpm run dev) in the background. Check port availability first — if 3000 is taken, try 3001, 3002, etc.Game implementation (subagent via Task):
Launch a Task subagent with:
You are building a quick game prototype. Speed is the priority — get a playable core loop working.
Project path:
<project-dir>Engine:<2d|3d>Game concept:<description>Skill to load:phaser(2D) orthreejs-game(3D)Implement in this order:
- Input (touch + keyboard from the start)
- Player movement / core mechanic
- Fail condition (death, collision, timer)
- Scoring
- Restart flow (GameState.reset() → clean slate)
Scope: 1 scene, 1 mechanic, 1 fail condition. Keep it tight.
Rules:
- All cross-module communication via EventBus
- All magic numbers in Constants.js
- No title screen — boot directly into gameplay
- No in-game score HUD — Play.fun widget handles score display
- Mobile-first input: touch + keyboard, use unified InputSystem pattern
- Import
SAFE_ZONEfrom Constants.js — keep UI belowSAFE_ZONE.TOP- Minimum 7-8% canvas width for collectibles/hazards
- Character sizing:
GAME.WIDTH * 0.12toGAME.WIDTH * 0.15for character-driven games- Preserve the template's
createButton()helper in GameOverScene — do NOT rewrite it- Wire spectacle events:
SPECTACLE_ENTRANCE,SPECTACLE_ACTION,SPECTACLE_HIT,SPECTACLE_COMBO,SPECTACLE_STREAK,SPECTACLE_NEAR_MISS- Add
isMutedto GameState for future audio support- Ensure restart is clean — 3 restarts in a row should work identically
After the subagent returns:
npm run build in the project directory to confirm no errors/quick-game 2d asteroid-dodge
Result: Copies Phaser template → implements player ship, asteroid spawning, collision death, score counter, restart flow → dev server running at localhost:3000 in ~2 minutes. Shapes only, no polish.
/quick-game https://x.com/user/status/123456
Result: Fetches tweet → abstracts game concept → scaffolds and implements a playable prototype inspired by the tweet content.
Cause: Vite config or import paths incorrect. Fix: Verify vite.config.js has correct root. Check that main.js is referenced in index.html.
Cause: Scaffold skipped EventBus/GameState/Constants. Fix: Every game needs core/EventBus.js, core/GameState.js, core/Constants.js. Re-run scaffold or create manually.
Tell the user:
Your game is running at
http://localhost:<port>. Open it in a browser to play!To keep building, run these commands:
/add-assets— replace shapes with pixel art sprites/design-game— add visual polish (particles, gradients, juice)/add-audio— add music and sound effects/game-deploy— deploy to the web/monetize-game— add Play.fun integrationOr run
/make-gamenext time for the full pipeline.