react-three-fiber-game
Build React-hosted 3D browser games with React Three Fiber. Use when the user wants pmndrs-based scene composition, shared React state, and 3D HUD integration inside a React app.
Best use case
react-three-fiber-game is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Build React-hosted 3D browser games with React Three Fiber. Use when the user wants pmndrs-based scene composition, shared React state, and 3D HUD integration inside a React app.
Teams using react-three-fiber-game should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/react-three-fiber-game/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How react-three-fiber-game Compares
| Feature / Agent | react-three-fiber-game | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Build React-hosted 3D browser games with React Three Fiber. Use when the user wants pmndrs-based scene composition, shared React state, and 3D HUD integration inside a React app.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# React Three Fiber Game ## Overview Use this skill when the 3D runtime lives inside a React application. This is the default React-native 3D path in the plugin and should be preferred over vanilla Three.js when the app shell, settings, storefront, editor surface, or surrounding product already uses React. Recommended stack: - `@react-three/fiber` - `three` - `@react-three/drei` - `@react-three/rapier` - `@react-three/postprocessing` - `@react-three/a11y` when accessibility-sensitive interaction matters - DOM overlays in the normal React tree ## Use This Skill When - the project already uses React - the 3D scene must share state with the rest of the app - declarative scene composition is a net gain - the team wants pmndrs helpers instead of building every helper layer by hand ## Do Not Use This Skill When - the app is not React-based - the project wants a cleaner imperative runtime with minimal React coordination - the problem is asset packaging rather than runtime composition ## Best Fit Scenarios - 3D configurators and tool-rich browser products - React apps with embedded game or scene surfaces - 3D menus, editors, or world maps in an existing React app - 3D game UIs that depend on shared app state and non-canvas shells ## Core Rules 1. Keep simulation state outside render components. - React components should describe scene composition, not become the source of truth for gameplay rules. 2. Use React state and scene state deliberately. - Shared UI state can live in app state. - High-frequency simulation should not force the whole app through unnecessary React churn. 3. Use pmndrs helpers intentionally. - Drei for controls, loaders, helpers, environments, and common scene primitives. - `@react-three/rapier` for physics integration. - `@react-three/postprocessing` for optional effects. - `@react-three/a11y` when the interaction model benefits from accessible scene semantics. 4. Keep HUD, settings, and menus in DOM by default. 5. Keep starter scaffolds visually restrained. - Start with one compact objective or status surface and transient prompts. - Keep notes, maps, and multi-step checklists collapsed until opened. - Do not surround the `Canvas` with equally weighted glass cards. ## Architectural Guidance - Use a dedicated scene root component that owns the `Canvas`. - Keep camera rigs and control components isolated from gameplay systems. - Keep loader and asset wrappers predictable. - Keep DOM overlays and the 3D scene coordinated through explicit state boundaries. - If a system needs tight imperative control, isolate it rather than forcing everything into declarative patterns. - If the scene is immediately playable, keep the initial overlay budget low and let the world do more of the onboarding. ## Anti-Patterns - Treating React components as the gameplay state store - Pushing heavy per-frame mutation through broad app state - Using R3F only because React is available, even when the project needs a cleaner imperative runtime - Building HUD or inventory UI inside the 3D scene by default - Shipping an initial scaffold with large cards occupying every side of the viewport ## References - Shared architecture: `../web-game-foundations/SKILL.md` - Frontend direction: `../game-ui-frontend/SKILL.md` - 3D HUD layout patterns: `../../references/three-hud-layout-patterns.md` - React Three Fiber stack: `../../references/react-three-fiber-stack.md` - React starter: `../../references/react-three-fiber-starter.md` - GLB loader starter: `../../references/gltf-loading-starter.md` - Rapier starter: `../../references/rapier-integration-starter.md` - 3D asset pipeline: `../../references/web-3d-asset-pipeline.md` - WebGL debugging and perf: `../../references/webgl-debugging-and-performance.md`
Related Skills
web-game-foundations
Set browser-game architecture before implementation. Use when the user needs engine choice, simulation and render boundaries, input model, asset organization, or save/debug/performance strategy.
three-webgl-game
Implement browser-game runtimes with plain Three.js. Use when the user wants imperative scene control in TypeScript or Vite with GLB assets, loaders, physics, and low-level WebGL debugging.
phaser-2d-game
Implement 2D browser games with Phaser. Use when the user wants a Phaser, TypeScript, and Vite stack for scenes, gameplay systems, cameras, sprite animation, and DOM-overlay HUD patterns.
game-ui-frontend
Design UI surfaces for browser games. Use when the user asks for HUDs, menus, overlays, responsive layouts, or visual direction that must protect the playfield.
game-studio
Route early browser-game work. Use when the user needs stack selection and workflow planning across design, implementation, assets, and playtesting before moving to a specialist skill.
game-playtest
Run browser-game playtests and frontend QA. Use when the user asks for smoke tests, screenshot-based verification, browser automation, HUD or overlay review, or structured issue-finding in a browser game.
react-best-practices
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.
workflow
Vercel Workflow DevKit (WDK) expert guidance. Use when building durable workflows, long-running tasks, API routes or agents that need pause/resume, retries, step-based execution, or crash-safe orchestration with Vercel Workflow.
verification
Full-story verification — infers what the user is building, then verifies the complete flow end-to-end: browser → API → data → response. Triggers on dev server start and 'why isn't this working' signals.
vercel-storage
Vercel storage expert guidance — Blob, Edge Config, and Marketplace storage (Neon Postgres, Upstash Redis). Use when choosing, configuring, or using data storage with Vercel applications.
vercel-services
Vercel Services — deploy multiple services within a single Vercel project. Use for monorepo layouts or when combining a backend (Python, Go) with a frontend (Next.js, Vite) in one deployment.
vercel-sandbox
Vercel Sandbox guidance — ephemeral Firecracker microVMs for running untrusted code safely. Supports AI agents, code generation, and experimentation. Use when executing user-generated or AI-generated code in isolation.