Skip to content
Documentation
Skill

/three-best-practices

Three.js performance optimization and best practices guidelines. Use when writing, reviewing, or optimizing Three.js code. Triggers on tasks involving 3D scenes, WebGL/WebGPU rendering, geometries, materials, textures, lighting, shaders, or TSL.

From plugin
claude-code-guide
4.7k78 skills

Claude Code

$ npx -y skills add zebbern/claude-code-guide --skill three-best-practices --agent claude-code

SKILL.md

three-best-practices.SKILL.md
name: three-best-practices
description: Three.js performance optimization and best practices guidelines. Use when writing, reviewing, or optimizing Three.js code. Triggers on tasks involving 3D scenes, WebGL/WebGPU rendering, geometries, materials, textures, lighting, shaders, or TSL.
license: MIT
metadata:
  author: three-agent-skills
  version: "2.1.0"
  three-version: "0.182.0+"

Three.js Best Practices

Comprehensive performance optimization guide for Three.js applications. Contains 120+ rules across 18 categories, prioritized by impact.

Sources & Credits

> This skill compiles best practices from multiple authoritative sources: > - Official guidelines from Three.js `llms` branch maintained by [mrdoob](https://github.com/mrdoob) > - [100 Three.js Tips](https://www.utsubo.com/blog/threejs-best-practices-100-tips) by [Utsubo](https://www.utsubo.com) - Excellent comprehensive guide covering WebGPU, asset optimization, and performance tips

When to Apply

Reference these guidelines when:

  • Setting up a new Three.js project
  • Writing or reviewing Three.js code
  • Optimizing performance or fixing memory leaks
  • Working with custom shaders (GLSL or TSL)
  • Implementing WebGPU features
  • Building VR/AR experiences with WebXR
  • Integrating physics engines
  • Optimizing for mobile devices

Rule Categories by Priority

| Priority | Category | Impact | Prefix | |----------|----------|--------|--------| | 0 | Modern Setup & Imports | FUNDAMENTAL | `setup-` | | 1 | Memory Management & Dispose | CRITICAL | `memory-` | | 2 | Render Loop Optimization | CRITICAL | `render-` | | 3 | Draw Call Optimization | CRITICAL | `drawcall-` | | 4 | Geometry & Buffer Management | HIGH | `geometry-` | | 5 | Material & Texture Optimization | HIGH | `material-` | | 6 | Asset Compression | HIGH | `asset-` | | 7 | Lighting & Shadows | MEDIUM-HIGH | `lighting-` | | 8 | Scene Graph Organization | MEDIUM | `scene-` | | 9 | Shader Best Practices (GLSL) | MEDIUM | `shader-` | | 10 | TSL (Three.js Shading Language) | MEDIUM | `tsl-` | | 11 | WebGPU Renderer | MEDIUM | `webgpu-` | | 12 | Loading & Assets | MEDIUM | `loading-` | | 13 | Core Web Vitals | MEDIUM-HIGH | `vitals-` | | 14 | Camera & Controls | LOW-MEDIUM | `camera-` | | 15 | Animation System | MEDIUM | `animation-` | | 16 | Physics Integration | MEDIUM | `physics-` | | 17 | WebXR / VR / AR | MEDIUM | `webxr-` | | 18 | Audio | LOW-MEDIUM | `audio-` | | 19 | Post-Processing | MEDIUM | `postpro-` | | 20 | Mobile Optimization | HIGH | `mobile-` | | 21 | Production | HIGH | `error-`, `migration-` | | 22 | Debug & DevTools | LOW | `debug-` |

Quick Reference

0. Modern Setup (FUNDAMENTAL)

  • `setup-use-import-maps` - Use Import Maps, not old CDN scripts
  • `setup-choose-renderer` - WebGLRenderer (default) vs WebGPURenderer (TSL/compute)
  • `setup-animation-loop` - Use `renderer.setAnimationLoop()` not manual RAF
  • `setup-basic-scene-template` - Complete modern scene template

1. Memory Management (CRITICAL)

  • `memory-dispose-geometry` - Always dispose geometries
  • `memory-dispose-material` - Always dispose materials and textures
  • `memory-dispose-textures` - Dispose dynamically created textures
  • `memory-dispose-render-targets` - Always dispose WebGLRenderTarget
  • `memory-dispose-recursive` - Use recursive disposal for hierarchies
  • `memory-dispose-on-unmount` - Dispose in React cleanup/unmount
  • `memory-renderer-dispose` - Dispose renderer when destroying view
  • `memory-reuse-objects` - Reuse geometries and materials

2. Render Loop (CRITICAL)

  • `render-single-raf` - Single requestAnimationFrame loop
  • `render-conditional` - Render on demand for static scenes
  • `render-delta-time` - Use delta time for animations
  • `render-avoid-allocations` - Never allocate in render loop
  • `render-cache-computations` - Cache expensive computations
  • `render-frustum-culling` - Enable frustum culling
  • `render-update-matrix-manual` - Disable auto matrix updates for static objects
  • `render-pixel-ratio` - Limit pixel ratio to 2
  • `render-antialias-wisely` - Use antialiasing judiciously

3. Draw Call Optimization (CRITICAL)

  • `draw-call-optimization` - Target under 100 draw calls per frame
  • `geometry-instanced-mesh` - Use InstancedMesh for identical objects
  • `geometry-batched-mesh` - Use BatchedMesh for varied geometries (same material)
  • `geometry-merge-static` - Merge static geometries with BufferGeometryUtils

4. Geometry (HIGH)

  • `geometry-buffer-geometry` - Always use BufferGeometry
  • `geometry-merge-static` - Merge static geometries
  • `geometry-instanced-mesh` - Use InstancedMesh for identical objects
  • `geometry-lod` - Use Level of Detail for complex models
  • `geometry-index-buffer` - Use indexed geometry
  • `geometry-vertex-count` - Minimize vertex count
  • `geometry-attributes-typed` - Use appropriate typed arrays
  • `geometry-interleaved` - Consider interleaved buffers

5. Materials & Textures (HIGH)

  • `material-reuse` - Reuse materials across meshes
  • `material-simplest-sufficient` - Use simplest material that works
  • `material-texture-size-power-of-two` - Power-of-two texture dimensions
  • `material-texture-compression` - Use compressed textures (KTX2/Basis)
  • `material-texture-mipmaps` - Enable mipmaps appropriately
  • `material-texture-anisotropy` - Use anisotropic filtering for floors
  • `material-texture-atlas` - Use texture atlases
  • `material-avoid-transparency` - Minimize transparent materials
  • `material-onbeforecompile` - Use onBeforeCompile for shader mods (or TSL)

6. Asset Compression (HIGH)

  • `asset-compression` - Draco, Meshopt, KTX2 compression guide
  • `asset-draco` - 90-95% geometry size reduction
  • `asset-ktx2` - GPU-compressed textures (UASTC vs ETC1S)
  • `asset-meshopt` - Alternative to Draco with faster decompression
  • `asset-lod` - Level of Detail for 30-40% frame rate improvement

7. Lighting & Shadows (MEDIUM-HIGH)

  • `lighting-limit-lights` - Limit to 3 or fewer active lights
  • `lighting-shadows-advanced
Read more
@zebbern
Ships withclaude-code-guide

Claude Code Guide - Setup, Commands, workflows, agents, skills & tips-n-tricks from beginner to power user!

Stars on GitHub

Momentum

stars in total
4.7k
Star history of zebbern/claude-code-guide on GitHub, a chart by star-history.com

Other skills on claude-code-guide.

audit-flow

audit-flow

Interactive system flow tracing across CODE, API, AUTH, DATA, NETWORK layers with SQLite persistence and Mermaid export. Use for…

More skills from other plugins.

context7-cli

context7-cli

Use the ctx7 CLI to fetch library documentation and configure Context7 MCP. Activate when the user mentions "ctx7" or "context7",…

@upstash@upstashInstall Skill
docs-components

docs-components

Comprehensive MDX component patterns (Note, Pitfall, DeepDive, Recipes, etc.) for all documentation types. Authoritative source…

@reactjs@reactjsInstall Skill
codebase-wiki

codebase-wiki

How to work in a Codebase Wiki project (the `codebase-wiki` starter pack): an agent-authored, source-grounded wiki of the…

@inkeep@inkeepInstall Skill
omm-push

omm-push

Push architecture docs to oh-my-mermaid cloud. Handles login, link, and push workflow with error guidance. Use when the user says…

@oh-my-mermaid@oh-my-mermaidInstall Skill

Questions about three-best-practices.

Which coding agents can use three-best-practices?
three-best-practices installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.