@friedbotstudio/create-baseline 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +222 -0
  3. package/bin/cli.js +247 -0
  4. package/obj/template/.claude/agents/swarm-worker.md +52 -0
  5. package/obj/template/.claude/bin/LICENSE +201 -0
  6. package/obj/template/.claude/bin/NOTICE +48 -0
  7. package/obj/template/.claude/commands/approve-spec.md +29 -0
  8. package/obj/template/.claude/commands/approve-swarm.md +27 -0
  9. package/obj/template/.claude/commands/grant-commit.md +19 -0
  10. package/obj/template/.claude/commands/init-project.md +191 -0
  11. package/obj/template/.claude/hooks/artifact_template_guard.sh +141 -0
  12. package/obj/template/.claude/hooks/consent_gate_grant.sh +89 -0
  13. package/obj/template/.claude/hooks/destructive_cmd_guard.sh +42 -0
  14. package/obj/template/.claude/hooks/env_guard.sh +36 -0
  15. package/obj/template/.claude/hooks/git_commit_guard.sh +93 -0
  16. package/obj/template/.claude/hooks/harness_continuation.sh +121 -0
  17. package/obj/template/.claude/hooks/lib/__pycache__/resume_writer.cpython-314.pyc +0 -0
  18. package/obj/template/.claude/hooks/lib/common.sh +328 -0
  19. package/obj/template/.claude/hooks/lib/resume_writer.py +341 -0
  20. package/obj/template/.claude/hooks/lint_runner.sh +55 -0
  21. package/obj/template/.claude/hooks/memory_pre_compact.sh +36 -0
  22. package/obj/template/.claude/hooks/memory_session_start.sh +244 -0
  23. package/obj/template/.claude/hooks/memory_stop.sh +173 -0
  24. package/obj/template/.claude/hooks/plantuml_syntax_guard.sh +161 -0
  25. package/obj/template/.claude/hooks/process_lifecycle_guard.sh +89 -0
  26. package/obj/template/.claude/hooks/setup_guard.sh +50 -0
  27. package/obj/template/.claude/hooks/spec_approval_guard.sh +81 -0
  28. package/obj/template/.claude/hooks/spec_design_calls_guard.sh +183 -0
  29. package/obj/template/.claude/hooks/spec_diagram_presence_guard.sh +141 -0
  30. package/obj/template/.claude/hooks/swarm_approval_guard.sh +39 -0
  31. package/obj/template/.claude/hooks/swarm_boundary_guard.sh +136 -0
  32. package/obj/template/.claude/hooks/tdd_order_guard.sh +176 -0
  33. package/obj/template/.claude/hooks/test_runner.sh +75 -0
  34. package/obj/template/.claude/hooks/tests/fixtures/ac008_byte_equal_reference.txt +12 -0
  35. package/obj/template/.claude/hooks/tests/memory_session_start_test.sh +285 -0
  36. package/obj/template/.claude/hooks/track_guard.sh +127 -0
  37. package/obj/template/.claude/hooks/verify_pass_guard.sh +88 -0
  38. package/obj/template/.claude/memory/README.md +108 -0
  39. package/obj/template/.claude/memory/_pending.md +15 -0
  40. package/obj/template/.claude/memory/_resume.md +12 -0
  41. package/obj/template/.claude/memory/conventions.md +26 -0
  42. package/obj/template/.claude/memory/decisions.md +29 -0
  43. package/obj/template/.claude/memory/landmarks.md +26 -0
  44. package/obj/template/.claude/memory/landmines.md +27 -0
  45. package/obj/template/.claude/memory/libraries.md +27 -0
  46. package/obj/template/.claude/memory/pending-questions.md +28 -0
  47. package/obj/template/.claude/project.json +221 -0
  48. package/obj/template/.claude/settings.json +110 -0
  49. package/obj/template/.claude/skills/archive/SKILL.md +48 -0
  50. package/obj/template/.claude/skills/archive/archive.sh +145 -0
  51. package/obj/template/.claude/skills/audit-baseline/SKILL.md +80 -0
  52. package/obj/template/.claude/skills/audit-baseline/audit.sh +919 -0
  53. package/obj/template/.claude/skills/brd/SKILL.md +44 -0
  54. package/obj/template/.claude/skills/brd/template.md +83 -0
  55. package/obj/template/.claude/skills/chore/SKILL.md +99 -0
  56. package/obj/template/.claude/skills/claude-automation-recommender/LICENSE +202 -0
  57. package/obj/template/.claude/skills/claude-automation-recommender/NOTICE +69 -0
  58. package/obj/template/.claude/skills/claude-automation-recommender/SKILL.md +358 -0
  59. package/obj/template/.claude/skills/claude-automation-recommender/references/hooks-patterns.md +226 -0
  60. package/obj/template/.claude/skills/claude-automation-recommender/references/mcp-servers.md +263 -0
  61. package/obj/template/.claude/skills/claude-automation-recommender/references/plugins-reference.md +98 -0
  62. package/obj/template/.claude/skills/claude-automation-recommender/references/skills-reference.md +408 -0
  63. package/obj/template/.claude/skills/claude-automation-recommender/references/subagent-templates.md +181 -0
  64. package/obj/template/.claude/skills/code-structure/SKILL.md +204 -0
  65. package/obj/template/.claude/skills/commit/SKILL.md +21 -0
  66. package/obj/template/.claude/skills/copywriting/SKILL.md +252 -0
  67. package/obj/template/.claude/skills/copywriting/evals/evals.json +111 -0
  68. package/obj/template/.claude/skills/copywriting/references/ai-writing-detection.md +200 -0
  69. package/obj/template/.claude/skills/copywriting/references/copy-frameworks.md +344 -0
  70. package/obj/template/.claude/skills/copywriting/references/natural-transitions.md +272 -0
  71. package/obj/template/.claude/skills/design-ui/SKILL.md +175 -0
  72. package/obj/template/.claude/skills/design-ui/references/design-vs-development.md +89 -0
  73. package/obj/template/.claude/skills/design-ui/references/intent-table.md +64 -0
  74. package/obj/template/.claude/skills/design-ui/references/orchestration.md +121 -0
  75. package/obj/template/.claude/skills/design-ui/references/state-machine.md +125 -0
  76. package/obj/template/.claude/skills/document/SKILL.md +66 -0
  77. package/obj/template/.claude/skills/documentation/SKILL.md +50 -0
  78. package/obj/template/.claude/skills/harness/SKILL.md +169 -0
  79. package/obj/template/.claude/skills/humanizer/SKILL.md +489 -0
  80. package/obj/template/.claude/skills/humanizer/references/ai-writing-detection.md +208 -0
  81. package/obj/template/.claude/skills/impeccable/PROJECT_NOTES.md +22 -0
  82. package/obj/template/.claude/skills/impeccable/SKILL.md +153 -0
  83. package/obj/template/.claude/skills/impeccable/agents/openai.yaml +4 -0
  84. package/obj/template/.claude/skills/impeccable/reference/adapt.md +190 -0
  85. package/obj/template/.claude/skills/impeccable/reference/animate.md +173 -0
  86. package/obj/template/.claude/skills/impeccable/reference/audit.md +134 -0
  87. package/obj/template/.claude/skills/impeccable/reference/bolder.md +113 -0
  88. package/obj/template/.claude/skills/impeccable/reference/brand.md +104 -0
  89. package/obj/template/.claude/skills/impeccable/reference/clarify.md +174 -0
  90. package/obj/template/.claude/skills/impeccable/reference/cognitive-load.md +106 -0
  91. package/obj/template/.claude/skills/impeccable/reference/color-and-contrast.md +105 -0
  92. package/obj/template/.claude/skills/impeccable/reference/colorize.md +154 -0
  93. package/obj/template/.claude/skills/impeccable/reference/craft.md +138 -0
  94. package/obj/template/.claude/skills/impeccable/reference/critique.md +213 -0
  95. package/obj/template/.claude/skills/impeccable/reference/delight.md +302 -0
  96. package/obj/template/.claude/skills/impeccable/reference/distill.md +111 -0
  97. package/obj/template/.claude/skills/impeccable/reference/document.md +427 -0
  98. package/obj/template/.claude/skills/impeccable/reference/extract.md +70 -0
  99. package/obj/template/.claude/skills/impeccable/reference/harden.md +347 -0
  100. package/obj/template/.claude/skills/impeccable/reference/heuristics-scoring.md +234 -0
  101. package/obj/template/.claude/skills/impeccable/reference/interaction-design.md +195 -0
  102. package/obj/template/.claude/skills/impeccable/reference/layout.md +141 -0
  103. package/obj/template/.claude/skills/impeccable/reference/live.md +513 -0
  104. package/obj/template/.claude/skills/impeccable/reference/motion-design.md +99 -0
  105. package/obj/template/.claude/skills/impeccable/reference/onboard.md +234 -0
  106. package/obj/template/.claude/skills/impeccable/reference/optimize.md +258 -0
  107. package/obj/template/.claude/skills/impeccable/reference/overdrive.md +130 -0
  108. package/obj/template/.claude/skills/impeccable/reference/personas.md +178 -0
  109. package/obj/template/.claude/skills/impeccable/reference/polish.md +232 -0
  110. package/obj/template/.claude/skills/impeccable/reference/product.md +62 -0
  111. package/obj/template/.claude/skills/impeccable/reference/quieter.md +99 -0
  112. package/obj/template/.claude/skills/impeccable/reference/responsive-design.md +114 -0
  113. package/obj/template/.claude/skills/impeccable/reference/shape.md +136 -0
  114. package/obj/template/.claude/skills/impeccable/reference/spatial-design.md +100 -0
  115. package/obj/template/.claude/skills/impeccable/reference/teach.md +137 -0
  116. package/obj/template/.claude/skills/impeccable/reference/typeset.md +124 -0
  117. package/obj/template/.claude/skills/impeccable/reference/typography.md +159 -0
  118. package/obj/template/.claude/skills/impeccable/reference/ux-writing.md +107 -0
  119. package/obj/template/.claude/skills/impeccable/scripts/cleanup-deprecated.mjs +284 -0
  120. package/obj/template/.claude/skills/impeccable/scripts/command-metadata.json +94 -0
  121. package/obj/template/.claude/skills/impeccable/scripts/design-parser.mjs +820 -0
  122. package/obj/template/.claude/skills/impeccable/scripts/detect-csp.mjs +198 -0
  123. package/obj/template/.claude/skills/impeccable/scripts/is-generated.mjs +69 -0
  124. package/obj/template/.claude/skills/impeccable/scripts/live-accept.mjs +465 -0
  125. package/obj/template/.claude/skills/impeccable/scripts/live-browser.js +4684 -0
  126. package/obj/template/.claude/skills/impeccable/scripts/live-inject.mjs +436 -0
  127. package/obj/template/.claude/skills/impeccable/scripts/live-poll.mjs +187 -0
  128. package/obj/template/.claude/skills/impeccable/scripts/live-server.mjs +679 -0
  129. package/obj/template/.claude/skills/impeccable/scripts/live-wrap.mjs +395 -0
  130. package/obj/template/.claude/skills/impeccable/scripts/live.mjs +247 -0
  131. package/obj/template/.claude/skills/impeccable/scripts/load-context.mjs +93 -0
  132. package/obj/template/.claude/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
  133. package/obj/template/.claude/skills/impeccable/scripts/pin.mjs +214 -0
  134. package/obj/template/.claude/skills/implement/SKILL.md +83 -0
  135. package/obj/template/.claude/skills/intake/SKILL.md +46 -0
  136. package/obj/template/.claude/skills/intake/template.md +61 -0
  137. package/obj/template/.claude/skills/integrate/SKILL.md +62 -0
  138. package/obj/template/.claude/skills/memory-flush/SKILL.md +172 -0
  139. package/obj/template/.claude/skills/memory-flush/sweep.py +286 -0
  140. package/obj/template/.claude/skills/memory-flush/tests/run.sh +327 -0
  141. package/obj/template/.claude/skills/prose/SKILL.md +119 -0
  142. package/obj/template/.claude/skills/rca/SKILL.md +42 -0
  143. package/obj/template/.claude/skills/rca/template.md +83 -0
  144. package/obj/template/.claude/skills/research/SKILL.md +75 -0
  145. package/obj/template/.claude/skills/scenario/SKILL.md +64 -0
  146. package/obj/template/.claude/skills/scout/SKILL.md +72 -0
  147. package/obj/template/.claude/skills/security/SKILL.md +75 -0
  148. package/obj/template/.claude/skills/simplify/SKILL.md +67 -0
  149. package/obj/template/.claude/skills/spec/SKILL.md +69 -0
  150. package/obj/template/.claude/skills/spec/template.md +274 -0
  151. package/obj/template/.claude/skills/spec-diagram-review/SKILL.md +81 -0
  152. package/obj/template/.claude/skills/spec-lint/SKILL.md +55 -0
  153. package/obj/template/.claude/skills/spec-lint/lint.sh +218 -0
  154. package/obj/template/.claude/skills/spec-render/SKILL.md +45 -0
  155. package/obj/template/.claude/skills/spec-render/render.sh +109 -0
  156. package/obj/template/.claude/skills/spec-traceability-review/SKILL.md +72 -0
  157. package/obj/template/.claude/skills/swarm-dispatch/SKILL.md +212 -0
  158. package/obj/template/.claude/skills/swarm-dispatch/swarm_merge.sh +154 -0
  159. package/obj/template/.claude/skills/swarm-plan/SKILL.md +90 -0
  160. package/obj/template/.claude/skills/swarm-plan/validate.sh +181 -0
  161. package/obj/template/.claude/skills/tdd/SKILL.md +100 -0
  162. package/obj/template/.claude/skills/technical-tutorials/SKILL.md +569 -0
  163. package/obj/template/.claude/skills/technical-tutorials/references/audience-context-README.md +53 -0
  164. package/obj/template/.claude/skills/technical-tutorials/references/audience-context.md +246 -0
  165. package/obj/template/.claude/skills/technical-tutorials/references/audience-example.md +175 -0
  166. package/obj/template/.claude/skills/technical-tutorials/references/audience-template.md +152 -0
  167. package/obj/template/.claude/skills/triage/SKILL.md +55 -0
  168. package/obj/template/.claude/skills/verify/SKILL.md +74 -0
  169. package/obj/template/.mcp.json +24 -0
  170. package/obj/template/CLAUDE.md +327 -0
  171. package/obj/template/docs/init/seed.md +585 -0
  172. package/obj/template/manifest.json +214 -0
  173. package/package.json +48 -0
  174. package/src/.mcp.template.json +24 -0
  175. package/src/.npmrc.template +2 -0
  176. package/src/CLAUDE.template.md +327 -0
  177. package/src/agents/swarm-worker.template.md +51 -0
  178. package/src/cli/conflict.js +31 -0
  179. package/src/cli/doctor.js +152 -0
  180. package/src/cli/install.js +93 -0
  181. package/src/cli/io.js +27 -0
  182. package/src/cli/manifest.js +38 -0
  183. package/src/cli/mcp.js +54 -0
  184. package/src/cli/merge.js +107 -0
  185. package/src/cli/plantuml.js +121 -0
  186. package/src/cli/util.js +10 -0
  187. package/src/memory/_pending.template.md +15 -0
  188. package/src/memory/_resume.template.md +12 -0
  189. package/src/memory/conventions.template.md +26 -0
  190. package/src/memory/decisions.template.md +29 -0
  191. package/src/memory/landmarks.template.md +26 -0
  192. package/src/memory/landmines.template.md +27 -0
  193. package/src/memory/libraries.template.md +27 -0
  194. package/src/memory/pending-questions.template.md +28 -0
  195. package/src/project.template.json +221 -0
  196. package/src/seed.template.md +585 -0
  197. package/src/settings.template.json +110 -0
