Files
pbakaus_impeccable/content/site/skills/animate.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.2 KiB

tagline
tagline
Purposeful motion that conveys state, not decoration.

When to use it

/impeccable animate is for interfaces that feel lifeless, where state changes are instant and jarring, where loading just pops in, where the user never quite trusts that their click registered. Use it to add the small motions that communicate what is happening: entrances, exits, feedback, transitions between states.

Do not use it to add bounces or elastic springs for the sake of energy. That is decoration, and this skill will not give it to you.

How it works

The skill identifies static moments that would benefit from motion, then applies them with strict discipline:

  1. Entrances and exits: elements appear and leave with 200 to 300ms fades plus subtle Y or scale, never layout properties.
  2. State feedback: hover, active, focus, loading, success all communicate via motion instead of sudden swaps.
  3. Transitions between views: shared-element transitions where it makes sense, fade-through otherwise.
  4. Progress and loading: skeleton screens, determinate bars, motion that says "still working".
  5. Reduced motion: every animation has a prefers-reduced-motion fallback.

Easing is always exponential (ease-out-quart, quint, or expo) because real objects decelerate smoothly. No bounce, no elastic, no linear for anything except progress indicators.

The skill animates transform and opacity only. If you find yourself animating width, height, top, or left, it is doing the wrong thing. Use grid-template-rows for height transitions.

Try it

/impeccable animate the sign-up flow

Typical additions:

  • Email input gets a focus glow on focus-visible (opacity + shadow, 180ms)
  • Submit button shows a spinner inside itself on loading state, not a separate spinner next to it
  • Success screen enters with opacity + translateY(8px), 260ms, ease-out-quart
  • Error message slides down with grid-template-rows (not height), 220ms
  • @media (prefers-reduced-motion: reduce) fallback for every transition

Pitfalls

  • Asking for "more animation". Animate is not a dial. It adds where motion communicates, not everywhere.
  • Removing the reduced-motion fallbacks. The skill adds them automatically. Non-negotiable for accessibility.