An agent skill for people who ship apps

Your app deserves a design folder.

One conversation in. A storyboard, hi-fi mockups, a landing page, logo concepts, launcher icons, illustrations, store screenshots, and a contrast gate that has to pass. All generated from a single tokens.json, so nothing can drift.

npx skills add shuence/design-storyboard

Listed on skills.sh. Claude Code · Codex · OpenCode · Cursor: needs Node and Chrome. Nothing else.

app.html · storyboard 9 groups · 68 screens
9:41
Day 48 · today
What do you think I misunderstand about you?
Both of you answer before it opens
Answer
Today · Live
9:41
Memories
Lisbon, the weekend
nobody wanted to leave.
Memories · Live
9:41
Sealed · opens in 6 days
“I keep the receipt
from the first night
in the blue tin.”
- for you, in a week
Letter · Planned
11 phases, two deliberate stops
10 concept files
10 folder artifacts
0 hand-drawn files
1 command install, on skills.sh

The one rule

Nothing is hand-drawn.

A design folder that is drawn by hand rots the first time a colour changes. Here every artifact is the output of a small script you can re-run, so the mockup, the icon, the landing page and the App Store screenshots can never disagree with each other.

ArtifactGenerated from
Every screen, every store PNGtokens.json + mockup CSS
iOS .appiconsetapp-icons.mjs
Android adaptive + monochromeapp-icons.mjs
Illustrations, both platformsillustrations.mjs
Landing page + OG cardthe same tokens
DESIGN_SYSTEM.md, Kotlin, Swifttokens.json

What it builds

One folder that is the source of truth, the review surface and the asset factory.

design/ ├── tokens.json DTCG source of truth ├── check-contrast.mjs WCAG gate, exits 1 ├── app-icons.mjs → both platforms ├── illustrations.mjs → SVG + drawable ├── app-icons/ review SVGs ├── illustrations/ review SVGs ├── fonts/ licensed, subset ├── question-packs/ copy decks ├── redesign/ │ ├── directions.html 3 directions, pick one │ ├── app.html storyboard + mockups │ ├── landing.html marketing, same tokens │ └── og.png 1200 × 628 ├── store/ │ ├── logo-icon.html mark + icons │ ├── design-board.html one-page review │ └── build/ ios/ android/ marketing/ └── IMAGE_CREDITS.md licence per asset

Storyboard

Every screen, grouped by job, each captioned with why it exists.

Hi-fi mockups

Real CSS, real type, in a device frame, not flattened images.

Directions

Three type-and-colour systems on the same screens. You pick one.

Landing page

Same tokens, objection-led sections, real metadata and an OG card.

Logo + wordmark

Mark, wordmark and launcher icon, shown from 16 to 1024px.

Launcher icons

Opaque iOS set and a 108dp Android adaptive layer with monochrome.

Illustrations

One canvas, one script, both platforms from the same paths.

Content packs

Question and prompt decks, with a real tone per pack.

Store kit

Every required size, generated and headless-rendered.

Platform mirrors

Kotlin and Swift tokens emitted from the same file.

Ten constraint files

Each decision has one owner.

The skill ships ten short concept files. None of them is a chapter to paste onto the board; each owns one slice of the tokens, or one artifact, and says which files it writes.

concepts/psychology

Psychology

Perception, attention, trust, and the manipulation patterns it refuses. Pick five, write them down.

concepts/type

Type

Three pairings, then one. Scale, tracking, and a wordmark that is defined once.

concepts/color

Color

Palette, semantic aliases, accent reservation, and the contrast pairs that must pass.

concepts/layout

Layout

One spacing scale, one radius scale, and screens that consume both without inventing a third.

concepts/motion

Motion

Three durations, one easing family, and what reduced motion removes.

concepts/screens

Screens

Three structures before the pick, then every state, including empty, error and offline.

concepts/logo

Logo

Mark, wordmark, launcher icon: three decisions, in that order, tested at 16px.

concepts/illustration

Illustration

The SVG ∩ VectorDrawable subset, so one file is genuinely one file.

concepts/voice

Voice

One vocabulary. Errors, empty states and the copy deck written as design material.

concepts/board

Board

The one-page review, assembled from the real tokens and the real assets: the page a founder forwards when someone asks “can I see the design?”

The workflow

Eleven phases, two of them stops.

It interviews you before it draws anything, and it stops twice: once after the three directions, once after the tokens. Those are the two decisions that are expensive to undo.

00

Interview

Promise, user, moment of use, must-nevers, platforms, competitors.

01

Orient

Inventory what exists and what has to be invented.

02

Three directions

Same screens, three real systems. Stop.

03

Tokens + gate

DTCG tokens, then the contrast checker must exit 0. Stop.

