-
Notifications
You must be signed in to change notification settings - Fork 5
chore: add ui-skills subagent for interface constraints #25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,115 @@ | ||||||
| --- | ||||||
| description: Opinionated constraints for building better interfaces with agents | ||||||
| mode: subagent | ||||||
| tools: | ||||||
| read: true | ||||||
| write: true | ||||||
| edit: true | ||||||
| bash: true | ||||||
| glob: true | ||||||
| grep: true | ||||||
| webfetch: true | ||||||
| task: true | ||||||
| --- | ||||||
|
|
||||||
| # UI Skills | ||||||
|
|
||||||
| <!-- AI-CONTEXT-START --> | ||||||
|
|
||||||
| ## Quick Reference | ||||||
|
|
||||||
| - **Purpose**: Opinionated constraints for building better interfaces with agents | ||||||
| - **Source**: https://www.ui-skills.com/llms.txt | ||||||
| - **Stack**: Tailwind CSS, motion/react, tw-animate-css, clsx + tailwind-merge | ||||||
|
|
||||||
| **When to apply these constraints**: | ||||||
| - Building React/Next.js interfaces | ||||||
| - Working with Tailwind CSS | ||||||
| - Adding animations or transitions | ||||||
| - Creating accessible components | ||||||
| - Optimizing UI performance | ||||||
|
|
||||||
| **Key Principles**: | ||||||
| - Use Tailwind defaults before custom values | ||||||
| - Use accessible component primitives (Base UI, React Aria, Radix) | ||||||
| - Never add animation unless explicitly requested | ||||||
| - Respect `prefers-reduced-motion` | ||||||
| - Never block paste in inputs | ||||||
|
|
||||||
| <!-- AI-CONTEXT-END --> | ||||||
|
|
||||||
| ## Stack | ||||||
|
|
||||||
| - MUST use Tailwind CSS defaults (spacing, radius, shadows) before custom values | ||||||
| - MUST use `motion/react` (formerly `framer-motion`) when JavaScript animation is required | ||||||
| - SHOULD use `tw-animate-css` for entrance and micro-animations in Tailwind CSS | ||||||
| - MUST use `cn` utility (`clsx` + `tailwind-merge`) for class logic | ||||||
|
|
||||||
| ## Components | ||||||
|
|
||||||
| - MUST use accessible component primitives for anything with keyboard or focus behavior (`Base UI`, `React Aria`, `Radix`) | ||||||
| - MUST use the project's existing component primitives first | ||||||
| - NEVER mix primitive systems within the same interaction surface | ||||||
| - SHOULD prefer [`Base UI`](https://base-ui.com/react/components) for new primitives if compatible with the stack | ||||||
| - MUST add an `aria-label` to icon-only buttons | ||||||
| - NEVER rebuild keyboard or focus behavior by hand unless explicitly requested | ||||||
|
|
||||||
| ## Interaction | ||||||
|
|
||||||
| - MUST use an `AlertDialog` for destructive or irreversible actions | ||||||
| - SHOULD use structural skeletons for loading states | ||||||
| - NEVER use `h-screen`, use `h-dvh` | ||||||
| - MUST respect `safe-area-inset` for fixed elements | ||||||
| - MUST show errors next to where the action happens | ||||||
| - NEVER block paste in `input` or `textarea` elements | ||||||
|
|
||||||
| ## Animation | ||||||
|
|
||||||
| - NEVER add animation unless it is explicitly requested | ||||||
| - MUST animate only compositor props (`transform`, `opacity`) | ||||||
| - NEVER animate layout properties (`width`, `height`, `top`, `left`, `margin`, `padding`) | ||||||
| - SHOULD avoid animating paint properties (`background`, `color`) except for small, local UI (text, icons) | ||||||
| - SHOULD use `ease-out` on entrance | ||||||
| - NEVER exceed `200ms` for interaction feedback | ||||||
| - MUST pause looping animations when off-screen | ||||||
| - MUST respect `prefers-reduced-motion` | ||||||
| - NEVER introduce custom easing curves unless explicitly requested | ||||||
| - SHOULD avoid animating large images or full-screen surfaces | ||||||
|
|
||||||
| ## Typography | ||||||
|
|
||||||
| - MUST use `text-balance` for headings and `text-pretty` for body/paragraphs | ||||||
| - MUST use `tabular-nums` for data | ||||||
| - SHOULD use `truncate` or `line-clamp` for dense UI | ||||||
| - NEVER modify `letter-spacing` (`tracking-`) unless explicitly requested | ||||||
|
|
||||||
| ## Layout | ||||||
|
|
||||||
| - MUST use a fixed `z-index` scale (no arbitrary `z-x`) | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The placeholder
Suggested change
|
||||||
| - SHOULD use `size-x` for square elements instead of `w-x` + `h-x` | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The use of
Suggested change
|
||||||
|
|
||||||
| ## Performance | ||||||
|
|
||||||
| - NEVER animate large `blur()` or `backdrop-filter` surfaces | ||||||
| - NEVER apply `will-change` outside an active animation | ||||||
| - NEVER use `useEffect` for anything that can be expressed as render logic | ||||||
|
|
||||||
| ## Design | ||||||
|
|
||||||
| - NEVER use gradients unless explicitly requested | ||||||
| - NEVER use purple or multicolor gradients | ||||||
| - NEVER use glow effects as primary affordances | ||||||
| - SHOULD use Tailwind CSS default shadow scale unless explicitly requested | ||||||
| - MUST give empty states one clear next action | ||||||
| - SHOULD limit accent color usage to one per view | ||||||
| - SHOULD use existing theme or Tailwind CSS color tokens before introducing new ones | ||||||
|
|
||||||
| ## Related Resources | ||||||
|
|
||||||
| - [UI Skills](https://www.ui-skills.com/) | ||||||
| - [Base UI](https://base-ui.com/react/components) | ||||||
| - [React Aria](https://react-spectrum.adobe.com/react-aria/) | ||||||
| - [Radix Primitives](https://www.radix-ui.com/primitives) | ||||||
| - [motion/react](https://motion.dev/) | ||||||
| - [tw-animate-css](https://github.com/Wombosvideo/tw-animate-css) | ||||||
| - [shadcn/ui](https://ui.shadcn.com/) - See `tools/ui/shadcn.md` | ||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For consistency with the
Stacksection below (line 46), it would be clearer to refer to thecnutility directly in the quick reference stack.