budge
Use when making single-property CSS or Tailwind visual changes in Next.js App Router projects. Presents a floating control widget…
Use when implementing Paper MCP, Paper-to-code, design-to-code, Viewfinder, or Paper-exported JSX in React/Next.js apps. Covers component candidates, choosing the canonical artboard among iterations, data-driven charts/visualizations, globals.css tokens for arbitrary values,
Claude Code
$ npx -y skills add millionco/skills --skill paper-to-code-components --agent claude-code
Codex
$ npx skills add millionco/skills --skill paper-to-code-components -a codex -y
Cursor
$ npx skills add millionco/skills --skill paper-to-code-components -a cursor -y
Gemini CLI
$ npx skills add millionco/skills --skill paper-to-code-components -a gemini-cli -y
GitHub Copilot
$ npx skills add millionco/skills --skill paper-to-code-components -a github-copilot -y
OpenCode
$ npx skills add millionco/skills --skill paper-to-code-components -a opencode -y
Windsurf
$ npx skills add millionco/skills --skill paper-to-code-components -a windsurf -y
name: paper-to-code-components description: Use when implementing Paper MCP, Paper-to-code, design-to-code, Viewfinder, or Paper-exported JSX in React/Next.js apps. Covers component candidates, choosing the canonical artboard among iterations, data-driven charts/visualizations, globals.css tokens for arbitrary values, shadcn reuse, data-paper-* roots, and avoiding monolithic JSX.
You turn Paper designs into React/Next code with component boundaries identified before JSX grows.
Hard rule: before writing implementation JSX for a Paper design, map the design hierarchy and component candidates. Pixel fidelity and componentization are both required.
This skill prevents these Paper-to-code failures:
GREEN outcome: repeated visual groups are extracted once, components are grouped by kind (data visualizations in their own folder, not intermixed with chrome and prose), page files read as composition, charts carry every data dimension the design encodes, and the build still matches Paper — reconciled against the artboard the stakeholder considers canonical, not whichever one it was built from.
Before coding, inspect the Paper selection/tree/screenshot and identify:
1. Page shell and semantic regions 2. Navigation, hero, content sections, sidebars, overlays, and footers 3. Repeated cards, rows, messages, list items, badges, pills, and controls 4. Icon button variants, CTA variants, input variants, and menu items 5. Reusable asset treatments: avatars, logo lockups, screenshot frames, masks, shadows, and image crops
Scan the entire design, not one section at a time. The same row, list, or card pattern often reappears in sections far apart on the canvas, styled to look section-specific. A title-and-description list under one heading and the same list under another heading are one component. Catalog each recurring structure once, noting every section it appears in.
**Pick the canonical frame first.** A Paper file often holds many parallel iterations of the same screen, plus handoff/cleanup frames — and they are not interchangeable. The most code-ready artboard (clean, named flex cells) is frequently a *simplified* handoff frame where fiddly detail was dropped (chart error bars, extra states, decorations), while the visually richest version is an absolute-positioned exploration. Do not default to whichever is easiest to convert. Confirm which frame is canonical from the user's current selection or by asking; when frames disagree on what a component shows or how much data it carries, build the richer encoding and flag the discrepancy instead of silently shipping the simpler one.
Write a short hierarchy note in your working context before implementation. Do not skip this because the export looks straightforward.
Create a named component when any of these are true:
1. A visual group appears two or more times, including near-duplicates 2. A semantic region has a reusable role, such as `PricingCard`, `MessageRow`, or `FeatureSection` 3. A control has variants, such as `IconButton`, `Pill`, `Badge`, or `CTAButton` 4. A repeated card, row, message, or list item changes only text, icon, media, color, or state 5. An asset treatment repeats, such as an avatar frame, logo mark, image mask, or screenshot shell
Near-duplicates use variant props or slots. Do not copy and tweak the same JSX block.
Before building each section, check the candidates you already cataloged for a structural match and reuse it. Do not create a second component for a pattern you already have just because it sits in a different section or holds different text.
Icons and logos that differ in their actual artwork are distinct components, not variants of a shared one.
1. Give every visually distinct icon or logo its own named component, named for what it depicts: `<Kimi />`, `<OpenAI />`, `<Anthropic />`, `<Gemini />`, `<MiniMax />`. 2. Never bundle distinct icons behind one component that switches on a `name`, `type`, or `variant` prop, or an internal map or `switch`. No `BrandIcon name="kimi"`, no `<Icon type="openai" />`, no `icons[name]` lookup that inlines many `<svg>` bodies. 3. The near-duplicate-to-variant rule in Section 2 does NOT apply to icons. Different vector paths are different artwork, so they are different components. Variant props are for shared markup that differs by text, color, size, or state, never for swapping one `<svg>` body for another. 4. Shared chrome around an icon is the exception worth extracting. If every logo sits in the same dashed-circle frame, make one `LogoFrame` or `AvatarFrame` wrapper and pass the distinct icon component in as `children`. The frame is shared; the mark stays per-icon. 5. Put each icon in its own file under the project's icon location, match the exported SVG exactly (viewBox, paths, fills), and reuse existing icon components
Use when making single-property CSS or Tailwind visual changes in Next.js App Router projects. Presents a floating control widget…
Use when interactive elements that have visual spacing between them (chart bars/columns, list rows, nav items, segmented…
Use when converting Paper canvas or design nodes from absolute positioning to flex or auto-layout. Covers Paper MCP…
Use when a built app that was derived from a Paper design looks "slightly off" versus the design, or to verify a Paper-to-code…
Use when consolidating, deduping, or reducing the number of CSS custom properties / Tailwind v4 design tokens in a globals.css…
Migrates React projects and components from Radix UI to Base UI. Use when asked to migrate from radix, move to base-ui, convert…
tasteskill v2, the anti-slop frontend skill. Art direction for websites, distilled from a study of 247 curated gallery sites (One…