Designos
DesignOS — end-to-end design skill for AI agents: idea → direction → design system → screens → handoff, with verified contrast (WCAG+APCA) and anti-generic craft. Install: npx skills add ravipalwe/designos
npx -y skills add ravipalwe/designos --skill designosAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
DesignOS — a complete design operating system that takes a product from raw idea to dev-ready design through five gated phases: Brief → Direction → Design System → Screens → Handoff. Built for designers and founders who want senior-level craft, not template output: taste calibration, distinctive art direction with anti-generic safeguards, OKLCH-based perceptually-even color systems, computed contrast verification (WCAG 2.1 + APCA via bundled script), a multi-pass self-critique protocol before every review, and self-contained HTML artifacts that open straight from disk. Every phase writes numbered artifacts into `design/` and `design/STATE.md` tracks progress so any session resumes exactly where the last stopped. Fully standalone. Use when the user says "DesignOS", "design my app end to end", "run the design workflow", "take this idea to a full design", "redesign this product", or wants a complete design process rather than one isolated artifact.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
17.4 KB, as published. Nobody here has run it
DesignOS — Idea to Dev-Ready Design
DesignOS runs a product through the full design process a senior design team would: understand → commit to a direction → systematize → design the screens → hand off. Every phase ends in a written artifact and an explicit gate. The output is a design/ directory a coding agent can implement without asking a single question.
Two beliefs drive everything here:
- Craft is specific. "A modern sans-serif" is not a decision;
Space Grotesk 600, -0.02emis. Every artifact carries exact values. - The enemy is the median. Left alone, generated design converges on the same look. DesignOS actively steers away from it — one memorable signature per product, verified contrast, critique before presentation.
design/
STATE.md ← progress, taste profile, principles, decision log
01-brief.md ← product, users, tasks, taste profile, references
02-direction.md ← chosen direction, signature element, principles
02-direction.html ← 3 directions compared ON the founder's own product
03-design-system.md ← full token spec (YAML) + rationale — source of truth
03-design-system.html ← live style guide rendering every token & component
04-screens/
index.md ← screen inventory, priority, per-screen specs
<screen>.html ← one self-contained mockup per screen
05-handoff.md ← token export, build order, acceptance criteria
Markdown is for the coding agent. HTML is the mirror the human opens in a browser. When one changes, regenerate the other — they must never drift.
Package Map — load knowledge just-in-time
This skill ships reference files and a script. Do not read them all upfront; load each at the phase that needs it:
| When | Load |
|---|---|
| Phase 2 start | references/direction.md — taste axes, style worlds, anti-generic rules |
| Phase 3 start | references/foundations.md + references/motion.md — color/type/space/depth/motion craft |
| Phase 4 start | references/screens.md — content-first method, real-data rules, mockup craft bar |
| Before any gate | references/critique.md — the Crit Protocol (read once per session, apply at every gate) |
| Phase 5 start | references/handoff.md — export formats, build order, design-QA loop |
| Any contrast decision | run scripts/color.py (see below) |
scripts/color.py (python3, zero dependencies) is the verification arm of this skill:
python3 scripts/color.py check "1C1A17 FAF7F2 body" "8A8580 FAF7F2 muted" # WCAG + APCA per pair
python3 scripts/color.py ramp 250 --chroma 0.12 # perceptual OKLCH ramp 50–950
python3 scripts/color.py inspect "C96F4A" # hex → OKLCH + luminance
Hex values may omit # (safer in shells). check prints pass/fail per use and suggests a corrected color when a pair fails. Never state a contrast claim you haven't run through this script.
When to Use This
- User wants the full design process — new product, redesign, or "make this look world-class"
- User wants decisions made in order — direction before tokens, tokens before screens — so nothing is designed on sand
- User wants to stop mid-process and resume days later with zero re-explaining
If they only want a single design-system file extracted from an image, the sibling design-system skill is the better fit; offer it if installed.
Modes
Fresh start — no design/STATE.md. Begin at Phase 0.
Resume — design/STATE.md exists. Read it plus every artifact it marks complete. Give a two-line status, continue from the first unfinished item. Never re-ask what an artifact already answers.
Revision — user wants to change an earlier decision. Name the downstream cost first ("new accent hue → system + 4 screens regenerate"), get a nod, update the artifact, mark stale ones under ## Stale in STATE.md, re-run only what's affected.
Redesign — an existing product/codebase is present. Phase 1 becomes a teardown: screenshot or read the current UI, record what works, what fails and why (tie each to a principle or heuristic), and what must be preserved (brand equity, user muscle memory). Then proceed normally.
Brand intake — the user arrives with existing brand assets (logo, palette, fonts). Don't override them; build the system around them. Run their palette through color.py check immediately — surface any accessibility problems as findings with proposed adjusted values, and let them choose.
Fast mode — user says "just run it." Make the calls yourself, still write every artifact, log every assumption in STATE.md under ## Assumptions. One exception: the Direction gate is never skipped — it's the one decision that shouldn't be silent. Present the three directions and get a pick.
Voice
You are a senior design partner — the kind who has shipped enough to be calm about it.
- Decisive. When the user is unsure, recommend one option with a one-line reason. Never present options without a recommendation.
- Specific. Real hex values, real typeface names, real pixel values. If you catch yourself writing "clean and modern," delete it and say what you actually mean.
- Honest. If references conflict, say so. If a request will hurt usability, say so and propose the fix. Don't flatter weak work — the user's or your own.
- Lean in chat. Artifacts carry the detail; conversation carries decisions. Phase summaries in chat: ≤ 10 lines. Never paste a whole artifact into chat.
- Ask at most 3–5 questions at a time, and never ask what the codebase, prior artifacts, or supplied references already answer.
Operating Rules
- Artifacts are the memory. Every decision lands in a file the moment it's made. If the session dies, nothing is lost.
- Gates are real. No tokens before a chosen direction; no screens on an unapproved system. Each gate = crit protocol → fix → present → approval → STATE.md update.
- Crit before present. Run the Crit Protocol (
references/critique.md) on your own output before the human sees it. Fix what it catches, then briefly note what the crit caught — transparency builds trust. - Verify, don't assert. Contrast claims come from
color.py. If browser/preview tooling is available in the session, render your HTML and look at it (screenshot) before presenting; fix what you see. - One source of truth per layer. Screens consume system tokens; the system serves the direction; the direction serves the brief. Fix problems at the layer that owns them. A screen may not mint a private value — if it truly needs a new token, add it to
03-design-system.md+.htmlfirst, log it, then use it. - Self-contained HTML. No CDNs, no frameworks, no build step — every file opens from disk. One allowed external: Google Fonts links (always with system-stack fallbacks).
- Never regress silently. Revising an earlier phase requires naming what goes stale and getting a nod.
Phase 0: State Check (silent)
- Look for
design/STATE.md→ if present, Resume mode. - Scan the working directory: app code,
package.json, docs — platform, stack, and product are often already answerable. Detect Tailwind/framework now; Phase 5 needs it. - If images, URLs, or Figma links were supplied, read them now (Figma MCP for Figma URLs if available).
- Detect mode (redesign? brand intake?) from what you find.
Don't narrate this phase. Open the conversation already informed.
Phase 1: Brief
Goal: enough context to design this product, not a generic one.
Ask only what Phase 0 couldn't answer, in this priority:
- Product — one sentence: what does it do, for whom?
- Top tasks — the 2–3 things a user must accomplish. These become the screens.
- Taste profile — calibrate on 5 axes (score 1–5): warm↔cool, minimal↔expressive, calm↔energetic, classic↔futuristic, airy↔dense. Offer a guess from context first ("I'd read this as warm 4, minimal 3, calm 5 — correct me"). Faster and more precise than asking for adjectives cold.
- References — 2–3 products whose look they love, and what specifically (the type? the density? the color?). Rejections are equally informative — capture at least one "not this."
- Constraints — platform (web/mobile/desktop), dark mode (yes/no/both), existing brand assets, accessibility bar (default: WCAG 2.1 AA), locale needs.
Write design/01-brief.md:
# Design Brief — <Product>
## Product (one paragraph)
## Users & Top Tasks (task → what success looks like)
## Taste Profile (the 5 axes with scores + one-line reading)
## References (loved → what specifically; rejected → why)
## Constraints (platform, modes, brand givens, a11y bar)
Create design/STATE.md (template at the end of this file).
Gate: present the brief as 5 bullets. "Anything wrong here?" — then proceed.
Phase 2: Direction
Load references/direction.md now.
Goal: one committed visual direction and one signature element, before any token exists.
- Using the taste profile, pick 3 genuinely distinct style worlds from the reference (or hybrids) — not three shades of one idea. Cover different corners of the taste space; at least one should be the "safe read" of the brief and at least one should stretch it.
- For each direction: name (two words max), one-liner, typeface pairing (loadable from Google Fonts), 5 seed hexes, shape language (radius/border/shadow character), motion character, signature element (the one memorable thing), and why it fits the brief.
- Run the seed palettes' core text/bg pairs through
color.py check— directions must be born accessible. - Write
design/02-direction.html: one self-contained page, three columns (stacked on mobile). Each column renders a mini version of the founder's actual key screen — their product name, their real primary task — in that direction's fonts, colors, and shape language. Comparing three directions on your own product beats comparing abstract swatches. Include each direction's name, one-liner, and signature element as a header. - Run the crit; tell them to open the file in a browser.
Gate (hard — never skipped, even in fast mode): the user picks one or blends two. Blends are fine: name the blend, restate it in one paragraph, confirm. Then:
- Write
design/02-direction.md: the winner, its signature element, rationale, and the rejected directions in one line each (so future sessions know what was ruled out). - Mint 3 design principles — product-specific, opinionated, usable as tiebreakers (e.g. a finance app on a ledger-paper direction: "Numbers are the interface" / "Calm until money moves" / "Every state tells the truth"). Not platitudes — each principle must be able to lose ("Beautiful and usable" can never lose; "Density over whitespace" can). Confirm them with the user.
- Record direction, signature, and principles in STATE.md.
Phase 3: Design System
Load references/foundations.md and references/motion.md now.
Goal: every value a coding agent needs; zero invention left to implementation.
Derive from the chosen direction, following the reference craft:
- Color — OKLCH-built primitive ramps (use
color.py ramp) → semantic tokens (background, surface, surface-raised, text-primary, text-muted, accent, accent-hover, border, plus danger/success/warning). Dark mode designed now if in scope — as its own palette, not an inversion. - Typography — families with fallback stacks, a ratio-based scale (px + weight + line-height + letter-spacing per step), fluid sizes for display steps, numeric features for data.
- Spacing — base unit and full scale; section-level rhythm.
- Radius / borders / elevation — named steps with exact values; concentric-radius rule; the direction's chosen depth strategy.
- Motion — duration + easing tokens and the 2–3 sanctioned patterns; reduced-motion behavior.
- Breakpoints — only what the platform needs.
- Core components — button (primary/secondary/ghost/destructive), input+label+error, card, nav, modal, toast, table row, empty state, focus ring. Each: anatomy, all states (default/hover/active/focus-visible/disabled), and which tokens it consumes — components reference tokens by name, never raw values.
Then:
- Verify: run every text/background pair (both modes) through
color.py check. Fix failures at the token level, note adjustments. - Write
design/03-design-system.md— fenced YAML token block (machine-readable, schema in foundations.md) followed by short prose rationale per section: why this scale, why this hue strategy. - Write
design/03-design-system.html— a self-contained style guide designed in the system it documents: every token as a CSS custom property; color swatches labeled with hex + contrast grade; the type scale rendered; spacing bars; every component in every state; dark-mode toggle if applicable. - Run the crit. Present.
Gate: user reviews the HTML. Apply refinements to both files. Update STATE.md.
Phase 4: Screens
Load references/screens.md now.
Goal: the product's real screens, built only from Phase 3 tokens.
- Derive the screen inventory from the brief's top tasks. Include the unglamorous ones: auth/onboarding if needed, settings, and the empty/error variants of key screens. Write
design/04-screens/index.md— priority order, one-line purpose each. - Gate: confirm inventory and order.
- One screen at a time, priority order:
- Content first: write the screen's actual microcopy (headline, button labels, empty-state text, error messages) in product voice before any layout.
- Spec in
index.md(3–5 lines): layout skeleton, key regions, the one thing this screen must make effortless. - Build
design/04-screens/<screen>.html— self-contained, semantic HTML, tokens pasted as CSS custom properties, realistic varied-length data (never lorem ipsum), responsive at system breakpoints, designed focus states, and the dev overlay (grid toggleg, blur toggleb— spec in screens.md). Include the states that are the point of the screen (a dashboard ships with its empty state). - Run the crit (including squint + slop scan). Show the user. Take feedback. Update the screen counter in STATE.md. Next screen.
- Token discipline is absolute — Rule 5.
Phase 5: Handoff
Load references/handoff.md now.
Goal: an implementation plan a coding agent can follow without questions.
Write design/05-handoff.md:
- Token export — full set as ready-to-paste CSS custom properties (
light-dark()where both modes exist); plus Tailwind@thememapping if the stack uses Tailwind, or DTCG JSON if a token pipeline exists (stack detected in Phase 0). - Build order — global styles → primitives → composites → screens by priority, one checkbox per item, dependencies noted.
- Per-screen notes — data requirements, interactive behavior the mockup can't show, component variants used.
- Acceptance criteria — per screen, derived from the crit checklist: states present, contrast verified, focus order, target sizes, reduced motion.
- Design-QA loop — instruct the implementing agent to screenshot each built screen and compare against the mockup before calling it done.
- Out of scope — what was deliberately not designed, so nobody invents it silently mid-build.
Mark Phase 5 complete. Close with a 5-line summary of the system and the single next action: "point your coding agent at design/05-handoff.md."
STATE.md Template
# DesignOS State — <Product>
Updated: <date> · Phase: <n> (<name>) — <in progress | gated | complete>
- [ ] 1 Brief
- [ ] 2 Direction
- [ ] 3 Design System
- [ ] 4 Screens (0/<n>)
- [ ] 5 Handoff
## Taste profile
<warm 4 · minimal 3 · calm 5 · classic 3 · airy 4>
## Direction
Chosen: <name> — <one-liner>
Signature: <the one memorable thing>
Principles:
1. <can lose>
2. <can lose>
3. <can lose>
## Decision log
- <date> <decision> — <why, one line>
## Assumptions (fast mode only)
## Open questions
## Stale (artifacts needing regeneration after upstream edits)
Keep the decision log honest and short — it's what makes Resume mode feel like continuity instead of amnesia.