skills/impeccable-june/SKILL.md
Use when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or improve a frontend interface. Covers websites, landing pages, dashboards, product UI, app shells, components, forms, settings, onboarding, empty states, UX review, visual hierarchy, information architecture, accessibility, performance, responsive behavior, theming, typography, spacing, layout, color, motion, micro-interactions, UX copy, error states, edge cases, i18n, design systems, tokens, live browser iteration, and ambitious visual effects. Not for backend-only or non-UI tasks.
npx skillsauth add sjunepark/custom-skills impeccable-juneInstall 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.
This is a vendored Impeccable skill with local workflow guardrails. Keep upstream behavior intact unless a local rule prevents repeat misuse.
dev:live, use it before live sessions.http://localhost:5173/ is the target app. Confirm the actual app URL from a strict-port script, dev logs, terminal output, or the user's open tab.serverPort from live.mjs serves /live.js and /poll; it is not the page to design..impeccable/live/config.json as project config when live mode is intentionally set up. Treat .impeccable/live/server.json and .impeccable/live/sessions/ as local runtime state.live.js, impeccable-carbonize-*, stale data-impeccable-* plumbing, or preview-only scoped CSS.Before any design work or file edits:
craft, shape, audit), load its reference file too. This is non-negotiable: craft without craft.md loaded means you'll skip the shape-and-confirm step the user expects.Skipping these produces generic output that ignores the project.
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-june teach or {{command_prefix}}impeccable-june document (they rewrite the files), or the user manually edited one.
{{command_prefix}}impeccable-june 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-june teach, then resume the user's original task with the fresh context. If the original task was {{command_prefix}}impeccable-june craft, resume into {{command_prefix}}impeccable-june shape before any implementation work.
If DESIGN.md is missing: nudge once per session ("Run {{command_prefix}}impeccable-june 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-june 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-june.
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-june <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
Long-running systematic codebase review with a persistent ledger in reviews/. Use to plan review areas, continue the next review pass, check campaign status, triage findings with the user, or apply auto-tier fixes. Modes: plan, continue, status, triage, fix (default continue).
development
Manually integrate Git branch work without blind mechanical merges. Use when merging, transplanting, or refactoring branch work; resolving conflicts; preserving source-branch intent in a clean current-branch structure; or auditing that source additions, removals, tests, and docs landed intentionally.
testing
Prepare, audit, set up, and guide Release Please releases. Use when releasing, preparing or reviewing a release PR, adding Release Please, classifying SemVer impact or breaking changes, writing Release Please-compatible Conventional Commit guidance, or documenting release criteria. Release work requires existing Release Please config; setup requires an explicit setup request.
development
Teach how code, a subsystem, architecture area, feature flow, module, API/data boundary, or relevant technical concept works for reviewers and maintainers. Use when the user asks to understand code or concepts; focus on design, responsibilities, contracts, data flow, invariants, tradeoffs, and maintenance implications, not syntax or line-by-line execution. Use `change-explainer` for diffs, commits, or patches.