uithing
Installation
SKILL.md
UI Thing
UI Thing is a Nuxt-first, shadcn-inspired, copy-paste component system built on Vue 3, Nuxt 4, Reka UI, Tailwind CSS v4, tailwind-variants, and Nuxt Content.
Unlike packaged component libraries, the source files are part of the product. In this repo, editing components, demos, docs, registries, APIs, and MCP metadata is normal and expected.
Current Project Context
Before making changes:
- In consumer projects, inspect
ui-thing.config.*,package.json, andnuxt.config.*. - In this repo, inspect
AGENTS.md,scripts/components.js,server/utils/comp.ts,server/utils/prose.ts, andserver/utils/block-examples.ts. - Use the local CLI repo at
/Users/baker/Desktop/ui-thing-clias the command source of truth. - Use the UI Thing MCP surface for exact component, block, prose, and docs lookup.
Principles
- Use existing UI Thing components first.
- Compose existing
Ui*families before writing custom markup. - Preserve Reka accessibility, focus handling, keyboard behavior, and portal behavior.
- Preserve Nuxt conventions: auto-imports, SFC patterns, and docs/content structure.
- Treat generated registries as derived outputs, never as authoring targets.
- For React conversion, preserve intent and semantics, not JSX syntax.
Critical Rules
Styling & Tokens → rules/styling.md
- Prefer
tv()fromtailwind-variants. - Do not center
cn()-style conventions; UI Thing does not rely on that helper. - Keep
data-slotmarkers on roots and important parts. - Normalize Vue class overrides at the styling boundary with
normalizeClass(...) || undefined. - Use semantic tokens and existing theme files instead of ad hoc colors.
Composition & Existing UI → rules/composition.md
- Use existing
Ui*component families first. - Prefer composition over custom markup.
- Use the full family structure when a pattern expects it.
- Preserve floating-surface, overlay, and portal behavior.
Forms → rules/forms.md
- Prefer
app/components/Ui/Vee/**for form wrappers. - Use existing form state/composable patterns.
- Keep label, hint, and error semantics aligned with the repo.
Docs, Demos, and Generated Files → rules/docs-and-generation.md
- Source-of-truth files live in
app/components/Ui/**,app/components/content/**, andcontent/**. - Regenerate registries after component, prose, or block changes.
- Keep markdown snippets aligned with demo SFCs and
automd.
Reka Wrappers & Forwarding → rules/reka-and-forwarding.md
- Use
useForwardProps,useForwardPropsEmits, andreactiveOmitconsistently. - Preserve accessibility and primitive behavior.
- Use the repo’s dual-script SFC pattern where it improves reuse.
Workflow
Consumer Workflow
- Inspect project config and Nuxt version.
- If UI Thing is not initialized, use the real CLI
initworkflow. - Add components, prose, blocks, themes, shortcuts, or prettier config with the real CLI commands only.
- Use UI Thing docs and MCP tools to inspect exact implementation details before customizing.
- Prefer existing
Ui*families over custom code.
Maintainer Workflow
- Edit source-of-truth component, prose, block, or docs files.
- Keep examples and markdown code snippets aligned.
- Regenerate the affected registries.
- Preserve API/MCP expectations and docs structure.
- Never hand-edit generated registry outputs except when intentionally changing generators.
React/shadcn Conversion Workflow
- Read the pasted React/shadcn source carefully.
- Identify whether it is a primitive, composed UI pattern, or page/block section.
- Use MCP tools first to find the closest existing UI Thing component, block, prose component, or documentation pattern.
- Convert the composition into native Vue/Nuxt idioms.
- Only write custom Vue wrappers when the library truly lacks the pattern.
When handling React conversion, always read references/react-conversion.md.
Quick Reference
Use only real UI Thing CLI commands:
ui-thing init
ui-thing add button dialog
ui-thing prose steps callout
ui-thing block --category hero
ui-thing theme zinc
ui-thing shortcuts
ui-thing prettier
UI Thing does not currently expose shadcn-style info, docs, or search CLI commands. For discovery and exact lookup, use the docs repo and MCP tools instead.