ai-developer-skill-os 7.0.2 → 7.5.1

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 (206) hide show
  1. package/.agents/AGENTS.md +44 -88
  2. package/.agents/CHANGELOG.md +70 -0
  3. package/.agents/LICENSE +21 -0
  4. package/.agents/README.md +100 -0
  5. package/.agents/docs/CHI_TIET_SKILLS.md +126 -0
  6. package/.agents/docs/GOVERNANCE.md +40 -0
  7. package/.agents/docs/HUONG_DAN_SU_DUNG.md +120 -0
  8. package/.agents/docs/SPEC.md +87 -0
  9. package/.agents/docs/adr/0001-intent-based-architecture.md +19 -0
  10. package/.agents/docs/adr/0002-kernel-freeze.md +21 -0
  11. package/.agents/docs/adr/0003-risk-based-verification.md +20 -0
  12. package/.agents/docs/adr/0004-progressive-evidence.md +19 -0
  13. package/.agents/docs/skill-classification.md +25 -0
  14. package/.agents/skills/qk-access-policy/SKILL.md +179 -0
  15. package/.agents/skills/qk-ai-builder/SKILL.md +215 -0
  16. package/.agents/skills/qk-api-lifecycle/SKILL.md +176 -0
  17. package/.agents/skills/qk-bug-resolution/SKILL.md +307 -0
  18. package/.agents/skills/qk-context-loader/SKILL.md +218 -0
  19. package/.agents/skills/qk-data-lifecycle/SKILL.md +192 -0
  20. package/.agents/skills/qk-db-optimizer/SKILL.md +196 -0
  21. package/.agents/skills/qk-docs/SKILL.md +198 -0
  22. package/.agents/skills/qk-engineering-standard/SKILL.md +351 -0
  23. package/.agents/skills/qk-engineering-standard/rules/backend.md +122 -0
  24. package/.agents/skills/qk-engineering-standard/rules/database.md +3 -0
  25. package/.agents/skills/qk-engineering-standard/rules/frontend.md +152 -0
  26. package/.agents/skills/qk-engineering-standard/rules/security.md +3 -0
  27. package/.agents/skills/qk-engineering-standard/rules/testing.md +3 -0
  28. package/.agents/skills/qk-fe-api-integration/SKILL.md +326 -0
  29. package/.agents/skills/qk-feature-delivery/SKILL.md +305 -0
  30. package/.agents/skills/qk-help/SKILL.md +193 -0
  31. package/.agents/skills/qk-orchestrator/SKILL.md +278 -0
  32. package/.agents/skills/qk-orchestrator/references/routing-table.md +78 -0
  33. package/.agents/skills/qk-production-release/SKILL.md +284 -0
  34. package/.agents/skills/qk-project-bootstrap/SKILL.md +235 -0
  35. package/.agents/skills/qk-project-health/SKILL.md +199 -0
  36. package/.agents/skills/qk-project-memory/SKILL.md +218 -0
  37. package/.agents/skills/qk-system-evolution/SKILL.md +281 -0
  38. package/.agents/skills/qk-ui-audit/SKILL.md +315 -0
  39. package/.agents/skills/qk-ui-audit/references/anti-slop-checklist.md +136 -0
  40. package/.agents/skills/qk-ui-builder/SKILL.md +446 -0
  41. package/.agents/skills/qk-ui-builder/references/anti-patterns.md +295 -0
  42. package/.agents/skills/qk-ui-builder/references/color.md +115 -0
  43. package/.agents/skills/qk-ui-builder/references/component-cookbook.md +1194 -0
  44. package/.agents/skills/qk-ui-builder/references/copy.md +250 -0
  45. package/.agents/skills/qk-ui-builder/references/interaction-and-states.md +115 -0
  46. package/.agents/skills/qk-ui-builder/references/layout-and-space.md +111 -0
  47. package/.agents/skills/qk-ui-builder/references/macrostructures/01-bento-grid.md +48 -0
  48. package/.agents/skills/qk-ui-builder/references/macrostructures/02-long-document.md +50 -0
  49. package/.agents/skills/qk-ui-builder/references/macrostructures/03-marquee-hero.md +51 -0
  50. package/.agents/skills/qk-ui-builder/references/macrostructures/04-stat-led.md +49 -0
  51. package/.agents/skills/qk-ui-builder/references/macrostructures/05-workbench.md +44 -0
  52. package/.agents/skills/qk-ui-builder/references/macrostructures/06-conversational-faq.md +50 -0
  53. package/.agents/skills/qk-ui-builder/references/macrostructures/07-manifesto.md +51 -0
  54. package/.agents/skills/qk-ui-builder/references/macrostructures/08-photographic.md +50 -0
  55. package/.agents/skills/qk-ui-builder/references/macrostructures/09-quote-led.md +50 -0
  56. package/.agents/skills/qk-ui-builder/references/macrostructures/11-catalogue.md +49 -0
  57. package/.agents/skills/qk-ui-builder/references/macrostructures/12-letter.md +49 -0
  58. package/.agents/skills/qk-ui-builder/references/macrostructures/13-index-first.md +49 -0
  59. package/.agents/skills/qk-ui-builder/references/macrostructures/14-narrative-workflow.md +48 -0
  60. package/.agents/skills/qk-ui-builder/references/macrostructures/15-split-studio.md +48 -0
  61. package/.agents/skills/qk-ui-builder/references/macrostructures/16-feature-stack.md +51 -0
  62. package/.agents/skills/qk-ui-builder/references/macrostructures/17-type-specimen.md +48 -0
  63. package/.agents/skills/qk-ui-builder/references/macrostructures/18-portfolio-grid.md +48 -0
  64. package/.agents/skills/qk-ui-builder/references/macrostructures/19-map-diagram.md +50 -0
  65. package/.agents/skills/qk-ui-builder/references/macrostructures/20-ecosystem-index.md +48 -0
  66. package/.agents/skills/qk-ui-builder/references/macrostructures/21-component-playground.md +45 -0
  67. package/.agents/skills/qk-ui-builder/references/macrostructures.md +38 -0
  68. package/.agents/skills/qk-ui-builder/references/motion.md +95 -0
  69. package/.agents/skills/qk-ui-builder/references/responsive.md +115 -0
  70. package/.agents/skills/qk-ui-builder/references/slop-test.md +135 -0
  71. package/.agents/skills/qk-ui-builder/references/structure.md +280 -0
  72. package/.agents/skills/qk-ui-builder/references/themes/atmospheric.md +53 -0
  73. package/.agents/skills/qk-ui-builder/references/themes/carnival.md +52 -0
  74. package/.agents/skills/qk-ui-builder/references/themes/cobalt.md +52 -0
  75. package/.agents/skills/qk-ui-builder/references/themes/editorial.md +52 -0
  76. package/.agents/skills/qk-ui-builder/references/themes/garden.md +52 -0
  77. package/.agents/skills/qk-ui-builder/references/themes/hum.md +52 -0
  78. package/.agents/skills/qk-ui-builder/references/themes/lumen.md +52 -0
  79. package/.agents/skills/qk-ui-builder/references/themes/midnight.md +52 -0
  80. package/.agents/skills/qk-ui-builder/references/themes/modern-minimal.md +52 -0
  81. package/.agents/skills/qk-ui-builder/references/themes/playful.md +52 -0
  82. package/.agents/skills/qk-ui-builder/references/themes/specimen.md +52 -0
  83. package/.agents/skills/qk-ui-builder/references/themes/terminal.md +52 -0
  84. package/.agents/skills/qk-ui-builder/references/typography.md +129 -0
  85. package/.agents/skills/qk-ui-system-builder/SKILL.md +221 -0
  86. package/.agents/skills/qk-validation-gate/SKILL.md +359 -0
  87. package/.agents/skills.json +819 -0
  88. package/.github/workflows/ci.yml +1 -1
  89. package/CHANGELOG.md +2 -1
  90. package/CLAUDE.md +110 -0
  91. package/README.md +52 -10
  92. package/add_lang.js +21 -0
  93. package/add_lang.py +25 -0
  94. package/add_sections.py +53 -0
  95. package/bin/install.js +225 -170
  96. package/bin/lint.js +123 -0
  97. package/docs/CHI_TIET_SKILLS.md +27 -26
  98. package/docs/HUONG_DAN_SU_DUNG.md +3 -3
  99. package/docs/SPEC.md +70 -20
  100. package/framework/decision-primitives.md +2 -1
  101. package/framework/skill-schema.md +310 -0
  102. package/package.json +16 -5
  103. package/patch.js +15 -0
  104. package/patch.py +89 -0
  105. package/patch2.py +83 -0
  106. package/skills/_archive_old_skills/qk-accessibility-audit/SKILL.md +1 -0
  107. package/skills/_archive_old_skills/qk-agent-orchestrator/SKILL.md +1 -0
  108. package/skills/_archive_old_skills/qk-api-integration/SKILL.md +1 -0
  109. package/skills/_archive_old_skills/qk-auth-security/SKILL.md +1 -0
  110. package/skills/_archive_old_skills/qk-backend-architecture/SKILL.md +1 -0
  111. package/skills/_archive_old_skills/qk-bug-fix/SKILL.md +1 -0
  112. package/skills/_archive_old_skills/qk-component-generator/SKILL.md +1 -0
  113. package/skills/_archive_old_skills/qk-context-manager/SKILL.md +1 -0
  114. package/skills/_archive_old_skills/qk-database-engineer/SKILL.md +1 -0
  115. package/skills/_archive_old_skills/qk-deployment/SKILL.md +1 -0
  116. package/skills/_archive_old_skills/qk-design-system/SKILL.md +1 -0
  117. package/skills/_archive_old_skills/qk-form-builder/SKILL.md +1 -0
  118. package/skills/_archive_old_skills/qk-frontend-architecture/SKILL.md +1 -0
  119. package/skills/_archive_old_skills/qk-frontend-debug/SKILL.md +1 -0
  120. package/skills/_archive_old_skills/qk-frontend-performance/SKILL.md +1 -0
  121. package/skills/_archive_old_skills/qk-frontend-testing/SKILL.md +1 -0
  122. package/skills/_archive_old_skills/qk-git-engineer/SKILL.md +1 -0
  123. package/skills/_archive_old_skills/qk-help/SKILL.md +1 -0
  124. package/skills/_archive_old_skills/qk-migration/SKILL.md +1 -0
  125. package/skills/_archive_old_skills/qk-project-audit/SKILL.md +1 -0
  126. package/skills/_archive_old_skills/qk-refactor/SKILL.md +1 -0
  127. package/skills/_archive_old_skills/qk-state-management/SKILL.md +1 -0
  128. package/skills/_archive_old_skills/qk-table-crud-generator/SKILL.md +1 -0
  129. package/skills/_archive_old_skills/qk-ui-builder/SKILL.md +1 -0
  130. package/skills/_template/SKILL.md +239 -0
  131. package/skills/qk-access-policy/SKILL.md +180 -39
  132. package/skills/qk-ai-builder/SKILL.md +216 -40
  133. package/skills/qk-api-lifecycle/SKILL.md +177 -46
  134. package/skills/qk-bug-resolution/SKILL.md +308 -46
  135. package/skills/qk-context-loader/SKILL.md +219 -43
  136. package/skills/qk-data-lifecycle/SKILL.md +193 -44
  137. package/skills/qk-db-optimizer/SKILL.md +197 -41
  138. package/skills/qk-docs/SKILL.md +199 -40
  139. package/skills/qk-engineering-standard/SKILL.md +352 -42
  140. package/skills/qk-fe-api-integration/SKILL.md +327 -55
  141. package/skills/qk-feature-delivery/SKILL.md +306 -48
  142. package/skills/qk-help/SKILL.md +179 -23
  143. package/skills/qk-orchestrator/SKILL.md +279 -42
  144. package/skills/qk-orchestrator/references/routing-table.md +78 -0
  145. package/skills/qk-production-release/SKILL.md +285 -41
  146. package/skills/qk-project-bootstrap/SKILL.md +236 -38
  147. package/skills/qk-project-health/SKILL.md +200 -40
  148. package/skills/qk-project-memory/SKILL.md +219 -40
  149. package/skills/qk-system-evolution/SKILL.md +282 -40
  150. package/skills/qk-ui-audit/SKILL.md +316 -42
  151. package/skills/qk-ui-audit/references/anti-slop-checklist.md +136 -0
  152. package/skills/qk-ui-builder/SKILL.md +447 -0
  153. package/skills/qk-ui-builder/references/anti-patterns.md +295 -0
  154. package/skills/qk-ui-builder/references/color.md +115 -0
  155. package/skills/qk-ui-builder/references/component-cookbook.md +1194 -0
  156. package/skills/qk-ui-builder/references/copy.md +250 -0
  157. package/skills/qk-ui-builder/references/interaction-and-states.md +115 -0
  158. package/skills/qk-ui-builder/references/layout-and-space.md +111 -0
  159. package/skills/qk-ui-builder/references/macrostructures/01-bento-grid.md +48 -0
  160. package/skills/qk-ui-builder/references/macrostructures/02-long-document.md +50 -0
  161. package/skills/qk-ui-builder/references/macrostructures/03-marquee-hero.md +51 -0
  162. package/skills/qk-ui-builder/references/macrostructures/04-stat-led.md +49 -0
  163. package/skills/qk-ui-builder/references/macrostructures/05-workbench.md +44 -0
  164. package/skills/qk-ui-builder/references/macrostructures/06-conversational-faq.md +50 -0
  165. package/skills/qk-ui-builder/references/macrostructures/07-manifesto.md +51 -0
  166. package/skills/qk-ui-builder/references/macrostructures/08-photographic.md +50 -0
  167. package/skills/qk-ui-builder/references/macrostructures/09-quote-led.md +50 -0
  168. package/skills/qk-ui-builder/references/macrostructures/11-catalogue.md +49 -0
  169. package/skills/qk-ui-builder/references/macrostructures/12-letter.md +49 -0
  170. package/skills/qk-ui-builder/references/macrostructures/13-index-first.md +49 -0
  171. package/skills/qk-ui-builder/references/macrostructures/14-narrative-workflow.md +48 -0
  172. package/skills/qk-ui-builder/references/macrostructures/15-split-studio.md +48 -0
  173. package/skills/qk-ui-builder/references/macrostructures/16-feature-stack.md +51 -0
  174. package/skills/qk-ui-builder/references/macrostructures/17-type-specimen.md +48 -0
  175. package/skills/qk-ui-builder/references/macrostructures/18-portfolio-grid.md +48 -0
  176. package/skills/qk-ui-builder/references/macrostructures/19-map-diagram.md +50 -0
  177. package/skills/qk-ui-builder/references/macrostructures/20-ecosystem-index.md +48 -0
  178. package/skills/qk-ui-builder/references/macrostructures/21-component-playground.md +45 -0
  179. package/skills/qk-ui-builder/references/macrostructures.md +38 -0
  180. package/skills/qk-ui-builder/references/motion.md +95 -0
  181. package/skills/qk-ui-builder/references/responsive.md +115 -0
  182. package/skills/qk-ui-builder/references/slop-test.md +135 -0
  183. package/skills/qk-ui-builder/references/structure.md +280 -0
  184. package/skills/qk-ui-builder/references/themes/atmospheric.md +53 -0
  185. package/skills/qk-ui-builder/references/themes/carnival.md +52 -0
  186. package/skills/qk-ui-builder/references/themes/cobalt.md +52 -0
  187. package/skills/qk-ui-builder/references/themes/editorial.md +52 -0
  188. package/skills/qk-ui-builder/references/themes/garden.md +52 -0
  189. package/skills/qk-ui-builder/references/themes/hum.md +52 -0
  190. package/skills/qk-ui-builder/references/themes/lumen.md +52 -0
  191. package/skills/qk-ui-builder/references/themes/midnight.md +52 -0
  192. package/skills/qk-ui-builder/references/themes/modern-minimal.md +52 -0
  193. package/skills/qk-ui-builder/references/themes/playful.md +52 -0
  194. package/skills/qk-ui-builder/references/themes/specimen.md +52 -0
  195. package/skills/qk-ui-builder/references/themes/terminal.md +52 -0
  196. package/skills/qk-ui-builder/references/typography.md +129 -0
  197. package/skills/qk-ui-system-builder/SKILL.md +222 -43
  198. package/skills/qk-validation-gate/SKILL.md +360 -40
  199. package/skills.json +815 -825
  200. package/specs/fixtures/user-payload.json +12 -0
  201. package/specs/regressions/api-integration-null-fields.yaml +19 -0
  202. package/temp_fix.js +61 -0
  203. package/tests/registry.test.js +1 -1
  204. package/update_template.js +28 -0
  205. package/skills/qk-design-to-code/SKILL.md +0 -46
  206. package/skills/qk-policy-engine/SKILL.md +0 -39
