@tamsensedev/runner 0.10.0 → 0.18.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.
- package/LICENSE +5 -5
- package/README.md +61 -50
- package/dist/cli.js +1188 -324
- package/dist/cli.js.map +1 -1
- package/dist/recorder.cjs +42 -6
- package/dist/recorder.cjs.map +1 -1
- package/library/.claude-plugin/plugin.json +5 -5
- package/library/THIRD_PARTY_NOTICES.md +123 -123
- package/library/agents/code-architect.md +67 -67
- package/library/agents/code-explorer.md +61 -61
- package/library/agents/code-reviewer.md +73 -73
- package/library/agents/code-simplifier.md +62 -62
- package/library/agents/design-critic.md +52 -52
- package/library/agents/second-opinion.md +64 -64
- package/library/agents/security-auditor.md +86 -86
- package/library/agents/silent-failure-hunter.md +70 -70
- package/library/agents/test-coverage-analyzer.md +78 -78
- package/library/agents/test-runner.md +48 -48
- package/library/agents/ui-tester.md +50 -50
- package/library/licenses/Apache-2.0.txt +202 -202
- package/library/skills/accessibility/SKILL.md +144 -144
- package/library/skills/accessibility/references/wcag-checks.md +168 -168
- package/library/skills/addressing-review-feedback/SKILL.md +109 -109
- package/library/skills/app-screens/SKILL.md +96 -96
- package/library/skills/app-screens/references/shell-kpis-charts.md +108 -108
- package/library/skills/app-screens/references/states-density-phone.md +54 -54
- package/library/skills/app-screens/references/tables-forms-settings.md +104 -104
- package/library/skills/avoiding-generic-ai-design/SKILL.md +92 -92
- package/library/skills/avoiding-generic-ai-design/references/tells.md +112 -112
- package/library/skills/clean-commits/SKILL.md +85 -85
- package/library/skills/design-review/SKILL.md +107 -107
- package/library/skills/design-review/references/critique-passes.md +101 -101
- package/library/skills/design-review/references/screenshot-procedure.md +121 -121
- package/library/skills/differential-security-review/LICENSE +427 -427
- package/library/skills/differential-security-review/SKILL.md +105 -105
- package/library/skills/differential-security-review/references/adversarial.md +115 -115
- package/library/skills/differential-security-review/references/methodology.md +145 -145
- package/library/skills/differential-security-review/references/patterns.md +108 -108
- package/library/skills/false-positive-check/LICENSE +427 -427
- package/library/skills/false-positive-check/SKILL.md +95 -95
- package/library/skills/false-positive-check/references/bug-class-verification.md +128 -128
- package/library/skills/false-positive-check/references/deep-verification.md +113 -113
- package/library/skills/false-positive-check/references/evidence-templates.md +93 -93
- package/library/skills/false-positive-check/references/false-positive-patterns.md +122 -122
- package/library/skills/false-positive-check/references/gate-reviews.md +36 -36
- package/library/skills/false-positive-check/references/standard-verification.md +80 -80
- package/library/skills/focused-implementation/SKILL.md +104 -104
- package/library/skills/implementation-plan/SKILL.md +66 -66
- package/library/skills/interface-design/SKILL.md +144 -144
- package/library/skills/interface-design/references/craft-defaults.md +130 -130
- package/library/skills/interface-design/references/new-direction.md +62 -62
- package/library/skills/interface-design/references/writing.md +52 -52
- package/library/skills/interface-polish/SKILL.md +103 -103
- package/library/skills/interface-polish/references/detail-rules.md +154 -154
- package/library/skills/interface-polish/references/worst-case-data.md +158 -158
- package/library/skills/motion-design/SKILL.md +106 -106
- package/library/skills/motion-design/references/recipes.md +243 -243
- package/library/skills/postgres-performance/SKILL.md +97 -97
- package/library/skills/postgres-performance/references/rules.md +265 -265
- package/library/skills/project-orientation/SKILL.md +77 -77
- package/library/skills/reviewing-changes/SKILL.md +183 -183
- package/library/skills/safe-database-changes/SKILL.md +111 -111
- package/library/skills/safe-database-changes/references/backfills.md +75 -75
- package/library/skills/safe-database-changes/references/migration-tools.md +69 -69
- package/library/skills/safe-database-changes/references/postgres-ddl.md +199 -199
- package/library/skills/security-review/SKILL.md +132 -132
- package/library/skills/security-review/references/checks-by-area.md +107 -107
- package/library/skills/security-review/references/do-not-report.md +86 -86
- package/library/skills/spec-writing/SKILL.md +144 -144
- package/library/skills/systematic-debugging/SKILL.md +130 -130
- package/library/skills/systematic-debugging/references/flaky-tests.md +51 -51
- package/library/skills/systematic-debugging/references/root-cause-tracing.md +55 -55
- package/library/skills/task-interview/SKILL.md +84 -84
- package/library/skills/test-driven-development/SKILL.md +116 -116
- package/library/skills/test-driven-development/references/writing-good-tests.md +85 -85
- package/library/skills/ui-testing/SKILL.md +102 -102
- package/library/skills/ui-testing/references/headless-check.md +295 -280
- package/library/skills/ui-testing/references/local-stand.md +51 -51
- package/library/skills/ui-testing/references/playwright-patterns.md +134 -134
- package/library/skills/ui-testing/references/recording.md +61 -58
- package/library/skills/verification-before-completion/SKILL.md +113 -113
- package/library/skills/web-interface-guidelines/SKILL.md +202 -202
- 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).
|