04

Storyboard

Every screen, grouped and captioned.

05

Logo + icons

Ideas at real sizes, then one generator.

06

Illustrations

Path-only, so both platforms agree.

07

Content packs

Questions, prompts, notifications.

08

Landing page

Same tokens, real metadata, OG card.

09

Store kit

Every required size, rendered.

10

Mirror

Kotlin, Swift and the design doc.

11

Verify

Run it, paste the output, name the placeholders.

Not a mockup of a skill

These came out of the generators.

Four launcher variants and four illustrations, produced by the two scripts that ship in assets/. The page you are reading uses the same token file they do.

Included, not bolted on

The landing page is part of the design system.

A system that only works inside a 390px phone frame isn't a system. The marketing page is built from the same CSS blocks and tokens as the app, so the site, the store listing and the product can't visibly wobble.

One promise, ≤ 8 words CTA above the fold at 360px One section per objection Real screenshots, never fabricated Title · description · canonical OG card at 1200 × 628 JSON-LD for the app Favicon that survives 16px LCP < 2.5s · CLS < 0.1 Works with JS off Same contrast gate Events with a location

Why it holds up

Three rules it will not break.

Aa

Semantic tokens only

UI code references names like textSecondary, never a hex. Raw values live in one file and the generators, so a palette change is one edit.

4.5

The gate is a hard stop

Every semantic pair is checked in both directions, and the minimum is never lowered to make a palette pass. If it fails, the tokens change.

↻

Purity by construction

If iOS and Android ever need separate hand edits, the generator is missing a rule. The same script emits both, or the script is wrong.

Install

Four ways in, one of them is a sentence.

The one command

Install it from the skills.sh registry. It wires the skill into every agent it finds, and keeps it updatable with npx skills update.

npx skills add shuence/design-storyboard

As a skill

Or clone it, then drop it where your agent looks for skills.

git clone --depth 1 \ https://github.com/shuence/design-storyboard.git /tmp/ds mkdir -p ~/.agents/skills cp -R /tmp/ds/skills/design-storyboard ~/.agents/skills/

Claude Code / OpenCode

Both read ~/.claude/skills. One symlink keeps them in sync.

ln -sfn ../../.agents/skills/design-storyboard \ ~/.claude/skills/design-storyboard

Or just the prompt

No install, no repo access. Paste this into any agent that can write files.

“Interview me about the app, then build the full design/ folder: three directions, tokens plus a contrast gate, a storyboard, icons, illustrations, a landing page, content packs, and a store kit, all generated and re-runnable. Pause for sign-off after the directions and after the tokens, and paste real command output.”

Questions

Before you ask

How do I install it?

One command: npx skills add shuence/design-storyboard. It detects your agents and installs into each one. The skill is listed on skills.sh, so npx skills update keeps it current. If you would rather not use the registry, clone the repo and copy skills/design-storyboard into ~/.agents/skills/ by hand.

Is this a Figma replacement?

No. Figma is where you explore with a team. This is where a design becomes buildable: tokens, real CSS, platform assets and a gate that fails CI. It's the folder you keep after the exploration is done.

Do I need design experience?

No, but you do need to answer the interview. The skill asks about the promise, the user, the moment of use and what the product must never do. If you skip that, you get a generic design, which is the failure mode this exists to avoid.

Does it work for iOS and Android?

Yes, natively. Icons and illustrations are emitted for both from one source: opaque full-bleed .appiconsets for iOS, and 108dp adaptive layers with a real <monochrome> drawable for Android. Tokens are mirrored into Kotlin and Swift.

What if I already have a brand?

Bring it to the interview: logo, licensed typefaces, brand hexes. Phase 1 is explicitly about inventorying what's reusable before inventing anything. It won't replace a mark you already ship.

Why does it insist on a contrast checker?

Because “accessible enough” is an opinion until it's a failing build. Every semantic pair is tested in both directions, and the minimum is never lowered to make a palette pass. It's the only automated gate in the folder, so it has to be real.

Where do the screenshots come from?

Headless Chrome. A generator writes the artboard HTML at the exact required size, adds the right platform chrome, and screenshots it. Nothing is exported by hand, so a token change updates every listing on the next run.

Which agents can run it?

Any agent that can read files and run Node: Claude Code, Codex, OpenCode, Cursor, Windsurf. The skill is just markdown plus three small scripts. There is no plugin API to depend on. npx skills add shuence/design-storyboard installs it into every supported agent it detects.

Ship a folder, not a moodboard.

Interview in. Storyboard, mockups, landing page, icons, illustrations and store kit out, all from one tokens file.

npx skills add shuence/design-storyboard

MIT licensed · The folder itself needs no npm install and renders offline with file://