Agent skills

Nine skills that teach your agent this kit.

Not generic prompts. Each one is a written workflow that names the kit's variant containers, its semantic tokens and the traps in the Penpot API, so the agent reaches for a real component instead of drawing a rectangle.

Claude Code Cursor Codex a routing table for tools without one
shadcn-kit-to-code
$ turn the Checkout board into React with the shadcn Penpot kit
reading board Checkout / Payment over the Penpot MCP
resolving 14 instances against 142 variant containers
Card · Variant=Outline exact
Input · State=Default · Size=md exact
Button · Variant=Destructive · Size=sm exact
13 of 14 resolved from identity · 1 layout wrapper inferred
tokens resolved against globals.css already in the project
<Button variant="destructive" size="sm">Cancel plan</Button>
audit passed  wrote components/checkout-payment.tsx
Two paths

Work in the file, or work in the code. Either one hands off to the other.

The skills split down the middle, and you only ever load the half you need. Setup asks which one you are on.

Path AIn Penpot

The agent connects to the Penpot MCP server and assembles screens out of the kit's real component instances, bound to the kit's tokens. Nothing is drawn by hand, so what comes out is still editable as components.

shadcn-kit-setup·shadcn-kit-select·shadcn-kit-design·shadcn-kit-audit
Path BIn code

The agent builds a live page from shadcn/ui plus the kit's tokens, without opening Penpot at all. Useful when you already know the screen and the design file would only slow you down.

shadcn-kit-setup·shadcn-kit-select·shadcn-kit-page·shadcn-kit-import-tokens
shadcn-kit-to-code is the bridge. It takes a design that already exists in Penpot and emits code, by reading each instance's component identity rather than looking at a picture of it.
What's inside

The nine skills

Every bundle is self-contained. Install one on its own and it still resolves its own references, because the shared documents are copied inside it.

9 skills · 8 shared references
Start here
shadcn-kit-setup
Connect it once
Wires the Penpot MCP server, or installs shadcn/ui and the kit's tokens into the project. Asks which path you are on and loads only that branch.
shadcn-kit-select
Pick the right component
Matching rules, variant-picking guidance and screen recipes. Prevents the classic failure: an agent inventing a rounded rectangle because it did not know Chip existed.
Design in Penpot
shadcn-kit-design
Build a screen from real instances
Composes the board from the kit's own components, bound to the kit's tokens, then checks the result in light and dark before handing it back.
what you get
A board you can keep editing as components, not a flattened picture of one. Swap a variant afterwards and it behaves like anything else you drew yourself.
Into code
shadcn-kit-to-code
Penpot design into code
Reads component identity and variant props off every instance and emits the matching markup. It does not trace the raw Inspect CSS export.
shadcn-kit-page
A page from a description
Skips the design file entirely. Builds a real, tokenised page in the project's own stack, which doubles as the developer handoff.
Tokens and brand
shadcn-kit-import-tokens
Tokens both ways
Writes a shadcn-shaped globals.css with every chain resolved, and reads one back to repoint the kit. The second direction is what stops the file drifting from the code.
shadcn-kit-brand
Your brand in about six values
Repoints tokens rather than editing components. Nothing in the kit is styled by hand, so one changed colour moves every surface that uses it.
Keeping it honest
shadcn-kit-audit
Six sweeps over your file
Unbound colours, values off the scale, state and override drift, a theme group with nothing active, orphaned copies, and drift from the kit itself. Read-only by default: it finds, reports, then asks.
shadcn-kit-a11y
Six sweeps over your screen
Contrast with alpha composited, focus visibility, target size, text size, and anything that carries meaning by colour alone, measured against WCAG 2.2 AA. Read-only, always: it reports and lets you decide.
why they are separate
One asks whether the file is healthy, the other whether a person can use the screen. They overlap on exactly one thing - an unbound colour is both a governance defect and a contrast risk, because it will not follow the theme.
Why the conversion holds up

Identity, not pixels.

This is not a design system that resembles shadcn/ui. It is shadcn/ui rendered in Penpot, and the variant axes were named to match the real props while the kit was being built.

So the conversion is a lookup. Nothing is inferred, and nothing is guessed from a screenshot.

in the Penpot file
Button { Variant: "Destructive", Size: "sm" }
in your project
<Button variant="destructive" size="sm">

The model is still needed for the layout around it. It is not needed to work out what a button is.

Targets

Four stacks mapped properly, and three named honestly.

A mapped target means every component family has a written translation. The second tier is documented too, but with its losses spelled out rather than papered over, because those libraries do not carry the same variant model.

Fully mapped
shadcn/ui
React, Radix or Base UI
shadcn-vue
Vue 3
shadcn-svelte
Svelte 5
HTML + Tailwind
no framework
Documented, with the losses named
Material UIVuetifyAngular Material

These have their own opinions about shape, elevation and state. The mapping says what survives and what does not, so you find out before you commit rather than halfway through.

Shared references

Eight documents every skill reads from.

This is the part that makes the skills specific rather than generic. Every number in them was read from the live Penpot file, not transcribed from notes.

kit-overview.md
What the kit is, how the pages are organised, the conventions it follows.
component-inventory.md
All 142 containers and 65 standalone components, with their axes and every value.
design-code-map.md
Penpot component to shadcn/ui React, family by family.
component-links.md
The upstream shadcn/ui docs page for each of the sixty families, so the agent can check the source.
target-mappings.md
Vue, Svelte, plain HTML and the second tier, each with what it costs.
token-glossary.md
The 33 semantic names, in both modes, and the CSS variable each becomes.
accessibility.md
WCAG 2.2 AA thresholds and the contrast maths, with alpha composited rather than ignored.
penpot-mcp-playbook.md
The operational one: guards, traps and recipes learned the hard way while building the kit.
How it works

Installed in a minute.

One zip, nine folders, nothing compiled. Claude Code reads them from a skills directory. Codex and Cursor have none, so the same folders go anywhere stable and a routing table in AGENTS.md tells the agent when to open which - for those two that is the mechanism, not a fallback.

Read the install guide
1
Claude Code: copy all nine in
unzip -q shadcn-kit-skills.zip && cp -R shadcn-kit-skills/shadcn-kit-* ~/.claude/skills/

Or copy one folder. Each is self-contained, so a single skill still resolves its own references.

2
Codex and Cursor: park them, paste the router
mkdir -p ~/design-skills && cp -R shadcn-kit-skills/shadcn-kit-* ~/design-skills/

Then the routing table goes in ~/.codex/AGENTS.md for Codex, or the same AGENTS.md at a project root, which covers both. Cursor also takes .cursor/rules/shadcn-kit.mdc - note the extension, a plain .md there is ignored.

3
Name the kit in your prompt
"Build a login screen in Penpot with the shadcn kit"
4
Every skill verifies its own work

Designs are checked in light and dark before handover. Code is audited against the kit's own conventions. The run tells you what it could not resolve instead of quietly guessing.

One thing to know

Say the kit's name in your prompt.

The skills are brand-namespaced on purpose. Generic names collide the moment a second kit is installed, and then the router cannot tell them apart. Naming the kit is not a workaround for a defect, it is how a shared namespace should behave.

"Build a login screen in Penpot with the shadcn kit"
"Turn this Penpot screen into React using the shadcn kit"
"Build me a login screen" - a generic design skill takes it, correctly

The kit and the skills
are one purchase.

There is no separate tier for the agent side. Buying the kit gets you all nine skills and every reference document in the package.

Get lifetime access one-time payment · lifetime updates