Frontend and UI work in surfsense_web and surfsense_local/frontend — building, refactoring, styling, animating, or reviewing React and Next.js components, shadcn/ui, color tokens and themes, visual polish, and motion. Load this first for any UI task, including adding or changing a shadcn/ui component (dialog, button, dropdown, form, sidebar, table) in a tree with components.json — it owns the color palette, polish rules, and the precedence order, then routes to the separate shadcn skill for component wiring and the CLI. Use for any frontend component, page, style, animation, hover state, icon, layout, or UI review task.
Single entry point for frontend work in surfsense_web and
surfsense_local/frontend. Both are React + Tailwind + shadcn/ui with their own
components.json. Detect which tree the task touches, and treat that tree's
package.json, components.json, and styling setup as authoritative. All
guidance lives in this skill's own folders; load only what the task touches.
| Read this | When |
|---|---|
| react-performance/SKILL.md | React or Next.js code — components, pages, data fetching, bundles, re-renders |
| ../shadcn/SKILL.md | shadcn/ui components, or any project with components.json. Separate skill — it inspects the project live and grants its own CLI. |
| base-ui.md | Components in surfsense_local/frontend — composition, menus, dialogs, tooltips, tabs, and testing them on Base UI |
| color/SKILL.md | Colors, themes, charts, design tokens, borders, shadows |
| polish/SKILL.md | Typography, surfaces, icons, micro-interactions, enter/exit transitions |
| motion/apple-design.md | Gesture-driven or physical motion — drag, swipe, sheets, springs, momentum, interruptible transitions, translucent materials |
Each entry is an index. Open its supporting files only when the touched code needs them:
react-performance/rules/ holds one file per rule. Load the applicable ones.
react-performance/rules-compiled.md is the same rules compiled into one
document — do not load it by default.polish/ splits into typography.md, surfaces.md, animations.md,
icons.md, performance.md.../shadcn/rules/ splits by concern; ../shadcn/cli.md, registry.md,
customization.md cover tooling and theming.color/PALETTE.css is the canonical palette contract.Do not load motion references for work with no motion concern. Apple-style motion is for gesture, physics, and material work; a hover state or a color change does not need it.
Understand the task
Select guidance
Implement
Validate
Report
Resolve conflicting guidance in this order:
Specific overlaps:
../shadcn/rules/icons.md governs icon usage inside shadcn
components (data-icon, sizing, passing icons as objects). polish/icons.md
governs stroke weight, optical detail, states via currentColor, and RTL
flipping. Apply the shadcn rule to component wiring, the polish rule to
visual detail.color/SKILL.md and color/PALETTE.css are canonical. Where
../shadcn/rules/styling.md or ../shadcn/customization.md describe theming,
follow them for mechanism and the palette for values.motion/apple-design.md governs how motion behaves;
polish/animations.md governs concrete values and static detail. Where they
conflict, prefer springs and current-value interpolation for anything the
user can touch or interrupt, and CSS transitions for everything else.Never sacrifice correctness or accessibility for visual polish or a micro-optimization. If a rule conflicts with the installed library version or project configuration, verify the current API and follow the project's actual version.
The SKILL.md and .md files inside react-performance/, color/, polish/,
and motion/ retain their original frontmatter from when they were separate
skills. That frontmatter is inert here — these are reference files, not
independently discovered skills. Read their bodies and ignore their
name, description, and invocation fields.
a51f9a3
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.