@tamsensedev/runner 0.13.0 → 0.19.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 (82) hide show
  1. package/LICENSE +5 -5
  2. package/README.md +76 -57
  3. package/dist/cli.js +757 -379
  4. package/dist/cli.js.map +1 -1
  5. package/dist/recorder.cjs.map +1 -1
  6. package/library/.claude-plugin/plugin.json +5 -5
  7. package/library/THIRD_PARTY_NOTICES.md +123 -123
  8. package/library/agents/code-architect.md +67 -67
  9. package/library/agents/code-explorer.md +61 -61
  10. package/library/agents/code-reviewer.md +73 -73
  11. package/library/agents/code-simplifier.md +62 -62
  12. package/library/agents/design-critic.md +52 -52
  13. package/library/agents/second-opinion.md +64 -64
  14. package/library/agents/security-auditor.md +86 -86
  15. package/library/agents/silent-failure-hunter.md +70 -70
  16. package/library/agents/test-coverage-analyzer.md +78 -78
  17. package/library/agents/test-runner.md +48 -48
  18. package/library/agents/ui-tester.md +50 -50
  19. package/library/licenses/Apache-2.0.txt +202 -202
  20. package/library/skills/accessibility/SKILL.md +144 -144
  21. package/library/skills/accessibility/references/wcag-checks.md +168 -168
  22. package/library/skills/addressing-review-feedback/SKILL.md +109 -109
  23. package/library/skills/app-screens/SKILL.md +96 -96
  24. package/library/skills/app-screens/references/shell-kpis-charts.md +108 -108
  25. package/library/skills/app-screens/references/states-density-phone.md +54 -54
  26. package/library/skills/app-screens/references/tables-forms-settings.md +104 -104
  27. package/library/skills/avoiding-generic-ai-design/SKILL.md +92 -92
  28. package/library/skills/avoiding-generic-ai-design/references/tells.md +112 -112
  29. package/library/skills/clean-commits/SKILL.md +85 -85
  30. package/library/skills/design-review/SKILL.md +107 -107
  31. package/library/skills/design-review/references/critique-passes.md +101 -101
  32. package/library/skills/design-review/references/screenshot-procedure.md +121 -121
  33. package/library/skills/differential-security-review/LICENSE +427 -427
  34. package/library/skills/differential-security-review/SKILL.md +105 -105
  35. package/library/skills/differential-security-review/references/adversarial.md +115 -115
  36. package/library/skills/differential-security-review/references/methodology.md +145 -145
  37. package/library/skills/differential-security-review/references/patterns.md +108 -108
  38. package/library/skills/false-positive-check/LICENSE +427 -427
  39. package/library/skills/false-positive-check/SKILL.md +95 -95
  40. package/library/skills/false-positive-check/references/bug-class-verification.md +128 -128
  41. package/library/skills/false-positive-check/references/deep-verification.md +113 -113
  42. package/library/skills/false-positive-check/references/evidence-templates.md +93 -93
  43. package/library/skills/false-positive-check/references/false-positive-patterns.md +122 -122
  44. package/library/skills/false-positive-check/references/gate-reviews.md +36 -36
  45. package/library/skills/false-positive-check/references/standard-verification.md +80 -80
  46. package/library/skills/focused-implementation/SKILL.md +104 -104
  47. package/library/skills/implementation-plan/SKILL.md +66 -66
  48. package/library/skills/interface-design/SKILL.md +144 -144
  49. package/library/skills/interface-design/references/craft-defaults.md +130 -130
  50. package/library/skills/interface-design/references/new-direction.md +62 -62
  51. package/library/skills/interface-design/references/writing.md +52 -52
  52. package/library/skills/interface-polish/SKILL.md +103 -103
  53. package/library/skills/interface-polish/references/detail-rules.md +154 -154
  54. package/library/skills/interface-polish/references/worst-case-data.md +158 -158
  55. package/library/skills/motion-design/SKILL.md +106 -106
  56. package/library/skills/motion-design/references/recipes.md +243 -243
  57. package/library/skills/postgres-performance/SKILL.md +97 -97
  58. package/library/skills/postgres-performance/references/rules.md +265 -265
  59. package/library/skills/project-orientation/SKILL.md +77 -77
  60. package/library/skills/reviewing-changes/SKILL.md +183 -183
  61. package/library/skills/safe-database-changes/SKILL.md +111 -111
  62. package/library/skills/safe-database-changes/references/backfills.md +75 -75
  63. package/library/skills/safe-database-changes/references/migration-tools.md +69 -69
  64. package/library/skills/safe-database-changes/references/postgres-ddl.md +199 -199
  65. package/library/skills/security-review/SKILL.md +132 -132
  66. package/library/skills/security-review/references/checks-by-area.md +107 -107
  67. package/library/skills/security-review/references/do-not-report.md +86 -86
  68. package/library/skills/spec-writing/SKILL.md +144 -144
  69. package/library/skills/systematic-debugging/SKILL.md +130 -130
  70. package/library/skills/systematic-debugging/references/flaky-tests.md +51 -51
  71. package/library/skills/systematic-debugging/references/root-cause-tracing.md +55 -55
  72. package/library/skills/task-interview/SKILL.md +84 -84
  73. package/library/skills/test-driven-development/SKILL.md +116 -116
  74. package/library/skills/test-driven-development/references/writing-good-tests.md +85 -85
  75. package/library/skills/ui-testing/SKILL.md +102 -102
  76. package/library/skills/ui-testing/references/headless-check.md +295 -295
  77. package/library/skills/ui-testing/references/local-stand.md +51 -51
  78. package/library/skills/ui-testing/references/playwright-patterns.md +134 -134
  79. package/library/skills/ui-testing/references/recording.md +61 -61
  80. package/library/skills/verification-before-completion/SKILL.md +113 -113
  81. package/library/skills/web-interface-guidelines/SKILL.md +202 -202
  82. package/package.json +46 -46
