MCPInstall

design-guide

Paperclip UI design system guide for building consistent, reusable frontend components. Use when creating new UI components, modifying existing ones, adding pages or features to the frontend, styling UI elements, or when you need to understand the design language and conventions. Covers: component creation, design tokens, typography, status/priority systems, composition patterns, and the /design-guide showcase page. Always use this skill alongside the frontend-design skill (for visual quality) and the web-design-guidelines skill (for web best practices).

Installs
368
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/paperclipai/paperclip --skill design-guide
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads design-guide automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Paperclip Design Guide

Paperclip's UI is a professional-grade control plane — dense, keyboard-driven, dark-themed by default. Every pixel earns its place.

Always use with: frontend-design (visual polish) and web-design-guidelines (web best practices).


1. Design Principles

  • Dense but scannable. Maximum information without clicks to reveal. Whitespace separates, not pads.
  • Keyboard-first. Global shortcuts (Cmd+K, C, [, ]). Power users rarely touch the mouse.
  • Contextual, not modal. Inline editing over dialog boxes. Dropdowns over page navigations.
  • Dark theme default. Neutral grays (OKLCH), not pure black. Accent colors for status/priority only. Text is the primary visual element.
  • Component-driven. Prefer reusable components that capture style conventions. Build at the right abstraction — not too granular, not too monolithic.

2. Tech Stack

  • React 19 + TypeScript + Vite
  • Tailwind CSS v4 with CSS variables (OKLCH color space)
  • shadcn/ui (new-york style, neutral base, CSS variables enabled)
  • Radix UI primitives (accessibility, focus management)
  • Lucide React icons (16px nav, 14px inline)
  • class-variance-authority (CVA) for component variants
  • clsx + tailwind-merge via cn() utility

Config: ui/components.json (aliases: @/components, @/components/ui, @/lib, @/hooks)


3. Design Tokens

All tokens defined as CSS variables in ui/src/index.css. Both light and dark themes use OKLCH.

Colors

Use semantic token names, never raw color values:

TokenUsage
--background / --foregroundPage background and primary text
--card / --card-foregroundCard surfaces
--primary / --primary-foregroundPrimary actions, emphasis
--secondary / --secondary-foregroundSecondary surfaces
--muted / --muted-foregroundSubdued text, labels
--accent / --accent-foregroundHover states, active nav items
--destructiveDestructive actions
--borderAll borders
--ringFocus rings
--sidebar-*Sidebar-specific variants
--chart-1 through --chart-5Data visualization

Radius

Single --radius variable (0.625rem) with derived sizes:

  • rounded-sm — small inputs, pills
  • rounded-md — buttons, inputs, small components
  • rounded-lg — cards, dialogs
  • rounded-xl — card containers, large components
  • rounded-full — badges, avatars, status dots

Shadows

Minimal shadows: shadow-xs (outline buttons), shadow-sm (cards). No heavy shadows.


4. Typography Scale

Use these exact patterns — do not invent new ones:

PatternClassesUsage
Page titletext-xl font-boldTop of pages
Section titletext-lg font-semiboldMajor sections
Section headingtext-sm font-semibold text-muted-foreground uppercase tracking-wideSection headers in design guide, sidebar
Card titletext-sm font-medium or text-sm font-semiboldCard headers, list item titles
Bodytext-smDefault body text
Mutedtext-sm text-muted-foregroundDescriptions, secondary text
Tiny labeltext-xs text-muted-foregroundMetadata, timestamps, property labels
Mono identifiertext-xs font-mono text-muted-foregroundIssue keys (PAP-001), CSS vars
Large stattext-2xl font-boldDashboard metric values
Code/logfont-mono text-xsLog output, code snippets

5. Status & Priority Systems

Status Colors (consistent across all entities)

Defined in StatusBadge.tsx and StatusIcon.tsx:

StatusColorEntity types
active, achieved, completed, succeeded, approved, doneGreen shadesAgents, goals, issues, approvals
runningCyanAgents
pausedOrangeAgents
idle, pendingYellowAgents, approvals
failed, error, rejected, blockedRed shadesRuns, agents, approvals, issues
archived, planned, backlog, cancelledNeutral grayVarious
todoBlueIssues
in_progressIndigoIssues
in_reviewVioletIssues

Priority Icons

Defined in PriorityIcon.tsx: critical (red/AlertTriangle), high (orange/ArrowUp), medium (yellow/Minus), low (blue/ArrowDown).

Agent Status Dots

Inline colored dots: running (cyan, animate-pulse), active (green), paused (yellow), error (red), offline (neutral).


6. Component Hierarchy

Three tiers:

  1. shadcn/ui primitives (ui/src/components/ui/) — Button, Card, Input, Badge, Dialog, Tabs, etc. Do not modify these directly; extend via composition.
  2. Custom composites (ui/src/components/) — StatusBadge, EntityRow, MetricCard, etc. These capture Paperclip-specific design language.
  3. Page components (ui/src/pages/) — Compose primitives and composites into full views.

See references/component-index.md for the complete component inventory with usage guidance.

When to Create a New Component

Create a reusable component when:

  • The same visual pattern appears in 2+ places
  • The pattern has interactive behavior (status changing, inline editing)
  • The pattern encodes domain logic (status colors, priority icons)

Do NOT create a component for:

  • One-off layouts specific to a single page
  • Simple className combinations (use Tailwind directly)
  • Thin wrappers that add no semantic value

7. Composition Patterns

These patterns describe how components work together. They may not be their own component, but they must be used consistently across the app.

Entity Row with Status + Priority

The standard list item for issues and similar entities:

<EntityRow
  leading={<><StatusIcon status="in_progress" /><PriorityIcon priority="high" /></>}
  identifier="PAP-001"
  title="Implement authentication flow"
  subtitle="Assigned to Agent Alpha"
  trailing={<StatusBadge status="in_progress" />}
  onClick={() => {}}
/>

Leading slot always: StatusIcon first, then PriorityIcon. Trailing slot: StatusBadge or timestamp.

Grouped List

Issues grouped by status header + entity rows:

<div className="flex items-center gap-2 px-4 py-2 bg-muted/50 rounded-t-md">
  <StatusIcon status="in_progress" />
  <span className="text-sm font-medium">In Progress</span>
  <span className="text-xs text-muted-foreground ml-1">2</span>
</div>
<div className="border border-border rounded-b-md">
  <EntityRow ... />
  <EntityRow ... />
</div>

Property Row

Key-value pairs in properties panels:

<div className="flex items-center justify-between py-1.5">
  <span className="text-xs text-muted-foreground">Status</span>
  <StatusBadge status="active" />
</div>

Label is always text-xs text-muted-foreground, value on the right. Wrap in a container with space-y-1.

Metric Card Grid

Dashboard metrics in a responsive grid:

<div className="grid md:grid-cols-2 xl:grid-cols-4 gap-4">
  <MetricCard icon={Bot} value={12} label="Active Agents" description="+3 this week" />
  ...
</div>

Progress Bar (Budget)

Color by threshold: green (<60%), yellow (60-85%), red (>85%):

<div className="w-full h-2 bg-muted rounded-full overflow-hidden">
  <div className="h-full rounded-full bg-green-400" style={{ width: `${pct}%` }} />
</div>

Comment Thread

Author header (name + timestamp) then body, in bordered cards with space-y-3. Add comment textarea + button below.

Cost Table

Standard <table> with text-xs, header row with bg-accent/20, font-mono for numeric values.

Log Viewer

bg-neutral-950 rounded-lg p-3 font-mono text-xs container. Color lines by level: default (foreground), WARN (yellow-400), ERROR (red-400), SYS (blue-300). Include live indicator dot when streaming.


8. Interactive Patterns

Hover States

  • Entity rows: hover:bg-accent/50
  • Nav items: hover:bg-accent/50 hover:text-accent-foreground
  • Active nav: bg-accent text-accent-foreground

Focus

focus-visible:ring-ring focus-visible:ring-[3px] — standard Tailwind focus-visible ring.

Disabled

disabled:opacity-50 disabled:pointer-events-none

Inline Editing

Use InlineEditor component — click text to edit, Enter saves, Escape cancels.

Popover Selectors

StatusIcon and PriorityIcon use Radix Popover for inline selection. Follow this pattern for any clickable property that opens a picker.


9. Layout System

Three-zone layout defined in Layout.tsx:

┌──────────┬──────────────────────────────┬──────────────────────┐
│ Sidebar  │  Breadcrumb bar              │                      │
│ (w-60)   ├──────────────────────────────┤  Properties panel    │
│          │  Main content (flex-1)       │  (w-80, optional)    │
└──────────┴──────────────────────────────┴──────────────────────┘
  • Sidebar: w-60, collapsible, contains CompanySwitcher + SidebarSections
  • Properties panel: w-80, shown on detail views, hidden on lists
  • Main content: scrollable, flex-1

10. The /design-guide Page

Location: ui/src/pages/DesignGuide.tsx Route: /design-guide

This is the living showcase of every component and pattern in the app. It is the source of truth for how things look.

Rules

  1. When you add a new reusable component, you MUST add it to the design guide page. Show all variants, sizes, and states.
  2. When you modify an existing component's API, update its design guide section.
  3. When you add a new composition pattern, add a section demonstrating it.
  4. Follow the existing structure: <Section title="..."> wrapper with <SubSection> for grouping.
  5. Keep sections ordered logically: foundational (colors, typography) first, then primitives, then composites, then patterns.

Adding a New Section

<Section title="My New Component">
  <SubSection title="Variants">
    {/* Show all variants */}
  </SubSection>
  <SubSection title="Sizes">
    {/* Show all sizes */}
  </SubSection>
  <SubSection title="States">
    {/* Show interactive/disabled states */}
  </SubSection>
</Section>

11. Component Index

See references/component-index.md for the full component inventory.

When you create a new reusable component:

  1. Add it to the component index reference file
  2. Add it to the /design-guide page
  3. Follow existing naming and file conventions

12. File Conventions

  • shadcn primitives: ui/src/components/ui/{component}.tsx — lowercase, kebab-case
  • Custom components: ui/src/components/{ComponentName}.tsx — PascalCase
  • Pages: ui/src/pages/{PageName}.tsx — PascalCase
  • Utilities: ui/src/lib/{name}.ts
  • Hooks: ui/src/hooks/{useName}.ts
  • API modules: ui/src/api/{entity}.ts
  • Context providers: ui/src/context/{Name}Context.tsx

All components use cn() from @/lib/utils for className merging. All components use CVA for variant definitions when they have multiple visual variants.


13. Common Mistakes to Avoid

  • Using raw hex/rgb colors instead of CSS variable tokens
  • Creating ad-hoc typography styles instead of using the established scale
  • Hardcoding status colors instead of using StatusBadge/StatusIcon
  • Building one-off styled elements when a reusable component exists
  • Adding components without updating the design guide page
  • Using shadow-md or heavier — keep shadows minimal (xs, sm only)
  • Using rounded-2xl or larger — max is rounded-xl (except rounded-full for pills)
  • Forgetting dark mode — always use semantic tokens, never hardcode light/dark values

FAQ

What does the design-guide skill do?

Paperclip UI design system guide for building consistent, reusable frontend components. Use when creating new UI components, modifying existing ones, adding pages or features to the frontend, styling UI elements, or when you need to understand the design language and conventions. Covers: component creation, design tokens, typography, status/priority systems, composition patterns, and the /design-guide showcase page. Always use this skill alongside the frontend-design skill (for visual quality) and the web-design-guidelines skill (for web best practices).

How do I install design-guide?

Run npx skills add https://github.com/paperclipai/paperclip --skill design-guide in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/design-guide/ (personal) or .claude/skills/design-guide/ (project).

Which AI agents can use design-guide?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is design-guide safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains design-guide?

It is published by paperclipai in paperclipai/paperclip. It has 368 recorded installs.

More from paperclipai/paperclip

View all →

paperclip

paperclipai/paperclip

Use for Paperclip-managed tasks and heartbeats: reading task context, delivering task documents or files, updating completion or blockers, coordinating or delegating work, and following company governance. Includes control plane API operations for assignments, comments, approvals, and routines.

paperclip-create-agent

paperclipai/paperclip

Create new agents in Paperclip with governance-aware hiring. Use when you need to inspect adapter configuration options, compare existing agent configs, draft a new agent prompt/config, and submit a hire request.

AI & Agents3.6K installs

paperclip-create-plugin

paperclipai/paperclip

Create and develop external Paperclip plugins with the CLI-first workflow. Use when scaffolding a plugin, iterating on a local plugin, installing it into Paperclip, or updating plugin authoring docs.

Docs & Writing3.1K installs

para-memory-files

paperclipai/paperclip

Use a file-based PARA memory system to store, retrieve, and organize durable knowledge across sessions. Trigger on saving facts, daily notes, entity records, weekly synthesis, recall, tacit user patterns, or plan memory.

create-agent-adapter

paperclipai/paperclip

Open the skill to read its SKILL.md instructions.

301 installs

release-changelog

paperclipai/paperclip

Generate the stable Paperclip release changelog at releases/vYYYY.MDD.P.md by reading commits, changesets, and merged PR context since the last stable tag.

Popular frontend & design skills

View category →

setup-matt-pocock-skills

mattpocock/skills

Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.

Frontend & Design1.1M installs

frontend-design

anthropics/skills

Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.

OfficialFrontend & Design1M installs

hyperframes-animation

heygen-com/hyperframes

All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography (animation map) and 24 named text-animation effects. HyperFrames-native: single paused timeline, seek-safe, deterministic.

prototype

mattpocock/skills

Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.

Frontend & Design999.2K installs

hyperframes-core

heygen-com/hyperframes

The HyperFrames composition contract — build one renderable project. Use for composition structure, the data- timing attributes, class="clip", tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.

Frontend & Design930.5K installs

vercel-react-best-practices

vercel-labs/agent-skills

React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.

OfficialFrontend & Design843.1K installs