@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,178 @@
1
+ # Persona-Based Design Testing
2
+
3
+ Test the interface through the eyes of 5 distinct user archetypes. Each persona exposes different failure modes that a single "design director" perspective would miss.
4
+
5
+ **How to use**: Select 2–3 personas most relevant to the interface being critiqued. Walk through the primary user action as each persona. Report specific red flags — not generic concerns.
6
+
7
+ ---
8
+
9
+ ## 1. Impatient Power User — "Alex"
10
+
11
+ **Profile**: Expert with similar products. Expects efficiency, hates hand-holding. Will find shortcuts or leave.
12
+
13
+ **Behaviors**:
14
+ - Skips all onboarding and instructions
15
+ - Looks for keyboard shortcuts immediately
16
+ - Tries to bulk-select, batch-edit, and automate
17
+ - Gets frustrated by required steps that feel unnecessary
18
+ - Abandons if anything feels slow or patronizing
19
+
20
+ **Test Questions**:
21
+ - Can Alex complete the core task in under 60 seconds?
22
+ - Are there keyboard shortcuts for common actions?
23
+ - Can onboarding be skipped entirely?
24
+ - Do modals have keyboard dismiss (Esc)?
25
+ - Is there a "power user" path (shortcuts, bulk actions)?
26
+
27
+ **Red Flags** (report these specifically):
28
+ - Forced tutorials or unskippable onboarding
29
+ - No keyboard navigation for primary actions
30
+ - Slow animations that can't be skipped
31
+ - One-item-at-a-time workflows where batch would be natural
32
+ - Redundant confirmation steps for low-risk actions
33
+
34
+ ---
35
+
36
+ ## 2. Confused First-Timer — "Jordan"
37
+
38
+ **Profile**: Never used this type of product. Needs guidance at every step. Will abandon rather than figure it out.
39
+
40
+ **Behaviors**:
41
+ - Reads all instructions carefully
42
+ - Hesitates before clicking anything unfamiliar
43
+ - Looks for help or support constantly
44
+ - Misunderstands jargon and abbreviations
45
+ - Takes the most literal interpretation of any label
46
+
47
+ **Test Questions**:
48
+ - Is the first action obviously clear within 5 seconds?
49
+ - Are all icons labeled with text?
50
+ - Is there contextual help at decision points?
51
+ - Does terminology assume prior knowledge?
52
+ - Is there a clear "back" or "undo" at every step?
53
+
54
+ **Red Flags** (report these specifically):
55
+ - Icon-only navigation with no labels
56
+ - Technical jargon without explanation
57
+ - No visible help option or guidance
58
+ - Ambiguous next steps after completing an action
59
+ - No confirmation that an action succeeded
60
+
61
+ ---
62
+
63
+ ## 3. Accessibility-Dependent User — "Sam"
64
+
65
+ **Profile**: Uses screen reader (VoiceOver/NVDA), keyboard-only navigation. May have low vision, motor impairment, or cognitive differences.
66
+
67
+ **Behaviors**:
68
+ - Tabs through the interface linearly
69
+ - Relies on ARIA labels and heading structure
70
+ - Cannot see hover states or visual-only indicators
71
+ - Needs adequate color contrast (4.5:1 minimum)
72
+ - May use browser zoom up to 200%
73
+
74
+ **Test Questions**:
75
+ - Can the entire primary flow be completed keyboard-only?
76
+ - Are all interactive elements focusable with visible focus indicators?
77
+ - Do images have meaningful alt text?
78
+ - Is color contrast WCAG AA compliant (4.5:1 for text)?
79
+ - Does the screen reader announce state changes (loading, success, errors)?
80
+
81
+ **Red Flags** (report these specifically):
82
+ - Click-only interactions with no keyboard alternative
83
+ - Missing or invisible focus indicators
84
+ - Meaning conveyed by color alone (red = error, green = success)
85
+ - Unlabeled form fields or buttons
86
+ - Time-limited actions without extension option
87
+ - Custom components that break screen reader flow
88
+
89
+ ---
90
+
91
+ ## 4. Deliberate Stress Tester — "Riley"
92
+
93
+ **Profile**: Methodical user who pushes interfaces beyond the happy path. Tests edge cases, tries unexpected inputs, and probes for gaps in the experience.
94
+
95
+ **Behaviors**:
96
+ - Tests edge cases intentionally (empty states, long strings, special characters)
97
+ - Submits forms with unexpected data (emoji, RTL text, very long values)
98
+ - Tries to break workflows by navigating backwards, refreshing mid-flow, or opening in multiple tabs
99
+ - Looks for inconsistencies between what the UI promises and what actually happens
100
+ - Documents problems methodically
101
+
102
+ **Test Questions**:
103
+ - What happens at the edges (0 items, 1000 items, very long text)?
104
+ - Do error states recover gracefully or leave the UI in a broken state?
105
+ - What happens on refresh mid-workflow? Is state preserved?
106
+ - Are there features that appear to work but produce broken results?
107
+ - How does the UI handle unexpected input (emoji, special chars, paste from Excel)?
108
+
109
+ **Red Flags** (report these specifically):
110
+ - Features that appear to work but silently fail or produce wrong results
111
+ - Error handling that exposes technical details or leaves UI in a broken state
112
+ - Empty states that show nothing useful ("No results" with no guidance)
113
+ - Workflows that lose user data on refresh or navigation
114
+ - Inconsistent behavior between similar interactions in different parts of the UI
115
+
116
+ ---
117
+
118
+ ## 5. Distracted Mobile User — "Casey"
119
+
120
+ **Profile**: Using phone one-handed on the go. Frequently interrupted. Possibly on a slow connection.
121
+
122
+ **Behaviors**:
123
+ - Uses thumb only — prefers bottom-of-screen actions
124
+ - Gets interrupted mid-flow and returns later
125
+ - Switches between apps frequently
126
+ - Has limited attention span and low patience
127
+ - Types as little as possible, prefers taps and selections
128
+
129
+ **Test Questions**:
130
+ - Are primary actions in the thumb zone (bottom half of screen)?
131
+ - Is state preserved if the user leaves and returns?
132
+ - Does it work on slow connections (3G)?
133
+ - Can forms leverage autocomplete and smart defaults?
134
+ - Are touch targets at least 44×44pt?
135
+
136
+ **Red Flags** (report these specifically):
137
+ - Important actions positioned at the top of the screen (unreachable by thumb)
138
+ - No state persistence — progress lost on tab switch or interruption
139
+ - Large text inputs required where selection would work
140
+ - Heavy assets loading on every page (no lazy loading)
141
+ - Tiny tap targets or targets too close together
142
+
143
+ ---
144
+
145
+ ## Selecting Personas
146
+
147
+ Choose personas based on the interface type:
148
+
149
+ | Interface Type | Primary Personas | Why |
150
+ |---------------|-----------------|-----|
151
+ | Landing page / marketing | Jordan, Riley, Casey | First impressions, trust, mobile |
152
+ | Dashboard / admin | Alex, Sam | Power users, accessibility |
153
+ | E-commerce / checkout | Casey, Riley, Jordan | Mobile, edge cases, clarity |
154
+ | Onboarding flow | Jordan, Casey | Confusion, interruption |
155
+ | Data-heavy / analytics | Alex, Sam | Efficiency, keyboard nav |
156
+ | Form-heavy / wizard | Jordan, Sam, Casey | Clarity, accessibility, mobile |
157
+
158
+ ---
159
+
160
+ ## Project-Specific Personas
161
+
162
+ If `AGENTS.md` contains a `## Design Context` section (generated by `impeccable teach`), derive 1–2 additional personas from the audience and brand information:
163
+
164
+ 1. Read the target audience description
165
+ 2. Identify the primary user archetype not covered by the 5 predefined personas
166
+ 3. Create a persona following this template:
167
+
168
+ ```
169
+ ### [Role] — "[Name]"
170
+
171
+ **Profile**: [2-3 key characteristics derived from Design Context]
172
+
173
+ **Behaviors**: [3-4 specific behaviors based on the described audience]
174
+
175
+ **Red Flags**: [3-4 things that would alienate this specific user type]
176
+ ```
177
+
178
+ Only generate project-specific personas when real Design Context data is available. Don't invent audience details — use the 5 predefined personas when no context exists.
@@ -0,0 +1,232 @@
1
+ > **Additional context needed**: quality bar (MVP vs flagship).
2
+
3
+ Perform a meticulous final pass to catch all the small details that separate good work from great work. The difference between shipped and polished.
4
+
5
+ ## Design System Discovery
6
+
7
+ Aligning the feature to the design system is **not optional**. Polish without alignment is decoration on top of drift, and it makes the next person's job harder. Discovery comes before any other polish work.
8
+
9
+ 1. **Find the design system**: Search for design system documentation, component libraries, style guides, or token definitions. Study the core patterns: design principles, target audience, color tokens, spacing scale, typography styles, component API, motion conventions.
10
+ 2. **Note the conventions**: How are shared components imported? What spacing scale is used? Which colors come from tokens vs hard-coded values? What motion and interaction patterns are established? What flow shapes are used for comparable actions (modal vs full-page, inline vs route, save-on-blur vs explicit submit)?
11
+ 3. **Identify drift, then name the root cause**: For every deviation, classify it as a **missing token** (the value should exist in the system but doesn't), a **one-off implementation** (a shared component already exists but wasn't used), or a **conceptual misalignment** (the feature's flow, IA, or hierarchy doesn't match neighboring features). The fix differs by category — patch the value, swap to the shared component, or rework the flow. Fixing the symptom without naming the cause is how drift compounds.
12
+
13
+ If a design system exists, polish **must** align the feature with it. If none exists, polish against the conventions visible in the codebase. **If anything about the system is ambiguous, ask — never guess at design system principles.**
14
+
15
+ ## Pre-Polish Assessment
16
+
17
+ Understand the current state and goals before touching anything:
18
+
19
+ 1. **Review completeness**:
20
+ - Is it functionally complete?
21
+ - Are there known issues to preserve (mark with TODOs)?
22
+ - What's the quality bar? (MVP vs flagship feature?)
23
+ - When does it ship? (How much time for polish?)
24
+
25
+ 2. **Think experience-first**: Who actually uses this, and what's the best possible experience for them? Effective design beats decorative polish — a feature that looks beautiful but fights the user's flow is not polished. Walk the path from their perspective before opening DevTools.
26
+
27
+ 3. **Identify polish areas**:
28
+ - Visual inconsistencies
29
+ - Spacing and alignment issues
30
+ - Interaction state gaps
31
+ - Copy inconsistencies
32
+ - Edge cases and error states
33
+ - Loading and transition smoothness
34
+ - Information architecture and flow drift (does this feature reveal complexity the way neighboring features do?)
35
+
36
+ 4. **Triage cosmetic vs functional**: Classify each issue as **cosmetic** (looks off, doesn't impede the user) or **functional** (breaks, blocks, or confuses the experience). When polish time is tight, functional issues ship first; cosmetic ones can land in a follow-up. Quality should be consistent — never perfect one corner while leaving another rough.
37
+
38
+ **CRITICAL**: Polish is the last step, not the first. Don't polish work that's not functionally complete.
39
+
40
+ ## Polish Systematically
41
+
42
+ Work through these dimensions methodically:
43
+
44
+ ### Visual Alignment & Spacing
45
+
46
+ - **Pixel-perfect alignment**: Everything lines up to grid
47
+ - **Consistent spacing**: All gaps use spacing scale (no random 13px gaps)
48
+ - **Optical alignment**: Adjust for visual weight (icons may need offset for optical centering)
49
+ - **Responsive consistency**: Spacing and alignment work at all breakpoints
50
+ - **Grid adherence**: Elements snap to baseline grid
51
+
52
+ **Check**:
53
+ - Enable grid overlay and verify alignment
54
+ - Check spacing with browser inspector
55
+ - Test at multiple viewport sizes
56
+ - Look for elements that "feel" off
57
+
58
+ ### Information Architecture & Flow
59
+
60
+ Visual polish on a misshapen flow is wasted work. Match the *shape* of the experience to the system, not just the surface.
61
+
62
+ - **Progressive disclosure**: Match how much is revealed when, compared to neighboring features. A settings page exposing 40 fields when the rest of the app reveals 5 at a time is drift, even if every field is perfectly styled.
63
+ - **Established user flows**: Multi-step actions follow the same shape as comparable flows elsewhere — modal vs full-page, inline edit vs separate route, save-on-blur vs explicit submit, optimistic vs pessimistic updates.
64
+ - **Hierarchy & complexity**: The same conceptual weight gets the same visual weight throughout. Primary actions don't become tertiary in one corner of the product, and tertiary actions don't shout.
65
+ - **Empty, loading, and arrival transitions**: How content arrives, updates, and leaves matches how it does in adjacent features.
66
+ - **Naming and mental model**: The feature uses the same nouns and verbs as the rest of the system. A "Workspace" here shouldn't be a "Project" three screens away.
67
+
68
+ ### Typography Refinement
69
+
70
+ - **Hierarchy consistency**: Same elements use same sizes/weights throughout
71
+ - **Line length**: 45-75 characters for body text
72
+ - **Line height**: Appropriate for font size and context
73
+ - **Widows & orphans**: No single words on last line
74
+ - **Hyphenation**: Appropriate for language and column width
75
+ - **Kerning**: Adjust letter spacing where needed (especially headlines)
76
+ - **Font loading**: No FOUT/FOIT flashes
77
+
78
+ ### Color & Contrast
79
+
80
+ - **Contrast ratios**: All text meets WCAG standards
81
+ - **Consistent token usage**: No hard-coded colors, all use design tokens
82
+ - **Theme consistency**: Works in all theme variants
83
+ - **Color meaning**: Same colors mean same things throughout
84
+ - **Accessible focus**: Focus indicators visible with sufficient contrast
85
+ - **Tinted neutrals**: No pure gray or pure black—add subtle color tint (0.01 chroma)
86
+ - **Gray on color**: Never put gray text on colored backgrounds—use a shade of that color or transparency
87
+
88
+ ### Interaction States
89
+
90
+ Every interactive element needs all states:
91
+
92
+ - **Default**: Resting state
93
+ - **Hover**: Subtle feedback (color, scale, shadow)
94
+ - **Focus**: Keyboard focus indicator (never remove without replacement)
95
+ - **Active**: Click/tap feedback
96
+ - **Disabled**: Clearly non-interactive
97
+ - **Loading**: Async action feedback
98
+ - **Error**: Validation or error state
99
+ - **Success**: Successful completion
100
+
101
+ **Missing states create confusion and broken experiences**.
102
+
103
+ ### Micro-interactions & Transitions
104
+
105
+ - **Smooth transitions**: All state changes animated appropriately (150-300ms)
106
+ - **Consistent easing**: Use ease-out-quart/quint/expo for natural deceleration. Never bounce or elastic—they feel dated.
107
+ - **No jank**: 60fps animations, only animate transform and opacity
108
+ - **Appropriate motion**: Motion serves purpose, not decoration
109
+ - **Reduced motion**: Respects `prefers-reduced-motion`
110
+
111
+ ### Content & Copy
112
+
113
+ - **Consistent terminology**: Same things called same names throughout
114
+ - **Consistent capitalization**: Title Case vs Sentence case applied consistently
115
+ - **Grammar & spelling**: No typos
116
+ - **Appropriate length**: Not too wordy, not too terse
117
+ - **Punctuation consistency**: Periods on sentences, not on labels (unless all labels have them)
118
+
119
+ ### Icons & Images
120
+
121
+ - **Consistent style**: All icons from same family or matching style
122
+ - **Appropriate sizing**: Icons sized consistently for context
123
+ - **Proper alignment**: Icons align with adjacent text optically
124
+ - **Alt text**: All images have descriptive alt text
125
+ - **Loading states**: Images don't cause layout shift, proper aspect ratios
126
+ - **Retina support**: 2x assets for high-DPI screens
127
+
128
+ ### Forms & Inputs
129
+
130
+ - **Label consistency**: All inputs properly labeled
131
+ - **Required indicators**: Clear and consistent
132
+ - **Error messages**: Helpful and consistent
133
+ - **Tab order**: Logical keyboard navigation
134
+ - **Auto-focus**: Appropriate (don't overuse)
135
+ - **Validation timing**: Consistent (on blur vs on submit)
136
+
137
+ ### Edge Cases & Error States
138
+
139
+ - **Loading states**: All async actions have loading feedback
140
+ - **Empty states**: Helpful empty states, not just blank space
141
+ - **Error states**: Clear error messages with recovery paths
142
+ - **Success states**: Confirmation of successful actions
143
+ - **Long content**: Handles very long names, descriptions, etc.
144
+ - **No content**: Handles missing data gracefully
145
+ - **Offline**: Appropriate offline handling (if applicable)
146
+
147
+ ### Responsiveness
148
+
149
+ - **All breakpoints**: Test mobile, tablet, desktop
150
+ - **Touch targets**: 44x44px minimum on touch devices
151
+ - **Readable text**: No text smaller than 14px on mobile
152
+ - **No horizontal scroll**: Content fits viewport
153
+ - **Appropriate reflow**: Content adapts logically
154
+
155
+ ### Performance
156
+
157
+ - **Fast initial load**: Optimize critical path
158
+ - **No layout shift**: Elements don't jump after load (CLS)
159
+ - **Smooth interactions**: No lag or jank
160
+ - **Optimized images**: Appropriate formats and sizes
161
+ - **Lazy loading**: Off-screen content loads lazily
162
+
163
+ ### Code Quality
164
+
165
+ - **Remove console logs**: No debug logging in production
166
+ - **Remove commented code**: Clean up dead code
167
+ - **Remove unused imports**: Clean up unused dependencies
168
+ - **Consistent naming**: Variables and functions follow conventions
169
+ - **Type safety**: No TypeScript `any` or ignored errors
170
+ - **Accessibility**: Proper ARIA labels and semantic HTML
171
+
172
+ ## Polish Checklist
173
+
174
+ Go through systematically:
175
+
176
+ - [ ] Aligned to the design system (drift named and resolved by root cause)
177
+ - [ ] Information architecture and flow shape match neighboring features
178
+ - [ ] Visual alignment perfect at all breakpoints
179
+ - [ ] Spacing uses design tokens consistently
180
+ - [ ] Typography hierarchy consistent
181
+ - [ ] All interactive states implemented
182
+ - [ ] All transitions smooth (60fps)
183
+ - [ ] Copy is consistent and polished
184
+ - [ ] Icons are consistent and properly sized
185
+ - [ ] All forms properly labeled and validated
186
+ - [ ] Error states are helpful
187
+ - [ ] Loading states are clear
188
+ - [ ] Empty states are welcoming
189
+ - [ ] Touch targets are 44x44px minimum
190
+ - [ ] Contrast ratios meet WCAG AA
191
+ - [ ] Keyboard navigation works
192
+ - [ ] Focus indicators visible
193
+ - [ ] No console errors or warnings
194
+ - [ ] No layout shift on load
195
+ - [ ] Works in all supported browsers
196
+ - [ ] Respects reduced motion preference
197
+ - [ ] Code is clean (no TODOs, console.logs, commented code)
198
+
199
+ **IMPORTANT**: Polish is about details. Zoom in. Squint at it. Use it yourself. The little things add up.
200
+
201
+ **NEVER**:
202
+ - Polish before it's functionally complete
203
+ - Polish without aligning to the design system — that's decoration on drift
204
+ - Guess at design system principles instead of asking when something is ambiguous
205
+ - Spend hours on polish if it ships in 30 minutes (triage)
206
+ - Introduce bugs while polishing (test thoroughly)
207
+ - Ignore systematic issues (if spacing is off everywhere, fix the system, not just one screen)
208
+ - Perfect one thing while leaving others rough (consistent quality level)
209
+ - Create new one-off components when design system equivalents exist
210
+ - Hard-code values that should use design tokens
211
+ - Introduce new patterns or flows that diverge from established ones
212
+
213
+ ## Final Verification
214
+
215
+ Before marking as done:
216
+
217
+ - **Use it yourself**: Actually interact with the feature
218
+ - **Test on real devices**: Not just browser DevTools
219
+ - **Ask someone else to review**: Fresh eyes catch things
220
+ - **Compare to design**: Match intended design
221
+ - **Check all states**: Don't just test happy path
222
+
223
+ ## Clean Up
224
+
225
+ After polishing, ensure code quality:
226
+
227
+ - **Replace custom implementations**: If the design system provides a component you reimplemented, switch to the shared version.
228
+ - **Remove orphaned code**: Delete unused styles, components, or files made obsolete by polish.
229
+ - **Consolidate tokens**: If you introduced new values, check whether they should be tokens.
230
+ - **Verify DRYness**: Look for duplication introduced during polishing and consolidate.
231
+
232
+ Remember: You have impeccable attention to detail and exquisite taste. Polish until it feels effortless, looks intentional, and works flawlessly. Sweat the details - they matter.
@@ -0,0 +1,62 @@
1
+ # Product register
2
+
3
+ When design SERVES the product: app UIs, admin dashboards, settings panels, data tables, tools, authenticated surfaces, anything where the user is in a task.
4
+
5
+ ## The product slop test
6
+
7
+ Not "would someone say AI made this" — familiarity is often a feature here. The test is: would a user fluent in the category's best tools (Linear, Figma, Notion, Raycast, Stripe come to mind) sit down and trust this interface, or pause at every subtly-off component?
8
+
9
+ Product UI's failure mode isn't flatness, it's strangeness without purpose: over-decorated buttons, mismatched form controls, gratuitous motion, display fonts where labels should be, invented affordances for standard tasks. The bar is earned familiarity. The tool should disappear into the task.
10
+
11
+ ## Typography
12
+
13
+ - **System fonts are legitimate.** `-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif` gives you native feel on every platform. Inter is the common cross-platform default for a reason.
14
+ - **One family is often right.** Product UIs don't need display/body pairing. A well-tuned sans carries headings, buttons, labels, body, data.
15
+ - **Fixed rem scale, not fluid.** Clamp-sized headings don't serve product UI. Users view at consistent DPI, and a fluid h1 that shrinks in a sidebar looks worse, not better.
16
+ - **Tighter scale ratio.** 1.125–1.2 between steps is typical. More type elements here than on brand surfaces; exaggerated contrast creates noise.
17
+ - **Line length still applies for prose** (65–75ch). Data and compact UI can run denser — tables at 120ch+ are fine.
18
+
19
+ ## Color
20
+
21
+ Product defaults to Restrained. A single surface can earn Committed — a dashboard where one category color carries a report, an onboarding flow with a drenched welcome screen — but Restrained is the floor.
22
+
23
+ - State-rich semantic vocabulary: hover, focus, active, disabled, selected, loading, error, warning, success, info. Standardize these.
24
+ - Accent color used for primary actions, current selection, and state indicators only — not decoration.
25
+ - A second neutral layer for sidebars, toolbars, and panels (slightly cooler or warmer than the content surface).
26
+
27
+ ## Layout
28
+
29
+ - Predictable grids. Consistency IS an affordance — users navigate faster when the structure is expected.
30
+ - Familiar patterns are features. Standard navigation (top bar, side nav), breadcrumbs, tabs, and form layouts have established user expectations. Don't reinvent for flavor.
31
+ - Responsive behavior is structural (collapse sidebar, responsive table, breakpoint-driven columns), not fluid typography.
32
+
33
+ ## Components
34
+
35
+ Every interactive component has: default, hover, focus, active, disabled, loading, error. Don't ship with half of these.
36
+
37
+ - Skeleton states for loading, not spinners in the middle of content.
38
+ - Empty states that teach the interface, not "nothing here."
39
+ - Consistent affordances across the surface. Same button shape. Same form-control vocabulary. Same icon style.
40
+
41
+ ## Motion
42
+
43
+ - 150–250 ms on most transitions. Users are in flow — don't make them wait for choreography.
44
+ - Motion conveys state, not decoration. State change, feedback, loading, reveal — nothing else.
45
+ - No orchestrated page-load sequences. Product loads into a task; users don't want to watch it load.
46
+
47
+ ## Product bans (on top of the shared absolute bans)
48
+
49
+ - Decorative motion that doesn't convey state.
50
+ - Inconsistent component vocabulary across screens. If the "save" button looks different in two places, one is wrong.
51
+ - Display fonts in UI labels, buttons, data.
52
+ - Reinventing standard affordances for flavor (custom scrollbars, weird form controls, non-standard modals).
53
+ - Heavy color or full-saturation accents on inactive states.
54
+
55
+ ## Product permissions
56
+
57
+ Product can afford things brand surfaces can't.
58
+
59
+ - System fonts and familiar sans defaults (Inter, SF Pro, system-ui stacks).
60
+ - Standard navigation patterns: top bar + side nav, breadcrumbs, tabs, command palettes.
61
+ - Density. Tables with many rows, panels with many labels, dense information when users need it.
62
+ - Consistency over surprise. The same visual vocabulary screen to screen is a virtue; delight is saved for moments, not pages.
@@ -0,0 +1,99 @@
1
+ Reduce visual intensity in designs that are too bold, aggressive, or overstimulating, creating a more refined and approachable aesthetic without losing effectiveness.
2
+
3
+ ---
4
+
5
+ ## Register
6
+
7
+ Brand: "quieter" means more restrained palette, more whitespace, more typographic air. Drama is reduced, not eliminated — the POV stays intact.
8
+
9
+ Product: "quieter" means reducing visual noise — fewer background accents, flatter cards, less color, less motion. The tool should disappear more completely into the task.
10
+
11
+ ---
12
+
13
+ ## Assess Current State
14
+
15
+ Analyze what makes the design feel too intense:
16
+
17
+ 1. **Identify intensity sources**:
18
+ - **Color saturation**: Overly bright or saturated colors
19
+ - **Contrast extremes**: Too much high-contrast juxtaposition
20
+ - **Visual weight**: Too many bold, heavy elements competing
21
+ - **Animation excess**: Too much motion or overly dramatic effects
22
+ - **Complexity**: Too many visual elements, patterns, or decorations
23
+ - **Scale**: Everything is large and loud with no hierarchy
24
+
25
+ 2. **Understand the context**:
26
+ - What's the purpose? (Marketing vs tool vs reading experience)
27
+ - Who's the audience? (Some contexts need energy)
28
+ - What's working? (Don't throw away good ideas)
29
+ - What's the core message? (Preserve what matters)
30
+
31
+ If any of these are unclear from the codebase, ask the user directly to clarify what you cannot infer.
32
+
33
+ **CRITICAL**: "Quieter" doesn't mean boring or generic. It means refined, sophisticated, and easier on the eyes. Think luxury, not laziness.
34
+
35
+ ## Plan Refinement
36
+
37
+ Create a strategy to reduce intensity while maintaining impact:
38
+
39
+ - **Color approach**: Desaturate or shift to more sophisticated tones?
40
+ - **Hierarchy approach**: Which elements should stay bold (very few), which should recede?
41
+ - **Simplification approach**: What can be removed entirely?
42
+ - **Sophistication approach**: How can we signal quality through restraint?
43
+
44
+ **IMPORTANT**: Great quiet design is harder than great bold design. Subtlety requires precision.
45
+
46
+ ## Refine the Design
47
+
48
+ Systematically reduce intensity across these dimensions:
49
+
50
+ ### Color Refinement
51
+ - **Reduce saturation**: Shift from fully saturated to 70-85% saturation
52
+ - **Soften palette**: Replace bright colors with muted, sophisticated tones
53
+ - **Reduce color variety**: Use fewer colors more thoughtfully
54
+ - **Neutral dominance**: Let neutrals do more work, use color as accent (10% rule)
55
+ - **Gentler contrasts**: High contrast only where it matters most
56
+ - **Tinted grays**: Use warm or cool tinted grays instead of pure gray—adds sophistication without loudness
57
+ - **Never gray on color**: If you have gray text on a colored background, use a darker shade of that color or transparency instead
58
+
59
+ ### Visual Weight Reduction
60
+ - **Typography**: Reduce font weights (900 → 600, 700 → 500), decrease sizes where appropriate
61
+ - **Hierarchy through subtlety**: Use weight, size, and space instead of color and boldness
62
+ - **White space**: Increase breathing room, reduce density
63
+ - **Borders & lines**: Reduce thickness, decrease opacity, or remove entirely
64
+
65
+ ### Simplification
66
+ - **Remove decorative elements**: Gradients, shadows, patterns, textures that don't serve purpose
67
+ - **Simplify shapes**: Reduce border radius extremes, simplify custom shapes
68
+ - **Reduce layering**: Flatten visual hierarchy where possible
69
+ - **Clean up effects**: Reduce or remove blur effects, glows, multiple shadows
70
+
71
+ ### Motion Reduction
72
+ - **Reduce animation intensity**: Shorter distances (10-20px instead of 40px), gentler easing
73
+ - **Remove decorative animations**: Keep functional motion, remove flourishes
74
+ - **Subtle micro-interactions**: Replace dramatic effects with gentle feedback
75
+ - **Refined easing**: Use ease-out-quart for smooth, understated motion—never bounce or elastic
76
+ - **Remove animations entirely** if they're not serving a clear purpose
77
+
78
+ ### Composition Refinement
79
+ - **Reduce scale jumps**: Smaller contrast between sizes creates calmer feeling
80
+ - **Align to grid**: Bring rogue elements back into systematic alignment
81
+ - **Even out spacing**: Replace extreme spacing variations with consistent rhythm
82
+
83
+ **NEVER**:
84
+ - Make everything the same size/weight (hierarchy still matters)
85
+ - Remove all color (quiet ≠ grayscale)
86
+ - Eliminate all personality (maintain character through refinement)
87
+ - Sacrifice usability for aesthetics (functional elements still need clear affordances)
88
+ - Make everything small and light (some anchors needed)
89
+
90
+ ## Verify Quality
91
+
92
+ Ensure refinement maintains quality:
93
+
94
+ - **Still functional**: Can users still accomplish tasks easily?
95
+ - **Still distinctive**: Does it have character, or is it generic now?
96
+ - **Better reading**: Is text easier to read for extended periods?
97
+ - **Sophistication**: Does it feel more refined and premium?
98
+
99
+ Remember: Quiet design is confident design. It doesn't need to shout. Less is more, but less is also harder. Refine with precision and maintain intentionality.