grainient
Skill41 starsChanged 7 months agoMITView on GitHub
Recreate grainient.supply's 16 dark-mode visual effects as single-file HTML pages: WebGL shader gradients, vignette overlays, 9-layer box shadows, smooth scroll, spring animations, hover-zoom, ticker marquees, glassmorphism, 3D card flips, bento grids, gradient CTAs. Dark-mode-first with lime green (#C2F13C) accent. Triggers on grainient effects, dark-mode landing page, cinematic depth, glow effects, SaaS showcase, visual effects page.
We split this skill into the rules it gives an agent
18 rules. About 0 are common, 4 are distinctive, and 14 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
14
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 62
All effects read from --grn-* CSS custom properties.
- Distinctive: line 128
Every grainient page is a z-index stack of 6 layers:
- Distinctive: line 145
Vanilla only: No React, Vue, Svelte, Angular.
- Very specific: line 149
prefers-reduced-motionrequired: Every animated effect needs a reduced-motion fallback. - Very specific: line 151
requestAnimationFrameonly: Never setInterval for animation. - Very specific: line 153
Inter font, antialiased: Default font for all modes.
- Very specific: line 157
Never use ease timing function — use --grn-spring-* cubic-bezier tokens
- Very specific: line 158
Never use box-shadow with fewer than 4 layers — grainient shadows are deep stacks
- Very specific: line 159
Never use border for the inset border system — use box-shadow: inset 0 0 0 1px or per-side gradients
- Very specific: line 160
Never use backdrop-filter without a semi-transparent background — blur on opaque dark is invisible
- Very specific: line 161
Never use scroll-behavior: smooth as a substitute for Lenis-style scroll — no inertia, no lerp control
- Distinctive: line 162
Never omit the vignette when using a shader background — content bleeds into shader without it
- Very specific: line 163
Never hardcode pixel values for typography — always clamp() with viewport-relative middle
- Very specific: line 164
Never use opacity: 0 for hover-zoom initial state without pointer-events: none
- Distinctive: line 165
Never set all ticker columns to the same speed — vary by 10-30% per column
- Very specific: line 166
Never use perspective() without overflow: visible on the container — clips 3D rotation
- Very specific: line 167
Never use pure white (#FFF) as background anywhere — this is a dark-mode skill
- Very specific: line 168
Never use Three.js for the fullscreen gradient — raw WebGL2 suffices.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Grainient Effects Skill
Recreate the visual vocabulary of grainient.supply — 16 composable dark-mode effects spanning WebGL shaders, CSS surfaces, JS-driven motion, and layout patterns. No Framer dependency. Single-file HTML output.
Quick Start
# Generate a hero section with aurora shader
python3 scripts/grainient_generator.py --mode hero --output hero.html
# Generate a full landing page
python3 scripts/grainient_generator.py --mode page --output landing.html
# Custom accent color
python3 scripts/grainient_generator.py --mode bento --accent "#FF6B35" --output showcase.html
# Interactive effects catalog
python3 scripts/grainient_generator.py --mode catalog --output catalog.htmlOr let Claude generate directly from the templates and references.
Effects Catalog
| # | Effect | Tier | Tech | Reference |
| 1 | WebGL Shader Gradient | Hero | WebGL2+GLSL | references/shader-gradient.md |
| 2 | Vignette Overlay | Hero | CSS | references/vignette-system.md |
| 3 | 9-Layer Box Shadows | Hero | CSS | references/shadow-system.md |
| 4 | Smooth Scroll | Motion | JS | references/smooth-scroll.md |
| 5 | Spring Animations | Motion | CSS/JS | references/spring-animations.md |
| 6 | Hover Image Zoom | Motion | CSS | references/hover-zoom.md |
| 7 | Vertical Ticker Marquee | Motion | JS | references/ticker-marquee.md |
| 8 | Glassmorphism | Surface | CSS | references/surface-effects.md |
| 9 | 3D Perspective Card Flip | Surface | CSS | references/surface-effects.md |
| 10 | Bento Grid | Surface | CSS | references/surface-effects.md |
| 11 | Gradient CTAs | Surface | CSS | references/surface-effects.md |
| 12 | SVG Gradient Icons | Detail | SVG | references/detail-effects.md |
| 13 | Inset Border System | Detail | CSS | references/detail-effects.md |
| 14 | Grid Pattern Overlay | Detail | CSS | references/detail-effects.md |
| 15 | Custom Scrollbar | Detail | CSS | references/detail-effects.md |
| 16 | Responsive Clamp Typography | Detail | CSS | references/detail-effects.md |
Modes
| Mode | Template | Effects Composed |
hero | assets/templates/hero-section.html | Shader gradient + vignette + glassmorphism nav + clamp typography + springs |
bento | assets/templates/bento-showcase.html | Bento grid + 9-layer shadows + hover zoom + glassmorphism + gradient CTAs |
ticker | assets/templates/ticker-landing.html | Ticker marquee + smooth scroll + gradient CTAs + vignette + SVG icons |
page | assets/templates/dark-page.html | All 16 effects in a full landing page |
catalog | assets/templates/effects-catalog.html | Each effect demonstrated individually with controls |
Color System
All effects read from --grn-* CSS custom properties. Override at :root to re-theme:
:root {
/* Background scale (dark-on-dark elevation) */
--grn-bg: #000000;
--grn-surface: #141414;
--grn-elevated: #1A1A1A;
--grn-card: #2B2B2B;
/* Accent */
--grn-accent: #C2F13C;
--grn-accent-40: rgba(194, 241, 60, 0.4);
--grn-accent-20: rgba(194, 241, 60, 0.2);
/* Text */
--grn-text: #FFFFFF;
--grn-text-70: rgba(255, 255, 255, 0.7);
--grn-text-40: rgba(255, 255, 255, 0.4);
--grn-text-20: rgba(255, 255, 255, 0.2);
--grn-text-10: rgba(255, 255, 255, 0.1);
/* Borders */
--grn-border: rgba(255, 255, 255, 0.2);
--grn-border-subtle: rgba(255, 255, 255, 0.1);
/* Motion */
--grn-spring-snappy: cubic-bezier(0.34, 1.56, 0.64, 1);
--grn-spring-smooth: cubic-bezier(0.25, 1, 0.5, 1);
--grn-spring-subtle: cubic-bezier(0.22, 1, 0.36, 1);
/* Blur tiers */
--grn-blur-light: blur(5px);
--grn-blur-medium: blur(10px);
--grn-blur-heavy: blur(20px);
/* Typography */
--grn-font: 'Inter', system-ui, sans-serif;
--grn-hero-size: clamp(32px, 4vw + 1rem, 6vw);
--grn-body-size: clamp(16px, 1vw + 1rem, 1.1vw);
}Font: Inter at weights 400, 500, 600. Always set -webkit-font-smoothing: antialiased.
Palette Presets
Default (Lime): --grn-accent: #C2F13C — the canonical grainient.supply lime green.
Glass Hero (Mint/Violet): Override :root with the glass-hero palette for kaolti's dark glass aesthetic — mint green #57FFA8 accent, violet #A78BFA secondary, blue-tinted near-black #0a0a0c base. Includes Geist typography tokens and glass-edge border values. See references/glass-hero-palette.md for the full token block, typography scale, glassmorphism recipes, and differences from default grainient.
/* Quick swap — glass-hero palette */
:root {
--grn-bg: #0a0a0c;
--grn-accent: #57FFA8;
--grn-accent-40: rgba(87, 255, 168, 0.4);
--grn-accent-20: rgba(87, 255, 168, 0.2);
--grn-border: rgba(255, 255, 255, 0.11);
}For the full 3D glass experience with MeshPhysicalMaterial refraction/dispersion/iridescence, use threejs-particle-canvas Mode 6 (glass-hero).
Layer Stack (Composability)
Every grainient page is a z-index stack of 6 layers:
Layer 0 z-index: 0 Body background (#000)
Layer 1 z-index: 1 Shader gradient canvas (position: fixed)
Layer 2 z-index: 2 Vignette overlay (position: fixed, pointer-events: none)
Layer 3 z-index: 3 Grid pattern overlay (position: fixed, pointer-events: none)
Layer 4 z-index: 10 Content sections (position: relative)
Layer 5 z-index: 100 Glassmorphism nav / floating UI (position: fixed)Effects slot into layers. Content sections use surface colors (--grn-surface, --grn-elevated) for dark-on-dark elevation contrast.
See references/composability.md for composition recipes and performance budget.
Implementation Rules
- Vanilla only. No React, Vue, Svelte, Angular. Plain HTML + CSS + JS.
- Single-file output. Everything in one HTML file. CDN imports for Inter font only.
- Dark-mode-first. Body is
#000. Surfaces elevate via#141414→#1A1A1A→#2B2B2B. --grn-*tokens everywhere. Never hardcode colors — always reference custom properties.prefers-reduced-motionrequired. Every animated effect needs a reduced-motion fallback.- DPR clamp at 1.5 for WebGL canvas. Full DPR for CSS.
requestAnimationFrameonly. NeversetIntervalfor animation.overflow: clipoveroverflow: hiddenon individual containers, never on body.- Inter font, antialiased. Default font for all modes. Palette presets (e.g., glass-hero) may override
--grn-font— see Palette Presets section.
Anti-Patterns
- Never use
easetiming function — use--grn-spring-*cubic-bezier tokens - Never use
box-shadowwith fewer than 4 layers — grainient shadows are deep stacks - Never use
borderfor the inset border system — usebox-shadow: inset 0 0 0 1pxor per-side gradients - Never use
backdrop-filterwithout a semi-transparent background — blur on opaque dark is invisible - Never use
scroll-behavior: smoothas a substitute for Lenis-style scroll — no inertia, no lerp control - Never omit the vignette when using a shader background — content bleeds into shader without it
- Never hardcode pixel values for typography — always
clamp()with viewport-relative middle - Never use
opacity: 0for hover-zoom initial state withoutpointer-events: none - Never set all ticker columns to the same speed — vary by 10-30% per column
- Never use
perspective()withoutoverflow: visibleon the container — clips 3D rotation - Never use pure white (
#FFF) as background anywhere — this is a dark-mode skill - Never use Three.js for the fullscreen gradient — raw WebGL2 suffices; see rocaille-shader for Three.js needs
See references/anti-patterns.md for expanded explanations with code examples.
Generator Script
python3 scripts/grainient_generator.py \
--mode hero|bento|ticker|page|catalog \
--accent "#C2F13C" \
--bg "#000000" \
--surface "#141414" \
--output output.htmlValidation
python3 scripts/validate_grainient.py output.htmlChecks: viewport meta, --grn-* properties, no framework imports, dark background, requestAnimationFrame, prefers-reduced-motion, Inter font, overflow:clip. Optional checks (pass if found): WebGL context, wheel listener, translateY, CSS grid, gradient CTA, box-shadow glow, backdrop-filter, vignette.
References
Load on-demand when implementing specific effects:
| Reference | Covers |
references/shader-gradient.md | WebGL2 aurora shader: GLSL noise layers, setup, DPR, fallback |
references/vignette-system.md | 4-directional CSS gradient overlays, z-index, opacity |
references/shadow-system.md | 9-layer shadow recipe, lime/white glow variants |
references/smooth-scroll.md | Lenis-style vanilla JS scroll, lerp math, rAF loop |
references/spring-animations.md | 3 cubic-bezier presets, hover transitions |
references/hover-zoom.md | overflow:clip + opacity+scale reveal pattern |
references/ticker-marquee.md | Multi-column vertical ticker, speed variance |
references/surface-effects.md | Glassmorphism, 3D card flip, bento grid, gradient CTAs |
references/detail-effects.md | SVG gradient icons, inset borders, grid overlay, scrollbar, clamp typography |
references/color-system.md | Full palette, CSS custom properties, dark-on-dark elevation |
references/composability.md | Layer stack, composition recipes, performance budget |
references/anti-patterns.md | 16+ anti-patterns with wrong/right code examples |
references/glass-hero-palette.md | Glass Hero palette preset: mint/violet tokens, Geist typography, glassmorphism recipes |
Cross-Skill Relationships
- rocaille-shader: Cross-ref for Three.js shader path. Grainient owns CSS/surface effects, not shader pipelines.
- minoan-frontend-design: Broader creative direction. Grainient provides grainient.supply's specific vocabulary.
- threejs-particle-canvas Mode 6 (glass-hero): Full 3D glass with MeshPhysicalMaterial refraction, dispersion, iridescence. Grainient's glass-hero palette provides the flat CSS equivalent; Mode 6 provides the physically-accurate 3D version.
Attribution
Effects deconstructed from grainient.supply (Framer, Apr 2026). Technologies: UnicornStudio (WebGL), Lenis (smooth scroll), Framer Motion (spring animations), @shadergradient/react (shader gradient subdomain).
In this repository99 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- agents-md-managerSkill
- architecture-md-builderSkill
- autoresearchSkill
- claude-agent-sdkSkill
- claude-md-managerSkill
- claude-usageSkill
- dag-typesafeSkill
- fableSkill
- glossarySkill
- openrouter-usageSkill
- react-best-practicesSkill
- skill-optimizerSkill
- stop-slopSkill
- tamarruSkill
- test-harness-auditorSkill
- user-model-builderSkill
- atmosphere-shaderSkill
- component-gallerySkill
- conductor-motionSkill
- design-auditSkill
- design-critiqueSkill
- design-mdSkill
- design-polishSkill
- gemini-claude-resonanceSkill
- gemini-forgeSkill
- gpt-atelierSkill
- image-forgeSkill
- image-wellSkill
- meshySkill
- mindnode-uiSkill
- minoan-frontend-designSkill
- nano-banana-proSkill
- overwatch-slidedeckSkill
- paper-designSkill
- particle-swarm-simSkill
- pellicolaSkill
- photo-to-slack-emojiSkill
- pretextSkill
- recordlySkill
- rocaille-shaderSkill
- scroll-cinemaSkill
- shadcnSkill
- shapeSkill
- smolvlmSkill
- speak-responseSkill
- sprite-forgeSkill
- threejs-particle-canvasSkill
- vellum-editorialSkill
- webgpu-threejs-tslSkill
- agent-browserSkill
- beautiful-mermaidSkill
- classical-887Skill
- claude-peersSkill
- cloudflareSkill
- codex-ctoSkill
- codex-orchestratorSkill
- disc-forgeSkill
- figma-mcpSkill
- linkedin-exportSkill
- The first 60 shown.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

