agemon 0.1.0 → 6.0.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 (144) hide show
  1. package/README.md +732 -28
  2. package/assets/skills/architecture/agemon-architecture/LICENSE +21 -0
  3. package/assets/skills/architecture/agemon-architecture/NOTICE.md +9 -0
  4. package/assets/skills/architecture/agemon-architecture/SKILL.md +275 -0
  5. package/assets/skills/code-quality/agemon-clean-code/LICENSE +21 -0
  6. package/assets/skills/code-quality/agemon-clean-code/NOTICE.md +9 -0
  7. package/assets/skills/code-quality/agemon-clean-code/SKILL.md +78 -0
  8. package/assets/skills/code-quality/agemon-house-rules/SKILL.md +103 -0
  9. package/assets/skills/commit/agemon-commit/SKILL.md +87 -0
  10. package/assets/skills/design/agemon-design/LICENSE +21 -0
  11. package/assets/skills/design/agemon-design/NOTICE.md +9 -0
  12. package/assets/skills/design/agemon-design/SKILL.md +391 -0
  13. package/assets/skills/design/agemon-design/references/accessibility.md +182 -0
  14. package/assets/skills/design/agemon-design/references/agents.md +63 -0
  15. package/assets/skills/design/agemon-design/references/ai-chat.md +158 -0
  16. package/assets/skills/design/agemon-design/references/brief.md +186 -0
  17. package/assets/skills/design/agemon-design/references/color.md +216 -0
  18. package/assets/skills/design/agemon-design/references/components.md +91 -0
  19. package/assets/skills/design/agemon-design/references/copy.md +300 -0
  20. package/assets/skills/design/agemon-design/references/craft-intent.md +160 -0
  21. package/assets/skills/design/agemon-design/references/dashboard.md +131 -0
  22. package/assets/skills/design/agemon-design/references/dataviz.md +197 -0
  23. package/assets/skills/design/agemon-design/references/finish-bar.md +243 -0
  24. package/assets/skills/design/agemon-design/references/forms.md +192 -0
  25. package/assets/skills/design/agemon-design/references/heuristics.md +403 -0
  26. package/assets/skills/design/agemon-design/references/inspiration.md +287 -0
  27. package/assets/skills/design/agemon-design/references/layout.md +236 -0
  28. package/assets/skills/design/agemon-design/references/loops.md +155 -0
  29. package/assets/skills/design/agemon-design/references/metadata.md +98 -0
  30. package/assets/skills/design/agemon-design/references/modern-css.md +448 -0
  31. package/assets/skills/design/agemon-design/references/motion.md +434 -0
  32. package/assets/skills/design/agemon-design/references/personas.md +206 -0
  33. package/assets/skills/design/agemon-design/references/principles-catalog.md +299 -0
  34. package/assets/skills/design/agemon-design/references/recipe-auth.md +88 -0
  35. package/assets/skills/design/agemon-design/references/recipe-dashboard.md +130 -0
  36. package/assets/skills/design/agemon-design/references/recipe-landing.md +122 -0
  37. package/assets/skills/design/agemon-design/references/responsive.md +168 -0
  38. package/assets/skills/design/agemon-design/references/review.md +340 -0
  39. package/assets/skills/design/agemon-design/references/sound.md +150 -0
  40. package/assets/skills/design/agemon-design/references/spec.md +123 -0
  41. package/assets/skills/design/agemon-design/references/stack.md +522 -0
  42. package/assets/skills/design/agemon-design/references/state-design.md +188 -0
  43. package/assets/skills/design/agemon-design/references/themes.md +229 -0
  44. package/assets/skills/design/agemon-design/references/tokens.md +350 -0
  45. package/assets/skills/design/agemon-design/references/typography.md +246 -0
  46. package/assets/skills/design/agemon-design-dashboard/LICENSE +21 -0
  47. package/assets/skills/design/agemon-design-dashboard/NOTICE.md +9 -0
  48. package/assets/skills/design/agemon-design-dashboard/SKILL.md +113 -0
  49. package/assets/skills/design/agemon-design-editorial/LICENSE +21 -0
  50. package/assets/skills/design/agemon-design-editorial/NOTICE.md +9 -0
  51. package/assets/skills/design/agemon-design-editorial/SKILL.md +98 -0
  52. package/assets/skills/design/agemon-design-minimal/LICENSE +21 -0
  53. package/assets/skills/design/agemon-design-minimal/NOTICE.md +9 -0
  54. package/assets/skills/design/agemon-design-minimal/SKILL.md +97 -0
  55. package/assets/skills/geo-seo/geo/LICENSE +21 -0
  56. package/assets/skills/geo-seo/geo/NOTICE.md +18 -0
  57. package/assets/skills/geo-seo/geo/SKILL.md +145 -0
  58. package/assets/skills/geo-seo/geo-audit/LICENSE +21 -0
  59. package/assets/skills/geo-seo/geo-audit/NOTICE.md +17 -0
  60. package/assets/skills/geo-seo/geo-audit/SKILL.md +371 -0
  61. package/assets/skills/geo-seo/geo-audit/references/ai-visibility.md +233 -0
  62. package/assets/skills/geo-seo/geo-audit/references/content.md +329 -0
  63. package/assets/skills/geo-seo/geo-audit/references/platform-analysis.md +294 -0
  64. package/assets/skills/geo-seo/geo-audit/references/schema.md +383 -0
  65. package/assets/skills/geo-seo/geo-audit/references/technical.md +368 -0
  66. package/assets/skills/geo-seo/geo-brand-mentions/LICENSE +21 -0
  67. package/assets/skills/geo-seo/geo-brand-mentions/NOTICE.md +15 -0
  68. package/assets/skills/geo-seo/geo-brand-mentions/SKILL.md +459 -0
  69. package/assets/skills/geo-seo/geo-citability/LICENSE +21 -0
  70. package/assets/skills/geo-seo/geo-citability/NOTICE.md +14 -0
  71. package/assets/skills/geo-seo/geo-citability/SKILL.md +320 -0
  72. package/assets/skills/geo-seo/geo-content/LICENSE +21 -0
  73. package/assets/skills/geo-seo/geo-content/NOTICE.md +14 -0
  74. package/assets/skills/geo-seo/geo-content/SKILL.md +352 -0
  75. package/assets/skills/geo-seo/geo-crawlers/LICENSE +21 -0
  76. package/assets/skills/geo-seo/geo-crawlers/NOTICE.md +15 -0
  77. package/assets/skills/geo-seo/geo-crawlers/SKILL.md +388 -0
  78. package/assets/skills/geo-seo/geo-llmstxt/LICENSE +21 -0
  79. package/assets/skills/geo-seo/geo-llmstxt/NOTICE.md +14 -0
  80. package/assets/skills/geo-seo/geo-llmstxt/SKILL.md +433 -0
  81. package/assets/skills/geo-seo/geo-platform-optimizer/LICENSE +21 -0
  82. package/assets/skills/geo-seo/geo-platform-optimizer/NOTICE.md +14 -0
  83. package/assets/skills/geo-seo/geo-platform-optimizer/SKILL.md +282 -0
  84. package/assets/skills/geo-seo/geo-report/LICENSE +21 -0
  85. package/assets/skills/geo-seo/geo-report/NOTICE.md +14 -0
  86. package/assets/skills/geo-seo/geo-report/SKILL.md +406 -0
  87. package/assets/skills/geo-seo/geo-report-pdf/LICENSE +21 -0
  88. package/assets/skills/geo-seo/geo-report-pdf/NOTICE.md +20 -0
  89. package/assets/skills/geo-seo/geo-report-pdf/SKILL.md +153 -0
  90. package/assets/skills/geo-seo/geo-report-pdf/templates/geo-report-template.html +548 -0
  91. package/assets/skills/geo-seo/geo-schema/LICENSE +21 -0
  92. package/assets/skills/geo-seo/geo-schema/NOTICE.md +16 -0
  93. package/assets/skills/geo-seo/geo-schema/SKILL.md +396 -0
  94. package/assets/skills/geo-seo/geo-technical/LICENSE +21 -0
  95. package/assets/skills/geo-seo/geo-technical/NOTICE.md +15 -0
  96. package/assets/skills/geo-seo/geo-technical/SKILL.md +566 -0
  97. package/assets/skills/performance/agemon-performance/NOTICE.md +1 -0
  98. package/assets/skills/performance/agemon-performance/SKILL.md +76 -0
  99. package/assets/skills/security/agemon-security/LICENSE +21 -0
  100. package/assets/skills/security/agemon-security/NOTICE.md +8 -0
  101. package/assets/skills/security/agemon-security/SKILL.md +356 -0
  102. package/assets/skills/self-review/agemon-review-intake/LICENSE +21 -0
  103. package/assets/skills/self-review/agemon-review-intake/NOTICE.md +9 -0
  104. package/assets/skills/self-review/agemon-review-intake/SKILL.md +205 -0
  105. package/assets/skills/self-review/agemon-review-request/LICENSE +21 -0
  106. package/assets/skills/self-review/agemon-review-request/NOTICE.md +9 -0
  107. package/assets/skills/self-review/agemon-review-request/SKILL.md +104 -0
  108. package/assets/skills/self-review/agemon-review-request/code-reviewer.md +188 -0
  109. package/assets/skills/self-review/agemon-root-cause/LICENSE +21 -0
  110. package/assets/skills/self-review/agemon-root-cause/NOTICE.md +10 -0
  111. package/assets/skills/self-review/agemon-root-cause/SKILL.md +283 -0
  112. package/assets/skills/self-review/agemon-root-cause/condition-based-waiting-example.ts +158 -0
  113. package/assets/skills/self-review/agemon-root-cause/condition-based-waiting.md +115 -0
  114. package/assets/skills/self-review/agemon-root-cause/defense-in-depth.md +122 -0
  115. package/assets/skills/self-review/agemon-root-cause/find-polluter.sh +72 -0
  116. package/assets/skills/self-review/agemon-root-cause/root-cause-tracing.md +169 -0
  117. package/assets/skills/self-review/agemon-root-cause/test-academic.md +14 -0
  118. package/assets/skills/self-review/agemon-root-cause/test-pressure-1.md +58 -0
  119. package/assets/skills/self-review/agemon-root-cause/test-pressure-2.md +68 -0
  120. package/assets/skills/self-review/agemon-root-cause/test-pressure-3.md +69 -0
  121. package/assets/skills/self-review/agemon-verify-before-done/LICENSE +21 -0
  122. package/assets/skills/self-review/agemon-verify-before-done/NOTICE.md +9 -0
  123. package/assets/skills/self-review/agemon-verify-before-done/SKILL.md +120 -0
  124. package/assets/skills/team-lead/agemon-plan-rfc/SKILL.md +317 -0
  125. package/assets/skills/team-lead/prd-generator/SKILL.md +437 -0
  126. package/assets/skills/team-lead/skill-headofit-audit/SKILL.md +72 -0
  127. package/assets/skills/team-lead/skill-incident-rca/SKILL.md +66 -0
  128. package/assets/skills/team-lead/skill-meeting-lifecycle/SKILL.md +63 -0
  129. package/assets/skills/team-lead/skill-obsidian-vault-sync/SKILL.md +69 -0
  130. package/assets/skills/team-lead/skill-prd-decomposer/SKILL.md +71 -0
  131. package/assets/skills/team-lead/skill-sec-check/SKILL.md +70 -0
  132. package/assets/skills/team-lead/skill-task-extractor/SKILL.md +79 -0
  133. package/assets/skills/team-lead/skill-tech-spike/SKILL.md +57 -0
  134. package/assets/skills/team-lead/skill-techlead-reviewer/SKILL.md +81 -0
  135. package/assets/tools/code-review-graph-constraints.txt +1418 -0
  136. package/assets/tools/package-lock.json +111 -0
  137. package/assets/tools/package.json +6 -0
  138. package/dist/chunk-5LATHJYU.js +4026 -0
  139. package/dist/chunk-5LATHJYU.js.map +1 -0
  140. package/dist/fake-subprocess-2BETWZVZ.js +666 -0
  141. package/dist/fake-subprocess-2BETWZVZ.js.map +1 -0
  142. package/dist/index.js +21101 -1956
  143. package/dist/index.js.map +1 -1
  144. package/package.json +30 -17
