
Code quality standards and review checklist for MultiMagicDungeonWeb
# Skill: Deploy to Hetzner Use this skill to deploy MultiMagicDungeonWeb server changes to the Hetzner VPS. ## Prerequisites - `HETZNER_API_KEY` is in `~/.zshrc` — load with `source ~/.zshrc` - SSH key at `~/.ssh/id_rsa` or `~/.ssh/id_ed25519` - Server IP: fetch via API (Step 1) ## Step 1: Get the server IP ```bash source ~/.zshrc curl -s -H "Authorization: Bearer $HETZNER_API_KEY" \ https://api.hetzner.cloud/v1/servers \ | python3 -c "import sys,json; servers=json.load(sys.stdin)['serve
Use Meshy.ai for the full text-to-3D pipeline: list existing models, generate previews, refine with textures, auto-rig, animate, and download GLB files. Always check existing models before generating new ones.
Use fal.ai for text-to-image and image-edit generation, model comparison, queue-based image workflows, and cost-aware experiment tracking with Nano Banana and GPT Image endpoints.
# Skill: Task Workflow Use this checklist for every non-trivial piece of work. Four steps, always in order. Never skip or merge steps. --- ## Step 1 — Plan _(requires user approval before any code is written)_ - [ ] Create `tasks/active/NNN-short-title.md` from `tasks/TEMPLATE.md` - [ ] Document 2–3 options with pros/cons - [ ] Pick the best option and explain why, clearly - [ ] Write numbered, measurable **success criteria** (not "looks better" — testable outcomes) - [ ] Write a **testing s
Creates simple Three.js web apps with scene setup, lighting, geometries, materials, animations, and responsive rendering. Use for: "Create a threejs scene/app/showcase" or when user wants 3D web content. Supports ES modules, modern Three.js r150+ APIs.
# Skill: Add a Three.js Feature to MultiMagicDungeonWeb This game is a **single monolithic `index.html`** — no build step, no bundler. Everything lives in one file. ## File structure inside index.html ``` <html> <head> ... styles ... </head> <body> <!-- HUD overlay divs: #hud, #rename-panel, etc. --> <canvas id="c"></canvas> <script type="module"> // === CONSTANTS (WS_URL, PLAYER_SPEED, HP_MAX, etc.) === // === GLOBALS (scene, camera, renderer, clock) === //
# Skill: Extend the WebSocket Protocol Use this when adding a new message type. Both client and server must be updated together. ## Message flow ``` Client → Server: join, move, spell_cast, rename, [new type] Server → Client: welcome, player_join, player_leave, player_move, spell_cast, player_rename, [new type] ``` ## Step 1: Define the message before coding Document these before touching any file: - **Name**: snake_case - **Direction**: client→server, server→client, or
# Skill: Test Multiplayer Locally Use this skill any time you need to verify multiplayer behavior in MultiMagicDungeonWeb. ## Stack - Game: `index.html` (open as `file://` — no HTTP server needed) - WS server: `server/index.js` on port 8080 - Node binary: `~/.nvm/versions/node/v22.22.0/bin/node` (shell aliases don't apply in Bash tool) ## Step 1: Start the WS server ```bash export PATH="$HOME/.nvm/versions/node/v22.22.0/bin:$PATH" cd /Users/douglasschonholtz/repos/MultiMagicDungeonWeb/server
# Skill: Add a New Spell The `SPELL_DEFS` registry in `index.html` is the single source of truth for all spells. ## Step 1: Add to SPELL_DEFS ```javascript const SPELL_DEFS = { fireball: { color: 0xff6600, size: 0.8, speed: 22, maxLifeMs: 1333, cooldownMs: 666, icon: '🔥', label: 'Fireball', key: '1' }, frostbolt: { color: 0x44aaff, size: 0.6, speed: 14, maxLifeMs: 2000, cooldownMs: 1000, icon: '❄️', label: 'Frostbolt', key: '2' }, telekinesis: { color: 0xaa44ff, size: 1.0