Shadcn luma
Portable orchestrator/worker harness kit for AI-assisted development
npx -y skills add hashorva/purrfect-harness --skill shadcn-lumaAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
3 things to look at
- 17 days oldThe repository was created 17 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Install, verify, and use shadcn/ui components with the Luma style in any studio project (FinDuck, consulenza360, shyft.me, ...). MUST be used before installing ANY shadcn component, running shadcn init/add/apply, restyling UI, or building any new page or component. Also use when UI "looks wrong" or "doesn't match the design system". Installing default/new-york-style shadcn in a Luma project is a failed task.
SKILL.md
4.1 KB, as published. Nobody here has run it
shadcn/ui — Luma style (v2, studio-wide)
The failure this skill prevents
Agents run npx shadcn@latest init or add <component> with defaults, get the
default/new-york style, and call it done. Luma is a distinct shadcn style applied
via a preset — it changes component GEOMETRY and SPACING, not only theme colors.
A component that compiles and renders is NOT proof it's Luma-styled.
Step 0 — Verify before installing anything (always)
- Read the project's
docs/DESIGN.md— it holds project-specific overrides (e.g. consulenza360: operational density and 44–52px rows take priority over Luma airiness). The skill is the procedure; DESIGN.md is the knowledge. - Open
components.jsonat repo root. Confirm the project's Luma configuration is in place (style/preset recorded there or in DESIGN.md). If it shows plaindefault/new-yorkwith no Luma preset applied → Luma is NOT applied; do not add components on top. Fix per the right step below, or escalate. - Spot-check the global CSS: Luma ships its own CSS variable set. Stock shadcn defaults = Luma not applied.
Step 1 — New project setup (greenfield only)
Use shadcn/create or the shadcn CLI with the Vite template, Radix base, and the
current Luma preset code generated by shadcn/create. The Luma preset code has
been b2D0wqNxT, but ALWAYS verify the current code on shadcn/create before running:
npx shadcn@latest init --template vite --base radix --preset b2D0wqNxT # pick Radix UI, never Base UI (studio convention)
Step 2 — Applying Luma to an existing app (orchestrator-approved only)
npx shadcn@latest apply b2D0wqNxT # verify current preset code first
applyre-installs existing components and updates theme, CSS variables, fonts, and icons in one pass — inspect diffs before overwriting local components; prefer applying the preset or reinstalling specific components intentionally.- Never use
shadcn apply --only themewhen the task is to adopt the full Luma style — Luma changes component geometry and spacing in addition to theme tokens. - Never approximate Luma by hand-editing CSS or Tailwind config.
- This operation touches every component: it requires an explicit orchestrator task and a visual diff of key screens before commit.
Step 3 — Adding a component (the routine case)
- Step 0 checks pass.
npx shadcn@latest add <component>— the CLI readscomponents.jsonand pulls the correctly-styled variant. The recorded config IS the mechanism; that's why Step 0 matters.- Never modify files in
src/components/ui/— these are shadcn library files, not project code. If a primitive must change: reinstall/update via the CLI, or wrap/compose it in project code. - When adapting existing components manually is unavoidable: update radius, surface treatment, shadows, gaps, and control sizing to match Luma — not only theme tokens.
Step 4 — Self-verification before marking done (binary)
- Project's Luma preset/config confirmed in
components.json(per Step 0) - New component imported from
@/components/ui/*(not copied from docs/web) - Nothing in
src/components/ui/was hand-edited - No hardcoded hex colors or stock-shadcn tokens introduced — CSS variables only
- No arbitrary Tailwind bracket values where a scale token is close
(
mb-14/mb-16, notmb-[60px]); no Tailwind config resurrected to "inject" theme colors (Tailwind v4 = tokens in CSS@theme) - Project-specific DESIGN.md overrides respected (e.g. row density)
- Rendered screen visually consistent with one existing Luma page (compare)