@@ -0,0 +1,250 @@
1
+ # UI Copy Rules
2
+
3
+ Microcopy is the small bits of text that guide, inform, and reassure users. Good copy is invisible; bad copy creates friction.
4
+
5
+ ## Button Labels
6
+
7
+ **Rule:** Verb-first, 1-3 words. Start with the action the user takes.
8
+
9
+ **Good:**
10
+ - Save changes
11
+ - Delete account
12
+ - Upload file
13
+ - Send message
14
+ - Continue to payment
15
+
16
+ **Bad:**
17
+ - Submission (noun, not verb)
18
+ - Click here (generic)
19
+ - Yes / No (without context)
20
+ - Submit your information here (too long)
21
+
22
+ **Guidelines:**
23
+ - Use imperative verbs: Save, Delete, Upload, Send, Continue
24
+ - Avoid articles: "Save" not "Save the changes"
25
+ - Match case to surrounding UI (usually sentence case)
26
+ - For destructive actions, include the object: "Delete file" not just "Delete"
27
+
28
+ ---
29
+
30
+ ## Error Messages
31
+
32
+ **Rule:** What happened + how to fix. Two sentences max.
33
+
34
+ **Formula:**
35
+ 1. State the problem clearly
36
+ 2. Provide a specific solution
37
+
38
+ **Good:**
39
+ - "Email address is invalid. Please include an @ symbol."
40
+ - "Password must be at least 8 characters. Try adding a number."
41
+ - "Connection lost. Check your internet and try again."
42
+
43
+ **Bad:**
44
+ - "Error 500" (technical, unhelpful)
45
+ - "Something went wrong" (vague)
46
+ - "Invalid input" (no fix guidance)
47
+ - "Please try again later" (no context)
48
+
49
+ **Guidelines:**
50
+ - Never blame the user ("You entered...")
51
+ - Use plain language, not technical jargon
52
+ - Include actionable next steps
53
+ - Keep it concise: 1-2 sentences
54
+
55
+ ---
56
+
57
+ ## Placeholder Text
58
+
59
+ **Rule:** Example, not instruction. Show what good looks like, don't tell users what to do.
60
+
61
+ **Good:**
62
+ - "you@example.com" (email input)
63
+ - "12/25/2024" (date input)
64
+ - "Project description..." (textarea)
65
+ - "Search by name or email..." (search input)
66
+
67
+ **Bad:**
68
+ - "Enter your email address" (instruction, redundant with label)
69
+ - "Type here..." (no helpful example)
70
+ - "Required" (states the obvious)
71
+ - "Your full name" (duplicates label)
72
+
73
+ **Guidelines:**
74
+ - Use actual example values
75
+ - Show format for structured data (dates, phone numbers)
76
+ - Avoid repeating the label text
77
+ - Placeholder disappears on focus, so it must be self-explanatory
78
+
79
+ ---
80
+
81
+ ## CTAs (Call to Action)
82
+
83
+ **Rule:** Specific, not generic. Tell users exactly what they get.
84
+
85
+ **Good:**
86
+ - Start free trial
87
+ - Download whitepaper
88
+ - Book a demo
89
+ - Get started
90
+ - Create account
91
+ - Upgrade to Pro
92
+
93
+ **Bad:**
94
+ - Submit (generic, no value)
95
+ - Click here (no context)
96
+ - Learn more (vague destination)
97
+ - Sign up (missing context: "Sign up for free")
98
+ - Get started (missing context: what are they starting?)
99
+
100
+ **Guidelines:**
101
+ - Include the value proposition: "Start free trial" not "Submit"
102
+ - Be specific about the outcome: "Download report" not "Continue"
103
+ - Avoid ambiguity: "Create account" not "Join us"
104
+ - Match CTA intensity to action weight (primary vs secondary)
105
+
106
+ ---
107
+
108
+ ## Ban List
109
+
110
+ These phrases are forbidden in UI copy:
111
+
112
+ ### Absolutely Banned
113
+ - "Lorem ipsum" — placeholder text in production
114
+ - "Click here" — generic link text
115
+ - "Read more" — lazy, no context
116
+ - "Learn more" — vague, no value proposition
117
+ - "Submit" — generic, no action clarity
118
+ - "John Doe" / "Jane Smith" — fake names
119
+ - "Test User" — lazy placeholder data
120
+ - "Coming soon" — broken promise
121
+ - "Under construction" — unprofessional
122
+ - "TBD" — visible planning state
123
+ - "Error 404" — technical error without guidance
124
+ - "Something went wrong" — unhelpful error
125
+ - "Please try again later" — no context or fix
126
+
127
+ ### Contextual Bans
128
+ - "Welcome to our website" — generic, no value
129
+ - "Thank you for your submission" — assumes success before validation
130
+ - "We value your feedback" — insincere, no action
131
+ - "Powered by AI" — unless AI is a selling point
132
+ - "Best in class" — unsubstantiated claim
133
+ - "Seamless" — meaningless buzzword
134
+ - "Synergy" — meaningless buzzword
135
+ - "Leverage" — pretentious verb
136
+ - "Robust" — vague adjective
137
+ - "Cutting-edge" — cliché
138
+
139
+ ---
140
+
141
+ ## Tone Guidelines
142
+
143
+ **Voice:** Confident, clear, helpful. Not overly casual or corporate.
144
+
145
+ **Person:** Second person ("you") for user actions. First person plural ("we") for company statements. Avoid third person.
146
+
147
+ **Length:** Short for actions, longer for explanations. Buttons: 1-3 words. Headlines: 2-8 words. Body: 1-3 sentences.
148
+
149
+ **Jargon:** Avoid unless audience is technical. If jargon is necessary, define it on first use.
150
+
151
+ **Humor:** Use sparingly. Only in error states, empty states, or onboarding. Never in critical flows or legal text.
152
+
153
+ ---
154
+
155
+ ## Accessibility Copy
156
+
157
+ **Alt Text:** Describe the image content, not "image of" or "photo of."
158
+ - Good: "Bar chart showing 40% increase in sales"
159
+ - Bad: "Image" or "Chart"
160
+
161
+ **ARIA Labels:** Be specific and contextual.
162
+ - Good: `aria-label="Close dialog"`
163
+ - Bad: `aria-label="Button"`
164
+
165
+ **Link Text:** Descriptive, not generic.
166
+ - Good: "View pricing plans"
167
+ - Bad: "Click here"
168
+
169
+ **Form Labels:** Clear and concise.
170
+ - Good: "Email address"
171
+ - Bad: "Please enter your email address in the field below"
172
+
173
+ ---
174
+
175
+ ## Validation States
176
+
177
+ **Success:**
178
+ - "Changes saved"
179
+ - "Account created"
180
+ - "File uploaded"
181
+
182
+ **Error:**
183
+ - "Invalid email address. Example: you@company.com"
184
+ - "Password must include a number and special character"
185
+ - "Connection failed. Please try again."
186
+
187
+ **Warning:**
188
+ - "You have unsaved changes. Leave without saving?"
189
+ - "Your session expires in 5 minutes"
190
+
191
+ **Info:**
192
+ - "New features available. Refresh to see updates."
193
+ - "Your trial ends in 3 days"
194
+
195
+ ---
196
+
197
+ ## Empty States
198
+
199
+ **No Data:**
200
+ - "No projects yet. Create your first project to get started."
201
+ - "No messages. Start a conversation with your team."
202
+
203
+ **No Search Results:**
204
+ - "No results for 'query'. Try different keywords or clear filters."
205
+ - "We couldn't find anything matching your search."
206
+
207
+ **Error States:**
208
+ - "Something went wrong on our end. Refresh the page or contact support if it persists."
209
+ - "Unable to load data. Check your connection and try again."
210
+
211
+ ---
212
+
213
+ ## Confirmation Messages
214
+
215
+ **Destructive Actions:**
216
+ - "Are you sure you want to delete this project? This cannot be undone."
217
+ - "Deactivate account? You will lose access to all projects."
218
+
219
+ **Success Actions:**
220
+ - "Account created! Check your email to verify."
221
+ - "File uploaded successfully."
222
+
223
+ **Conditional Actions:**
224
+ - "You have unsaved changes. Save before leaving?"
225
+ - "Discard draft? Your changes will be lost."
226
+
227
+ ---
228
+
229
+ ## Legal & Compliance
230
+
231
+ **Privacy:**
232
+ - "We use cookies to improve your experience. [Accept] [Settings]"
233
+ - "By signing up, you agree to our Terms and Privacy Policy."
234
+
235
+ **Consent:**
236
+ - "Send me emails with product updates and offers." (opt-in)
237
+ - "I agree to the Terms of Service." (required)
238
+
239
+ **Age:**
240
+ - "You must be 18 or older to create an account."
241
+
242
+ ---
243
+
244
+ ## Measurement
245
+
246
+ Copy is done when:
247
+ - Users complete tasks without reading the full text
248
+ - Error messages reduce support tickets
249
+ - CTAs have measurable click-through rates
250
+ - No placeholder text remains in production
@@ -0,0 +1,115 @@
1
+ # Interaction & States
2
+
3
+ Foundational rules for interactive element states. Every interactive control must define a complete, accessible state set — not just default and hover.
4
+
5
+ ## The 8 States
6
+
7
+ Every interactive component should account for:
8
+
9
+ 1. **default** — resting, ready to interact.
10
+ 2. **hover** — pointer is over (pointer devices only).
11
+ 3. **focus** — keyboard / programmatic focus.
12
+ 4. **active** — being pressed/clicked.
13
+ 5. **disabled** — not interactive, clearly shown.
14
+ 6. **loading** — work in progress, feedback given.
15
+ 7. **error** — invalid input or failed action, with message.
16
+ 8. **success** — completed action, confirmed.
17
+
18
+ ```css
19
+ .btn { /* default */ }
20
+ .btn:hover { background: var(--color-accent-hover); }
21
+ .btn:focus-visible { /* focus ring */ }
22
+ .btn:active { transform: translateY(1px); }
23
+ .btn:disabled { /* disabled */ }
24
+ ```
25
+
26
+ ## Focus: Visible Ring
27
+
28
+ Always provide a visible focus indicator. **Never** use `outline: none` without a replacement. Use `:focus-visible` so mouse users aren't spammed but keyboard users are clearly shown.
29
+
30
+ ```css
31
+ .btn:focus { outline: none; } /* remove default */
32
+ .btn:focus-visible {
33
+ outline: 2px solid var(--color-accent);
34
+ outline-offset: 2px;
35
+ /* or a ring via box-shadow */
36
+ box-shadow: 0 0 0 3px oklch(55% 0.16 250 / 0.4);
37
+ }
38
+ ```
39
+
40
+ The focus ring must meet 3:1 contrast against adjacent colors.
41
+
42
+ ## Disabled: Not Opacity-Only
43
+
44
+ A disabled control must combine **reduced opacity** with **`cursor: not-allowed`** and remain non-interactive. Opacity alone is insufficient and confusing.
45
+
46
+ ```css
47
+ .btn:disabled,
48
+ .btn[aria-disabled="true"] {
49
+ opacity: 0.5;
50
+ cursor: not-allowed;
51
+ pointer-events: none; /* or guard in JS */
52
+ }
53
+ ```
54
+
55
+ Also dim/hide associated helper text appropriately, and keep the control in the a11y tree (use `aria-disabled` rather than removing the element).
56
+
57
+ ## Loading: Skeleton or Spinner
58
+
59
+ While awaiting data or an action, show a **skeleton** or **spinner** — never bare "Loading..." text.
60
+
61
+ ```css
62
+ /* Skeleton shimmer */
63
+ .skeleton {
64
+ background: linear-gradient(90deg, var(--color-surface) 25%, var(--color-border) 50%, var(--color-surface) 75%);
65
+ background-size: 200% 100%;
66
+ animation: shimmer 1.2s ease-in-out infinite;
67
+ border-radius: 6px;
68
+ }
69
+ @keyframes shimmer { to { background-position: -200% 0; } }
70
+ ```
71
+
72
+ ```html
73
+ <!-- Button loading: keep label, add spinner, disable -->
74
+ <button class="btn" disabled aria-busy="true">
75
+ <span class="spinner" aria-hidden="true"></span> Saving
76
+ </button>
77
+ ```
78
+
79
+ For data regions, render skeleton placeholders preserving layout to avoid shift (see motion.md: no layout animation).
80
+
81
+ ## Error: Clear Message + Retry
82
+
83
+ Error states must surface a **human-readable message** and, when recoverable, a **retry / fix action**.
84
+
85
+ ```html
86
+ <div class="field error">
87
+ <label for="email">Email</label>
88
+ <input id="email" aria-invalid="true" aria-describedby="email-err" />
89
+ <p id="email-err" class="error-msg">Enter a valid email like name@example.com.</p>
90
+ </div>
91
+ ```
92
+
93
+ ```css
94
+ .field.error input { border-color: var(--color-error); }
95
+ .error-msg { color: var(--color-error); font-size: var(--text-sm); }
96
+ ```
97
+
98
+ Convey error with more than color (icon + text) for accessibility.
99
+
100
+ ## Success
101
+
102
+ Confirm completed actions with a brief, non-blocking indicator. Keep it subtle and auto-dismiss where appropriate.
103
+
104
+ ```css
105
+ .toast.success { background: var(--color-success); color: oklch(99% 0 0); }
106
+ ```
107
+
108
+ ## Practical Checklist
109
+
110
+ - [ ] All 8 states defined per interactive component.
111
+ - [ ] Focus uses `:focus-visible` ring, no naked `outline: none`.
112
+ - [ ] Disabled = opacity + `cursor: not-allowed` + inert.
113
+ - [ ] Loading uses skeleton/spinner, not text-only.
114
+ - [ ] Error shows message + retry and isn't color-only.
115
+ - [ ] Success confirmation is present and subtle.
@@ -0,0 +1,111 @@
1
+ # Layout & Space
2
+
3
+ Foundational rules for grids, spacing rhythm, and structural layout. The goal is predictable, maintainable layouts built from flow and flex/grid — never magic numbers or absolute offsets.
4
+
5
+ ## 4pt Base Spacing Scale
6
+
7
+ All spacing derives from a **4px base**. Use only these steps. Do not use arbitrary values like `7px`, `13px`, `23px`.
8
+
9
+ ```
10
+ 4px --space-1 tight (icon gaps, inline)
11
+ 8px --space-2 small (label→control)
12
+ 12px --space-3 control padding, list gaps
13
+ 16px --space-4 default gap between elements
14
+ 20px --space-5 card internal padding
15
+ 24px --space-6 section internal padding
16
+ 32px --space-8 gap between related blocks
17
+ 40px --space-10 large block separation
18
+ 48px --space-12 section separation
19
+ 64px --space-16 major section separation
20
+ ```
21
+
22
+ ```css
23
+ :root {
24
+ --space-1: 0.25rem; --space-2: 0.5rem; --space-3: 0.75rem;
25
+ --space-4: 1rem; --space-5: 1.25rem; --space-6: 1.5rem;
26
+ --space-8: 2rem; --space-10: 2.5rem; --space-12: 3rem;
27
+ --space-16: 4rem;
28
+ }
29
+ ```
30
+
31
+ ## Grid & Flexbox (NO Absolute Positioning)
32
+
33
+ Lay out with **CSS Grid** and **Flexbox**. Do not use `position: absolute` / `position: fixed` for structural layout (overlays, tooltips, and sticky headers are the only exceptions, and they must be scoped).
34
+
35
+ ```css
36
+ /* Page shell */
37
+ .container {
38
+ width: 100%;
39
+ max-width: 1200px;
40
+ margin-inline: auto;
41
+ padding-inline: var(--space-6);
42
+ }
43
+
44
+ /* Responsive card grid */
45
+ .grid {
46
+ display: grid;
47
+ grid-template-columns: repeat(auto-fill, minmax(0, 1fr));
48
+ gap: var(--space-6);
49
+ }
50
+ ```
51
+
52
+ ```css
53
+ /* Inline control row */
54
+ .row {
55
+ display: flex;
56
+ align-items: center;
57
+ gap: var(--space-3);
58
+ }
59
+ ```
60
+
61
+ ## Minimum Whitespace Between Sections
62
+
63
+ Maintain **at least 16px** (`--space-4`) of separation between distinct sections; prefer `--space-12`/`--space-16` between major page sections.
64
+
65
+ ```css
66
+ section + section { margin-top: var(--space-12); }
67
+ .card { padding: var(--space-5); }
68
+ .stack > * + * { margin-top: var(--space-4); } /* vertical rhythm */
69
+ ```
70
+
71
+ ## Max Content Width
72
+
73
+ - **Desktop:** cap content at **1200px**, centered.
74
+ - **Mobile:** content is **100%** width (minus safe padding). Never force desktop widths onto small screens.
75
+
76
+ ```css
77
+ .container { max-width: 1200px; width: 100%; }
78
+ @media (max-width: 640px) {
79
+ .container { max-width: 100%; padding-inline: var(--space-4); }
80
+ }
81
+ ```
82
+
83
+ ## No "Margin: Auto Soup"
84
+
85
+ Do not scatter `margin: auto` to push elements around. Centralize alignment through flex/grid `justify-content` / `align-items` / `gap`. `margin-inline: auto` is permitted **only** for the top-level `.container` centering.
86
+
87
+ ```css
88
+ /* Bad: fighting the layout with auto margins */
89
+ .sidebar { margin-left: auto; margin-right: 12px; }
90
+
91
+ /* Good: let the grid place it */
92
+ .layout { display: grid; grid-template-columns: 240px 1fr; gap: var(--space-8); }
93
+ ```
94
+
95
+ ## Stack Utility Pattern
96
+
97
+ Prefer an explicit vertical stack helper over chained margins.
98
+
99
+ ```css
100
+ .stack { display: flex; flex-direction: column; }
101
+ .stack-4 > * + * { margin-top: var(--space-4); }
102
+ .stack-6 > * + * { margin-top: var(--space-6); }
103
+ ```
104
+
105
+ ## Practical Checklist
106
+
107
+ - [ ] All spacing uses the 4pt scale tokens.
108
+ - [ ] Layout via grid/flex; no absolute positioning for structure.
109
+ - [ ] ≥16px between sections; major sections use larger gaps.
110
+ - [ ] Desktop max 1200px, mobile 100%.
111
+ - [ ] No scattered `margin: auto` hacks.
@@ -0,0 +1,48 @@
1
+ # 01 — Bento Grid
2
+
3
+ **Fingerprint:** asymmetric grid, mixed card sizes, icon-led sections, no equal-height rows.
4
+
5
+ ## Structure
6
+
7
+ ```
8
+ +-------+-------+
9
+ | | |
10
+ | A | B |
11
+ | | |
12
+ +---+---+-------+
13
+ | C | D |
14
+ +---+---+-------+
15
+ | E |
16
+ +-----------------+
17
+ ```
18
+
19
+ ## Rules
20
+
21
+ - Card A: hero metric or primary action (spans 2 cols on desktop)
22
+ - Card B: secondary metric or visual
23
+ - Card C: tertiary content
24
+ - Card D: tertiary content
25
+ - Card E: full-width footer or CTA
26
+
27
+ ## Typography
28
+
29
+ - Heading: display style from theme
30
+ - Body: body font from theme
31
+ - Metric numbers: tabular-nums, display weight
32
+
33
+ ## Spacing
34
+
35
+ - Grid gap: `--space-6` (24px)
36
+ - Card padding: `--space-5` (20px)
37
+ - Inner padding: `--space-4` (16px)
38
+
39
+ ## Anti-Patterns
40
+
41
+ - ❌ 3 equal columns
42
+ - ❌ Card-in-card
43
+ - ❌ All cards same height
44
+
45
+ ## Theme Affinity
46
+
47
+ - ✅ Cobalt, Carnival, Lumen
48
+ - ⚠️ Hum (needs more whitespace)
@@ -0,0 +1,50 @@
1
+ # 02 — Long Document
2
+
3
+ **Fingerprint:** single-column long scroll, generous line length control, anchored section nav, docs/blogs.
4
+
5
+ ## Structure
6
+
7
+ ```
8
+ +---------------------+
9
+ | Sticky Title Bar |
10
+ +------+--------------+
11
+ | TOC | Content |
12
+ | Nav | (headings, |
13
+ | | paragraphs|
14
+ | | code, img)|
15
+ | | |
16
+ +------+--------------+
17
+ | Footer / Pager |
18
+ +---------------------+
19
+ ```
20
+
21
+ ## Rules
22
+
23
+ - Content column: max-width 70ch, centered within reading area
24
+ - TOC: sticky, scrollspy active section highlight
25
+ - Headings: sequential h2/h3 hierarchy, no skipped levels
26
+ - Code blocks: full-width within column, syntax highlighted
27
+ - Support reading progress bar at top
28
+
29
+ ## Typography
30
+
31
+ - Heading: display or editorial serif from theme
32
+ - Body: body font, 18px base for reading comfort
33
+ - Code: mono, 14px
34
+
35
+ ## Spacing
36
+
37
+ - Content padding: `--space-8` (32px)
38
+ - Paragraph spacing: `--space-4` (16px)
39
+ - Section gap: `--space-10` (40px)
40
+
41
+ ## Anti-Patterns
42
+
43
+ - ❌ Multi-column body text
44
+ - ❌ Full-bleed images breaking reading rhythm
45
+ - ❌ Missing table of contents on long pages
46
+
47
+ ## Theme Affinity
48
+
49
+ - ✅ Hum, Lumen
50
+ - ⚠️ Carnival (needs restraint on decoration)
@@ -0,0 +1,51 @@
1
+ # 03 — Marquee Hero
2
+
3
+ **Fingerprint:** full-width hero, motion/marquee or autoplay carousel, high-contrast headline, marketing.
4
+
5
+ ## Structure
6
+
7
+ ```
8
+ +---------------------------+
9
+ | Nav (transparent) |
10
+ +---------------------------+
11
+ | |
12
+ | BIG HEADLINE |
13
+ | subhead + CTA |
14
+ | |
15
+ | [==== marquee =====] |
16
+ | [ scroll / carousel ] |
17
+ +---------------------------+
18
+ | Trust logos / stats |
19
+ +---------------------------+
20
+ ```
21
+
22
+ ## Rules
23
+
24
+ - Hero: full viewport-ish height (min 70vh) on desktop
25
+ - Marquee: infinite horizontal scroll or autoplay carousel, pausable on hover
26
+ - Headline: one dominant message, max 2 lines
27
+ - CTA: primary action, high contrast against hero bg
28
+ - Respect `prefers-reduced-motion` (disable auto-animation)
29
+
30
+ ## Typography
31
+
32
+ - Heading: display style, largest scale in system
33
+ - Subhead: body or medium weight, muted
34
+ - Marquee text: mono or uppercase label
35
+
36
+ ## Spacing
37
+
38
+ - Hero padding: `--space-10` (40px)
39
+ - Marquee height: 64px
40
+ - CTA margin-top: `--space-6` (24px)
41
+
42
+ ## Anti-Patterns
43
+
44
+ - ❌ Multiple competing CTAs
45
+ - ❌ Autoplay that can't be paused
46
+ - ❌ Hero text low contrast over image
47
+
48
+ ## Theme Affinity
49
+
50
+ - ✅ Carnival, Cobalt
51
+ - ❌ Hum (too understated for hero theater)
@@ -0,0 +1,49 @@
1
+ # 04 — Stat-Led
2
+
3
+ **Fingerprint:** metrics-first, big numbers above the fold, analytics dashboards, KPI summaries.
4
+
5
+ ## Structure
6
+
7
+ ```
8
+ +---------------------------+
9
+ | Title + Date Range |
10
+ +------+------+------+------+
11
+ | KPI | KPI | KPI | KPI |
12
+ | 123 | 45% | 8.2 | 99 |
13
+ +------+------+------+------+
14
+ | Primary Chart / Table |
15
+ | (trend, breakdown) |
16
+ +---------------------------+
17
+ | Secondary charts row |
18
+ +---------------------------+
19
+ ```
20
+
21
+ ## Rules
22
+
23
+ - KPI row: 4 cards on desktop, 2 on tablet, 1 on mobile
24
+ - Each KPI: value (display), label (muted), delta (up/down color)
25
+ - Primary chart: spans full width below KPIs
26
+ - Delta: green for positive, red for negative, semantic colors only
27
+
28
+ ## Typography
29
+
30
+ - Heading: display weight, tabular-nums for values
31
+ - KPI value: largest scale, tabular-nums
32
+ - Labels: 13px muted uppercase
33
+
34
+ ## Spacing
35
+
36
+ - KPI gap: `--space-4` (16px)
37
+ - Card padding: `--space-5` (20px)
38
+ - Section gap: `--space-6` (24px)
39
+
40
+ ## Anti-Patterns
41
+
42
+ - ❌ Decorative number animation without context
43
+ - ❌ Mixing units without labels
44
+ - ❌ Charts without axis or legend
45
+
46
+ ## Theme Affinity
47
+
48
+ - ✅ Cobalt, Lumen
49
+ - ⚠️ Hum (needs stronger number contrast)