mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-21 10:36:27 +03:00
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>
2.3 KiB
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:
- Loading and Web Vitals: LCP, INP, CLS. Identify what is blocking the first paint, what is delaying interaction, what is shifting layout.
- Rendering: unnecessary re-renders, missing memoization, expensive reconciliation, layout thrash in loops.
- Animations: is anything animating layout properties, are transforms and opacity the only thing touched, does
will-changehelp or hurt here. - Images and assets: lazy loading, responsive images (
srcset,sizes), modern formats (WebP, AVIF), dimensions set to prevent CLS. - 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 optimizewith 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.