@@ -0,0 +1,22 @@
1
+ # impeccable — project-side modifications
2
+
3
+ Per Apache 2.0 §4(b), files modified from upstream are recorded here.
4
+
5
+ ## 2026-04-28 — Path remap
6
+
7
+ The vendored `impeccable` skill assumes its scripts live under `.agents/skills/impeccable/`. In this baseline they live under `.claude/skills/impeccable/`. The following files were edited in place to make the runtime invocations match the actual layout:
8
+
9
+ - `SKILL.md` lines 22, 149 — `.agents/skills/impeccable/scripts/<X>` → `.claude/skills/impeccable/scripts/<X>`.
10
+ - `reference/document.md` lines 336, 401 — same replacement.
11
+ - `reference/teach.md` lines 15, 133 — same replacement.
12
+ - `reference/live.md` line 29 — same replacement.
13
+
14
+ **Not modified (intentional):**
15
+
16
+ - `scripts/cleanup-deprecated.mjs` and `scripts/pin.mjs` retain `.agents` in their `['.claude', '.cursor', '.gemini', '.codex', '.agents', ...]` arrays. Those entries identify sibling agent-tool directories the scripts may need to enumerate or clean up, not paths to this skill's own assets. Renaming would corrupt the cross-tool detection.
17
+
18
+ The `$impeccable teach` / `$impeccable document` / `$impeccable live` shell aliases referenced in upstream prose remain as-is. They're shell shortcuts the user is expected to provide locally; the scripts they wrap are reachable via the corrected `node .claude/skills/impeccable/scripts/<...>.mjs` form.
19
+
20
+ ## License
21
+
22
+ Upstream skill licensed Apache 2.0. No `LICENSE` / `NOTICE` files were vendored alongside the original — if the upstream attribution is later confirmed and re-vendored, those should land at `.claude/skills/impeccable/{LICENSE,NOTICE}` and be added to `audit-baseline`'s checks.
@@ -0,0 +1,153 @@
1
+ ---
2
+ name: impeccable
3
+ owner: baseline
4
+ description: 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.
5
+ ---
6
+
7
+ Designs and iterates production-grade frontend interfaces. Real working code, committed design choices, exceptional craft.
8
+
9
+ ## Setup (non-optional)
10
+
11
+ Two steps before any design work. Both are required. Skipping either produces generic output that ignores the project.
12
+
13
+ ### 1. Context gathering
14
+
15
+ Two files at the project root, case-insensitive:
16
+
17
+ - **PRODUCT.md** — required. Users, brand, tone, anti-references, strategic principles.
18
+ - **DESIGN.md** — optional, strongly recommended. Colors, typography, elevation, components.
19
+
20
+ Load both in one call:
21
+
22
+ ```bash
23
+ node .claude/skills/impeccable/scripts/load-context.mjs
24
+ ```
25
+
26
+ Consume the full JSON output. Never pipe through `head`, `tail`, `grep`, or `jq`.
27
+
28
+ If the output is already in this session's conversation history, don't re-run. Exceptions requiring a fresh load: you just ran `$impeccable teach` or `$impeccable document` (they rewrite the files), or the user manually edited one.
29
+
30
+ `$impeccable live` already warms context via `live.mjs` — if you've run `live.mjs`, don't also run `load-context.mjs` this session.
31
+
32
+ If PRODUCT.md is missing, empty, or placeholder (`[TODO]` markers, <200 chars): run `$impeccable teach`, then resume the user's original task with the fresh context.
33
+
34
+ If DESIGN.md is missing: nudge once per session (*"Run `$impeccable document` for more on-brand output"*), then proceed.
35
+
36
+ ### 2. Register
37
+
38
+ Every design task is **brand** (marketing, landing, campaign, long-form content, portfolio — design IS the product) or **product** (app UI, admin, dashboard, tool — design SERVES the product).
39
+
40
+ Identify before designing. Priority: (1) cue in the task itself ("landing page" vs "dashboard"); (2) the surface in focus (the page, file, or route being worked on); (3) `register` field in PRODUCT.md. First match wins.
41
+
42
+ If PRODUCT.md lacks the `register` field (legacy), infer it once from its "Users" and "Product Purpose" sections, then cache the inferred value for the session. Suggest the user run `$impeccable teach` to add the field explicitly.
43
+
44
+ Load the matching reference: [reference/brand.md](reference/brand.md) or [reference/product.md](reference/product.md). The shared design laws below apply to both.
45
+
46
+ ## Shared design laws
47
+
48
+ Apply to every design, both registers. Match implementation complexity to the aesthetic vision — maximalism needs elaborate code, minimalism needs precision. Interpret creatively. Vary across projects; never converge on the same choices. GPT is capable of extraordinary work — don't hold back.
49
+
50
+ ### Color
51
+
52
+ - Use OKLCH. Reduce chroma as lightness approaches 0 or 100 — high chroma at extremes looks garish.
53
+ - Never use `#000` or `#fff`. Tint every neutral toward the brand hue (chroma 0.005–0.01 is enough).
54
+ - Pick a **color strategy** before picking colors. Four steps on the commitment axis:
55
+ - **Restrained** — tinted neutrals + one accent ≤10%. Product default; brand minimalism.
56
+ - **Committed** — one saturated color carries 30–60% of the surface. Brand default for identity-driven pages.
57
+ - **Full palette** — 3–4 named roles, each used deliberately. Brand campaigns; product data viz.
58
+ - **Drenched** — the surface IS the color. Brand heroes, campaign pages.
59
+ - The "one accent ≤10%" rule is Restrained only. Committed / Full palette / Drenched exceed it on purpose. Don't collapse every design to Restrained by reflex.
60
+
61
+ ### Theme
62
+
63
+ Dark vs. light is never a default. Not dark "because tools look cool dark." Not light "to be safe."
64
+
65
+ Before choosing, write one sentence of physical scene: who uses this, where, under what ambient light, in what mood. If the sentence doesn't force the answer, it's not concrete enough — add detail until it does.
66
+
67
+ "Observability dashboard" does not force an answer. "SRE glancing at incident severity on a 27-inch monitor at 2am in a dim room" does. Run the sentence, not the category.
68
+
69
+ ### Typography
70
+
71
+ - Cap body line length at 65–75ch.
72
+ - Hierarchy through scale + weight contrast (≥1.25 ratio between steps). Avoid flat scales.
73
+
74
+ ### Layout
75
+
76
+ - Vary spacing for rhythm. Same padding everywhere is monotony.
77
+ - Cards are the lazy answer. Use them only when they're truly the best affordance. Nested cards are always wrong.
78
+ - Don't wrap everything in a container. Most things don't need one.
79
+
80
+ ### Motion
81
+
82
+ - Don't animate CSS layout properties.
83
+ - Ease out with exponential curves (ease-out-quart / quint / expo). No bounce, no elastic.
84
+
85
+ ### Absolute bans
86
+
87
+ Match-and-refuse. If you're about to write any of these, rewrite the element with different structure.
88
+
89
+ - **Side-stripe borders.** `border-left` or `border-right` greater than 1px as a colored accent on cards, list items, callouts, or alerts. Never intentional. Rewrite with full borders, background tints, leading numbers/icons, or nothing.
90
+ - **Gradient text.** `background-clip: text` combined with a gradient background. Decorative, never meaningful. Use a single solid color. Emphasis via weight or size.
91
+ - **Glassmorphism as default.** Blurs and glass cards used decoratively. Rare and purposeful, or nothing.
92
+ - **The hero-metric template.** Big number, small label, supporting stats, gradient accent. SaaS cliché.
93
+ - **Identical card grids.** Same-sized cards with icon + heading + text, repeated endlessly.
94
+ - **Modal as first thought.** Modals are usually laziness. Exhaust inline / progressive alternatives first.
95
+
96
+ ### Copy
97
+
98
+ - Every word earns its place. No restated headings, no intros that repeat the title.
99
+ - **No em dashes.** Use commas, colons, semicolons, periods, or parentheses. Also not `--`.
100
+
101
+ ### The AI slop test
102
+
103
+ If someone could look at this interface and say "AI made that" without doubt, it's failed. Cross-register failures are the absolute bans above. Register-specific failures live in each reference.
104
+
105
+ **Category-reflex check.** If someone could guess the theme and palette from the category name alone — "observability → dark blue", "healthcare → white + teal", "finance → navy + gold", "crypto → neon on black" — it's the training-data reflex. Rework the scene sentence and color strategy until the answer is no longer obvious from the domain.
106
+
107
+ ## Commands
108
+
109
+ | Command | Category | Description | Reference |
110
+ |---|---|---|---|
111
+ | `craft [feature]` | Build | Shape, then build a feature end-to-end | [reference/craft.md](reference/craft.md) |
112
+ | `shape [feature]` | Build | Plan UX/UI before writing code | [reference/shape.md](reference/shape.md) |
113
+ | `teach` | Build | Set up PRODUCT.md and DESIGN.md context | [reference/teach.md](reference/teach.md) |
114
+ | `document` | Build | Generate DESIGN.md from existing project code | [reference/document.md](reference/document.md) |
115
+ | `extract [target]` | Build | Pull reusable tokens and components into design system | [reference/extract.md](reference/extract.md) |
116
+ | `critique [target]` | Evaluate | UX design review with heuristic scoring | [reference/critique.md](reference/critique.md) |
117
+ | `audit [target]` | Evaluate | Technical quality checks (a11y, perf, responsive) | [reference/audit.md](reference/audit.md) |
118
+ | `polish [target]` | Refine | Final quality pass before shipping | [reference/polish.md](reference/polish.md) |
119
+ | `bolder [target]` | Refine | Amplify safe or bland designs | [reference/bolder.md](reference/bolder.md) |
120
+ | `quieter [target]` | Refine | Tone down aggressive or overstimulating designs | [reference/quieter.md](reference/quieter.md) |
121
+ | `distill [target]` | Refine | Strip to essence, remove complexity | [reference/distill.md](reference/distill.md) |
122
+ | `harden [target]` | Refine | Production-ready: errors, i18n, edge cases | [reference/harden.md](reference/harden.md) |
123
+ | `onboard [target]` | Refine | Design first-run flows, empty states, activation | [reference/onboard.md](reference/onboard.md) |
124
+ | `animate [target]` | Enhance | Add purposeful animations and motion | [reference/animate.md](reference/animate.md) |
125
+ | `colorize [target]` | Enhance | Add strategic color to monochromatic UIs | [reference/colorize.md](reference/colorize.md) |
126
+ | `typeset [target]` | Enhance | Improve typography hierarchy and fonts | [reference/typeset.md](reference/typeset.md) |
127
+ | `layout [target]` | Enhance | Fix spacing, rhythm, and visual hierarchy | [reference/layout.md](reference/layout.md) |
128
+ | `delight [target]` | Enhance | Add personality and memorable touches | [reference/delight.md](reference/delight.md) |
129
+ | `overdrive [target]` | Enhance | Push past conventional limits | [reference/overdrive.md](reference/overdrive.md) |
130
+ | `clarify [target]` | Fix | Improve UX copy, labels, and error messages | [reference/clarify.md](reference/clarify.md) |
131
+ | `adapt [target]` | Fix | Adapt for different devices and screen sizes | [reference/adapt.md](reference/adapt.md) |
132
+ | `optimize [target]` | Fix | Diagnose and fix UI performance | [reference/optimize.md](reference/optimize.md) |
133
+ | `live` | Iterate | Visual variant mode: pick elements in the browser, generate alternatives | [reference/live.md](reference/live.md) |
134
+
135
+ Plus two management commands — `pin <command>` and `unpin <command>`, detailed below.
136
+
137
+ ### Routing rules
138
+
139
+ 1. **No argument** — render the table above as the user-facing command menu, grouped by category. Ask what they'd like to do.
140
+ 2. **First word matches a command** — load its reference file and follow its instructions. Everything after the command name is the target.
141
+ 3. **First word doesn't match** — general design invocation. Apply the setup steps, shared design laws, and the loaded register reference, using the full argument as context.
142
+
143
+ Setup (context gathering, register) is already loaded by then; sub-commands don't re-invoke `$impeccable`.
144
+
145
+ ## Pin / Unpin
146
+
147
+ **Pin** creates a standalone shortcut so `$<command>` invokes `$impeccable <command>` directly. **Unpin** removes it. The script writes to every harness directory present in the project.
148
+
149
+ ```bash
150
+ node .claude/skills/impeccable/scripts/pin.mjs <pin|unpin> <command>
151
+ ```
152
+
153
+ Valid `<command>` is any command from the table above. Report the script's result concisely — confirm the new shortcut on success, relay stderr verbatim on error.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: Impeccable
3
+ short_description: Use when the user wants to design, redesign, shape, critique, audit, polish, clarify,...
4
+ default_prompt: Use Impeccable to redesign, critique, audit, or polish this frontend.
@@ -0,0 +1,190 @@
1
+ > **Additional context needed**: target platforms/devices and usage contexts.
2
+
3
+ Adapt existing designs to work effectively across different contexts - different screen sizes, devices, platforms, or use cases.
4
+
5
+
6
+ ---
7
+
8
+ ## Assess Adaptation Challenge
9
+
10
+ Understand what needs adaptation and why:
11
+
12
+ 1. **Identify the source context**:
13
+ - What was it designed for originally? (Desktop web? Mobile app?)
14
+ - What assumptions were made? (Large screen? Mouse input? Fast connection?)
15
+ - What works well in current context?
16
+
17
+ 2. **Understand target context**:
18
+ - **Device**: Mobile, tablet, desktop, TV, watch, print?
19
+ - **Input method**: Touch, mouse, keyboard, voice, gamepad?
20
+ - **Screen constraints**: Size, resolution, orientation?
21
+ - **Connection**: Fast wifi, slow 3G, offline?
22
+ - **Usage context**: On-the-go vs desk, quick glance vs focused reading?
23
+ - **User expectations**: What do users expect on this platform?
24
+
25
+ 3. **Identify adaptation challenges**:
26
+ - What won't fit? (Content, navigation, features)
27
+ - What won't work? (Hover states on touch, tiny touch targets)
28
+ - What's inappropriate? (Desktop patterns on mobile, mobile patterns on desktop)
29
+
30
+ **CRITICAL**: Adaptation is not just scaling - it's rethinking the experience for the new context.
31
+
32
+ ## Plan Adaptation Strategy
33
+
34
+ Create context-appropriate strategy:
35
+
36
+ ### Mobile Adaptation (Desktop → Mobile)
37
+
38
+ **Layout Strategy**:
39
+ - Single column instead of multi-column
40
+ - Vertical stacking instead of side-by-side
41
+ - Full-width components instead of fixed widths
42
+ - Bottom navigation instead of top/side navigation
43
+
44
+ **Interaction Strategy**:
45
+ - Touch targets 44x44px minimum (not hover-dependent)
46
+ - Swipe gestures where appropriate (lists, carousels)
47
+ - Bottom sheets instead of dropdowns
48
+ - Thumbs-first design (controls within thumb reach)
49
+ - Larger tap areas with more spacing
50
+
51
+ **Content Strategy**:
52
+ - Progressive disclosure (don't show everything at once)
53
+ - Prioritize primary content (secondary content in tabs/accordions)
54
+ - Shorter text (more concise)
55
+ - Larger text (16px minimum)
56
+
57
+ **Navigation Strategy**:
58
+ - Hamburger menu or bottom navigation
59
+ - Reduce navigation complexity
60
+ - Sticky headers for context
61
+ - Back button in navigation flow
62
+
63
+ ### Tablet Adaptation (Hybrid Approach)
64
+
65
+ **Layout Strategy**:
66
+ - Two-column layouts (not single or three-column)
67
+ - Side panels for secondary content
68
+ - Master-detail views (list + detail)
69
+ - Adaptive based on orientation (portrait vs landscape)
70
+
71
+ **Interaction Strategy**:
72
+ - Support both touch and pointer
73
+ - Touch targets 44x44px but allow denser layouts than phone
74
+ - Side navigation drawers
75
+ - Multi-column forms where appropriate
76
+
77
+ ### Desktop Adaptation (Mobile → Desktop)
78
+
79
+ **Layout Strategy**:
80
+ - Multi-column layouts (use horizontal space)
81
+ - Side navigation always visible
82
+ - Multiple information panels simultaneously
83
+ - Fixed widths with max-width constraints (don't stretch to 4K)
84
+
85
+ **Interaction Strategy**:
86
+ - Hover states for additional information
87
+ - Keyboard shortcuts
88
+ - Right-click context menus
89
+ - Drag and drop where helpful
90
+ - Multi-select with Shift/Cmd
91
+
92
+ **Content Strategy**:
93
+ - Show more information upfront (less progressive disclosure)
94
+ - Data tables with many columns
95
+ - Richer visualizations
96
+ - More detailed descriptions
97
+
98
+ ### Print Adaptation (Screen → Print)
99
+
100
+ **Layout Strategy**:
101
+ - Page breaks at logical points
102
+ - Remove navigation, footer, interactive elements
103
+ - Black and white (or limited color)
104
+ - Proper margins for binding
105
+
106
+ **Content Strategy**:
107
+ - Expand shortened content (show full URLs, hidden sections)
108
+ - Add page numbers, headers, footers
109
+ - Include metadata (print date, page title)
110
+ - Convert charts to print-friendly versions
111
+
112
+ ### Email Adaptation (Web → Email)
113
+
114
+ **Layout Strategy**:
115
+ - Narrow width (600px max)
116
+ - Single column only
117
+ - Inline CSS (no external stylesheets)
118
+ - Table-based layouts (for email client compatibility)
119
+
120
+ **Interaction Strategy**:
121
+ - Large, obvious CTAs (buttons not text links)
122
+ - No hover states (not reliable)
123
+ - Deep links to web app for complex interactions
124
+
125
+ ## Implement Adaptations
126
+
127
+ Apply changes systematically:
128
+
129
+ ### Responsive Breakpoints
130
+
131
+ Choose appropriate breakpoints:
132
+ - Mobile: 320px-767px
133
+ - Tablet: 768px-1023px
134
+ - Desktop: 1024px+
135
+ - Or content-driven breakpoints (where design breaks)
136
+
137
+ ### Layout Adaptation Techniques
138
+
139
+ - **CSS Grid/Flexbox**: Reflow layouts automatically
140
+ - **Container Queries**: Adapt based on container, not viewport
141
+ - **`clamp()`**: Fluid sizing between min and max
142
+ - **Media queries**: Different styles for different contexts
143
+ - **Display properties**: Show/hide elements per context
144
+
145
+ ### Touch Adaptation
146
+
147
+ - Increase touch target sizes (44x44px minimum)
148
+ - Add more spacing between interactive elements
149
+ - Remove hover-dependent interactions
150
+ - Add touch feedback (ripples, highlights)
151
+ - Consider thumb zones (easier to reach bottom than top)
152
+
153
+ ### Content Adaptation
154
+
155
+ - Use `display: none` sparingly (still downloads)
156
+ - Progressive enhancement (core content first, enhancements on larger screens)
157
+ - Lazy loading for off-screen content
158
+ - Responsive images (`srcset`, `picture` element)
159
+
160
+ ### Navigation Adaptation
161
+
162
+ - Transform complex nav to hamburger/drawer on mobile
163
+ - Bottom nav bar for mobile apps
164
+ - Persistent side navigation on desktop
165
+ - Breadcrumbs on smaller screens for context
166
+
167
+ **IMPORTANT**: Test on real devices, not just browser DevTools. Device emulation is helpful but not perfect.
168
+
169
+ **NEVER**:
170
+ - Hide core functionality on mobile (if it matters, make it work)
171
+ - Assume desktop = powerful device (consider accessibility, older machines)
172
+ - Use different information architecture across contexts (confusing)
173
+ - Break user expectations for platform (mobile users expect mobile patterns)
174
+ - Forget landscape orientation on mobile/tablet
175
+ - Use generic breakpoints blindly (use content-driven breakpoints)
176
+ - Ignore touch on desktop (many desktop devices have touch)
177
+
178
+ ## Verify Adaptations
179
+
180
+ Test thoroughly across contexts:
181
+
182
+ - **Real devices**: Test on actual phones, tablets, desktops
183
+ - **Different orientations**: Portrait and landscape
184
+ - **Different browsers**: Safari, Chrome, Firefox, Edge
185
+ - **Different OS**: iOS, Android, Windows, macOS
186
+ - **Different input methods**: Touch, mouse, keyboard
187
+ - **Edge cases**: Very small screens (320px), very large screens (4K)
188
+ - **Slow connections**: Test on throttled network
189
+
190
+ Remember: You're a cross-platform design expert. Make experiences that feel native to each context while maintaining brand and functionality consistency. Adapt intentionally, test thoroughly.
@@ -0,0 +1,173 @@
1
+ > **Additional context needed**: performance constraints.
2
+
3
+ Analyze a feature and strategically add animations and micro-interactions that enhance understanding, provide feedback, and create delight.
4
+
5
+ ---
6
+
7
+ ## Register
8
+
9
+ Brand: orchestrated page-load sequences, staggered reveals, scroll-driven animation. Motion is part of the voice; one well-rehearsed entrance beats scattered micro-interactions.
10
+
11
+ Product: 150–250 ms on most transitions. Motion conveys state — feedback, reveal, loading, transitions between views. No page-load choreography; users are in a task and won't wait for it.
12
+
13
+ ---
14
+
15
+ ## Assess Animation Opportunities
16
+
17
+ Analyze where motion would improve the experience:
18
+
19
+ 1. **Identify static areas**:
20
+ - **Missing feedback**: Actions without visual acknowledgment (button clicks, form submission, etc.)
21
+ - **Jarring transitions**: Instant state changes that feel abrupt (show/hide, page loads, route changes)
22
+ - **Unclear relationships**: Spatial or hierarchical relationships that aren't obvious
23
+ - **Lack of delight**: Functional but joyless interactions
24
+ - **Missed guidance**: Opportunities to direct attention or explain behavior
25
+
26
+ 2. **Understand the context**:
27
+ - What's the personality? (Playful vs serious, energetic vs calm)
28
+ - What's the performance budget? (Mobile-first? Complex page?)
29
+ - Who's the audience? (Motion-sensitive users? Power users who want speed?)
30
+ - What matters most? (One hero animation vs many micro-interactions?)
31
+
32
+ If any of these are unclear from the codebase, ask the user directly to clarify what you cannot infer.
33
+
34
+ **CRITICAL**: Respect `prefers-reduced-motion`. Always provide non-animated alternatives for users who need them.
35
+
36
+ ## Plan Animation Strategy
37
+
38
+ Create a purposeful animation plan:
39
+
40
+ - **Hero moment**: What's the ONE signature animation? (Page load? Hero section? Key interaction?)
41
+ - **Feedback layer**: Which interactions need acknowledgment?
42
+ - **Transition layer**: Which state changes need smoothing?
43
+ - **Delight layer**: Where can we surprise and delight?
44
+
45
+ **IMPORTANT**: One well-orchestrated experience beats scattered animations everywhere. Focus on high-impact moments.
46
+
47
+ ## Implement Animations
48
+
49
+ Add motion systematically across these categories:
50
+
51
+ ### Entrance Animations
52
+ - **Page load choreography**: Stagger element reveals (100-150ms delays), fade + slide combinations
53
+ - **Hero section**: Dramatic entrance for primary content (scale, parallax, or creative effects)
54
+ - **Content reveals**: Scroll-triggered animations using intersection observer
55
+ - **Modal/drawer entry**: Smooth slide + fade, backdrop fade, focus management
56
+
57
+ ### Micro-interactions
58
+ - **Button feedback**:
59
+ - Hover: Subtle scale (1.02-1.05), color shift, shadow increase
60
+ - Click: Quick scale down then up (0.95 → 1), ripple effect
61
+ - Loading: Spinner or pulse state
62
+ - **Form interactions**:
63
+ - Input focus: Border color transition, slight scale or glow
64
+ - Validation: Shake on error, check mark on success, smooth color transitions
65
+ - **Toggle switches**: Smooth slide + color transition (200-300ms)
66
+ - **Checkboxes/radio**: Check mark animation, ripple effect
67
+ - **Like/favorite**: Scale + rotation, particle effects, color transition
68
+
69
+ ### State Transitions
70
+ - **Show/hide**: Fade + slide (not instant), appropriate timing (200-300ms)
71
+ - **Expand/collapse**: Height transition with overflow handling, icon rotation
72
+ - **Loading states**: Skeleton screen fades, spinner animations, progress bars
73
+ - **Success/error**: Color transitions, icon animations, gentle scale pulse
74
+ - **Enable/disable**: Opacity transitions, cursor changes
75
+
76
+ ### Navigation & Flow
77
+ - **Page transitions**: Crossfade between routes, shared element transitions
78
+ - **Tab switching**: Slide indicator, content fade/slide
79
+ - **Carousel/slider**: Smooth transforms, snap points, momentum
80
+ - **Scroll effects**: Parallax layers, sticky headers with state changes, scroll progress indicators
81
+
82
+ ### Feedback & Guidance
83
+ - **Hover hints**: Tooltip fade-ins, cursor changes, element highlights
84
+ - **Drag & drop**: Lift effect (shadow + scale), drop zone highlights, smooth repositioning
85
+ - **Copy/paste**: Brief highlight flash on paste, "copied" confirmation
86
+ - **Focus flow**: Highlight path through form or workflow
87
+
88
+ ### Delight Moments
89
+ - **Empty states**: Subtle floating animations on illustrations
90
+ - **Completed actions**: Confetti, check mark flourish, success celebrations
91
+ - **Easter eggs**: Hidden interactions for discovery
92
+ - **Contextual animation**: Weather effects, time-of-day themes, seasonal touches
93
+
94
+ ## Technical Implementation
95
+
96
+ Use appropriate techniques for each animation:
97
+
98
+ ### Timing & Easing
99
+
100
+ **Durations by purpose:**
101
+ - **100-150ms**: Instant feedback (button press, toggle)
102
+ - **200-300ms**: State changes (hover, menu open)
103
+ - **300-500ms**: Layout changes (accordion, modal)
104
+ - **500-800ms**: Entrance animations (page load)
105
+
106
+ **Easing curves (use these, not CSS defaults):**
107
+ ```css
108
+ /* Recommended - natural deceleration */
109
+ --ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1); /* Smooth, refined */
110
+ --ease-out-quint: cubic-bezier(0.22, 1, 0.36, 1); /* Slightly snappier */
111
+ --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1); /* Confident, decisive */
112
+
113
+ /* AVOID - feel dated and tacky */
114
+ /* bounce: cubic-bezier(0.34, 1.56, 0.64, 1); */
115
+ /* elastic: cubic-bezier(0.68, -0.6, 0.32, 1.6); */
116
+ ```
117
+
118
+ **Exit animations are faster than entrances.** Use ~75% of enter duration.
119
+
120
+ ### CSS Animations
121
+ ```css
122
+ /* Prefer for simple, declarative animations */
123
+ - transitions for state changes
124
+ - @keyframes for complex sequences
125
+ - transform + opacity only (GPU-accelerated)
126
+ ```
127
+
128
+ ### JavaScript Animation
129
+ ```javascript
130
+ /* Use for complex, interactive animations */
131
+ - Web Animations API for programmatic control
132
+ - Framer Motion for React
133
+ - GSAP for complex sequences
134
+ ```
135
+
136
+ ### Performance
137
+ - **GPU acceleration**: Use `transform` and `opacity`, avoid layout properties
138
+ - **will-change**: Add sparingly for known expensive animations
139
+ - **Reduce paint**: Minimize repaints, use `contain` where appropriate
140
+ - **Monitor FPS**: Ensure 60fps on target devices
141
+
142
+ ### Accessibility
143
+ ```css
144
+ @media (prefers-reduced-motion: reduce) {
145
+ * {
146
+ animation-duration: 0.01ms !important;
147
+ animation-iteration-count: 1 !important;
148
+ transition-duration: 0.01ms !important;
149
+ }
150
+ }
151
+ ```
152
+
153
+ **NEVER**:
154
+ - Use bounce or elastic easing curves—they feel dated and draw attention to the animation itself
155
+ - Animate layout properties (width, height, top, left)—use transform instead
156
+ - Use durations over 500ms for feedback—it feels laggy
157
+ - Animate without purpose—every animation needs a reason
158
+ - Ignore `prefers-reduced-motion`—this is an accessibility violation
159
+ - Animate everything—animation fatigue makes interfaces feel exhausting
160
+ - Block interaction during animations unless intentional
161
+
162
+ ## Verify Quality
163
+
164
+ Test animations thoroughly:
165
+
166
+ - **Smooth at 60fps**: No jank on target devices
167
+ - **Feels natural**: Easing curves feel organic, not robotic
168
+ - **Appropriate timing**: Not too fast (jarring) or too slow (laggy)
169
+ - **Reduced motion works**: Animations disabled or simplified appropriately
170
+ - **Doesn't block**: Users can interact during/after animations
171
+ - **Adds value**: Makes interface clearer or more delightful
172
+
173
+ Remember: Motion should enhance understanding and provide feedback, not just add decoration. Animate with purpose, respect performance constraints, and always consider accessibility. Great animation is invisible - it just makes everything feel right.