Passed 18 of 22 test cases with the skill, and 15 of 22 without it.
Without skill68%
With skill82%
Checks it passed that the model alone missed
Uses smoothstep to calculate the edge color highlight.
Stores the shader reference inside material.userData.shader.
Sets derivatives to true in the extensions property of ShaderMaterial.
3 fixed15 passed either way4 still failing0 broke
Pass-rate lift
+14 pp
Tokens
+213%
Agent turns
0%
Response time
-20%
Model gemini-3.6-flashMeasured 8/17/2026v118 of 22 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 3 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 3
Prompt
Provide GLSL fragment shader code for a dissolve material effect driven by a cutoff progress parameter and a grayscale noise sampler. The material should completely drop pixels below the cutoff threshold.
What was checked, without and with the skill
Checked
Without skill
With skill
Executes the discard statement when noise falls below the progress threshold.
Passed
Passed
Uses smoothstep to calculate the edge color highlight.
Missed
Passed
case-05 · gemini-3.6-flash · 8/17/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md637 linessingle file
Three.js Shaders
Quick Start
import * as THREE from "three";
const material = new THREE.ShaderMaterial({
uniforms: {
time: { value: 0 },
color: { value: new THREE.Color(0xff0000) },
},
vertexShader: `
void main() {
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
`,
fragmentShader: `
uniform vec3 color;
void main() {
gl_FragColor = vec4(color, 1.0);
}
`,
});
// Update in animation loop
material.uniforms.time.value = clock.getElapsedTime();
ShaderMaterial vs RawShaderMaterial
ShaderMaterial
Three.js provides built-in uniforms and attributes.
const material = new THREE.ShaderMaterial({
vertexShader: `
// Built-in uniforms available: