AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Design System

skill-slogsdon-skills-design-design-system · by slogsdon

Generate a brand-agnostic DESIGN.md (Google design.md spec format) plus tokens.css and showcase.html for any branding project. Reads ./design/<brand-slug>/DESIGN-PLAN.md if present, otherwise asks for an inline brief. Use AFTER design-plan and BEFORE design-ui-components. Triggers include "design system for [brand]", "build a DESIGN.md", "generate design tokens", "/design-system".

No reviews yet
0 installs
44 views
0.0% view→install

Install

$ agentstack add skill-slogsdon-skills-design-design-system

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-slogsdon-skills-design-design-system)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
3mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Design System? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Skill: design-system

Generates three artifacts that together define a brand's visual system:

  1. DESIGN.md — portable spec following the Google design.md format. YAML frontmatter (machine-readable tokens) + 8 markdown sections (human rationale).
  2. tokens.css — CSS custom properties exported from the YAML, consumed by design-ui-components and every platform skill.
  3. showcase.html — single self-contained HTML page that renders every token in context. The visual proof that the system holds together.

When to use

  • After /design-plan has produced DESIGN-PLAN.md
  • Before any platform artifact skill (LinkedIn, Twitter, YouTube, etc.) — they all read DESIGN.md and tokens.css
  • When iterating on brand: re-run to regenerate downstream files when the plan changes

Inputs

  • Required: brand slug (e.g. shane-personal)
  • Preferred: existing ./design//DESIGN-PLAN.md (read with Read tool)
  • Fallback: if no plan exists, ask the user for a 3-question inline brief (visual direction, voice adjectives, hard NOs)

Outputs

./design//
  DESIGN.md          # Google spec format
  tokens.css         # CSS custom properties
  showcase.html      # visual proof

Steps

1. Locate and read the plan

test -f ./design//DESIGN-PLAN.md

If present, read it. If absent, ask the user 3 quick questions (visual direction, voice adjectives, hard NOs) and proceed with those answers as the de-facto plan.

2. Derive concrete tokens from the plan

Translate the plan's strategic decisions into specific token values. Use these heuristics by visual direction:

editorial → display serif (Fraunces, Playfair Display, Crimson Pro, Newsreader), restrained sans body (Söhne, Public Sans, IBM Plex Sans), mono accents (JetBrains Mono, Berkeley Mono); warm neutral surface (#fbfaf9-ish, not pure white); single ink color near-black; one accent used sparingly; generous letter-spacing on small uppercase labels (0.18em+); hairline rules over heavy borders; small radius (0–4px).

technical → mono-dominant or sans-only (IBM Plex, Source Sans 3, JetBrains Mono); cool neutrals or high-contrast; small radius (0–2px); compact density; single signal accent (often a saturated green or amber); grid-paper texture allowed; eyebrow labels mandatory.

bold → heavy display sans (Clash Display, Cabinet Grotesk, Satoshi, Söhne Breit, Roobert) at 800–900 against 100–200 body, high-saturation palette, sharp contrast, large radius (8–16px) or zero radius (no middle), unapologetic 4×+ scale jumps.

minimal → single humanist sans family (Söhne, Public Sans, IBM Plex Sans), 2–3 weights max, mostly grayscale with one quiet accent, large whitespace, no decorative elements, larger radius (8px+) for softness. Valid only when chosen deliberately against the alternatives — never as the default (see ../design-variation-sop.md Rule 1).

> Never derive Inter, Roboto, Arial, Open Sans, Lato, Helvetica, or system stack as the primary family — that is the AI-default monoculture (anti-patterns §2). The fuller named-aesthetic roster (Swiss, brutalist, warm minimal, code/terminal, solarpunk, distinctive display, archival, etc.), each defined in concrete type/color/radius/density/layout terms, lives in ../design-variation-sop.md. These four directions are the common cases; the roster is the full menu — pick from it deliberately, biased away from recent brands and away from minimal-by-default.

mixed → resolve based on the two directions chosen and how they were described.

For each token category, pick one option from the variation axes below to avoid output collapse:

  • Surface tone: warm-cream | cool-paper | true-white | near-black | warm-charcoal
  • Accent role: single-color | dual-accent | mono-with-signal | no-accent (grayscale only)
  • Type pairing: serif-display + sans-body | sans-display + sans-body | sans-display + mono-body | mono-only | serif-only
  • Radius scale: zero (0px) | hairline (2px) | small (4px) | medium (8px) | soft (12–16px)
  • Spacing scale: 4px-base (compact) | 6px-base (balanced) | 8px-base (spacious)

State which option you picked from each axis at the top of DESIGN.md as a comment so the choice is reproducible.

When deriving the actual token values, apply ../design-principles.md:

  • Typographic extremes (§1): the type scale uses weight extremes (100/200 vs 800/900, not 400 vs 600) and 3×+ size jumps. Display weights should reach 700–900 or drop to 100–300 — do not cluster every level at 500–600. Pick one distinctive family and use it decisively; max 2 families.
  • Dominant + sharp accent (§3): one color owns the large surfaces, one saturated accent is used rarely. Reject any palette where you can't name the single dominant and the single accent. Draw the palette from a real reference (IDE theme, material, subject) — never the neutral SaaS center.
  • Before committing the system, sketch three distinct directions per ../design-variation-sop.md Rule 3 and offer them as a one-line menu; generate the best-fit by default, all three only if asked.

3. Write DESIGN.md (Google spec format)

Use this structure exactly. Sections appear in this order. YAML frontmatter is mandatory.

---
version: alpha
name: 
description: 
colors:
  primary: "#XXXXXX"
  secondary: "#XXXXXX"
  accent: "#XXXXXX"
  surface: "#XXXXXX"
  surface-muted: "#XXXXXX"
  ink: "#XXXXXX"
  ink-soft: "#XXXXXX"
  rule: "#XXXXXX"
  success: "#XXXXXX"
  warning: "#XXXXXX"
  danger: "#XXXXXX"
typography:
  display-xl:
    fontFamily: 
    fontSize: 64px
    fontWeight: 600
    lineHeight: 1.05
    letterSpacing: -0.02em
  display-lg:
    fontFamily: 
    fontSize: 48px
    fontWeight: 600
    lineHeight: 1.08
    letterSpacing: -0.018em
  headline-md:
    fontFamily: 
    fontSize: 32px
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: -0.015em
  headline-sm:
    fontFamily: 
    fontSize: 24px
    fontWeight: 500
    lineHeight: 1.2
    letterSpacing: -0.01em
  body-lg:
    fontFamily: 
    fontSize: 18px
    fontWeight: 400
    lineHeight: 1.55
  body-md:
    fontFamily: 
    fontSize: 16px
    fontWeight: 400
    lineHeight: 1.6
  body-sm:
    fontFamily: 
    fontSize: 14px
    fontWeight: 400
    lineHeight: 1.55
  label-caps:
    fontFamily: 
    fontSize: 12px
    fontWeight: 500
    lineHeight: 1
    letterSpacing: 0.18em
  code:
    fontFamily: 
    fontSize: 14px
    fontWeight: 400
    lineHeight: 1.55
spacing:
  base: 16px
  3xs: 2px
  2xs: 4px
  xs: 8px
  sm: 12px
  md: 16px
  lg: 24px
  xl: 32px
  2xl: 48px
  3xl: 64px
  4xl: 96px
rounded:
  none: 0
  sm: 2px
  md: 4px
  lg: 8px
  full: 9999px
components:
  button-primary:
    backgroundColor: "{colors.ink}"
    textColor: "{colors.surface}"
    rounded: "{rounded.sm}"
    padding: 12px 20px
  button-secondary:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.ink}"
    rounded: "{rounded.sm}"
    padding: 12px 20px
---

#  — Design System

## Overview

## Colors

## Typography

## Layout

## Elevation & Depth

## Shapes

## Components

## Do's and Don'ts

- Do 
- Do 
- Don't 
- Don't 
- 

4. Generate tokens.css

Convert the YAML frontmatter into CSS custom properties. Mapping rules:

  • colors.--color-
  • typography..--type-- where prop-short = family | size | weight | leading | tracking
  • spacing.--space-
  • rounded.--radius-

Write to ./design//tokens.css:

