
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.
- Installs
- 52
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/openai/plugins --skill three-webgl-game- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads three-webgl-game automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Three WebGL Game
Overview
Use this skill for the default non-React 3D path in the plugin. This is not generic WebGL advice. It is an opinionated stack for browser 3D work:
three- TypeScript
- Vite
- GLB or glTF 2.0 assets
- Three.js loaders such as
GLTFLoader,DRACOLoader, andKTX2Loader - Rapier JS for physics
- SpectorJS for GPU and frame debugging
- DOM overlays for HUD, menus, and settings
Use this skill when the project wants direct scene, camera, renderer, and game-loop control. If the app already lives in React, route to ../react-three-fiber-game/SKILL.md instead.
Use This Skill When
- the app is plain TypeScript or Vite rather than React-first
- the project wants direct imperative control over the render loop
- the user asks for Three.js specifically
- the runtime needs engine-like control over scene, camera, loaders, and physics
Do Not Use This Skill When
- the 3D scene lives inside an existing React app
- the main problem is shipped-asset optimization rather than runtime code
- the user explicitly chose Babylon.js or PlayCanvas
Core Rules
- Keep simulation state outside Three.js objects.
- Game rules, AI, quest state, timers, and progression should not live inside meshes or materials.
- Treat the render graph as an adapter.
- Scene graph, cameras, materials, loaders, and post-processing are view concerns layered over simulation state.
- Keep camera behavior explicit.
- Orbit, follow, chase, rail, and first-person styles each need their own control boundary.
- Keep UI out of WebGL unless the presentation absolutely depends on it.
- Menus, HUD, inventories, and settings should default to DOM.
- Use GLB or glTF 2.0 as the default shipping model format.
- Do not build the runtime around DCC-native formats.
- Use Rapier instead of ad hoc collision code when the game has meaningful 3D physics or collision response.
- Keep the first playable view low-chrome.
- Default to one compact objective or status cluster plus transient prompts.
- Long notes, lore, and controls references should be collapsed until asked for.
- Do not frame the scene with multiple equal-weight cards during normal play.
Initial Scaffold UX
For exploration, traversal, and character-control prototypes, start with a sparse shell:
- one edge-aligned objective chip
- one transient controls hint
- one optional compact status strip
Only add larger UI surfaces when the game loop truly requires them. Journal, quest log, codex, map, and settings surfaces should open on demand, not occupy the viewport by default.
Recommended Structure
Use the module shape in ../../references/three-webgl-architecture.md, then keep these boundaries clean:
simulation/: rules, progression, state, and AIrender/app/: renderer, scene, camera, resize, context lifecyclerender/loaders/: GLTF, Draco, KTX2, texture, and environment loadingrender/objects/: mesh instantiation and disposalrender/materials/: material setup and shader boundariesphysics/: Rapier world, bodies, colliders, and simulation bridgeui/: DOM overlays and menusdiagnostics/: debug toggles, perf probes, and capture hooks
Good Fit Scenarios
- Exploration demos
- Lightweight 3D combat prototypes
- Vehicle or traversal prototypes
- Scene-driven product or world showcases with gameplay
- Material, lighting, or post-process-led experiences
- 3D games where camera movement and depth readability are central
Loaders, Assets, and Post-Processing
- Start with
GLTFLoaderfor shipped 3D content. - Add
DRACOLoaderor Meshopt-compatible optimization as part of the asset pipeline, not as a random runtime patch. - Use
KTX2Loaderfor compressed textures when the asset pipeline provides them. - Prefer built-in Three.js render and post-processing utilities first. Add heavier abstraction only when the project actually needs it.
- Keep post-processing optional and measurable. Bloom and color effects should not hide gameplay readability.
Shader and Material Guidance
- Start with standard Three.js materials and correct lighting before reaching for custom shaders.
- Use custom shaders only when the visual target genuinely needs them.
- Keep shader parameters driven by game state, not by incidental scene mutations.
- If a material stack gets complex, isolate it behind material factories instead of scattering shader setup across scene code.
Browser Safety
- Handle resize explicitly.
- Expect WebGL context loss and recovery.
- Keep a fallback or degraded mode in mind for fragile GPU paths.
- Watch texture size, geometry count, draw-call growth, and post-processing cost.
- Use SpectorJS when the scene behaves incorrectly or frame cost is unclear.
Scope Warning
Do not claim that this plugin offers equal 3D depth to the Phaser track. It supports serious 3D implementation, but the plugin is still 2D-first overall.
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 - Three.js ecosystem:
../../references/threejs-stack.md - Three.js structure:
../../references/three-webgl-architecture.md - Vanilla starter:
../../references/threejs-vanilla-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
FAQ
What does the three-webgl-game skill do?
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.
How do I install three-webgl-game?
Run npx skills add https://github.com/openai/plugins --skill three-webgl-game in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/three-webgl-game/ (personal) or .claude/skills/three-webgl-game/ (project).
Which AI agents can use three-webgl-game?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is three-webgl-game safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains three-webgl-game?
It is published by openai in openai/plugins, and it is an official skill from the maker of the technology it covers. It has 52 recorded installs.
More from openai/plugins
ios-memgraph-leaks
openai/plugins
Capture and inspect iOS leaks and memgraphs. Use when debugging leaked objects, retain cycles, memory growth, or before/after leak evidence.
android-emulator-qa
openai/plugins
Use when validating Android feature flows in an emulator with adb-driven launch, input, UI-tree inspection, screenshots, and logcat capture.
plugin-creator
openai/plugins
Create and scaffold plugin directories for Codex with a required .codex-plugin/plugin.json, optional plugin folders/files, and baseline placeholders you can edit before publishing or testing. Use when Codex needs to create a new personal plugin, add optional plugin structure, or generate or update personal or repo-root .agents/plugins/marketplace.json entries for plugin ordering and availability metadata.
frontend-app-builder
openai/plugins
Use for new frontend applications, dashboards, games, creative websites, hero sections, and visually driven UI from scratch, or when the user explicitly asks for a redesign/restyle/modernization. Builds from clean, airy, high-taste, readable image-generated concept design with section-specific references, faithful implementation, and browser testing.
frontend-testing-debugging
openai/plugins
Use when testing, debugging, or making targeted improvements to rendered frontend apps through the Build Web Apps or web dev plugin: local dev servers, UI regressions, interaction bugs, console errors, responsive layout, and visual QA. Check whether the Browser plugin is available and use it first when it is; otherwise use regular Playwright with the recorded reason.
swiftui-liquid-glass
openai/plugins
Implement and review iOS 26+ SwiftUI Liquid Glass UI. Use when adopting Liquid Glass or checking its correctness, performance, and design fit.
Popular media & creative skills
hyperframes
heygen-com/hyperframes
Read first to make, edit, animate or render any video with HyperFrames (HTML rendered to video), including launch films, explainers, music videos, charts, maps, vertical clips, title cards, captions and overlays. Holds the render contract, the work loop and what each kind of video needs.
media-use
heygen-com/hyperframes
Get or make any media for a HyperFrames video - music, sound effects, images, icons, logos, voiceover, avatar and generated video, transcripts, cutouts, colour grades and looks - with HeyGen or free local tools, and mix placed audio. Also for footage that looks dark, flat or dull, or should be stylized or hidden.
hyperframes-registry
heygen-com/hyperframes
About 450 ready-made HyperFrames blocks and components installed as editable source - transitions, overlays, titles, kinetic type, captions, charts, map overlays, 3D, camera moves. Use it before hand-building any named visual (CRT scanlines, glitch, film grain, a chart); also for hyperframes add and catalog.
hyperframes-creative
heygen-com/hyperframes
Non-animation creative direction for HyperFrames videos. Use for design spec (frame.md / design.md) handling, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns, and brand / style decisions. For atomic motion patterns and scene blueprints, use hyperframes-animation.
ai-video-generation
101-skills/superpowers
Generate AI videos with Google Veo, Seedance 2.0, HappyHorse, Wan, Grok and 40+ models via inference.sh CLI. Models: Veo 3.1, Veo 3, Seedance 2.0, HappyHorse 1.0, Wan 2.5, Grok Imagine Video, OmniHuman, Fabric, HunyuanVideo. Capabilities: text-to-video, image-to-video, reference-to-video, video editing, lipsync, avatar animation, video upscaling, foley sound. Use for: social media videos, marketing content, explainer videos, product demos, AI avatars. Triggers: video generation, ai video, text to video, image to video, veo, animate image, video from image, ai animation, video generator, generate video, t2v, i2v, ai video maker, create video with ai, runway alternative, pika alternative, sora alternative, kling alternative, seedance, happyhorse
ai-image-generation
101-skills/superpowers
Generate AI images with GPT-Image-2, FLUX, Gemini, Grok, Seedream, Reve and 50+ models via inference.sh CLI. Models: GPT-Image-2, FLUX Dev LoRA, FLUX.2 Klein LoRA, Gemini 3 Pro Image, Grok Imagine, Seedream 4.5, Reve, ImagineArt. Capabilities: text-to-image, image-to-image, inpainting, LoRA, image editing, upscaling, text rendering. Use for: AI art, product mockups, concept art, social media graphics, marketing visuals, illustrations. Triggers: flux, image generation, ai image, text to image, stable diffusion, generate image, ai art, midjourney alternative, dall-e alternative, text2img, t2i, image generator, ai picture, create image with ai, generative ai, ai illustration, grok image, gemini image, gpt image, openai image, chatgpt image