9 agent skills · Penpot MCP · deterministic output

Describe the screen.Get the design and the code.

A complete shadcn/ui system rebuilt natively in Penpot - components, tokens plus the agent skills that let your tooling read it. Not a screenshot sent to a model. The actual file.

> build a billing settings page with the shadcn Penpot kit
Penpot · Billing settings
Billing
Manage your plan and payment method.
ProCurrent
Renews 1 October 2026
Change plan
Card number
4242 4242 4242 4242
Expiry
04 / 28
CVC
···
Seats used8 of 10
Manage seats
The difference

Most design-to-code tools look at a picture. This one reads the file.

Every component in the kit exposes its variant properties and a token map over the Penpot MCP. The component call comes out of a lookup, not a hunch.

Guessing

A frame is rendered to an image and handed to a model, which decides that this rectangle is probably a button, and probably the destructive one.

looks like a button
red-ish → maybe destructive?
height 32 → maybe sm?
<button className="bg-red-600 h-8 …">
Readingdeterministic

The instance is asked what it is. It answers with its own variant properties, and the call is emitted verbatim. The model only handles the layout around it.

component().variantProps
{ variant: "destructive", size: "sm" }
tokens → bg-destructive · rounded-lg
<Button variant="destructive" size="sm">
13 / 14 exact On a typical board, thirteen of fourteen instances resolve straight out of the file. The fourteenth is a layout wrapper - the only place a judgement call is needed.
Agent skills

Nine skills your agent loads directly.

Read the skill docs
to-code
Turn a Penpot board into code

Reads component identity and variant props off every instance, then writes the matching markup in your stack - React, Vue, Svelte or plain HTML - bound to your own token names.

design
Build screens in Penpot

Real instances, correct tokens, checked before it hands anything over.

select
Pick the right component

Matching rules so the agent reaches for a kit part, not a rectangle.

import-tokens
Tokens into your project

Chains resolved, written as globals.css, not JSON.

brand
Apply your brand

One token set changes. All 1,839 components follow.

page
Build in code directly

Skip the file when you already know the screen.

setup
Connect it once

Penpot MCP on one side, your component library on the other.

audit
Catch the drift

Six sweeps for unbound colours, off-scale values, override drift and orphans.

a11y
Check it against WCAG

Contrast, focus, target size and colour-only signalling, measured not guessed.

Handing it over

Every token has a class on the other side.

The design side and the code side use the same names, so a handoff is a lookup rather than a conversation. This table ships inside the kit's own documentation.

spacing.2p-2
radius.mdrounded-md
base.primarybg-primary
base.muted-foregroundtext-muted-foreground
font.sansfont-sans (Geist)
radius.lgrounded-lg (10px)
1,839
components
611
design tokens
61
component pages
5,130
Tabler icons
9
agent skills

Open source tool.
Open system on top of it.

Penpot is free and self-hostable. No per-seat licence for the engineers who only need to look.

Get lifetime access one-time payment · lifetime updates