Ui Create Standards | Skills Pool
Ui Create Standards Design and implement UI with strict reuse-first, composition-first standards and hard-stop guardrails. Use when adding or refactoring UI, creating shared components, deciding layout/styling approaches, or when consistency with existing patterns matters.
ndelangen 0 stars Mar 25, 2026 Occupation Categories Architecture Patterns Grill-Driven UI Standards
When To Use
Use this skill whenever work includes:
New screens, sections, or controls
Component refactors or extractions
Styling/layout changes
New generic or shared UI components
Quick Start
Read and apply docs/technical/ui-design-decisions.md before proposing implementation details.
Start with a short grill: ask targeted questions and provide your recommended answer for each.
Perform reuse-first discovery across ui, form, feature components, and nearby routes.
Apply hard-stop gates before custom CSS, new component APIs, or pattern deviation.
Build with small composable components and reusable layout primitives first.
Add Storybook stories for all new generic components.
Quick Install
Ui Create Standards npx skillvault add ndelangen/ndelangen-tanstack-start-agents-skills-ui-create-standards-skill-md
stars 0
Updated Mar 25, 2026
Occupation
Grill-Me Loop (Required Before Finalizing) Interview the plan relentlessly until ambiguity is removed. For each question, provide your recommended answer.
Required question set (adapt as needed):
Which existing primitives/composed controls can solve this with small extension?
Should this be feature-local or shared (ui/form)?
What API keeps the component generic and composable, not monolithic?
Which layout primitive should own spacing and alignment?
Can we avoid custom CSS by composing existing classes/components?
Which nearby pattern should this follow for consistency?
If a question can be answered by exploring the codebase, explore first, then continue grilling.
Hard-Stop Guardrails (Non-Negotiable) Stop and ask the user before proceeding when any condition is true:
You are about to introduce custom CSS but existing primitives/layout wrappers may suffice.
You are about to create a new shared component/API before exhausting extension/composition of existing components.
You are about to ship a UI pattern that differs from nearby established patterns without explicit user direction.
You are about to create a large, multi-responsibility component instead of composing smaller parts.
Do not continue implementation until the user confirms the exception.
Reuse-First Workflow
1) Discover existing building blocks first Check these areas before creating anything new:
src/app/components/ui
src/app/components/form
Relevant feature components under src/app/components/**
Existing route patterns under src/app/routes/_app/**
If existing components can solve the need with small extension (props, className, composition), extend instead of adding a new component.
2) Place code in the correct layer
Primitive : generic low-level UI (ui/**)
Form control : composed input/control patterns (form/**)
Feature component : domain-specific (components/<feature>/** or route-local)
Dependency direction is strict:
ui imports only ui + shared tokens
form imports ui + shared tokens
features/routes import form and ui
never import upward (ui must not import form or features)
3) Compose, do not over-build
Prefer composing existing primitives in TSX.
Avoid custom CSS when possible.
Never use CSS composes.
Keep CSS module ownership local to the TSX owner.
Do not import another component's CSS module directly.
Layout and Styling Rules
Prefer reusable layout components/wrappers for spacing and alignment orchestration.
Prefer flexbox + gap for one-dimensional layouts.
Prefer CSS Grid for two-dimensional layouts.
Avoid margin for routine component spacing; keep spacing decisions in parent layout containers.
Use custom CSS only when composition cannot satisfy requirements and user has approved via hard-stop.
Generic Component and Storybook Requirements For every new generic component, add *.stories.tsx in the same area.
Default state
Key variants
Relevant interactive states
Composition example in a reusable layout wrapper
Stories are required for both developer validation and AI discoverability of intended usage.
Size and Composition Constraint Avoid extremely large components. Prefer splitting into smaller composable units when:
A component has multiple responsibilities
Repeated sub-structures appear
API becomes broad or confusing
Testing/reasoning gets harder at the current size
Canonical Reference Consult and enforce decisions from:
Follow hierarchy, dependency, and CSS ownership rules in:
Final Checklist 02
When To Use