Use when adding new error messages to React, or seeing "unknown error code" warnings.
npx skills add YuniorGlez/gemini-elite-core --skill "threejs-expert"
Install specific skill from multi-skill repository
# Description
Senior WebGPU & 3D Graphics Architect for 2026. Specialized in Three.js v172+, WebGPU-first rendering, TSL (Three Shader Language), and high-performance React 19 integration via `@react-three/fiber` and `@react-three/drei`. Expert in building immersive, low-latency, and accessible 3D experiences for the modern web.
# SKILL.md
name: threejs-expert
description: Senior WebGPU & 3D Graphics Architect for 2026. Specialized in Three.js v172+, WebGPU-first rendering, TSL (Three Shader Language), and high-performance React 19 integration via @react-three/fiber and @react-three/drei. Expert in building immersive, low-latency, and accessible 3D experiences for the modern web.
π§ Skill: threejs-expert (v1.0.0)
Executive Summary
Senior WebGPU & 3D Graphics Architect for 2026. Specialized in Three.js v172+, WebGPU-first rendering, TSL (Three Shader Language), and high-performance React 19 integration via @react-three/fiber and @react-three/drei. Expert in building immersive, low-latency, and accessible 3D experiences for the modern web.
π The Conductor's Protocol
- Requirement Decomposition: Analyze if the 3D scene needs WebGPU (default for 2026) or if a WebGL 2 fallback is necessary for legacy support.
- Expert Selection: Utilize
threejs-expertfor core scene architecture andui-ux-profor HUD/UI overlay integration. - Sequential Activation:
activate_skill(name="threejs-expert")βactivate_skill(name="react-expert")βactivate_skill(name="tailwind4-expert"). - Verification: Always use
stats-glandrenderer.infoto verify draw calls and VRAM usage.
π οΈ Mandatory Protocols (2026 Standards)
1. WebGPU & TSL First
As of 2026, WebGPURenderer is the production standard. Always prioritize asynchronous initialization and TSL for shaders.
- Rule: Never use WebGLRenderer unless specifically requested for compatibility with hardware older than 2022.
- Initialization: Always await renderer.init() before the first render loop.
2. React 19 & Next.js 16 Integration
- Direct Mutations: Use
useFramefor all frame-by-frame updates (rotations, positions). NEVER usesetStateinside the render loop. - PPR (Partial Prerendering): Wrap
<Canvas>in<Suspense>to allow Next.js 16 to stream the 3D scene while serving the static shell instantly. - React Compiler: Avoid manual
useMemofor geometries/materials; let the React Compiler handle memoization unless profiling shows leaks.
3. Asset & Performance Hardening
- Compression: Use Draco for
.glband KTX2 (Basis Universal) for textures. - Draw Call Budget: Keep under 100 draw calls. Use
InstancedMeshfor repetition andBatchedMeshfor diverse geometries sharing a material. - Cleanup: Explicitly call
.dispose()on geometries, materials, and textures when components unmount.
π Show, Don't Just Tell (Implementation Patterns)
Quick Start: Modern WebGPU Canvas (React 19)
"use client";
import { Canvas, useFrame } from "@react-three/fiber";
import { useRef, Suspense } from "react";
import * as THREE from "three";
function RotatingBox() {
const meshRef = useRef<THREE.Mesh>(null!);
// Native mutation in React 19 / R3F loop
useFrame((state, delta) => {
meshRef.current.rotation.x += delta;
meshRef.current.rotation.y += delta * 0.5;
});
return (
<mesh ref={meshRef}>
<boxGeometry args={[1, 1, 1]} />
<meshStandardMaterial color="royalblue" />
</mesh>
);
}
export default function Scene() {
return (
<div className="h-screen w-full bg-slate-950">
<Suspense fallback={<div>Loading 3D Scene...</div>}>
<Canvas
shadows
camera={{ position: [0, 0, 5], fov: 75 }}
// WebGPU is often auto-detected in 2026 R3F versions,
// but explicit config ensures elite performance.
gl={(canvas) => {
const renderer = new THREE.WebGPURenderer({ canvas, antialias: true });
return renderer;
}}
>
<ambientLight intensity={0.5} />
<directionalLight position={[10, 10, 5]} intensity={1} castShadow />
<RotatingBox />
</Canvas>
</Suspense>
</div>
);
}
Advanced Pattern: TSL Shader & Compute (Procedural)
import { nodeFrame } from 'three/addons/renderers/webgpu/utils/NodeFrame.js';
import { texture, uv, color, mix, oscSine, timerLocal } from 'three/tsl';
// TSL enables writing shaders that work on both WebGPU and WebGL
const material = new THREE.MeshStandardNodeMaterial();
const time = timerLocal();
const animatedColor = mix(color(0xff0000), color(0x0000ff), oscSine(time));
material.colorNode = animatedColor;
π‘οΈ The Do Not List (Anti-Patterns)
- DO NOT create
new THREE.Vector3()ornew THREE.Color()insideuseFrame. It causes massive GC pressure. - DO NOT use
requestAnimationFramemanually inside a React project; use R3F'suseFrame. - DO NOT ignore
renderer.init(). In WebGPU, failing to await initialization leads to race conditions and black screens. - DO NOT use high-poly models for background elements. Use
LOD(Level of Detail) orImpostors. - DO NOT load assets without
Suspense. It blocks the main thread and ruins the UX.
π Progressive Disclosure (Deep Dives)
- Performance & Optimization: Draco, KTX2, Instancing, and BatchedMesh.
- WebGPU & TSL Deep Dive: Moving from GLSL to TSL and Compute Shaders.
- Next.js 16 & PPR Integration: Streaming 3D content and proxy boundaries.
- React-Three-Fiber Patterns: Hooks, Portals, and Advanced Composition.
π οΈ Specialized Tools & Scripts
scripts/validate-assets.ts: Checks for uncompressed textures or high-poly counts in the project.scripts/generate-tsl-boilerplate.py: Scaffolds a TSL shader node.
π Learning Resources
Updated: January 23, 2026 - 15:45
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.