Files
pbakaus_impeccable/content/site/skills/optimize.md
T
Paul BakausandClaude Opus 4.6 b0f44f83c6 Consolidate 18 skills into 1 /impeccable skill with 20 commands
Biggest change in a while. Users previously had 18 standalone skill
entries cluttering their /menu; now they have one entry (/impeccable)
that routes to 20 specialized commands via argument dispatch. The pin
mechanism (/impeccable pin audit) restores standalone shortcuts on
demand for commands users hit all the time.

## Architecture

- Single /impeccable skill with command router section in SKILL.md
- 20 commands served via reference files under source/skills/impeccable/reference/
- /impeccable pin <command> creates a lightweight redirect shim so users
  who prefer /audit, /polish, etc. can still have them
- Context gathering (teach) auto-runs on first use
- command-metadata.json is the single source of truth for command
  descriptions, argument hints, and relationships

## Site rewrite

- Docs URL: /skills renamed to /docs (with /skills permanent redirects)
- Homepage hero frames Impeccable as "one skill with 20 commands"
- "Get Started" split into 50/50 install + how-to-use with editorial
  numbered steps, /impeccable shown as the home command with three modes
- New /docs overview: home command hero card + dense category rows
  matching the old cheatsheet density, with leads-to/pairs-with/
  combines-with relationship metadata served from a shared source
- Cheatsheet merged into /docs, /cheatsheet redirects
- Magazine spread and mobile cards show /impeccable as a stacked
  namespace label above the command name at full display size
- Periodic table updated with craft/teach/extract as first-class cells
- Skill detail pages generate from reference files, with an editorial
  wrapper per command for tagline + body
- Tutorials and anti-patterns pages updated to use /impeccable <cmd>

## Build system

- Dead code removed (scripts/lib/transformers/shared.js)
- Build log wording fixed ("1 skill" not "1 skills (1 user-invocable)")
- generateApiData fallback branch removed (throws loudly if metadata
  missing instead of silently degrading)
- Commands API includes editorial tagline alongside the long description;
  UI surfaces prefer tagline for human display, description for auto-
  trigger keyword matching

## Gitignore

- Added .claude/scheduled_tasks.lock, .claude/settings.local.json to
  ignore list (local Claude Code state that should not be tracked).
- Harness skill directories (.claude/skills/, .agents/skills/, etc.)
  remain tracked by design: npx skills reads them from this repo at
  install time and they enable clean submodule use.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 19:45:17 -07:00

2.3 KiB

tagline
tagline
Diagnose and fix UI performance from LCP to bundle size.

When to use it

/impeccable optimize is for interfaces that feel slow. First paint takes forever, scrolling janks, images pop in late, interactions feel laggy, the bundle ships 800KB of JavaScript. Use it when the Web Vitals are bad or when users are complaining that things are sluggish.

Do not use it as premature optimization. If LCP is 1.1s and INP is 80ms, stop. The design work matters more.

How it works

The skill works through five perf dimensions:

  1. Loading and Web Vitals: LCP, INP, CLS. Identify what is blocking the first paint, what is delaying interaction, what is shifting layout.
  2. Rendering: unnecessary re-renders, missing memoization, expensive reconciliation, layout thrash in loops.
  3. Animations: is anything animating layout properties, are transforms and opacity the only thing touched, does will-change help or hurt here.
  4. Images and assets: lazy loading, responsive images (srcset, sizes), modern formats (WebP, AVIF), dimensions set to prevent CLS.
  5. Bundle size: unused imports, oversized dependencies, missing code-splitting, dead code.

The skill measures before and after. Every fix gets quantified. If a change does not move a metric, it gets rolled back.

Try it

/impeccable optimize the homepage

Expected shape:

LCP: 3.2s → 1.4s
  - Hero image preloaded (-800ms)
  - Removed render-blocking font stylesheet (-240ms)
  - Deferred analytics script (-180ms)

INP: 240ms → 90ms
  - Debounced scroll handler
  - Memoized expensive list render
  - Removed synchronous layout read in event loop

CLS: 0.18 → 0.02
  - Set dimensions on hero image and logo
  - Reserved space for async header badge

Bundle: 340KB → 180KB
  - Removed unused lodash import (52KB)
  - Code-split the playground route (78KB)
  - Dropped deprecated icon set (30KB)

Pitfalls

  • Optimizing before measuring. Without baseline metrics, you cannot tell what helped. Run /impeccable optimize with specific Web Vitals numbers, not vibes.
  • Chasing tiny wins. A 20ms improvement in INP that takes a week is rarely worth it. Optimize has diminishing returns; know when to stop.
  • Forgetting to re-measure after every change. The build could have made things worse in a way the skill did not predict. Verify.