shader-ui
Skill4 starsChanged 3 months agoMITView on GitHub
Integrate tasteful, localized shaders into UI without overwhelming the interface. Use for shader accents, animated fills, edge lighting, corner effects, liquid glass, WebGL backgrounds, and interactive GPU effects. Prefer subtle component-level enhancement over large decorative canvases. Complete within the active /1–/5 timebox or under 10 minutes by default.
In this repository21 other files it gives its agents.
- AGENTS.mdAGENTS.md
- 1Skill
- 2Skill
- 3Skill
- 4Skill
- 5Skill
- ae-extendscriptSkill
- asapSkill
- backbeforeSkill
- componentsSkill
- githubSkill
- huhSkill
- instantSkill
- motion-animateSkill
- motion-assetsSkill
- motion-designSkill
- motion-pipelineSkill
- motion-planSkill
- quick-contextSkill
- thumbnailSkill
- ui-intergritySkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
28 rules. About 0 are common, 26 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈26
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Add shaders as a material and interaction layer, not decoration covering the entire product.
- Distinctive: line 14
When uncertain, reduce the area, opacity, saturation, movement, and number of effects.
- Distinctive: line 22
Use official code and documentation from the source that best fits the project:
- Distinctive: line 42
Use shaders in small, controlled areas such as button edges, active borders, card corners, icon backgrounds, input focus rings, selected …
- Distinctive: line 50
Use a larger shader only when a section benefits from atmosphere, such as a hero, onboarding screen, empty state, loading experience, or …
- Distinctive: line 56
Use shaders to reinforce an existing boundary or interaction.
- Distinctive: line 62
Do not use shaders to compensate for an unfinished design.
- Distinctive: line 68
Prefer two or three related colors, low-opacity movement, slow animation, soft transitions, localized masks, and restrained distortion.
- Distinctive: line 72
Default to one primary shader moment per screen.
- Distinctive: line 73
Add no more than one or two subtle supporting accents.
- Distinctive: line 74
Keep the center of text-heavy components calm.
- Distinctive: line 75
Place motion near edges, corners, empty space, or interaction zones.
- Distinctive: line 77
Use masking, clipping, and gradients to blend shaders into the surface.
- Distinctive: line 79
Avoid placing two moving effects directly beside each other.
- Distinctive: line 80
Keep decorative effects visually behind labels, icons, and controls.
- Distinctive: line 91
Add fallbacks and verify the finished result in context.
- Distinctive: line 92
Remove or reduce the effect if it competes with content.
- Very specific: line 99
Use overflow: hidden and border-radius: inherit.
- Very specific: line 100
Place decorative canvases behind content and apply pointer-events: none.
- Distinctive: line 102
Keep labels and controls as accessible DOM.
- Distinctive: line 105
Use CSS masks, pseudo-elements, or clipped shader layers for border and corner effects when appropriate.
- Distinctive: line 110
Do not rely on hover alone for important feedback.
- Distinctive: line 111
Keep transitions brief and predictable.
- Distinctive: line 112
Avoid movement that changes component dimensions.
- Distinctive: line 119
Avoid multiple full-screen canvases.
- Distinctive: line 123
Verify WebGL or WebGPU availability before initialization.
- Distinctive: line 124
Check package versions and license compatibility.
- Distinctive: line 144
If no shader clearly improves the interface, do not force one.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 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
Shader Pass
Add shaders as a material and interaction layer, not decoration covering the entire product. Make the result feel polished and intentional. Prefer effects inside edges, corners, borders, fills, hover states, selected states, and small focal surfaces.
Core principle
A good UI shader is often noticed indirectly. It should make a component feel more responsive, premium, dimensional, branded, or easier to notice. It should not become the main thing the user sees unless the page is intentionally a visual landing page.
When uncertain, reduce the area, opacity, saturation, movement, and number of effects.
Timebox
Respect the active /1–/5 timebox. When none is active, target completion in under 10 minutes. Shortlist no more than three effects and implement only the strongest one or two.
Approved sources
Use official code and documentation from the source that best fits the project:
- Paper Shaders — default for textures, gradients, masked shapes, and restrained accents.
- Canvas UI — interactive effects over live UI.
- Liquid Glass JS — glass, refraction, pills, panels, and floating controls.
- ShaderLabs — hero and section backgrounds.
- shader-web-background — custom GLSL backgrounds when its license fits.
- Aladino — effects mapped to individual DOM elements.
- Svader — Svelte shader components.
- React Shader — advanced React or WebGPU effects with fallback support.
- Shaderlib — low-level GLSL utilities when existing components do not fit.
Filter libraries by the project’s framework and avoid unnecessary rendering dependencies.
Preferred integration patterns
Prioritize shader placement in this order:
1. Micro accents
Use shaders in small, controlled areas such as button edges, active borders, card corners, icon backgrounds, input focus rings, selected tabs, progress indicators, avatar rings, small badges, and hover highlights. This is the safest default.
2. Component materials
Apply a shader to one important component, such as a featured card, command palette, floating toolbar, modal header, media player, navigation pill, or primary call-to-action. Clip the effect to the component and inherit its border radius.
3. Section atmosphere
Use a larger shader only when a section benefits from atmosphere, such as a hero, onboarding screen, empty state, loading experience, or branded landing section. Keep it behind content, low contrast, and visually quiet. Do not default to a giant full-screen shader.
Good shader treatments
Prefer a glow entering from one corner; slow color movement inside a button border; subtle refraction along a glass-panel edge; masked texture near the perimeter; a shader that strengthens on hover; a small animated fill behind an active icon; a faint moving highlight across a selected card; a restrained light bloom behind one focal element; a shader revealed through a logo or short heading; or a brief ripple or distortion after interaction.
Use shaders to reinforce an existing boundary or interaction.
Avoid
Do not create huge animated blobs behind every screen, several competing full-screen canvases, brand-unrelated rainbow effects, constant fast movement, shaders behind body text/tables/forms, strong distortion around important controls, glowing borders on every component, effects that make everything equally important, effects added only because a library contains them, or shaders that hide weak spacing, hierarchy, or layout.
Do not use shaders to compensate for an unfinished design.
Visual restraint
Adapt every effect to the existing UI. Match brand colors, light or dark theme, border radius, surface opacity, motion speed, component hierarchy, existing shadows, and highlights. Use the product palette instead of copying demo colors unchanged.
Prefer two or three related colors, low-opacity movement, slow animation, soft transitions, localized masks, and restrained distortion. On hover or focus, increase the effect slightly instead of running it at full intensity permanently.
Composition rules
- Default to one primary shader moment per screen.
- Add no more than one or two subtle supporting accents.
- Keep the center of text-heavy components calm.
- Place motion near edges, corners, empty space, or interaction zones.
- Preserve clear visual hierarchy.
- Use masking, clipping, and gradients to blend shaders into the surface.
- Let the shader fade naturally rather than ending at a visible rectangular canvas boundary.
- Avoid placing two moving effects directly beside each other.
- Keep decorative effects visually behind labels, icons, and controls.
Workflow
- Inspect the framework, design system, page hierarchy, and existing motion.
- Identify the highest-value surface or interaction.
- Decide whether the shader should be a micro accent, component material, or section atmosphere.
- Compare no more than three compatible effects.
- Choose the smallest implementation that achieves the intended result.
- Adapt its palette, speed, opacity, density, scale, and distortion.
- Mask or clip it into the component instead of leaving an obvious canvas rectangle.
- Add fallbacks and verify the finished result in context.
- Remove or reduce the effect if it competes with content.
Implementation rules
For component-level shaders:
- Position the effect inside a stable component wrapper.
- Use
overflow: hiddenandborder-radius: inherit. - Place decorative canvases behind content and apply
pointer-events: none. - Give the container explicit dimensions.
- Keep labels and controls as accessible DOM.
- Clean up animation frames, observers, listeners, and WebGL contexts.
Use CSS masks, pseudo-elements, or clipped shader layers for border and corner effects when appropriate.
For interaction effects:
- Support hover, focus-visible, active, and selected states.
- Do not rely on hover alone for important feedback.
- Keep transitions brief and predictable.
- Avoid movement that changes component dimensions.
Performance and accessibility
- Respect
prefers-reduced-motion. - Provide a static CSS fallback.
- Pause rendering when offscreen or when the tab is hidden.
- Avoid multiple full-screen canvases.
- Cap device-pixel ratio when necessary.
- Prevent layout shift, clipping, and stacking conflicts.
- Preserve readable contrast and visible focus states.
- Verify WebGL or WebGPU availability before initialization.
- Check package versions and license compatibility.
- For Chrome extensions, isolate styles, prevent duplicate mounts, avoid blocking native controls, and clean up shaders during SPA navigation.
Final test
Before finishing, confirm the shader has a clear purpose, is appropriately localized, the interface still works without it, content remains readable and clickable, it matches the product rather than a library demo, motion is restrained, mobile and reduced-motion fallbacks work, and no layout, stacking, or performance problems were introduced. Run the relevant build or targeted test.
Finish with:
Added:
Placement:
Source:
Why it fits:
Restraint applied:
Performance safeguards:
Fallback:
Verified:If no shader clearly improves the interface, do not force one.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
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.

