Claude skill for WebGPU-enabled Three.js development with TSL (Three.js Shading Language)
npx claudepluginhub dgreenheck/webgpu-claude-skillClaude skill for WebGPU-enabled Three.js development with TSL (Three.js Shading Language)
Official prompts.chat marketplace - AI prompts, skills, and tools for Claude Code
Behavioral guidelines to reduce common LLM coding mistakes, derived from Andrej Karpathy's observations
Claude Code plugins for the Slidev presentation framework
Share bugs, ideas, or general feedback.
An Agent Skill for developing WebGPU-enabled Three.js applications using TSL (Three.js Shading Language).
Last updated: April 1, 2026 — aligned with Three.js r183+ API changes.
This skill provides Claude with comprehensive knowledge for:
# Install from this repository
/skill install webgpu-threejs-tsl@<your-github-username>/webgpu-claude-skill
Copy the skills/webgpu-threejs-tsl folder to:
~/.claude/skills/<project>/.claude/skills/skills/webgpu-threejs-tsl/
├── SKILL.md # Entry point with overview
├── REFERENCE.md # Quick reference cheatsheet
├── docs/
│ ├── core-concepts.md # Types, operators, uniforms, control flow
│ ├── materials.md # Node materials and properties
│ ├── compute-shaders.md # GPU compute documentation
│ ├── post-processing.md # Built-in and custom effects
│ ├── wgsl-integration.md # Custom WGSL functions
│ └── device-loss.md # GPU device loss handling and recovery
├── examples/
│ ├── basic-setup.js # Minimal WebGPU project
│ ├── custom-material.js # Custom shader material
│ ├── particle-system.js # GPU compute particles
│ ├── post-processing.js # Effect pipeline
│ └── earth-shader.js # Complete Earth with atmosphere
└── templates/
├── webgpu-project.js # Starter project template
└── compute-shader.js # Compute shader template
import * as THREE from 'three/webgpu';
import { color, time, oscSine, normalWorld, cameraPosition, positionWorld, Fn, float } from 'three/tsl';
// WebGPU renderer
const renderer = new THREE.WebGPURenderer();
await renderer.init();
// TSL material with animated fresnel
const material = new THREE.MeshStandardNodeMaterial();
material.colorNode = color(0x0066ff);
material.emissiveNode = Fn(() => {
const viewDir = cameraPosition.sub(positionWorld).normalize();
const fresnel = float(1).sub(normalWorld.dot(viewDir).saturate()).pow(3);
return color(0x00ffff).mul(fresnel).mul(oscSine(time));
})();
PI2 deprecated (use TWO_PI), transformedNormalView/World renamed to normalView/Worldthree/webgpu import map entryMIT License
Code examples derived from Three.js (MIT License).