Paul BakausandClaude Opus 4.7 99e68370b9 fix(live): JSX accept/discard restores at original indent (Bugbot review)
Cursor Bugbot caught this on PR #118 review:

> JSX discard/accept restores content with wrong indentation. In the JSX
> path, `indent` is captured from `lines[block.start]` — the marker comment
> line inside the wrapper div, which is indented 2 extra spaces relative
> to the original element. But `expandReplaceRange` expands the replacement
> to include the outer `<div data-impeccable-variants>` wrapper, which sits
> at the original element's indent level. `deindentContent(original, indent)`
> restores content to the marker's deeper indent, so all restored lines end
> up 2 spaces deeper than the original element was.

I'd actually noticed the symptom during the live testing session ("some
odd indentation in card-2 after discard") and dismissed it as cosmetic.
Bugbot's analysis matches exactly.

Fix: anchor the deindent base on `replaceRange.start` instead of
`block.start`. For HTML the two are identical (markers sit outside the
wrapper), so HTML is unchanged. For JSX `replaceRange.start` is the
outer `<div>` at the original element's indent — correct base.

Also dropped a duplicate `expandReplaceRange` call in handleAccept that
the earlier edit left orphaned.

Test coverage:
- Two new regression tests in live-accept.test.mjs:
  - `discard restores JSX content at the original indent` runs the
    real wrap CLI and asserts the restored <aside> opener lands at
    its original 6-space indent (was 8 before the fix).
  - `accept (no carbonize, raw HTML) restores at the original indent
    on JSX` exercises the same anchor on the accept path.
- Inner-element indent loss inside the wrapped content (`<h1>` ending
  up at the same indent as its parent `<aside>`) is a separate,
  pre-existing wrap behavior — left for a follow-up; explicitly
  noted in the test comments.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 15:55:27 -07:00

Impeccable

The vocabulary you didn't know you needed. 1 skill, 23 commands, and curated anti-patterns for impeccable frontend design.

Quick start: Visit impeccable.style to download ready-to-use bundles.

Why Impeccable?

Anthropic created frontend-design, a skill that guides Claude toward better UI design. Impeccable builds on that foundation with deeper expertise and more control.

Every LLM learned from the same generic templates. Without guidance, you get the same predictable mistakes: Inter font, purple gradients, cards nested in cards, gray text on colored backgrounds.

Impeccable fights that bias with:

  • An expanded skill with 7 domain-specific reference files (view source)
  • 23 commands to audit, review, polish, distill, animate, and more
  • Curated anti-patterns that explicitly tell the AI what NOT to do

What's Included

The Skill: impeccable

A comprehensive design skill with 7 domain-specific references (view skill):

Reference Covers
typography Type systems, font pairing, modular scales, OpenType
color-and-contrast OKLCH, tinted neutrals, dark mode, accessibility
spatial-design Spacing systems, grids, visual hierarchy
motion-design Easing curves, staggering, reduced motion
interaction-design Forms, focus states, loading patterns
responsive-design Mobile-first, fluid design, container queries
ux-writing Button labels, error messages, empty states

23 Commands

All commands are accessed through /impeccable:

Command What it does
/impeccable craft Full shape-then-build flow with visual iteration
/impeccable teach One-time setup: gather design context, write PRODUCT.md and DESIGN.md
/impeccable document Generate DESIGN.md from existing project code
/impeccable extract Pull reusable components and tokens into the design system
/impeccable shape Plan UX/UI before writing code
/impeccable critique UX design review: hierarchy, clarity, emotional resonance
/impeccable audit Run technical quality checks (a11y, performance, responsive)
/impeccable polish Final pass, design system alignment, and shipping readiness
/impeccable bolder Amplify boring designs
/impeccable quieter Tone down overly bold designs
/impeccable distill Strip to essence
/impeccable harden Error handling, i18n, text overflow, edge cases
/impeccable onboard First-run flows, empty states, activation paths
/impeccable animate Add purposeful motion
/impeccable colorize Introduce strategic color
/impeccable typeset Fix font choices, hierarchy, sizing
/impeccable layout Fix layout, spacing, visual rhythm
/impeccable delight Add moments of joy
/impeccable overdrive Add technically extraordinary effects
/impeccable clarify Improve unclear UX copy
/impeccable adapt Adapt for different devices
/impeccable optimize Performance improvements
/impeccable live Visual variant mode: iterate on elements in the browser

