Open source · 1 Sep 2026 · v4.0.2

I Rebuilt Shine Until It Could Rebuild Itself

I kept adding gates and calling it taste. Then I used the finished skill on its own site and portfolio. The public rebuild passed. The downstream test still found a release bug. That is the journey to Shine V4.

The rebuilt Shine V4 public page with an evidence-led hero and visible design packet
After · Shine V4 · the design director became the product proof
01 — The costume

You already know the other look

Gray canvas. Inter. A rounded card. A blue button. Ask for Linear. Ask for “expensive.” Ask for a briefing a CEO would actually open. You get the same costume with a new label.

Prompting over it does nothing. The model paints with whatever the library left on the floor.

“Make it look like Linear.”
“This should feel expensive.”
“A briefing a CEO would actually open.”
On-token is not designed.Compliance without likeness
Accessible is not usable.Axe without a job
02 — The dogfood test

The page passed. The story did not.

The V3 page was not broken. Its browser report showed zero axe violations, 7.73:1 worst measured contrast, and a working theme. It was also a 4,255-pixel technical essay with the product proof reduced to thumbnails.

V4 started by naming that contradiction. The new page makes the director packet the focal object, puts the architecture in the reading path, and shows the real before-and-after before asking anyone to install the skill.

Shine V3 as a long narrow editorial article
Before · accessible and credible · proof visually subordinate
Shine V4 with an evidence-led hero, director packet, architecture, and conversion
After · evidence-led · art direction and conversion visible
03 — The project

A director, not another kit

So I built Shine, an open-source Agent Skill for Claude Code and Cursor. It is a design system the agent cannot shrug off, and a director that looks at the rendered page.

The product is the loop. Before a pixel, the agent opens a page that already solved the job. V4 caps the shortlist at one page per visual family, puts pages above atoms, and requires four decisions before render: composition archetype, image strategy, signature moment, and what the next output must not repeat.

01

Look

Render the page. Read the pixels, not the source.

02

Name

Hierarchy, flow, density — defects in UX terms, worst first.

03

Match

A real template for this job. Not a vibe. Not zinc.

04

Direct

Name the archetype, imagery, signature moment, and anti-repetition rule.

05

Build

Keep the installed system and ship the complete interaction contract.

06

Prove

Measure, accessibility, executable workflow, and comparison when reference pixels exist.

04 — The gate

A check does not exist until it bites

The rule

A gate does not exist until a seeded violation makes it fail and a valid fixture makes it pass. Configuration is not proof. A likeness score the page awards itself is not proof. Missing evidence is unprovable, never pass.

Shine’s first useful version was a very good compliance officer. It caught raw hex, weak contrast, missing focus, empty regions. Then I watched it cite IBM Carbon and produce a zinc dashboard. Every check passed.

The next version grew a critic that returned a likeness score. It did not compare pixels. It searched the page source for labels. A one-button page with the right attributes scored 10/10 against a Carbon data table. I had built a machine that trained the agent to stamp the answer on its own homework.

V3 deleted that theater. V4 turned originality into an input contract, then used the released skill here. The very first packet command through the immutable current symlink exited zero and produced nothing. The imported API had passed every test; the installed CLI had not executed. I fixed it, added a symlink regression test, shipped v4.0.1—then diagnosis exposed the same defect in the remaining entry points. V4.0.2 audited all of them.

05 — The stack

Keep shadcn. Add direction.

At one point Shine carried MUI, Ant Design Pro, and IBM Carbon while the products actually consuming it were shadcn/Tailwind apps. That sounded like range. In practice it taught the agent to copy a costume it could not install.

Those kits are gone from disk — not retired, not down-ranked. Where that left a hole, Shine says so. Marketing, checkout, and wizard can be honest region maps without pretending to have rendered proof.

The decision is not shadcn versus Headless UI. Headless UI is an unstyled primitive set; replacing shadcn with it removes composition without adding taste. V4 keeps shadcn as the owned-source composition layer, uses Base UI by default for greenfield primitives, and escalates to React Aria for complex, internationalized, or accessibility-heavy interactions.

Untitled UI, Magic UI, Motion Primitives, and Tremor can contribute licensed components or cited structural lessons. MUI, Ant, and Carbon remain reference-only: no foreign runtime enters a shadcn repo just to imitate its paint. The same eye now routes to output-native lanes for editable PowerPoint, code-first decks, PDF reports, and email.

06 — One file, or the full machine

Codex, Cursor, Claude, shared

If your AI supports skills, give it the canonical SKILL.md. If it does not, paste the same text into persistent project or custom instructions. No repository knowledge is required.

The full install builds an immutable release for Codex and Cursor and proves it with node verify/doctor.mjs. The V4 CI lane passes 113 checks; the deployed release passes 136 with two intentionally unconfigured consumer notes. The single-file edition inlines 32 references into 4,446 lines, and the Claude plugin loads them on demand.

MIT · Public · Ready to install

Use the skill

Copy one Markdown file into your agent, download the Claude plugin, or clone the full repository for the 129-row catalog, hooks, doctor, and browser proof. Shine’s catalog stands on shadcn/ui. Independent project — not affiliated, not endorsed.

The premise got sharper: a design system needs taste, and taste needs a receipt.