impeccable
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.
1How It Works & Mechanism
Compiled multi-host distribution: skill/ serves as the sole master source (SKILL.src.md + scripts/ + reference/ + agents/). At any given time, the repository contains compiled copies across 20 host directories including .claude/.cursor/.agents/.gemini. These compiled copies expand placeholders ({{scripts_path}}/{{command_hint}}, etc.) into host-specific paths, populate host frontmatter (such as version: 4.3.1, user-invocable, allowed-tools), and strip <!-- rule:… --> consistency comments.
allowed-tools: - Bash(npx impeccable *) - Bash({{scripts_path}}/impeccable *)
Session initialization protocol: Every session begins by executing `<skill-base-dir>/scripts/impeccable context` (the launcher is a POSIX shell that locates the self-contained engine binary). The engine reads PRODUCT.md/DESIGN.md/matching surface briefs and feeds instructions (including CONTEXT_STALE and other directives) back to the agent; explicit fallbacks exist if launcher fails—it clearly notifies the user and directly falls back to reading existing PRODUCT.md/DESIGN.md to proceed.
Run `<skill-base-dir>/scripts/impeccable context` once per session, where `<skill-base-dir>` is the directory that contains this SKILL.md (the skill folder, not a plugin root two levels above it); keep cwd at the user's project.
The core engine runs on an accompanying binary (not a Node runtime): The launcher resolves the executable sequentially via IMPECCABLE_BIN → sibling directory bin/<os>-<arch>/ → ~/.impeccable/bin → version-pinned cache → impeccable on PATH. As a last resort, it downloads that version's binary from the author's GitHub releases into the user cache with sha256 sidecar verification (fail closed: refuses to run if verification fails or the sidecar is missing).
base="${IMPECCABLE_DOWNLOAD_BASE:-https://github.com/pbakaus/impeccable/releases/download}"
Instruction surface covering 23 commands + routing: The core of SKILL.md is a command table (Build/Evaluate/Refine/Enhance/Fix + live iteration). Invocations without parameters surface a context-aware menu only and never run commands automatically; each command maps to an independent playbook under reference/, with rules embedded as <!-- rule:… --> tags in source files for publish-time consistency checks.
**No argument:** read [routing.md](reference/routing.md) and present its context-aware menu; never auto-run a command.
PRODUCT.md/DESIGN.md dual-document source of truth: init only populates PRODUCT.md (product truth: users/tasks/constraints/platform) without touching the visual domain; document/extract backfills DESIGN.md (design systems/tokens/components) from completed code. Visual directions are finalized during new-work to overwrite DESIGN.md—'visual authority is evidence, not a filename.'
`init` captures durable product truth in PRODUCT.md. It does not invent a visual world and does not write DESIGN.md; [new-work.md](new-work.md) creates or expands one, and [document.md](document.md) records an incumbent one.
Deterministic linter (61 rules) integrated as host hooks: Once hooks are on, Claude Code/Codex/Copilot run the linter via post-tool-use hooks after every UI file modification and pipe findings back into context; Cursor utilizes preToolUse to intercept bad writes before they hit disk. Configured in .impeccable/config.json (locally overridden by .impeccable/config.local.json).
The hook runs the impeccable design detector on direct file edits to design-relevant files (`.tsx`, `.jsx`, `.html`, `.vue`, `.svelte`, `.astro`, `.css`, `.scss`, `.sass`, `.less`, `.ts`, `.js`).
live browser variant iteration mode: Leverages a local dev server (HMR) to hand selected elements to AI for hot-swapping generated HTML+CSS variants; maintains crash recoverability via an event polling loop (the _instructions field is the authoritative next step) and .impeccable/live/ session journals; explicitly prohibits production site injection or weakening CSP.
Interactive live variant mode: select elements in the browser, pick a design action, and get AI-generated HTML+CSS variants hot-swapped via the dev server's HMR.
2Core Capabilities
3External Dependencies
| Kind | Dependency / Endpoint |
|---|---|
| cli | impeccable 引擎(自含二进制,随 skill 的 scripts/impeccable launcher 定位/下载;技能通过 Bash 调用) |
| network | 引擎二进制下载通道(仅首次且缺二进制时):GitHub Releases,engine-v<version> 资产 + .sha256 sidecar |
| package | npx impeccable(SKILL 授权 Bash(npx impeccable *) 的发布安装路径;README quick start 亦用 npx impeccable install) |
| network | 文档站/知识引用(非运行时调用):impeccable.style、github.com/pbakaus/impeccable(README/docs 内链接)、google-labs-code/design.md spec(reference/document.md 内引用) |
4Recommended Governance & Evidence
- scripts/: Executes local scripts or commands: skill/scripts/impeccable launcher (POSIX sh) → engine binary: context/detect/hooks/live
- 网络端点: Declares external network access: Initial engine binary download: https://github.com/pbakaus/impeccable/releases/download/engine-v<
- 本地工作目录: File read/write and artifact output: Within project: PRODUCT.md, DESIGN.md (+sidecar), .impeccable/config.json, and config.local.json
5Second-Pass Verification
- [ok] 单一 master 源 + 多宿主编译副本 — diff skill/SKILL.src.md 与 .cursor/.claude 副本:差异仅为占位符展开({{scripts_path}}→宿主路径)、frontmatter 增删(version/argument-hint/allowed-tools)、<!-- rule:… --> 注释剥离;正文结构一致。
- [ok] 每会话 context + 降级协议 — 编译副本与 src 均含 Setup 三步与 'Launcher unavailable' 段;引文逐字存在。
- [ok] 引擎二进制下载仅首次且 fail-closed — launcher 第 60-200 行精读:候选顺序 IMPECCABLE_BIN→sibling bin→~/.impeccable/bin→version cache→PATH probe→下载;下载后必须 sha256 sidecar 匹配才 chmod+mv+exec,sidecar 不可得/不匹配/空文件均拒绝(exit 127)。
- [ok] 61 规则与无 LLM 声明 — README 两处声明一致('61 deterministic detector rules'、'no LLM and no API key');hooks.md 描述 per-edit 与 Stop 深扫两级;规则实体位于引擎二进制内(本仓库 skill 目录不含规则源码,属引擎发布物 [INFERENCE])。
- [ok] 23 命令数 — SKILL.md 命令表逐行计数 = 23(craft 为 deprecated alias 仍列);与 README '23 commands' 一致。
- [ok] hook 安装面与宿主 manifest — hooks.md 列出全部宿主清单路径(.claude/settings.local.json/.cursor/hooks.json/.codex/hooks.json/.github/hooks/impeccable.json/.grok/hooks/impeccable.json);'reset' 动作会从 on 安装过的 manifest 移除条目。
- [ok] live 仅限本地 + journal 恢复 — live.md 明确 'requires a local checkout'、'injection into deployed production sites (including HTTPS) is unsupported';.impeccable/live/sessions/ journal 与 live-status/resume 流程存在。
- [ok] 无凭证读取 — skill 目录(src/scripts/reference/agents + 编译副本)无 API key/token/secret/.env 读取代码;引擎行为以 README『no API key』声明 + 引文为据(引擎二进制内部未逐一审计 [INFERENCE])。
6Verdict & Scenarios
1467f7553455c007…