Rapidly scaffold and implement a playable game — no assets, design, audio, deploy, or monetize. Get something on screen fast. Use when the user says "quick…
Performance Notes Take your time to do this thoroughly Quality is more important than speed Do not skip validation steps Quick Game (Fast Prototype) Build a playable game prototype as fast as possible. This is /viral-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: A scaffolded game project with clean architecture Core gameplay — input, movement, scoring, fail condition, restart A running dev server you can play immediately 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 integration Instructions Step 0: Parse arguments Parse $ARGUMENTS to determine the game concept: Direct specification: [2d|3d] [game-name] Engine: 2d (Phaser) or 3d (Three.js). If not specified, default to 2d. Name: kebab-case. If not specified, ask the user. Tweet URL: If arguments contain a tweet URL (x.com/*/status/*, twitter.com/*/status/*, fxtwitter.com/*/status/*): Fetch the tweet using the fetch-tweet skill Default to 2D Creatively abstract a game concept from the tweet Generate a kebab-case name Tell the user what you'll build Meshy 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. Step 1: Scaffold + Implement Infrastructure (main thread): Locate the template directory — check ~/.claude/plugins/cache/local-plugins/game-creator/*/templates/ or templates/ relative to this plugin Target directory: If inside the game-creator repo, create in examples/<game-name>/. Otherwise, create in ./<game-name>/. Copy the template: 2D: templates/phaser-2d/ → target 3D: templates/threejs-3d/ → target Update package.json name and index.html title Run npm install Start the dev server (npm 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) or threejs-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_ZONE from Constants.js — keep UI below SAFE_ZONE.TOP Minimum 7-8% canvas width for collectibles/hazards Character sizing: GAME.WIDTH * 0.12 to GAME.WIDTH * 0.15 for 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 isMuted to GameState for future audio support Ensure restart is clean — 3 restarts in a row should work identically Step 2: Verify After the subagent returns: Run npm run build in the project directory to confirm no errors If the build fails, fix the issues (up to 2 retries) If Playwright MCP is available, navigate to the dev server, take a screenshot, and do a quick visual check Example Usage 2D game /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. From tweet /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. Troubleshooting Game scaffolds but won't start Cause: Vite config or import paths incorrect. Fix: Verify vite.config.js has correct root. Check that main.js is referenced in index.html. Missing core files 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. Done 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 integration Or run /viral-game next time for the full one-shot pipeline (assets, polish, deploy, monetize all in one go).
don't have the plugin yet? install it then click "run inline in claude" again.