/* Auto-generated from DESIGN.md — do not edit by hand. Re-run /design-system to regenerate. */
:root {
  /* Colors */
  --color-primary: ;
  --color-secondary: ;
  /* …all colors… */

  /* Typography */
  --type-display-xl-family: ;
  --type-display-xl-size: 64px;
  --type-display-xl-weight: 600;
  --type-display-xl-leading: 1.05;
  --type-display-xl-tracking: -0.02em;
  /* …all type levels… */

  /* Spacing */
  --space-base: 16px;
  --space-xs: 8px;
  /* …all spacing… */

  /* Radii */
  --radius-sm: 2px;
  /* …all radii… */
}

/* Convenience utility classes — optional but useful for design-ui-components */
.t-display-xl { font: var(--type-display-xl-weight) var(--type-display-xl-size)/var(--type-display-xl-leading) var(--type-display-xl-family); letter-spacing: var(--type-display-xl-tracking); }
.t-display-lg { font: var(--type-display-lg-weight) var(--type-display-lg-size)/var(--type-display-lg-leading) var(--type-display-lg-family); letter-spacing: var(--type-display-lg-tracking); }
/* …one utility per type level… */

.t-eyebrow {
  font: var(--type-label-caps-weight) var(--type-label-caps-size)/var(--type-label-caps-leading) var(--type-label-caps-family);
  letter-spacing: var(--type-label-caps-tracking);
  text-transform: uppercase;
  color: var(--color-ink-soft);
}

5. Generate showcase.html

A single self-contained HTML page proving every token in context. Structure:

  1. Header — brand name in display-xl, tagline in body-lg, eyebrow label "DESIGN SYSTEM v1"
  2. Color palette — every color token as a 120×120 swatch with the token name and hex
  3. Type scale — every type level rendered with sample text ("The quick brown fox jumps over the lazy dog — 0123456789")
  4. Spacing scale — every spacing token as a labeled bar (4px tall, width = the token value)
  5. Radii — every radius token as a 64×64 filled square showing the corner shape
  6. Component preview — primary button, secondary button, card, badge, hairline divider, eyebrow label

The showcase MUST embed tokens.css via inline `` so the file is portable.

Keep markup semantic and minimal. Use only the tokens — no magic numbers, no off-palette colors. The showcase is a litmus test: if it looks coherent here, the system holds.

6. Verify and hand off

After writing all three files, do one self-check:

  • [ ] Did I pick one option from each variation axis and document it?
  • [ ] Does every color in tokens.css appear in DESIGN.md's YAML?
  • [ ] Are the Hard NOs from DESIGN-PLAN.md reflected in the Do's/Don'ts?
  • [ ] Is showcase.html self-contained (no external CSS, no external fonts unless via Google Fonts ``)?

Then tell the user:

> System generated for `: > - ./design//DESIGN.md — Google spec format > - ./design//tokens.css — CSS custom properties > - ./design//showcase.html — visual proof > > Open showcase.html in a browser to verify. Next: run /design-ui-components ` to generate the component library.

Rules

  • Brand-agnostic. Never hardcode Shane's brand values. Every value derives from the plan or the variation matrix.
  • Self-contained outputs. showcase.html and downstream artifact files should work offline (Google Fonts `` is the only allowed external).
  • Spec-compliant. YAML frontmatter must validate as the Google design.md schema (colors, typography, rounded, spacing, components groups; token references via {path.to.token}).
  • Reproducible. The variation choices comment block at the top of DESIGN.md must list the picked option per axis. Re-running with the same plan + same picks should produce equivalent output.
  • Anti-pattern compliance. Read the three shared canonical references before generating tokens: ../design-anti-patterns.md (hard floor — wins all conflicts), ../design-principles.md (craft floor — typographic/spatial/color/layout/tension requirements), and ../design-variation-sop.md (direction roster + offer-3 procedure). The Do's and Don'ts section of DESIGN.md should pull in any brand-specific Hard NOs from DESIGN-PLAN.md, but the universals (no purple-cyan gradients, no indigo/violet default, no drop shadows on text, no more than 2 type families, no Inter/Roboto/system primary, no accent-as-partner-to-primary) come from the shared references and don't need to be restated.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.