Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Guidelines for building premium 3D websites, focusing on custom WebGL shaders, post-processing, physics-based interactions, smooth animations, preloaders, and device optimization.
.claude/skills/sickn33-premium-3d-website/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✗→✓ | ▲ Improved | 62% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 13% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 47% | 0% |
| case-01 | ✓→✗ | ▼ Worse | 21% | 0% |
| case-21 | ✓→✗ | ▼ Worse | 45% | 0% |
This skill provides architectural guidelines and code patterns for developing premium, high-end 3D websites. It targets developers looking to implement advanced WebGL visual effects, custom shader pipelines, interactive physics elements, and immersive page transitions while maintaining high performance.
Setting up a robust WebGL context with proper resize handling and performance-friendly pixel ratios is crucial. Keep pixel ratios capped at a maximum of 2 to avoid rendering too many pixels on high-DPI screens.
Incorporate post-processing pipelines (using EffectComposer or @react-three/postprocessing) to add bloom, chromatic aberration, depth of field, or film grain. Keep pass counts low and combine custom fragment shaders to minimize draw calls.
Utilize physics frameworks (such as Cannon.js or Rapier) or procedural spring animations to make 3D objects react to mouse hover, drag, and click inputs with organic feedback.
Optimize 3D models (using Draco compression) and load them using custom loading managers. Render interactive preloaders to entertain users while heavy assets are fetched in the background.
jsximport { Canvas } from '@react-three/fiber'; import { EffectComposer, Bloom, DepthOfField, Vignette } from '@react-three/postprocessing'; export default function PremiumComposer() { return ( <Canvas dpr={[1, 2]} gl={{ powerPreference: "high-performance", antialias: false }}> <ambientLight intensity={0.5} /> <mesh> <boxGeometry /> <meshStandardMaterial emissive="orange" emissiveIntensity={2.0} /> </mesh> <EffectComposer disableNormalPass> <DepthOfField focusDistance={0} focalLength={0.02} bokehScale={2} height={480} /> <Bloom luminanceThreshold={0.3} luminanceSmoothing={0.9} height={300} /> <Vignette eskil={false} offset={0.1} darkness={1.1} /> </EffectComposer> </Canvas> ); }
javascriptimport * as THREE from 'three'; const CustomWavyMaterial = new THREE.ShaderMaterial({ vertexShader: ` varying vec2 vUv; uniform float uTime; void main() { vUv = uv; vec3 pos = position; pos.z += sin(pos.x * 5.0 + uTime) * 0.1; pos.z += cos(pos.y * 5.0 + uTime) * 0.1; gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0); } `, fragmentShader: ` varying vec2 vUv; uniform float uTime; uniform vec3 uColor; void main() { float pulse = 0.5 + 0.5 * sin(uTime + vUv.x * 10.0); gl_FragColor = vec4(uColor * pulse, 1.0); } `, uniforms: { uTime: { value: 0.0 }, uColor: { value: new THREE.Color('#3b82f6') } } });
dpr={[1, 2]} to restrict the device pixel ratio to a maximum of 2.THREE.InstancedMesh or R3F <Instances>) for scenes containing multiple identical meshes.THREE.DirectionalLightShadow) on mobile or low-end devices due to the heavy performance overhead.GLTFLoader) are hosted on trusted, secure CDNs (HTTPS).Solution: Ensure the pixel ratio is limited to 2 (renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2))) and disable unused post-processing passes.
Solution: Use a loading manager (THREE.LoadingManager) and display a responsive, interactive preloader to keep the user engaged.
@3d-web-experience - Core WebGL, Three.js, and Spline concepts.@scroll-experience - Integrating 3D animation with scroll controllers.@performance-optimizer - General code execution performance tuning.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-09 | pass→pass | 2,803 | 3,735 | +33% | 1 | 1 | 0% | 512 | 2,123 | +315% | 0 | 0 | — |
case-01 | pass→fail | 18,820 | 9,955 | -47% | 1 | 1 | 0% | 2,586 | 3,134 | +21% | 0 | 0 | — |
case-02 | pass→pass | 12,476 | 7,537 | -40% | 1 | 1 | 0% | 2,136 | 2,781 | +30% | 0 | 0 | — |
case-03 | pass→pass | 14,532 | 9,343 | -36% | 1 | 1 | 0% | 2,399 | 3,018 | +26% | 0 | 0 | — |
case-04 | pass→pass | 14,016 | 11,377 | -19% | 1 | 1 | 0% | 2,671 | 3,634 | +36% | 0 | 0 | — |
case-05 | pass→pass | 12,868 | 9,742 | -24% | 1 | 1 | 0% | 1,897 | 3,063 | +61% | 0 | 0 | — |
case-06 | pass→pass | 13,010 | 9,184 | -29% | 1 | 1 | 0% | 1,959 | 2,950 | +51% | 0 | 0 | — |
case-07 | pass→pass | 6,609 | 6,008 | -9% | 1 | 1 | 0% | 1,062 | 2,444 | +130% | 0 | 0 | — |
case-08 | pass→pass | 12,815 | 2,540 | -80% | 1 | 1 | 0% | 2,017 | 1,796 | -11% | 0 | 0 | — |
case-10 | fail→pass | 12,728 | 13,168 | +3% | 1 | 1 | 0% | 2,246 | 3,640 | +62% | 0 | 0 | — |
case-11 | pass→pass | 7,252 | 5,129 | -29% | 1 | 1 | 0% | 1,287 | 2,379 | +85% | 0 | 0 | — |
case-12 | pass→pass | 8,799 | 7,841 | -11% | 1 | 1 | 0% | 1,772 | 2,920 | +65% | 0 | 0 | — |
case-13 | fail→pass | 12,775 | 5,555 | -57% | 1 | 1 | 0% | 2,178 | 2,453 | +13% | 0 | 0 | — |
case-14 | pass→pass | 14,207 | 12,813 | -10% | 1 | 1 | 0% | 2,573 | 3,612 | +40% | 0 | 0 | — |
case-15 | pass→pass | 5,027 | 4,814 | -4% | 1 | 1 | 0% | 964 | 2,397 | +149% | 0 | 0 | — |
case-16 | pass→pass | 14,044 | 8,894 | -37% | 1 | 1 | 0% | 2,414 | 3,340 | +38% | 0 | 0 | — |
case-17 | pass→pass | 11,705 | 5,105 | -56% | 1 | 1 | 0% | 2,105 | 2,297 | +9% | 0 | 0 | — |
case-18 | fail→pass | 7,692 | 4,356 | -43% | 1 | 1 | 0% | 1,566 | 2,300 | +47% | 0 | 0 | — |
case-19 | pass→pass | 11,317 | 8,377 | -26% | 1 | 1 | 0% | 2,004 | 2,888 | +44% | 0 | 0 | — |
case-20 | pass→pass | 15,545 | 14,355 | -8% | 1 | 1 | 0% | 2,869 | 4,242 | +48% | 0 | 0 | — |
case-21 | pass→fail | 15,412 | 14,919 | -3% | 1 | 1 | 0% | 3,110 | 4,512 | +45% | 0 | 0 | — |
case-22 | pass→pass | 8,466 | 7,464 | -12% | 1 | 1 | 0% | 1,867 | 3,046 | +63% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +5 percentage points is the difference between those two pass rates over the 22 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.