skills/frontend-design/SKILL.md
Create distinctive, production-grade frontend interfaces with high design quality. Use when building web components, pages, HTML tools, or applications. Generates creative, polished code that avoids generic AI aesthetics.
npx skillsauth add RonanCodes/ronan-skills frontend-designInstall 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.
This skill guides creation of distinctive, production-grade frontend interfaces that avoid generic "AI slop" aesthetics. Implement real working code with exceptional attention to aesthetic details and creative choices.
House defaults (unless the brief says otherwise): default to light mode, with dark as an optional toggle (respect prefers-color-scheme, manual override, persisted). Intuitive UX is the priority, a first-timer should know what to do without a tooltip; design the empty/loading/error/first-run states with the same care as the happy path. And make it a bit fun and cheeky, personality in the microcopy, the mascot, a small delightful touch, charming not gimmicky and never at the cost of clarity. Distinctive does not mean dark-and-edgy by default.
The user provides frontend requirements: a component, page, application, or interface to build. They may include context about the purpose, audience, or technical constraints.
Before coding, understand the context and commit to a BOLD aesthetic direction:
CRITICAL: Choose a clear conceptual direction and execute it with precision. Bold maximalism and refined minimalism both work - the key is intentionality, not intensity.
Then implement working code (HTML/CSS/JS, React, Vue, etc.) that is:
For greenfield UI mockups, Claude Design is the primary surface for direction-setting. Pencil (pencil.dev) is the second-opinion source when a layout needs cross-checking. Once a direction is locked, bring the Claude Design link (or Pencil export) into this skill as a reference pin and build from it inside the repo with shadcn/ui + Tailwind. For marketing imagery (OG cards, hero illustrations, social), use /ro:generate-image (Gemini Nano Banana 2), not GPT image gen.
/styleguide firstBefore designing anything new in an existing app, check whether src/routes/styleguide.tsx (or app/styleguide/page.tsx for Next) exists. If it does, load it in the dev server and audit the current tokens + primitives there first — the answer to "what colour for the danger button" usually already lives in the showcase. If the route is missing, offer to run /ro:design-system-create --showcase-only to add it (one command, ~30s, no overwrite risk). The styleguide is the first audit subject and the cheapest way to keep the design system honest as new components land.
Apps scaffolded with /ro:new-tanstack-app ship with /styleguide by default, role-gated to superadmin + staff when Clerk is wired.
Focus on:
stroke="currentColor") in self-contained HTML, or official vendor / simple-icons SVGs for brand logos. For glyphs lucide lacks (e.g. WhatsApp), inline the brand SVG path. If a decorative glyph carries no meaning, drop it rather than substitute an emoji. Grep the output for emoji before calling UI work done. (This mirrors the no-emoji rule in /ro:write-copy for prose; emojis are still required in git commit messages per the conventional-commit format — that is the one exception, and it is not user-facing.)NEVER use generic AI-generated aesthetics like overused font families (Inter, Roboto, Arial, system fonts), cliched color schemes (particularly purple gradients on white backgrounds), predictable layouts and component patterns, and cookie-cutter design that lacks context-specific character.
Interpret creatively and make unexpected choices that feel genuinely designed for the context. No design should be the same. Vary between light and dark themes, different fonts, different aesthetics. NEVER converge on common choices (Space Grotesk, for example) across generations.
IMPORTANT: Match implementation complexity to the aesthetic vision. Maximalist designs need elaborate code with extensive animations and effects. Minimalist or refined designs need restraint, precision, and careful attention to spacing, typography, and subtle details. Elegance comes from executing the vision well.
When building pages for this project, maintain consistency with the Observatory theme established in docs/getting-started.html:
--void: #06060e, --amber: #e0af40, --cyan: #5bbcd6, --green: #7dcea0, --rose: #d4726aThis is a starting point, not a constraint. Evolve the design system as the project grows.
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".