Use /impeccable pin <command> to create standalone shortcuts (e.g., pin audit creates /audit).

Usage Examples

/impeccable audit blog           # Audit blog hub + post pages
/impeccable critique landing     # UX design review
/impeccable polish settings      # Final pass before shipping
/impeccable harden checkout      # Add error handling + edge cases

Or use /impeccable directly with a description:

/impeccable redo this hero section

Anti-Patterns

The skill includes explicit guidance on what to avoid:

  • Don't use overused fonts (Arial, Inter, system defaults)
  • Don't use gray text on colored backgrounds
  • Don't use pure black/gray (always tint)
  • Don't wrap everything in cards or nest cards inside cards
  • Don't use bounce/elastic easing (feels dated)

See It In Action

Visit impeccable.style to see before/after case studies of real projects transformed with Impeccable commands.

Installation

Visit impeccable.style, download the ZIP for your tool, and extract to your project.

Option 2: Copy from Repository

Cursor:

cp -r dist/cursor/.cursor your-project/

Note: Cursor skills require setup:

  1. Switch to Nightly channel in Cursor Settings → Beta
  2. Enable Agent Skills in Cursor Settings → Rules

Learn more about Cursor skills

Claude Code:

# Project-specific
cp -r dist/claude-code/.claude your-project/

# Or global (applies to all projects)
cp -r dist/claude-code/.claude/* ~/.claude/

OpenCode:

cp -r dist/opencode/.opencode your-project/

Pi:

cp -r dist/pi/.pi your-project/

Gemini CLI:

cp -r dist/gemini/.gemini your-project/

Note: Gemini CLI skills require setup:

  1. Install preview version: npm i -g @google/gemini-cli@preview
  2. Run /settings and enable "Skills"
  3. Run /skills list to verify installation

Learn more about Gemini CLI skills

Codex CLI:

# Project-local
cp -r dist/agents/.agents your-project/

# Or user-wide
mkdir -p ~/.agents/skills
cp -r dist/agents/.agents/skills/* ~/.agents/skills/

GitHub Copilot:

cp -r dist/github/.github your-project/

Trae:

# Trae China (domestic version)
cp -r dist/trae/.trae-cn/skills/* ~/.trae-cn/skills/

# Trae International
cp -r dist/trae/.trae/skills/* ~/.trae/skills/

Note: Trae has two versions with different config directories:

  • Trae China: ~/.trae-cn/skills/
  • Trae International: ~/.trae/skills/

After copying, restart Trae IDE to activate the skills.

Rovo Dev:

# Project-specific
cp -r dist/rovo-dev/.rovodev your-project/

# Or global (applies to all projects)
cp -r dist/rovo-dev/.rovodev/skills/* ~/.rovodev/skills/

Usage

Once installed, use commands in your AI harness:

/audit           # Find issues
/normalize       # Fix inconsistencies
/polish          # Final cleanup
/distill         # Remove complexity

Most commands accept an optional argument to focus on a specific area:

/audit header
/polish checkout-form

Note: Codex uses skills here, not /prompts: commands. Open /skills or type $impeccable. Repo-local installs live in .agents/skills/; user-wide installs live in ~/.agents/skills/. GitHub Copilot uses .github/skills/. Restart the tool if a newly installed skill does not appear.

CLI

Impeccable includes a standalone CLI for detecting anti-patterns without an AI harness:

npx impeccable detect src/                   # scan a directory
npx impeccable detect index.html             # scan an HTML file
npx impeccable detect https://example.com    # scan a URL (Puppeteer)
npx impeccable detect --fast --json .        # regex-only, JSON output

The detector catches 24 issues across AI slop (side-tab borders, purple gradients, bounce easing, dark glows) and general design quality (line length, cramped padding, small touch targets, skipped headings, and more).

Supported Tools

Contributing

See DEVELOP.md for contributor guidelines and build instructions.

License

Apache 2.0. See LICENSE.

The impeccable skill builds on Anthropic's original frontend-design skill. See NOTICE.md for attribution.


Created by Paul Bakaus

S
Description
No description provided
Readme
386 MiB
Languages
JavaScript 75.6%
Rust 22.3%
Shell 0.9%
Batchfile 0.8%
CSS 0.2%
Other 0.1%