skills/design-foundations/SKILL.md
Produce the design-foundations doc set a UX/brand professional writes BEFORE any tokens or code — product principles, brand & personality, voice & tone, visual language (colour/type/space/motion/data-viz), UX & interaction principles, and an accessibility standard. Derives from the spec/PRD/CONTEXT and any existing mascot, asks only for the taste gaps, and writes durable docs into docs/design/. The front-of-build step for ANY application; chains into generate-design-brief → design-system-create → frontend-design → design-system-audit → app-polish. Use when the user says "design language", "brand/voice/tone", "colour scheme", "how a UX pro would approach this", "design docs for the app", "design foundations", or before scaffolding a new app's UI.
npx skillsauth add RonanCodes/ronan-skills design-foundationsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
The documents a UX/brand professional writes before picking a single token or component. Most teams skip straight to colours and buttons; the result is a UI with no point of view. This skill captures the point of view first — who the product is for, who it is, how it speaks, what it looks like and why, how it behaves — then hands a clean brief to the skills that implement it.
This is the front of the design pipeline:
design-foundations → generate-design-brief → [Claude Design] → design-system-create / claude-design-to-code → frontend-design → design-system-audit → app-polish
(this skill) (Claude Design brief) (tokens + primitives + /styleguide) (build quality) (enforce) (launch)
Voice rules throughout defer to /ro:write-copy. Personal/author voice (the human's) is /ro:voice-profile; this skill defines the product's voice, which is a different thing.
/ro:generate-mascot) — the mascot is a strong anchor for personality + palette; this skill formalises it into a system./styleguide route — that's design-system-create (this skill feeds it).generate-design-brief./ro:voice-profile./ro:design-foundations # detect project from cwd, derive + interview the gaps
/ro:design-foundations --app nutmeg # override app name
/ro:design-foundations --vibe "sharp analyst, cheeky edge" # pre-seed the direction, skip that question
/ro:design-foundations --consolidate # emit 4 merged docs instead of 6 (good for small/single-user tools)
/ro:design-foundations --out docs/design # output dir (default docs/design/ at repo root)
/ro:design-foundations --commit # commit the docs (repo's commit convention)
A designer does NOT start with colour. The order is deliberate — each layer constrains the next:
generate-design-brief and design-system-create, which turn this into a Claude Design brief and a token module.Find the project root (cwd with README.md + a manifest, else walk up). Resolve <app> (flag → package.json/wrangler name → dir basename).
Read for signal, stop when you have enough: README.md; CONTEXT.md; the spec / parent PRD (GitHub issue linked from README — gh issue view); public/brand/<app>-*.png (a mascot is a strong personality + palette anchor — note its colours and character); any docs/adr/* (constraints); the linked wiki vault if one is referenced.
Start every app from these unless the product clearly argues otherwise, and if it does, state why in the docs:
prefers-color-scheme, allow a manual override, persist the choice). Do NOT default to dark just because it looks slick in a screenshot.Derive what you can from the source. For what's genuinely a taste call, ask via AskUserQuestion (one round, recommended answers), and ONLY for gaps not already provided via flags:
--vibe given). Offer 2-4 concrete directions grounded in the product (e.g. "sharp analyst, cheeky edge" vs "bright sporty playful" vs "sober minimal").Don't over-interview. Three questions max.
Default: six focused docs in docs/design/. With --consolidate: merge into four (product-and-principles, brand-and-voice, visual-language, ux-and-accessibility). Each doc leads with a one-paragraph plain-English statement, uses concrete examples with real values, and states what's deliberately out. No em-dashes / AI-tells (/ro:write-copy).
docs/design/00-product-principles.mddocs/design/01-brand-personality.mddocs/design/02-voice-and-tone.md/ro:write-copy.docs/design/03-visual-language.mddocs/design/04-ux-principles.mddocs/design/05-accessibility.mddesign-system-audit + app-polish).docs/design/README.mdPrint the next steps explicitly:
→ /ro:generate-design-brief — turn these foundations into a paste-ready Claude Design brief (it now reads docs/design/ instead of re-asking).→ /ro:design-system-create — implement the colour/type/space tokens + primitives + /styleguide from 03-visual-language.md.→ /ro:frontend-design — build screens to this point of view.→ /ro:design-system-audit then /ro:app-polish — enforce + launch-polish.If a mascot exists, remind that its avatar is already the favicon (/ro:generate-mascot Step 6.5).
With --commit, stage docs/design/** and commit with the repo's convention (📝 docs: per repo CLAUDE.md; respect the weekday-hours timestamp rule from ~/CLAUDE.md). Do not push automatically.
If docs/design/ exists, update in place rather than duplicating: refresh derived sections, preserve any hand-edited prose (don't clobber a section the user clearly rewrote — diff and ask if unsure).
/ro:generate-design-brief — consumes this; produces the Claude Design brief./ro:design-system-create — implements 03-visual-language.md as tokens + primitives + /styleguide./ro:frontend-design — build-quality UI that honours the foundations./ro:design-system-audit — enforces the visual language; /ro:app-polish — launch checklist./ro:write-copy — the microcopy mechanics referenced by 02-voice-and-tone.md./ro:generate-mascot — personality + palette anchor; run it first if the product should have a face.nutmeg (the football results-analysis tool), anchored on its cheeky-fox mascot and a "sharp analyst, cheeky edge" direction.testing
--- name: linear-pipeline description: The Fable orchestrator for a single dispatched Linear ticket. Holds almost no context itself; it receives `--issue <ID> --detached`, decides the stage sequence, and fans out a sub-agent per stage, passing forward only each stage's artifact (never re-derived, never inlined into its own context). Step zero, before any planning or stage routing, is a boundary triage against `canon/security-boundary.md` (#199): a match tags Ronan Connolly and stops the run, no
development
--- name: in-your-face description: Capture a chat-only answer into a durable artifact (markdown + HTML, PDF when cheap) and launch it automatically so the user cannot miss it. Use when user says "in your face", "don't let me lose this", "save that answer", "make that durable", or right after answering a substantive side question (a recipe, comparison, how-to, or generated prompt) that would otherwise die with the context. category: workflow argument-hint: [--no-open] [--vault <short>] [hint of
tools
One-shot headless OpenAI Codex CLI calls for background/admin AI tasks — summaries, classification, extraction, admin glue. The default engine for anything that runs AI constantly in the background (daemon-driven, per-event), because it bills the flat ChatGPT subscription instead of Claude usage or per-token API spend, and it keeps working while Claude is rate-limited. NEVER for coding — coding stays Claude. Use when a skill or daemon needs a cheap always-on AI call, when the user says "use codex", "ask codex", "codex as backup", or when building a background summarizer/classifier into a listener or loop. Reads auth from ~/.codex/auth.json (ChatGPT account, no API key).
research
Turn a warranty rejection, repair quote, or RMA email into a cited decision brief — legal read (NL/EU consumer law), is the part user-serviceable, live part and new-unit prices, repair-vs-DIY-vs-new economics, before-you-send-it checklist, deadlines. Use when the user pastes or screenshots a repair quote, warranty rejection, "not covered" email, onderzoekskosten fee, or asks "should I repair or replace this".