skills/curated/impeccable/SKILL.md
Use when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a frontend interface. Covers websites, landing pages, dashboards, product UI, app shells, components, forms, settings, onboarding, and empty states. Handles UX review, visual hierarchy, information architecture, cognitive load, accessibility, performance, responsive behavior, theming, anti-patterns, typography, fonts, spacing, layout, alignment, color, motion, micro-interactions, UX copy, error states, edge cases, i18n, and reusable design systems or tokens. Also use for bland designs that need to become bolder or more delightful, loud designs that should become quieter, live browser iteration on UI elements, or ambitious visual effects that should feel technically extraordinary. Not for backend-only or non-UI tasks.
npx skillsauth add pedronauck/skills impeccableInstall 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.
Designs and iterates production-grade frontend interfaces. Real working code, committed design choices, exceptional craft.
Before any design work or file edits, pass these gates. Skipping them produces generic output that ignores the project.
| Gate | Required check | If fail |
|---|---|---|
| Context | The PRODUCT.md / DESIGN.md loader result is known from node {{scripts_path}}/load-context.mjs. | Run the loader before continuing. |
| Product | PRODUCT.md exists and is not empty or placeholder ([TODO] markers, <200 chars). | Run {{command_prefix}}impeccable teach, refresh context, then resume. Never synthesize PRODUCT.md from the user's original prompt alone. |
| Command | The matching command reference is loaded when a sub-command is used. | Load the reference before continuing. |
| Craft | {{command_prefix}}impeccable craft has a user-confirmed shape brief for this task. teach / PRODUCT.md never counts as shape. | Run {{command_prefix}}impeccable shape and wait for explicit brief confirmation. |
| Image | Required visual probes / mocks are generated or skipped with a reason. | Resolve the image-generation gate in shape.md or craft.md before code. |
| Mutation | All active gates above pass. | Do not edit project files yet. |
Codex-style agents must state this before editing files:
IMPECCABLE_PREFLIGHT: context=pass product=pass command_reference=pass shape=pass|not_required image_gate=pass|skipped:<reason> mutation=open
For {{command_prefix}}impeccable craft, shape=pass is only valid after a separate user response approving the shape design brief, or when the user provided an already-confirmed brief in the request. Do not mark shape=pass after writing PRODUCT.md, summarizing assumptions, or drafting an unconfirmed brief yourself.
Other harnesses should follow the same checklist when they can expose this state.
Two files, case-insensitive. The loader looks at the project root by default and falls back to .agents/context/ and docs/ if the root is clean. Override with IMPECCABLE_CONTEXT_DIR=path/to/dir (absolute or relative to cwd).
Load both in one call:
node {{scripts_path}}/load-context.mjs
Consume the full JSON output. Never pipe through head, tail, grep, or jq. The output's contextDir field tells you where the files were resolved from.
If the output is already in this session's conversation history, don't re-run. Exceptions requiring a fresh load: you just ran {{command_prefix}}impeccable teach or {{command_prefix}}impeccable document (they rewrite the files), or the user manually edited one.
{{command_prefix}}impeccable live already warms context via live.mjs. If you've run live.mjs, don't also run load-context.mjs this session.
If PRODUCT.md is missing, empty, or placeholder ([TODO] markers, <200 chars): run {{command_prefix}}impeccable teach, then resume the user's original task with the fresh context. If the original task was {{command_prefix}}impeccable craft, resume into {{command_prefix}}impeccable shape before any implementation work.
If DESIGN.md is missing: nudge once per session ("Run {{command_prefix}}impeccable document for more on-brand output"), then proceed.
Every design task is brand (marketing, landing, campaign, long-form content, portfolio: design IS the product) or product (app UI, admin, dashboard, tool: design SERVES the product).
Identify before designing. Priority: (1) cue in the task itself ("landing page" vs "dashboard"); (2) the surface in focus (the page, file, or route being worked on); (3) register field in PRODUCT.md. First match wins.
If PRODUCT.md lacks the register field (legacy), infer it once from its "Users" and "Product Purpose" sections, then cache the inferred value for the session. Suggest the user run {{command_prefix}}impeccable teach to add the field explicitly.
Load the matching reference: reference/brand.md or reference/product.md. The shared design laws below apply to both.
Apply to every design, both registers. Match implementation complexity to the aesthetic vision: maximalism needs elaborate code, minimalism needs precision. Interpret creatively. Vary across projects; never converge on the same choices. {{model}} is capable of extraordinary work. Don't hold back.
#000 or #fff. Tint every neutral toward the brand hue (chroma 0.005–0.01 is enough).Dark vs. light is never a default. Not dark "because tools look cool dark." Not light "to be safe."
Before choosing, write one sentence of physical scene: who uses this, where, under what ambient light, in what mood. If the sentence doesn't force the answer, it's not concrete enough. Add detail until it does.
"Observability dashboard" does not force an answer. "SRE glancing at incident severity on a 27-inch monitor at 2am in a dim room" does. Run the sentence, not the category.
Match-and-refuse. If you're about to write any of these, rewrite the element with different structure.
border-left or border-right greater than 1px as a colored accent on cards, list items, callouts, or alerts. Never intentional. Rewrite with full borders, background tints, leading numbers/icons, or nothing.background-clip: text combined with a gradient background. Decorative, never meaningful. Use a single solid color. Emphasis via weight or size.--.If someone could look at this interface and say "AI made that" without doubt, it's failed. Cross-register failures are the absolute bans above. Register-specific failures live in each reference.
Category-reflex check. Run at two altitudes; the second one catches what the first one misses.
| Command | Category | Description | Reference |
|---|---|---|---|
| craft [feature] | Build | Shape, then build a feature end-to-end | reference/craft.md |
| shape [feature] | Build | Plan UX/UI before writing code | reference/shape.md |
| teach | Build | Set up PRODUCT.md and DESIGN.md context | reference/teach.md |
| document | Build | Generate DESIGN.md from existing project code | reference/document.md |
| extract [target] | Build | Pull reusable tokens and components into design system | reference/extract.md |
| critique [target] | Evaluate | UX design review with heuristic scoring | reference/critique.md |
| audit [target] | Evaluate | Technical quality checks (a11y, perf, responsive) | reference/audit.md |
| polish [target] | Refine | Final quality pass before shipping | reference/polish.md |
| bolder [target] | Refine | Amplify safe or bland designs | reference/bolder.md |
| quieter [target] | Refine | Tone down aggressive or overstimulating designs | reference/quieter.md |
| distill [target] | Refine | Strip to essence, remove complexity | reference/distill.md |
| harden [target] | Refine | Production-ready: errors, i18n, edge cases | reference/harden.md |
| onboard [target] | Refine | Design first-run flows, empty states, activation | reference/onboard.md |
| animate [target] | Enhance | Add purposeful animations and motion | reference/animate.md |
| colorize [target] | Enhance | Add strategic color to monochromatic UIs | reference/colorize.md |
| typeset [target] | Enhance | Improve typography hierarchy and fonts | reference/typeset.md |
| layout [target] | Enhance | Fix spacing, rhythm, and visual hierarchy | reference/layout.md |
| delight [target] | Enhance | Add personality and memorable touches | reference/delight.md |
| overdrive [target] | Enhance | Push past conventional limits | reference/overdrive.md |
| clarify [target] | Fix | Improve UX copy, labels, and error messages | reference/clarify.md |
| adapt [target] | Fix | Adapt for different devices and screen sizes | reference/adapt.md |
| optimize [target] | Fix | Diagnose and fix UI performance | reference/optimize.md |
| live | Iterate | Visual variant mode: pick elements in the browser, generate alternatives | reference/live.md |
Plus two management commands: pin <command> and unpin <command>, detailed below.
Setup (context gathering, register) is already loaded by then; sub-commands don't re-invoke {{command_prefix}}impeccable.
If the first word is craft, setup still runs first, but reference/craft.md owns the rest of the flow. If setup invokes teach as a blocker, finish teach, refresh context, then resume the original command and target.
Pin creates a standalone shortcut so {{command_prefix}}<command> invokes {{command_prefix}}impeccable <command> directly. Unpin removes it. The script writes to every harness directory present in the project.
node {{scripts_path}}/pin.mjs <pin|unpin> <command>
Valid <command> is any command from the table above. Report the script's result concisely. Confirm the new shortcut on success, relay stderr verbatim on error.
development
Guides a founder through the full Y Combinator batch application end-to-end. A 10-phase workflow that captures the live YC form, profiles the founders, stress-tests the idea via an embedded grill loop, runs a mandatory 5-agent parallel external research pass on the startup, drafts every form field with anti-pattern and accepted-example checks, produces founder-video bullet notes (no script), runs a final adversarial gate, generates paste-ready submission answers, unlocks an interview-prep simulator after invite, and supports reapplicant delta tracking and post-decision post-mortems. Writes a documented markdown trail under a user-chosen workspace. Use when a founder wants to prepare a YC batch application, build their founder video, drill mock YC interview questions, or reapply with delta evidence. Don't use for pitch-deck design unrelated to YC, generic startup advice without applying, or post-funding work.
development
Authors engineering blog posts end-to-end: launch deep-dives, incident postmortems, architecture migrations, performance case studies, tutorials, AI/agent system writeups, security disclosures, and research-to-product translations. Picks the correct archetype, plans the abstraction ladder, enforces an evidence cadence (diagrams, benchmarks, profiles, traces, code, ablations), tunes voice against publisher house styles (Datadog, Vercel, GitHub, AWS, Meta, Cloudflare, Jane Street), and runs a pre-publish gate for narrative momentum and disclosure ethics. Use when drafting a new engineering post, restructuring a draft that feels flat, deciding which evidence form belongs where, validating that depth and product context are balanced, or preparing a postmortem, migration, or performance narrative for external publication. Do not use for API reference documentation, README authoring, marketing copy, release notes, generic SEO content, ghost-written executive thought leadership, or non-engineering long-form essays.
tools
Provides guardrails for user-facing UI work: usability heuristics, accessibility floors, design-system discipline, component states, microcopy, motion, dark mode, responsive behavior, and human-AI UX. Use when designing, generating, reviewing, or refactoring visible product surfaces such as components, pages, dashboards, forms, dialogs, loading/empty/error states, or AI interfaces. Do not use for backend-only work, infrastructure, CLI/TUI design, or pure documentation editing.
tools
Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications. Use when implementing complex type logic, creating reusable type utilities, or ensuring compile-time type safety in TypeScript projects. Don't use for plain JavaScript, runtime validation libraries (Zod, Yup), or basic TypeScript syntax questions.