@@ -0,0 +1,403 @@
1
+ # Heuristics — Scored Critique Methodology
2
+
3
+ Any skill can list anti-patterns. A scored critique is a defensible artifact a PM can action. Every finding gets a heuristic, a score (1-5), and an impact estimate. This file is the source of truth for the `/ui-craft:heuristic` command — the rubric, the laws, the output shape.
4
+
5
+ ---
6
+
7
+ ## How to Use
8
+
9
+ Run the full pass: Nielsen's 10 (score 1-5 each) → 6 Design Laws (PASS/FAIL each) → rank findings by impact tag. Output is a machine-parseable scorecard PMs can paste into any issue tracker.
10
+
11
+ Usability is not a knob. `CRAFT_LEVEL` does not relax these scores — a 2 is a 2 at every craft level.
12
+
13
+ ---
14
+
15
+ ## Scoring Rubric (applies to every heuristic)
16
+
17
+ | Score | Meaning |
18
+ |-------|---------|
19
+ | **1** | Blocks users. Core task cannot complete. |
20
+ | **2** | Severe friction. Users abandon or error repeatedly. |
21
+ | **3** | Works but confusing. Users complete with hesitation. |
22
+ | **4** | Works, minor polish left. No user impact. |
23
+ | **5** | Best-in-class. Nothing to add. |
24
+
25
+ Every finding is recorded in a row: `| Heuristic | Score | Finding | Impact |`.
26
+
27
+ ---
28
+
29
+ ## Nielsen's 10 Usability Heuristics
30
+
31
+ Source: Nielsen, J. (1994). "10 Usability Heuristics for User Interface Design." Nielsen Norman Group.
32
+
33
+ ### 1. Visibility of System Status
34
+
35
+ The system should always keep users informed about what is going on, through appropriate feedback within reasonable time.
36
+
37
+ **What to look for:**
38
+ - [ ] Every async action has a loading state (spinner, progress, skeleton)
39
+ - [ ] Submit buttons disable + show progress while in flight
40
+ - [ ] Optimistic UI reconciles on server response (no silent failure)
41
+ - [ ] Navigation state is visible (active tab, breadcrumb, selected row)
42
+ - [ ] Long operations (>5s) escalate to progress percentage or estimate
43
+
44
+ **Common failures in AI-generated UIs:**
45
+ - Form submit has no loading state — user clicks 3-4x thinking nothing happened
46
+ - Toast appears then disappears before the user can read it
47
+ - No indication that a save succeeded ("did it work?")
48
+
49
+ ### 2. Match Between System and the Real World
50
+
51
+ Speak the user's language — words, phrases, concepts they know. Follow real-world conventions.
52
+
53
+ **What to look for:**
54
+ - [ ] No system jargon in user-facing copy ("exception thrown", "null ref")
55
+ - [ ] Icons match cultural convention (trash = delete, not a cog)
56
+ - [ ] Dates are formatted for the user's locale, not ISO
57
+ - [ ] Error messages speak human, not stack trace
58
+ - [ ] Metaphors are consistent (folder, file, workspace)
59
+
60
+ **Common failures in AI-generated UIs:**
61
+ - "Submit payload" instead of "Save changes"
62
+ - "Entity not found" instead of "We couldn't find that project"
63
+ - Time displayed as `1713369600` (Unix) instead of `2 hours ago`
64
+
65
+ ### 3. User Control and Freedom
66
+
67
+ Users often perform actions by mistake. They need a clearly marked emergency exit.
68
+
69
+ **What to look for:**
70
+ - [ ] Every destructive action has Undo (preferred) or a confirm dialog
71
+ - [ ] Modals close on Esc and on backdrop click
72
+ - [ ] Multi-step flows have Back without losing state
73
+ - [ ] Autosave preserves in-progress work on nav away
74
+ - [ ] URL reflects state so the back button works
75
+
76
+ **Common failures in AI-generated UIs:**
77
+ - Delete is instant and irreversible — no undo toast
78
+ - Modal traps the user; no way out without completing the form
79
+ - Browser back loses all form input
80
+
81
+ ### 4. Consistency and Standards
82
+
83
+ Users should not have to wonder whether different words, situations, or actions mean the same thing. Follow platform conventions.
84
+
85
+ **What to look for:**
86
+ - [ ] Primary action placement consistent across views (right side, solid fill)
87
+ - [ ] Same verb for same operation throughout ("Delete" always, not "Delete"/"Remove"/"Trash")
88
+ - [ ] Icon meanings stable across screens
89
+ - [ ] Form patterns match platform (e.g., Cmd+Enter submits on macOS)
90
+
91
+ **Common failures in AI-generated UIs:**
92
+ - Buttons swap position between modals (Cancel left here, right there)
93
+ - Three different words for "delete" in the same product
94
+ - Non-standard scroll hijacking on a standard content page
95
+
96
+ ### 5. Error Prevention
97
+
98
+ Better than good error messages is a design that prevents the problem from occurring in the first place.
99
+
100
+ **What to look for:**
101
+ - [ ] Destructive actions require confirmation typed with the resource name
102
+ - [ ] Disabled states prevent invalid submissions (with explanation on hover)
103
+ - [ ] Input constraints enforced client-side (date pickers, typed inputs)
104
+ - [ ] Autosave + version history on content-creation surfaces
105
+ - [ ] Warn before leaving unsaved changes
106
+
107
+ **Common failures in AI-generated UIs:**
108
+ - Freeform "Are you sure?" confirms that users mindlessly click
109
+ - No validation until submit; user fills 12 fields then sees 4 errors
110
+ - Paste blocked on fields (password confirm, order IDs)
111
+
112
+ ### 6. Recognition Rather Than Recall
113
+
114
+ Minimize the user's memory load by making objects, actions, and options visible.
115
+
116
+ **What to look for:**
117
+ - [ ] Recently used / favorited items surfaced
118
+ - [ ] Autocomplete on any field with a known set of answers
119
+ - [ ] Keyboard shortcuts listed in tooltips (not hidden in a help menu)
120
+ - [ ] Current selection persists visibly
121
+ - [ ] Empty states suggest next actions
122
+
123
+ **Common failures in AI-generated UIs:**
124
+ - Power-user shortcuts (Cmd+K) exist but are undiscoverable
125
+ - User must remember which tab they were on after a refresh
126
+ - Dropdown with 200 options and no search
127
+
128
+ ### 7. Flexibility and Efficiency of Use
129
+
130
+ Accelerators — unseen by novice — may speed up the interaction for the expert.
131
+
132
+ **What to look for:**
133
+ - [ ] Keyboard shortcuts for frequent actions (Cmd+K, j/k nav)
134
+ - [ ] Bulk actions on lists (multi-select + batch operate)
135
+ - [ ] Saved views / filters / segments
136
+ - [ ] Customization for heavy users (column config, hotkeys)
137
+ - [ ] Paste-to-action patterns (URL paste auto-parses)
138
+
139
+ **Common failures in AI-generated UIs:**
140
+ - Forces the same flow for novice and expert
141
+ - No way to multi-select in lists of 100+
142
+ - Command palette missing on tools users will spend hours in
143
+
144
+ ### 8. Aesthetic and Minimalist Design
145
+
146
+ Dialogues should not contain information that is irrelevant or rarely needed.
147
+
148
+ **What to look for:**
149
+ - [ ] Every section answers one question; no filler
150
+ - [ ] Visual weight proportional to importance
151
+ - [ ] One accent, 3-5 placements per viewport (see SKILL.md anti-slop)
152
+ - [ ] White space is used, not avoided
153
+ - [ ] No decorative graphics competing with content
154
+
155
+ **Common failures in AI-generated UIs:**
156
+ - Hero has 4 CTAs of equal weight
157
+ - Every card has a colored top border
158
+ - Gradient backgrounds on every section
159
+
160
+ ### 9. Help Users Recognize, Diagnose, and Recover From Errors
161
+
162
+ Error messages in plain language, precisely indicate the problem, and constructively suggest a solution.
163
+
164
+ **What to look for:**
165
+ - [ ] Errors appear inline, at the field, not as a global banner
166
+ - [ ] Messages specify what went wrong AND how to fix it
167
+ - [ ] Server errors include a copy-to-clipboard ID for support
168
+ - [ ] Recovery is one click (retry, undo, contact support)
169
+ - [ ] Network errors differ from validation errors
170
+
171
+ **Common failures in AI-generated UIs:**
172
+ - "Something went wrong" with no detail, no retry, no support path
173
+ - Red toast that disappears before the user reads it
174
+ - Error blames the user ("Invalid input") instead of explaining
175
+
176
+ ### 10. Help and Documentation
177
+
178
+ Even though it is better if the system can be used without documentation, help may be necessary.
179
+
180
+ **What to look for:**
181
+ - [ ] Help is contextual, not a separate site the user must leave to
182
+ - [ ] Empty states double as onboarding ("Create your first project")
183
+ - [ ] Tooltips on non-obvious icons
184
+ - [ ] Inline help links in complex forms
185
+ - [ ] Searchable docs for deep features
186
+
187
+ **Common failures in AI-generated UIs:**
188
+ - No tooltips on icon-only buttons
189
+ - Help buried behind a "?" in the corner with a 404 behind it
190
+ - Onboarding is a 10-slide lightbox the user skips
191
+
192
+ ---
193
+
194
+ ## The 6 Design Laws
195
+
196
+ Each is scored PASS / FAIL with a specific detail. These are physics + psychology, not preferences — failing them has measurable UX impact.
197
+
198
+ ### Fitts's Law
199
+
200
+ Source: Fitts, P. M. (1954). "The information capacity of the human motor system in controlling the amplitude of movement."
201
+
202
+ **Statement:** Time to acquire a target is a function of its size and distance.
203
+
204
+ **When load-bearing:** Every tappable / clickable surface. Critical on mobile.
205
+
206
+ **How to score:**
207
+ - **PASS** — touch targets ≥ 44px on mobile, ≥ 24px on desktop; primary CTA in the natural eye/thumb path; related actions grouped
208
+ - **FAIL** — touch targets under 44px mobile; destructive actions adjacent to primary actions; CTA placed far from where the user just looked
209
+
210
+ ### Hick's Law
211
+
212
+ Source: Hick, W. E. (1952). "On the rate of gain of information."
213
+
214
+ **Statement:** Decision time grows logarithmically with the number of choices.
215
+
216
+ **When load-bearing:** Menus, navigation, plan selectors, form fields, dashboards.
217
+
218
+ **How to score:**
219
+ - **PASS** — nav ≤ 7 items at any level; no field offers 20+ unfiltered options without search
220
+ - **FAIL** — 12+ top-nav items; a single select with 200 entries and no type-ahead; dashboard with 18 metrics at equal weight
221
+
222
+ ### Doherty Threshold
223
+
224
+ Source: Doherty, W. J. & Thadani, A. J. (1982). "The Economic Value of Rapid Response Time." IBM.
225
+
226
+ **Statement:** Productivity soars when response time is under 400ms.
227
+
228
+ **When load-bearing:** Every user-initiated action. Critical on data-heavy views and transitions.
229
+
230
+ **How to score:**
231
+ - **PASS** — perceived response < 400ms; optimistic UI for saves, likes, toggles; skeletons within 200ms
232
+ - **FAIL** — form submit shows a spinner for 2s with no optimistic state; nav click waits on full server round-trip before painting anything
233
+
234
+ ### Cleveland-McGill Hierarchy
235
+
236
+ Source: Cleveland, W. S. & McGill, R. (1984). "Graphical Perception: Theory, Experimentation, and Application to the Development of Graphical Methods." JASA.
237
+
238
+ **Statement:** Humans decode visual encodings with different accuracy — position > length > angle > area > color-hue.
239
+
240
+ **When load-bearing:** Every chart, metric card, comparative dataviz.
241
+
242
+ **How to score:**
243
+ - **PASS** — quantitative comparisons use position or length (bar, line, dot); color reserved for category; no pie or 3D
244
+ - **FAIL** — pie chart used for comparison; donut with ≥ 5 slices; color-gradient used to encode magnitude where length would work
245
+
246
+ ### Miller's Law
247
+
248
+ Source: Miller, G. A. (1956). "The Magical Number Seven, Plus or Minus Two."
249
+
250
+ **Statement:** Humans hold ~7 (±2) items in working memory. Chunking extends this.
251
+
252
+ **When load-bearing:** Nav depth, form section counts, onboarding flows, step counts.
253
+
254
+ **How to score:**
255
+ - **PASS** — navigation ≤ 7 items per level; forms chunked into ≤ 5 sections; multi-step flows ≤ 5 steps or with clear progress. (Wizard ceiling is 5, not 7: each step holds multiple fields, and each field consumes working-memory slots of its own.)
256
+ - **FAIL** — 14-item top nav; a single-page form with 23 ungrouped fields; a checkout with 9 steps and no progress indicator
257
+
258
+ ### Tesler's Law
259
+
260
+ Also called the Law of Conservation of Complexity. Attributed to Larry Tesler.
261
+
262
+ **Statement:** Every application has an irreducible amount of complexity. The only question is who deals with it — the user, the UI, or the backend.
263
+
264
+ **When load-bearing:** Feature-rich tools. Configuration-heavy flows. Anywhere you're tempted to "expose a toggle."
265
+
266
+ **How to score:**
267
+ - **PASS** — complexity absorbed by sensible defaults, automation, or backend inference; advanced controls behind progressive disclosure
268
+ - **FAIL** — UI exposes every backend knob; user must configure 8 things before they can accomplish the primary task; no default state, only empty forms
269
+
270
+ ---
271
+
272
+ ## Impact Tags
273
+
274
+ Every finding carries exactly one impact tag. This is how a PM prioritizes:
275
+
276
+ | Tag | Meaning | Example |
277
+ |-----|---------|---------|
278
+ | `blocks-conversion` | User cannot complete the core journey | Signup form submit silently fails on network error |
279
+ | `adds-friction` | User completes but abandonment rate rises | Submit button has no loading state; users click 3-4x |
280
+ | `reduces-trust` | Quality signal — affects retention | Typos in error messages; inconsistent button styles |
281
+ | `minor-polish` | Craft layer only; no measurable user impact | Missing `tabular-nums` on a metric |
282
+
283
+ Rank findings in the final output by impact tag, not by heuristic order: `blocks-conversion > adds-friction > reduces-trust > minor-polish`.
284
+
285
+ ---
286
+
287
+ ## Scoring Output Format
288
+
289
+ The `/ui-craft:heuristic` command outputs **exactly** this structure. Do not invent new sections. Do not merge tables. Do not drop the ranking at the end.
290
+
291
+ ```markdown
292
+ ## Heuristic Scorecard
293
+
294
+ | Heuristic | Score | Finding | Impact |
295
+ |-----------|-------|---------|--------|
296
+ | Visibility of system status | 2 | Form submit has no loading state; users click 3-4x thinking nothing happened | adds-friction |
297
+ | Match system and real world | 4 | Dates formatted for locale; one copy says "entity" instead of "project" | minor-polish |
298
+ | User control and freedom | 3 | Delete has confirm but no undo after it lands | reduces-trust |
299
+ | Consistency and standards | 4 | Primary CTA consistent; one modal has Cancel on right, rest on left | minor-polish |
300
+ | Error prevention | 4 | Delete confirms with the resource name — good | minor-polish |
301
+ | Recognition over recall | 3 | Cmd+K exists but not surfaced in tooltips | adds-friction |
302
+ | Flexibility and efficiency | 2 | No bulk-select on list of 200+ items | adds-friction |
303
+ | Aesthetic and minimalist | 3 | Hero has two competing accents | reduces-trust |
304
+ | Error recovery | 1 | "Something went wrong" with no ID, no retry | blocks-conversion |
305
+ | Help and documentation | 3 | Tooltips on most icons; empty state has no CTA | reduces-trust |
306
+
307
+ ## Design Law Audit
308
+
309
+ | Law | Pass/Fail | Detail |
310
+ |-----|-----------|--------|
311
+ | Fitts's Law | FAIL | Primary CTA is 32px tall on mobile; expected ≥ 44px |
312
+ | Hick's Law | PASS | 5 top-nav items — within 7±2 |
313
+ | Doherty Threshold | FAIL | Save shows spinner for ~1.8s with no optimistic state |
314
+ | Cleveland-McGill | PASS | Bar charts for comparison, color for category only |
315
+ | Miller's Law | PASS | Form chunked into 4 logical sections |
316
+ | Tesler's Law | FAIL | New user sees 8 required config fields before first action |
317
+
318
+ ## Top findings (ranked by impact)
319
+
320
+ 1. Error recovery (score 1, blocks-conversion) — "Something went wrong" message strands users; no ID, no retry, no support path
321
+ 2. Fitts's Law (FAIL, adds-friction) — primary CTA 32px on mobile; raise to ≥ 44px
322
+ 3. Doherty Threshold (FAIL, adds-friction) — save feels broken; add optimistic UI
323
+ 4. Flexibility (score 2, adds-friction) — bulk select missing on 200+ item list
324
+ 5. Visibility (score 2, adds-friction) — submit has no loading state
325
+ ```
326
+
327
+ **Notes on output:**
328
+ - The first row of each heuristic table is the short-name version (not the verbose Nielsen title). The heuristic is unambiguous from context.
329
+ - The `Top findings` list is a rank, not a re-listing. Include only findings at `reduces-trust` or worse. Cap at 5.
330
+ - Scores of 4-5 don't need a finding row unless the grader wants to surface what's working. Blank findings for 4-5 rows are fine; the Score column carries the signal.
331
+
332
+ ---
333
+
334
+ ## UsabilityScore (0-100) — the judged companion to UICraftScore
335
+
336
+ The scorecard above is qualitative. **UsabilityScore** rolls it into one 0-100 number + letter grade so it composes with the deterministic **UICraftScore** (`evals/quality/score.mjs`) and so a PM or CI run has a single figure to track.
337
+
338
+ > **Judged, not deterministic.** UsabilityScore is computed by the host agent from this rubric — it reflects judgment and *may vary run to run*. It is **not** reproducible the way UICraftScore is. Never gate CI on UsabilityScore; gate on the deterministic UICraftScore and use UsabilityScore for review depth. Always label it `(judged)` when reporting.
339
+
340
+ ### Formula
341
+
342
+ Deterministic *given the scores* — the same scorecard always yields the same number. Only the act of scoring is judgment.
343
+
344
+ ```
345
+ heuristic_base = round( ((mean(nielsen_scores) − 1) / 4) × 100 ) # 10 Nielsen scores, each 1–5
346
+ law_penalty = (number of FAILED design laws) × 5 # 6 laws, −5 each (max −30)
347
+ UsabilityScore = clamp( heuristic_base − law_penalty , 0 , 100 )
348
+ ```
349
+
350
+ Grade bands are **identical to UICraftScore** for cross-comparison: **A ≥ 90 · B ≥ 80 · C ≥ 70 · D ≥ 60 · F < 60**.
351
+
352
+ Properties: all-5s with all laws passing → 100 (A). All-3s, all laws pass → 50 (F). The base maps the 1–5 mean linearly onto 0–100 (1→0, 3→50, 5→100); each failed law is a flat −5 because laws are physics/psychology violations with measurable cost.
353
+
354
+ ### Worked example (the scorecard above)
355
+
356
+ Nielsen scores `2,4,3,4,4,3,2,3,1,3` → mean `2.9` → base `round(((2.9−1)/4)×100)` = **48**.
357
+ Failed laws: Fitts, Doherty, Tesler = 3 → penalty `15`.
358
+ `UsabilityScore = clamp(48 − 15, 0, 100)` = **33 / F**. (A genuinely broken UI scores in the F band — as it should.)
359
+
360
+ ### Output
361
+
362
+ Append this block to the `/ui-craft:heuristic` output, after Top findings:
363
+
364
+ ```markdown
365
+ ## UsabilityScore
366
+
367
+ **33 / F** (judged) · heuristic base 48 − law penalty 15
368
+
369
+ | Component | Value |
370
+ |-----------|-------|
371
+ | Nielsen mean (1–5) | 2.9 |
372
+ | Heuristic base (0–100) | 48 |
373
+ | Failed design laws | 3 (Fitts, Doherty, Tesler) |
374
+ | Law penalty | −15 |
375
+ | **UsabilityScore** | **33 / F** |
376
+ ```
377
+
378
+ Machine-readable form (emit when a caller asks for `--json`, or when invoked by `/sddesign` / an extended report):
379
+
380
+ ```json
381
+ {
382
+ "usability": { "score": 33, "grade": "F", "judged": true },
383
+ "components": { "nielsen_mean": 2.9, "heuristic_base": 48, "failed_laws": 3, "law_penalty": 15 },
384
+ "version": "usability-1.0"
385
+ }
386
+ ```
387
+
388
+ ### Extended quality report (optional combine)
389
+
390
+ When the user wants the full quality picture, place the judged UsabilityScore beside the deterministic UICraftScore. Get the deterministic score with `node scripts/eval.mjs <path> --json` or the `score_ui` MCP tool, then render:
391
+
392
+ ```markdown
393
+ ## Extended quality report
394
+
395
+ | Score | Value | Reproducible? |
396
+ |-------|-------|---------------|
397
+ | UICraftScore | 82 / B | ✅ deterministic — identical every run |
398
+ | UsabilityScore | 33 / F | ❌ judged — LLM judgment, may vary |
399
+
400
+ Gate CI on UICraftScore. Use UsabilityScore to prioritize review depth — a high deterministic score with a low UsabilityScore means the code is clean but the *experience* has friction the static rules can't see.
401
+ ```
402
+
403
+ The two scores are intentionally **not** averaged into one figure: one is reproducible and one is judged, and collapsing them would hide that distinction — the exact property the deterministic score exists to protect.