add-assets
Replace geometric shapes with pixel art sprites — recognizable characters, enemies, and items with optional animation. Use when…
Replace primitive 3D shapes with real GLB models — animated characters, world props, buildings, and scenery for Three.js games. Use when the user says "add 3D models", "replace the boxes with real models", "add GLB assets", or "make the 3D game look real". For 2D pixel art, use
$ npx -y skills add playableintelligence/game-creator --skill add-3d-assets --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/add-3d-assetsContext preview
The summary Claude sees to decide when to auto-load this skill.
Replace primitive 3D shapes with real GLB models — animated characters, world props, buildings, and scenery for Three.js games. Use when the user says "add 3D models", "replace the boxes with real models", "add GLB assets", or "make the 3D game look real". For 2D pixel art, use
name: add-3d-assets description: Replace primitive 3D shapes with real GLB models — animated characters, world props, buildings, and scenery for Three.js games. Use when the user says "add 3D models", "replace the boxes with real models", "add GLB assets", or "make the 3D game look real". For 2D pixel art, use add-assets instead. Do NOT use for 2D pixel art (use add-assets) or gameplay changes (use add-feature). argument-hint: "[path-to-game]" license: MIT metadata: author: OpusGameLabs version: 1.3.0 tags: [game, 3d, assets, glb, models, threejs]
Replace basic geometric shapes (BoxGeometry, SphereGeometry) with real 3D models. Characters get custom Meshy AI-generated models with rigging and animation. World objects get generated or sourced from free libraries.
Analyze the game at `$ARGUMENTS` (or the current directory if no path given).
First, load the game-3d-assets skill and the meshyai skill for the full model pipeline, AssetLoader pattern, Meshy generation, and integration patterns.
Check if `MESHY_API_KEY` is set. First check `.env`: `test -f .env && grep -q '^MESHY_API_KEY=.' .env && echo "found"` If found, export it with `set -a; . .env; set +a` and skip the prompt.
If not set, ask the user:
> I'll generate custom 3D models with Meshy AI for the best results. You can get a free API key in 30 seconds: > 1. Sign up at https://app.meshy.ai > 2. Go to Settings → API Keys > 3. Create a new API key > > Paste your key below like: `MESHY_API_KEY=your-key-here` > (It will be saved to .env and redacted from this conversation automatically.) > > Or type "skip" to use free model libraries instead.
Split entities into two categories:
**Animated characters** (player, enemies with AI) — generate with Meshy AI:
| Entity | Meshy Prompt | Notes | |--------|-------------|-------| | Player | "a heroic knight, low poly game character, full body, t-pose" | Generate → rig → animate | | Enemy | "a goblin warrior with a club, low poly game character" | Generate → rig → animate |
If Meshy unavailable, fall back to `assets/3d-characters/`:
**World objects** (buildings, props, scenery, collectibles) — generate with Meshy or search free libraries:
| Entity | Meshy Prompt | Fallback Source | |--------|-------------|-----------------| | Tree | "a low poly stylized tree, game asset" | Poly Haven | | House | "a medieval house, low poly game asset" | Poly Haven | | Barrel | "a wooden barrel, low poly game asset" | Poly Haven | | Coin | "a gold coin, game collectible item" | Sketchfab |
**With Meshy (preferred):**
# Generate characters MESHY_API_KEY=<key> node <plugin-root>/scripts/meshy-generate.mjs \ --mode text-to-3d \ --prompt "a heroic knight, low poly game character, full body" \ --polycount 15000 --pbr \ --output public/assets/models/ --slug player # Rig characters for animation MESHY_API_KEY=<key> node <plugin-root>/scripts/meshy-generate.mjs \ --mode rig --task-id <refine-task-id> --height 1.7 \ --output public/assets/models/ --slug player-rigged # Generate static props MESHY_API_KEY=<key> node <plugin-root>/scripts/meshy-generate.mjs \ --mode text-to-3d \ --prompt "a wooden barrel, low poly game asset" \ --polycount 5000 \ --output public/assets/models/ --slug barrel
**Without Meshy (fallback):**
# Characters — copy from library cp <plugin-root>/assets/3d-characters/models/Soldier.glb public/assets/models/ # World objects — search and download node <plugin-root>/scripts/find-3d-asset.mjs --query "barrel" --source polyhaven \ --output public/assets/models/ --slug barrel
1. Create `src/level/AssetLoader.js` — **use `SkeletonUtils.clone()` for animated models** (import from `three/addons/utils/SkeletonUtils.js`). Regular `.clone()` breaks skeleton → T-pose. 2. Add `CHARACTER` to Constants.js with `path`, `scale`, `facingOffset`, `clipMap` 3. Add `ASSET_PATHS` and `MODEL_CONFIG` for static models 4. Update `Player.js`:
5. Update `Game.js`:
6. Replace environment primitives with `loadModel()` calls + `.catch()` fallback 7. Add `THREE.GridHelper` for visible movement reference 8. Preload all models on startup with `preloadAll()` for instant loading
Go from game idea to deployed, monetized browser game in minutes — not hours. Tell your AI coding agent "make a space invaders game" and get a fully playable 2D or 3D browser game with pixel art, procedural audio, and automated QA. Deploy instantly to the web.
Replace geometric shapes with pixel art sprites — recognizable characters, enemies, and items with optional animation. Use when…
Add music and sound effects to a game using the Web Audio API — background music, gameplay themes, and SFX. Zero dependencies.…
Add a new gameplay feature to an existing browser game following its architecture patterns. Use when the user says "add a…
Add real-time or turn-based multiplayer to an existing browser game using PartyKit (Cloudflare Durable Objects). Scaffolds a…
Audit and improve the visual design, polish, and player experience of an existing game. Use when the user says "make my game look…
Fetch tweet content directly from fxtwitter API. Use when given a tweet/X URL to extract the tweet text, author, media, and…