@@ -1,104 +1,104 @@
1
- # Tables, lists, forms and settings
2
-
3
- Read this when building a table, a data list, a form or a settings view. Numbers are defaults; the project's existing table, form and settings components win, and a sibling screen's patterns should be reused exactly.
4
-
5
- ## Tables
6
-
7
- **Rows**
8
-
9
- - Single-line data rows 40 to 48px (dense tools 32 to 36px). Two-line rows with media 56 to 72px: media height plus 24 to 32px.
10
- - Line two of a cell sits about 20px below line one, one size smaller (12 to 13px) and muted. Two-line rows need at least a 40px pitch or the subline touches the next row.
11
- - Key-value rows inside cards 24 to 32px. Overview lists show 2 to 6 rows.
12
-
13
- **Header**
14
-
15
- - 12px (11 to 14), regular or medium weight, muted, sentence case. Uppercase tracked headers read louder than the data; use them only if the project does.
16
- - No fill band. A rule under the header only if it is the strongest line in the table.
17
- - Header row 36 to 40px. Numeric headers right-aligned and flush with their values. A sort glyph on the active column only.
18
-
19
- **Dividers**
20
-
21
- - No zebra striping.
22
- - Row rules 1px, 3 to 7% darker than the surface (about #efefef to #f4f4f4 on white), or none with a generous pitch.
23
- - One extent per screen: full inner width, or starting at the text column.
24
-
25
- **Figures and alignment**
26
-
27
- - Numbers right-aligned in tabular figures. Fixed decimals per metric: money 2, percentages 1 or 2, counts 0. Thousands separators everywhere; abbreviate (12.7k) only where precision does not matter. A sign on every change. Format with `Intl.NumberFormat` and `Intl.DateTimeFormat` in the user's locale.
28
- - The identity column (name, title) gets the most width, a third to a half, and is never the one cut off. Shorten names consistently rather than truncating them at random widths.
29
- - One right edge per row: every right-aligned figure ends on the same line.
30
- - Two measures can stack in one cell (a count over its percentage, a date over its time) on one right edge, instead of taking two columns.
31
- - Dates: ISO-like and right-aligned where rows are compared; relative ("Today", "6 days ago") for recency, switching to an absolute date after about a week.
32
- - IDs in monospace at body size, truncated in the middle or to about 8 characters, with a copy button.
33
- - Truncate to one line with an ellipsis and a way to see the full value (title attribute, tooltip, detail view). Never truncate numbers, amounts or dates.
34
-
35
- **Ink inside rows**
36
-
37
- - Only the identity and the key number in the primary text colour; everything else muted.
38
- - A missing value is a muted dash; a real zero is printed ("0", "$0.00").
39
- - The sign carries meaning, not colour: no red on every negative amount. Colour only rows that need attention.
40
- - Link colour on the name cell only.
41
-
42
- **Status pills**
43
-
44
- - 20 to 24px tall, 12px text at 500, nothing under 11px.
45
- - Pale tint with dark text of the same hue (for example #dcfae5 with #04250e, #ffedea with #831c1e); optionally a 1px border one step darker.
46
- - Neutral states as monochrome chips. A saturated fill with white text only for the rare state that needs action, and not when more than about a fifth of visible rows carry it.
47
- - One status mark per row. Pills never shrink: `flex: none; white-space: nowrap`.
48
-
49
- **Media in rows**: 16px logos in dense rows, 24 to 32px avatars, 40 to 48px in two-line rows. Circles for people, small radius for artwork. One fixed media slot so text starts on one edge, 10 to 16px gap.
50
-
51
- **Actions and paging**
52
-
53
- - No pagination on an overview. Cap the rows, state the total, link "View all".
54
- - Row actions: none, or one menu button at the far right. When most rows need an action (an order to pack, a failed deploy to retry), put a visible ghost button or text action in one trailing column at the same position on every row.
55
- - Checkboxes only when bulk actions exist.
56
- - Hover: a subtle background change at most; selected row in a master-detail list takes the same fill as the active nav item, so it cannot be confused with focus.
57
- - Toolbar: one search field 32 to 36px tall.
58
- - **Full list screen**: total above the table ("1,284 orders"), sticky header row, paging or load more with the range ("1 to 50 of 1,284"), filters and sort reflected in the URL.
59
-
60
- **Large lists**: over about 50 to 100 rendered rows, paginate or virtualize; say which.
61
-
62
- ## Lists that carry data
63
-
64
- - Ranked list with one figure: the row's background fill can be the bar (its width the share of the largest). Only in one-figure lists; otherwise the fill cuts through text.
65
- - Bar list: label line, then a thin bar (2 to 10px) with the value after its end; one colour, longest bar about 88% of the width.
66
- - Inline bars in a list are thin and muted unless they are the screen's main series.
67
- - Legend as table: dot, name, value and change on one row.
68
- - Feed: row cards about 64px tall with a relative date on the right.
69
- - Tree: no dividers, 8 to 16px indent per level, about 30px pitch.
70
-
71
- ## Forms
72
-
73
- - **Label above the field**, 14px at 500, 6 to 8px gap. No floating labels, no placeholder standing in for a label. Placeholders show an example value.
74
- - Inputs 36 to 40px in forms (44px on phones), radius from the project's control radius. One control height per context.
75
- - Inputs keep their own background and a 1px border one step stronger than card borders, with a visible focus ring.
76
- - Spacing: about 24px from a section description to the first label, 16px between fields, 24px before the submit row.
77
- - Field width hints at the expected input (a postcode field is short). One column for most forms; two columns only for pairs that belong together (first and last name).
78
- - Required and optional marked consistently; mark the minority.
79
- - Validation inline next to the field on blur or submit, focusing the first error on submit; keep what was typed. Server errors appear at the field they concern when possible, otherwise above the form.
80
- - Submit stays enabled until the request starts, then shows progress and prevents double submission.
81
- - Toggles 28 x 16 to 36 x 20; the on colour a success green or near-black, not the brand accent by default. A toggle saves immediately; a checkbox waits for Save.
82
- - Disabled controls stay readable (not 30% opacity) and say why they are disabled.
83
- - A read-only value with an action (a link with Copy) can share one border with squared inner corners.
84
- - Warn before leaving with unsaved changes.
85
-
86
- ## Settings
87
-
88
- - Each area (General, Members, Billing, Notifications) is its own view with its name as the `h1`, not one long page scrolled by anchors.
89
- - A section is a row: a label column (about 280 to 450px: 16px/500 title and a 14px muted description) beside a panel (about 600 to 700px). Stack them below about 900px.
90
- - Sections split by a full-width 1px rule with 32px above and below, or by space alone.
91
- - Switch row: title, optional status badge, muted description, toggle on the right, vertically centred on the title line.
92
- - **One save model per view**: either every control saves itself with a quiet "Saved" confirmation, or one Save button per panel at its bottom right. Never a mix.
93
- - **Show what the setting produces**: a small preview of the result (the invite email, the notification) beside the control is the most useful thing a settings screen can add.
94
- - Plan-gated features: a slim notice with an upgrade button above the locked panel; the panel stays readable.
95
- - **Destructive actions** go last, in their own section, as an outlined or text button in the danger colour, with the consequence in words and a confirmation that names the object (typing the name for irreversible deletes). Prefer undo when recovery is possible.
96
-
97
- ## Buttons
98
-
99
- - Height 32 to 36px desktop (28 in dense toolbars), 44px on phones. Radius from the project scale.
100
- - One filled primary per screen or panel. Secondary: outlined or tonal. Tertiary: text.
101
- - Controls in one row share one height.
102
- - Label is a verb and object in sentence case. Icon-only buttons need an accessible name and a tooltip.
103
-
104
- Sources: adapted from Leonxlnx/taste-skill references/app-screens.md sections 7 to 8 (MIT, changed: condensed, defaults placed under the project's system, house bans relaxed where products commonly differ).
1
+ # Tables, lists, forms and settings
2
+
3
+ Read this when building a table, a data list, a form or a settings view. Numbers are defaults; the project's existing table, form and settings components win, and a sibling screen's patterns should be reused exactly.
4
+
5
+ ## Tables
6
+
7
+ **Rows**
8
+
9
+ - Single-line data rows 40 to 48px (dense tools 32 to 36px). Two-line rows with media 56 to 72px: media height plus 24 to 32px.
10
+ - Line two of a cell sits about 20px below line one, one size smaller (12 to 13px) and muted. Two-line rows need at least a 40px pitch or the subline touches the next row.
11
+ - Key-value rows inside cards 24 to 32px. Overview lists show 2 to 6 rows.
12
+
13
+ **Header**
14
+
15
+ - 12px (11 to 14), regular or medium weight, muted, sentence case. Uppercase tracked headers read louder than the data; use them only if the project does.
16
+ - No fill band. A rule under the header only if it is the strongest line in the table.
17
+ - Header row 36 to 40px. Numeric headers right-aligned and flush with their values. A sort glyph on the active column only.
18
+
19
+ **Dividers**
20
+
21
+ - No zebra striping.
22
+ - Row rules 1px, 3 to 7% darker than the surface (about #efefef to #f4f4f4 on white), or none with a generous pitch.
23
+ - One extent per screen: full inner width, or starting at the text column.
24
+
25
+ **Figures and alignment**
26
+
27
+ - Numbers right-aligned in tabular figures. Fixed decimals per metric: money 2, percentages 1 or 2, counts 0. Thousands separators everywhere; abbreviate (12.7k) only where precision does not matter. A sign on every change. Format with `Intl.NumberFormat` and `Intl.DateTimeFormat` in the user's locale.
28
+ - The identity column (name, title) gets the most width, a third to a half, and is never the one cut off. Shorten names consistently rather than truncating them at random widths.
29
+ - One right edge per row: every right-aligned figure ends on the same line.
30
+ - Two measures can stack in one cell (a count over its percentage, a date over its time) on one right edge, instead of taking two columns.
31
+ - Dates: ISO-like and right-aligned where rows are compared; relative ("Today", "6 days ago") for recency, switching to an absolute date after about a week.
32
+ - IDs in monospace at body size, truncated in the middle or to about 8 characters, with a copy button.
33
+ - Truncate to one line with an ellipsis and a way to see the full value (title attribute, tooltip, detail view). Never truncate numbers, amounts or dates.
34
+
35
+ **Ink inside rows**
36
+
37
+ - Only the identity and the key number in the primary text colour; everything else muted.
38
+ - A missing value is a muted dash; a real zero is printed ("0", "$0.00").
39
+ - The sign carries meaning, not colour: no red on every negative amount. Colour only rows that need attention.
40
+ - Link colour on the name cell only.
41
+
42
+ **Status pills**
43
+
44
+ - 20 to 24px tall, 12px text at 500, nothing under 11px.
45
+ - Pale tint with dark text of the same hue (for example #dcfae5 with #04250e, #ffedea with #831c1e); optionally a 1px border one step darker.
46
+ - Neutral states as monochrome chips. A saturated fill with white text only for the rare state that needs action, and not when more than about a fifth of visible rows carry it.
47
+ - One status mark per row. Pills never shrink: `flex: none; white-space: nowrap`.
48
+
49
+ **Media in rows**: 16px logos in dense rows, 24 to 32px avatars, 40 to 48px in two-line rows. Circles for people, small radius for artwork. One fixed media slot so text starts on one edge, 10 to 16px gap.
50
+
51
+ **Actions and paging**
52
+
53
+ - No pagination on an overview. Cap the rows, state the total, link "View all".
54
+ - Row actions: none, or one menu button at the far right. When most rows need an action (an order to pack, a failed deploy to retry), put a visible ghost button or text action in one trailing column at the same position on every row.
55
+ - Checkboxes only when bulk actions exist.
56
+ - Hover: a subtle background change at most; selected row in a master-detail list takes the same fill as the active nav item, so it cannot be confused with focus.
57
+ - Toolbar: one search field 32 to 36px tall.
58
+ - **Full list screen**: total above the table ("1,284 orders"), sticky header row, paging or load more with the range ("1 to 50 of 1,284"), filters and sort reflected in the URL.
59
+
60
+ **Large lists**: over about 50 to 100 rendered rows, paginate or virtualize; say which.
61
+
62
+ ## Lists that carry data
63
+
64
+ - Ranked list with one figure: the row's background fill can be the bar (its width the share of the largest). Only in one-figure lists; otherwise the fill cuts through text.
65
+ - Bar list: label line, then a thin bar (2 to 10px) with the value after its end; one colour, longest bar about 88% of the width.
66
+ - Inline bars in a list are thin and muted unless they are the screen's main series.
67
+ - Legend as table: dot, name, value and change on one row.
68
+ - Feed: row cards about 64px tall with a relative date on the right.
69
+ - Tree: no dividers, 8 to 16px indent per level, about 30px pitch.
70
+
71
+ ## Forms
72
+
73
+ - **Label above the field**, 14px at 500, 6 to 8px gap. No floating labels, no placeholder standing in for a label. Placeholders show an example value.
74
+ - Inputs 36 to 40px in forms (44px on phones), radius from the project's control radius. One control height per context.
75
+ - Inputs keep their own background and a 1px border one step stronger than card borders, with a visible focus ring.
76
+ - Spacing: about 24px from a section description to the first label, 16px between fields, 24px before the submit row.
77
+ - Field width hints at the expected input (a postcode field is short). One column for most forms; two columns only for pairs that belong together (first and last name).
78
+ - Required and optional marked consistently; mark the minority.
79
+ - Validation inline next to the field on blur or submit, focusing the first error on submit; keep what was typed. Server errors appear at the field they concern when possible, otherwise above the form.
80
+ - Submit stays enabled until the request starts, then shows progress and prevents double submission.
81
+ - Toggles 28 x 16 to 36 x 20; the on colour a success green or near-black, not the brand accent by default. A toggle saves immediately; a checkbox waits for Save.
82
+ - Disabled controls stay readable (not 30% opacity) and say why they are disabled.
83
+ - A read-only value with an action (a link with Copy) can share one border with squared inner corners.
84
+ - Warn before leaving with unsaved changes.
85
+
86
+ ## Settings
87
+
88
+ - Each area (General, Members, Billing, Notifications) is its own view with its name as the `h1`, not one long page scrolled by anchors.
89
+ - A section is a row: a label column (about 280 to 450px: 16px/500 title and a 14px muted description) beside a panel (about 600 to 700px). Stack them below about 900px.
90
+ - Sections split by a full-width 1px rule with 32px above and below, or by space alone.
91
+ - Switch row: title, optional status badge, muted description, toggle on the right, vertically centred on the title line.
92
+ - **One save model per view**: either every control saves itself with a quiet "Saved" confirmation, or one Save button per panel at its bottom right. Never a mix.
93
+ - **Show what the setting produces**: a small preview of the result (the invite email, the notification) beside the control is the most useful thing a settings screen can add.
94
+ - Plan-gated features: a slim notice with an upgrade button above the locked panel; the panel stays readable.
95
+ - **Destructive actions** go last, in their own section, as an outlined or text button in the danger colour, with the consequence in words and a confirmation that names the object (typing the name for irreversible deletes). Prefer undo when recovery is possible.
96
+
97
+ ## Buttons
98
+
99
+ - Height 32 to 36px desktop (28 in dense toolbars), 44px on phones. Radius from the project scale.
100
+ - One filled primary per screen or panel. Secondary: outlined or tonal. Tertiary: text.
101
+ - Controls in one row share one height.
102
+ - Label is a verb and object in sentence case. Icon-only buttons need an accessible name and a tooltip.
103
+
104
+ Sources: adapted from Leonxlnx/taste-skill references/app-screens.md sections 7 to 8 (MIT, changed: condensed, defaults placed under the project's system, house bans relaxed where products commonly differ).
@@ -1,92 +1,92 @@
1
- ---
2
- name: avoiding-generic-ai-design
3
- description: Use before finishing any new or restyled UI, when a task says a design looks generic, templated or AI-made, or when reviewing UI for that. Lists the dated patterns that make interfaces read as generated, what to do instead, and why the project's own design system always overrides this list.
4
- ---
5
-
6
- # Avoiding the generic AI look
7
-
8
- Generated interfaces look alike because they are built from the same defaults: a violet gradient, a tiny uppercase label over every heading, three identical icon cards, a big number with a green "+12%", a soft shadow under everything. None of it is wrong on its own; it reads as generated because it appears everywhere, without a reason. This skill helps you notice those defaults and replace them with decisions.
9
-
10
- ## This list never overrides the project
11
-
12
- - If the project's DESIGN.md, tokens, component library or existing screens use a pattern listed here (eyebrow labels, monospace numbers, pill badges, hairline tables, a violet brand), it is the product's decision. Use it consistently. Do not "fix" it.
13
- - If the task explicitly asks for one of these looks, build it.
14
- - The list applies where a choice is free: a new product, a new surface with no precedent, or your own additions inside an existing look.
15
-
16
- A bold, motivated choice is not a tell. When unsure whether something is a default or a decision, treat it as a decision and leave it.
17
-
18
- ## How to use it
19
-
20
- ### While planning
21
-
22
- Before building a new surface, write down the three defaults you would reach for without thinking (for example: KPI cards with icons, an area chart with a gradient, a zebra table). Then decide what replaces each, based on the content and the job of the screen. You cannot avoid a pattern you have not named.
23
-
24
- ### Pass 1: look at the render (the patterns that matter most)
25
-
26
- Take screenshots (see `design-review`) and look at the whole screen before any detail. These compositional failures are invisible in a diff and do the most damage:
27
-
28
- 1. **No focal point.** Everything competes; the eye lands nowhere. Make the one thing the screen is for dominate and demote the rest.
29
- 2. **Flat hierarchy.** Title, body and metadata are one size, weight and colour. Build tiers from weight and a text-colour ramp, not size alone.
30
- 3. **Monotone layout.** Same card, same gap, same density edge to edge. Group by meaning, vary density by zone, size blocks by their content.
31
- 4. **Timid or smeared colour.** One accent on everything, or five low-commitment tints. One accent for action, selection and meaning; neutrals for structure.
32
- 5. **The template order.** Hero, logos, three features, testimonial, pricing, call to action; or KPI row, big chart, two small charts, table. Order blocks by the questions the person actually has.
33
- 6. **Could belong to anyone.** Cover the product name: would the screen work for a competitor or another industry? Bring in the product's real objects, data and words.
34
-
35
- ### Pass 2: scan your changes (line-level patterns)
36
-
37
- Read your diff for the specific patterns in [references/tells.md](references/tells.md). The most common ones:
38
-
39
- - Gradient text, gradient buttons, violet or indigo gradient washes, glow shadows, decorative glass and backdrop blur.
40
- - A small tracked uppercase label (eyebrow) above every heading; a pill badge ("New", "Beta") above a hero headline.
41
- - Rows of identical cards with an icon in a tinted circle or rounded square on top.
42
- - A hero metric template: big number, small label, a green delta, a sparkline.
43
- - A coloured `border-left` stripe on cards, callouts or list items.
44
- - One medium radius (12 to 16px) and the same soft grey shadow on every element.
45
- - Emoji or Unicode symbols as icons; mixed icon sets.
46
- - Monospace used as a "technical" costume for labels rather than for code, IDs or data.
47
- - Numbered markers (01 / 02 / 03) on content that is not a sequence.
48
- - Fade-and-rise on every section; hover lift on every card; bounce easing.
49
- - The warm cream background with a terracotta or clay accent and a serif display; near-black with one acid-green accent.
50
- - Generic copy: "Unlock", "Seamless", "Supercharge", "Welcome back" with a waving hand.
51
-
52
- ### Pass 3: fill the gap with substance, not ornament
53
-
54
- Removing devices and putting nothing in their place produces an empty page with good manners, which is a tell of its own. Fill the space with:
55
-
56
- - the product's real data, objects, names and words;
57
- - the full content each section needs, at a readable size;
58
- - scale: make the one important thing larger;
59
- - a single element that only this product has (see `interface-design` for the fresh-direction process).
60
-
61
- Never refill a gap with another ornament.
62
-
63
- ## Honest content
64
-
65
- The most common failure in tests of AI-built UI is invented proof. Never invent:
66
-
67
- - metrics, growth figures, user counts or ratings;
68
- - customer names, logos, testimonials or quotes;
69
- - prices, plan limits or benchmarks the task did not give.
70
-
71
- Use the task's real content. Where it is missing, use neutral placeholders or sample data that is plainly sample ("Example Ltd", "Sample invoice"), computed consistently (totals add up), and list every placeholder in the report so it gets replaced.
72
-
73
- ## What is not a problem
74
-
75
- - Patterns the project already uses (see the top of this skill).
76
- - Familiar product patterns that help people work: a sidebar with labelled nav, standard tables, tabs, a command palette. App screens should feel familiar; strangeness without purpose is worse than a known pattern done well.
77
- - One deliberate use of a listed device with a reason you can state in one sentence (a real step-by-step process may be numbered; IDs belong in monospace).
78
- - Anything outside the lines your change touched.
79
-
80
- ## Done when
81
-
82
- - The render passes the six questions in Pass 1.
83
- - Your diff adds none of the listed patterns unless the project or the task called for them, and each exception has a one-line reason in the report.
84
- - No invented proof; placeholders are listed.
85
-
86
- ## Report or review output
87
-
88
- In a code step, mention in the report any listed pattern you kept on purpose and why. In a review, list findings as: the pattern, where it shows (screenshot and `file:line`), why it reads as generated or costs the user, and the specific replacement. Taste alone is not a finding: if the choice is coherent with the product and executed well, leave it.
89
-
90
- Related: `interface-design`, `app-screens`, `design-review`.
91
-
92
- Sources: adapted from Leonxlnx/taste-skill tells and copy references (MIT), Dammyjay93/interface-design design-deslop (MIT), pbakaus/impeccable craft-floor refuse list (Apache-2.0, changed: rewritten; bans turned into defaults that yield to the project) and the generated-design traits in the frontend-design skill of anthropics/claude-plugins-official (Apache-2.0, changed: condensed).
1
+ ---
2
+ name: avoiding-generic-ai-design
3
+ description: Use before finishing any new or restyled UI, when a task says a design looks generic, templated or AI-made, or when reviewing UI for that. Lists the dated patterns that make interfaces read as generated, what to do instead, and why the project's own design system always overrides this list.
4
+ ---
5
+
6
+ # Avoiding the generic AI look
7
+
8
+ Generated interfaces look alike because they are built from the same defaults: a violet gradient, a tiny uppercase label over every heading, three identical icon cards, a big number with a green "+12%", a soft shadow under everything. None of it is wrong on its own; it reads as generated because it appears everywhere, without a reason. This skill helps you notice those defaults and replace them with decisions.
9
+
10
+ ## This list never overrides the project
11
+
12
+ - If the project's DESIGN.md, tokens, component library or existing screens use a pattern listed here (eyebrow labels, monospace numbers, pill badges, hairline tables, a violet brand), it is the product's decision. Use it consistently. Do not "fix" it.
13
+ - If the task explicitly asks for one of these looks, build it.
14
+ - The list applies where a choice is free: a new product, a new surface with no precedent, or your own additions inside an existing look.
15
+
16
+ A bold, motivated choice is not a tell. When unsure whether something is a default or a decision, treat it as a decision and leave it.
17
+
18
+ ## How to use it
19
+
20
+ ### While planning
21
+
22
+ Before building a new surface, write down the three defaults you would reach for without thinking (for example: KPI cards with icons, an area chart with a gradient, a zebra table). Then decide what replaces each, based on the content and the job of the screen. You cannot avoid a pattern you have not named.
23
+
24
+ ### Pass 1: look at the render (the patterns that matter most)
25
+
26
+ Take screenshots (see `design-review`) and look at the whole screen before any detail. These compositional failures are invisible in a diff and do the most damage:
27
+
28
+ 1. **No focal point.** Everything competes; the eye lands nowhere. Make the one thing the screen is for dominate and demote the rest.
29
+ 2. **Flat hierarchy.** Title, body and metadata are one size, weight and colour. Build tiers from weight and a text-colour ramp, not size alone.
30
+ 3. **Monotone layout.** Same card, same gap, same density edge to edge. Group by meaning, vary density by zone, size blocks by their content.
31
+ 4. **Timid or smeared colour.** One accent on everything, or five low-commitment tints. One accent for action, selection and meaning; neutrals for structure.
32
+ 5. **The template order.** Hero, logos, three features, testimonial, pricing, call to action; or KPI row, big chart, two small charts, table. Order blocks by the questions the person actually has.
33
+ 6. **Could belong to anyone.** Cover the product name: would the screen work for a competitor or another industry? Bring in the product's real objects, data and words.
34
+
35
+ ### Pass 2: scan your changes (line-level patterns)
36
+
37
+ Read your diff for the specific patterns in [references/tells.md](references/tells.md). The most common ones:
38
+
39
+ - Gradient text, gradient buttons, violet or indigo gradient washes, glow shadows, decorative glass and backdrop blur.
40
+ - A small tracked uppercase label (eyebrow) above every heading; a pill badge ("New", "Beta") above a hero headline.
41
+ - Rows of identical cards with an icon in a tinted circle or rounded square on top.
42
+ - A hero metric template: big number, small label, a green delta, a sparkline.
43
+ - A coloured `border-left` stripe on cards, callouts or list items.
44
+ - One medium radius (12 to 16px) and the same soft grey shadow on every element.
45
+ - Emoji or Unicode symbols as icons; mixed icon sets.
46
+ - Monospace used as a "technical" costume for labels rather than for code, IDs or data.
47
+ - Numbered markers (01 / 02 / 03) on content that is not a sequence.
48
+ - Fade-and-rise on every section; hover lift on every card; bounce easing.
49
+ - The warm cream background with a terracotta or clay accent and a serif display; near-black with one acid-green accent.
50
+ - Generic copy: "Unlock", "Seamless", "Supercharge", "Welcome back" with a waving hand.
51
+
52
+ ### Pass 3: fill the gap with substance, not ornament
53
+
54
+ Removing devices and putting nothing in their place produces an empty page with good manners, which is a tell of its own. Fill the space with:
55
+
56
+ - the product's real data, objects, names and words;
57
+ - the full content each section needs, at a readable size;
58
+ - scale: make the one important thing larger;
59
+ - a single element that only this product has (see `interface-design` for the fresh-direction process).
60
+
61
+ Never refill a gap with another ornament.
62
+
63
+ ## Honest content
64
+
65
+ The most common failure in tests of AI-built UI is invented proof. Never invent:
66
+
67
+ - metrics, growth figures, user counts or ratings;
68
+ - customer names, logos, testimonials or quotes;
69
+ - prices, plan limits or benchmarks the task did not give.
70
+
71
+ Use the task's real content. Where it is missing, use neutral placeholders or sample data that is plainly sample ("Example Ltd", "Sample invoice"), computed consistently (totals add up), and list every placeholder in the report so it gets replaced.
72
+
73
+ ## What is not a problem
74
+
75
+ - Patterns the project already uses (see the top of this skill).
76
+ - Familiar product patterns that help people work: a sidebar with labelled nav, standard tables, tabs, a command palette. App screens should feel familiar; strangeness without purpose is worse than a known pattern done well.
77
+ - One deliberate use of a listed device with a reason you can state in one sentence (a real step-by-step process may be numbered; IDs belong in monospace).
78
+ - Anything outside the lines your change touched.
79
+
80
+ ## Done when
81
+
82
+ - The render passes the six questions in Pass 1.
83
+ - Your diff adds none of the listed patterns unless the project or the task called for them, and each exception has a one-line reason in the report.
84
+ - No invented proof; placeholders are listed.
85
+
86
+ ## Report or review output
87
+
88
+ In a code step, mention in the report any listed pattern you kept on purpose and why. In a review, list findings as: the pattern, where it shows (screenshot and `file:line`), why it reads as generated or costs the user, and the specific replacement. Taste alone is not a finding: if the choice is coherent with the product and executed well, leave it.
89
+
90
+ Related: `interface-design`, `app-screens`, `design-review`.
91
+
92
+ Sources: adapted from Leonxlnx/taste-skill tells and copy references (MIT), Dammyjay93/interface-design design-deslop (MIT), pbakaus/impeccable craft-floor refuse list (Apache-2.0, changed: rewritten; bans turned into defaults that yield to the project) and the generated-design traits in the frontend-design skill of anthropics/claude-plugins-official (Apache-2.0, changed: condensed).