Install
$ agentstack add skill-krishna-modi12-frontend-design-pro-threejs-3d ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Three.js / R3F
When to Use
Anything 3D in the browser: scenes, models (GLTF/GLB), shaders, WebGL, post-processing, orbit/camera controls, raycasting and object selection, Spline embeds, particle systems, 3D heroes.
Stack
React 19 · TypeScript strict · @react-three/fiber · @react-three/drei · @react-three/postprocessing · three r160+
Core Rules
- Write R3F, not raw Three.js. JSX is the scene graph: `
,,. Drop to imperativethreeonly for enums,THREE.Color` and types. - Cap the pixel ratio —
dpr={[1, 2]}, neverwindow.devicePixelRatio. Retina at 3× quadruples fragment cost. useFrame((state, delta) => …)is the loop. Drive motion bydelta, never a frame counter. RawrequestAnimationFramein an R3F component is a defect.- Colours are OKLCH —
new THREE.Color("oklch(60% 0.185 276)"). Nevernew THREE.Color(0x4f46e5). Read CSS custom properties to share tokens with the 2D UI. - Memoize anything you construct. A
new THREE.BoxGeometry()in a component body is rebuilt every render.useMemoit, or declare it as JSX and let R3F own the lifecycle. - Suspense is the loading state.
useGLTF/useTexturesuspend; wrap them and useuseProgress()for a real progress bar. Never asetTimeoutloading flag. Wrap the boundary in an error boundary — a 404 on a.glbthrows. - A canvas is opaque to assistive tech. The container gets
role="img"+ anaria-labeldescribing the content, oraria-hidden="true"if purely decorative. Selectable 3D objects need a parallel keyboard path. prefers-reduced-motiondisables auto-rotate, camera shake and idle animation — render the scene, just don't move it unprompted.touch-action: noneon the canvas container so gestures aren't stolen for scrolling.- Instance above ~100 copies;
frameloop="demand"for static scenes; `` for LOD.
Patterns
- Scene shell — `
with camera, ACES tone mapping, shadows,,`. - Pointer selection —
onPointerOver/onClickwithe.stopPropagation(),useCursorfor hover,emissive+ scale for selection. - Model + animation —
useGLTF→useAnimations→reset().fadeIn(0.3).play(). - Custom shader — `
with memoized uniforms,uTimeadvanced bydeltainuseFrame`. - Post-processing — `
wrapping/`; composer wraps the scene, it doesn't replace it.
Examples
examples/good-3d-scene.tsx · examples/good-3d-interaction.tsx · examples/good-3d-loader.tsx · examples/good-3d-shader.tsx · examples/good-3d.tsx (particles) · examples/good-hero-spline.tsx · examples/bad-3d-practices.tsx (anti-example).
Reference Index
Load only for the specific task:
| Task | Load | |---|---| | Scene setup, geometry, materials, lighting, textures, perf | references/threejs-fundamentals.md | | Animation, GLSL shaders, post-processing, loaders | references/threejs-advanced.md | | Raycasting, camera controls, selection, 3D a11y | references/threejs-interaction.md | | Spline scene embedding and fallbacks | references/spline.md |
Constraints
3D-01 Canvas declares dpr · 3D-02 no raw requestAnimationFrame · 3D-03 constructed geometry/material memoized · 3D-04 canvas container labelled or explicitly decorative · 3D-05 no raw hex in THREE.Color · 3D-06 delta-driven useFrame · 3D-07 Suspense loading, not setTimeout · plus the shared baseline (TypeScript strict, OKLCH, four states, reduced motion).
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Krishna-Modi12
- Source: Krishna-Modi12/frontend-design-pro
- License: MIT
- Homepage: https://krishna-modi12.github.io/frontend-design-pro/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.