@mthanh/vespercli 2.2.0 → 2.3.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 (157) hide show
  1. package/README.md +6 -3
  2. package/assets/CATALOG.md +9 -2
  3. package/assets/claude/.claude-plugin/marketplace.json +9 -9
  4. package/assets/claude/.claude-plugin/plugin.json +1 -1
  5. package/assets/claude/agents/code-planner.md +1 -1
  6. package/assets/claude/agents/code-reviewer.md +1 -1
  7. package/assets/claude/agents/code-tester.md +1 -1
  8. package/assets/claude/agents/copywriter.md +1 -1
  9. package/assets/claude/agents/feature-wrap-document.md +1 -1
  10. package/assets/claude/agents/janitor.md +1 -1
  11. package/assets/claude/agents/modernization.md +1 -1
  12. package/assets/claude/agents/principal-software-engineer.md +1 -1
  13. package/assets/claude/agents/refine-issue.md +1 -1
  14. package/assets/claude/agents/se-system-architecture-reviewer.md +1 -1
  15. package/assets/claude/agents/se-technical-writer.md +1 -1
  16. package/assets/claude/agents/skill-creator.md +1 -1
  17. package/assets/claude/agents/task-researcher.md +1 -1
  18. package/assets/claude/agents/technical-product-manager.md +1 -1
  19. package/assets/claude/agents/vision-analyst.md +1 -1
  20. package/assets/claude/agents/vitest.md +1 -1
  21. package/assets/claude/agents/workspace-learner.md +2 -2
  22. package/assets/claude/packs/backend/.claude-plugin/plugin.json +1 -1
  23. package/assets/claude/packs/backend/agents/firebase-developer.md +1 -1
  24. package/assets/claude/packs/backend/agents/nodejs-express-developer.md +1 -1
  25. package/assets/claude/packs/docs/.claude-plugin/plugin.json +1 -1
  26. package/assets/claude/packs/frontend/.claude-plugin/plugin.json +1 -1
  27. package/assets/claude/packs/frontend/agents/expert-nextjs-developer.md +1 -1
  28. package/assets/claude/packs/frontend/agents/expert-react-frontend-engineer.md +1 -1
  29. package/assets/claude/packs/frontend/agents/jest-react-component-analyzer.md +1 -1
  30. package/assets/claude/packs/frontend/agents/jest-react-scenario-scanner.md +1 -1
  31. package/assets/claude/packs/frontend/agents/jest-react-test-generator.md +1 -1
  32. package/assets/claude/packs/frontend/agents/jest-react-test-planner.md +1 -1
  33. package/assets/claude/packs/frontend/skills/design-taste-frontend/LICENSE +21 -0
  34. package/assets/claude/packs/frontend/skills/design-taste-frontend/SKILL.md +529 -0
  35. package/assets/claude/packs/frontend/skills/design-taste-frontend/UPSTREAM.json +7 -0
  36. package/assets/claude/packs/frontend/skills/design-taste-frontend/assets/app.css +216 -0
  37. package/assets/claude/packs/frontend/skills/design-taste-frontend/assets/base.css +105 -0
  38. package/assets/claude/packs/frontend/skills/design-taste-frontend/assets/base.js +37 -0
  39. package/assets/claude/packs/frontend/skills/design-taste-frontend/assets/charts.js +617 -0
  40. package/assets/claude/packs/frontend/skills/design-taste-frontend/assets/scenes/stage.css +28 -0
  41. package/assets/claude/packs/frontend/skills/design-taste-frontend/assets/scenes/stage.js +133 -0
  42. package/assets/claude/packs/frontend/skills/design-taste-frontend/evals/evals.json +76 -0
  43. package/assets/claude/packs/frontend/skills/design-taste-frontend/library/app.json +1327 -0
  44. package/assets/claude/packs/frontend/skills/design-taste-frontend/library/directions.json +1078 -0
  45. package/assets/claude/packs/frontend/skills/design-taste-frontend/library/heroes.json +1086 -0
  46. package/assets/claude/packs/frontend/skills/design-taste-frontend/library/motions.json +92 -0
  47. package/assets/claude/packs/frontend/skills/design-taste-frontend/library/palettes.json +1485 -0
  48. package/assets/claude/packs/frontend/skills/design-taste-frontend/library/photos.json +7240 -0
  49. package/assets/claude/packs/frontend/skills/design-taste-frontend/library/sections.json +4429 -0
  50. package/assets/claude/packs/frontend/skills/design-taste-frontend/library/sites.json +8350 -0
  51. package/assets/claude/packs/frontend/skills/design-taste-frontend/library/type.json +2024 -0
  52. package/assets/claude/packs/frontend/skills/design-taste-frontend/references/app-screens.md +1199 -0
  53. package/assets/claude/packs/frontend/skills/design-taste-frontend/references/colour.md +141 -0
  54. package/assets/claude/packs/frontend/skills/design-taste-frontend/references/copy.md +177 -0
  55. package/assets/claude/packs/frontend/skills/design-taste-frontend/references/critique.md +182 -0
  56. package/assets/claude/packs/frontend/skills/design-taste-frontend/references/imagery.md +791 -0
  57. package/assets/claude/packs/frontend/skills/design-taste-frontend/references/layout.md +292 -0
  58. package/assets/claude/packs/frontend/skills/design-taste-frontend/references/motion.md +980 -0
  59. package/assets/claude/packs/frontend/skills/design-taste-frontend/references/research.md +356 -0
  60. package/assets/claude/packs/frontend/skills/design-taste-frontend/references/scenes.md +174 -0
  61. package/assets/claude/packs/frontend/skills/design-taste-frontend/references/tells.md +115 -0
  62. package/assets/claude/packs/frontend/skills/design-taste-frontend/references/type.md +170 -0
  63. package/assets/claude/packs/frontend/skills/design-taste-frontend/scripts/assets.mjs +865 -0
  64. package/assets/claude/packs/frontend/skills/design-taste-frontend/scripts/draw.mjs +584 -0
  65. package/assets/claude/packs/frontend/skills/design-taste-frontend/scripts/inspect.mjs +303 -0
  66. package/assets/claude/packs/frontend/skills/design-taste-frontend/scripts/lib/app-draw.mjs +203 -0
  67. package/assets/claude/packs/frontend/skills/design-taste-frontend/scripts/lib/cdp.mjs +248 -0
  68. package/assets/claude/packs/frontend/skills/design-taste-frontend/scripts/lib/probe.mjs +909 -0
  69. package/assets/claude/packs/frontend/skills/design-taste-frontend/scripts/lib/rules.mjs +243 -0
  70. package/assets/claude/packs/frontend/skills/design-taste-frontend/scripts/lint.mjs +119 -0
  71. package/assets/claude/packs/frontend/skills/design-taste-frontend/scripts/scenes.mjs +124 -0
  72. package/assets/claude/packs/graphify/.claude-plugin/plugin.json +1 -1
  73. package/assets/claude/packs/integrations/.claude-plugin/plugin.json +1 -1
  74. package/assets/claude/packs/playwright/.claude-plugin/plugin.json +1 -1
  75. package/assets/claude/packs/playwright/agents/playwright-component-analyzer.md +1 -1
  76. package/assets/claude/packs/playwright/agents/playwright-scenario-scanner.md +1 -1
  77. package/assets/claude/packs/playwright/agents/playwright-test-generator.md +1 -1
  78. package/assets/claude/packs/playwright/agents/playwright-test-planner.md +1 -1
  79. package/assets/claude/packs/playwright/agents/playwright-tester.md +1 -1
  80. package/assets/claude/packs/polyglot/.claude-plugin/plugin.json +1 -1
  81. package/assets/claude/packs/styles/.claude-plugin/plugin.json +1 -1
  82. package/assets/copilot/agents/code-planner.agent.md +1 -1
  83. package/assets/copilot/agents/code-reviewer.agent.md +1 -1
  84. package/assets/copilot/agents/code-tester.agent.md +1 -1
  85. package/assets/copilot/agents/copywriter.agent.md +1 -1
  86. package/assets/copilot/agents/feature-wrap-document.agent.md +1 -1
  87. package/assets/copilot/agents/janitor.agent.md +1 -1
  88. package/assets/copilot/agents/modernization.agent.md +1 -1
  89. package/assets/copilot/agents/principal-software-engineer.agent.md +1 -1
  90. package/assets/copilot/agents/refine-issue.agent.md +1 -1
  91. package/assets/copilot/agents/se-system-architecture-reviewer.agent.md +1 -1
  92. package/assets/copilot/agents/se-technical-writer.agent.md +1 -1
  93. package/assets/copilot/agents/skill-creator.agent.md +1 -1
  94. package/assets/copilot/agents/task-researcher.agent.md +1 -1
  95. package/assets/copilot/agents/technical-product-manager.agent.md +1 -1
  96. package/assets/copilot/agents/vision-analyst.agent.md +1 -1
  97. package/assets/copilot/agents/vitest.agent.md +1 -1
  98. package/assets/copilot/agents/workspace-learner.agent.md +2 -2
  99. package/assets/copilot/packs/backend/agents/firebase-developer.agent.md +1 -1
  100. package/assets/copilot/packs/backend/agents/nodejs-express-developer.agent.md +1 -1
  101. package/assets/copilot/packs/frontend/agents/expert-nextjs-developer.agent.md +1 -1
  102. package/assets/copilot/packs/frontend/agents/expert-react-frontend-engineer.agent.md +1 -1
  103. package/assets/copilot/packs/frontend/agents/jest-react-component-analyzer.agent.md +1 -1
  104. package/assets/copilot/packs/frontend/agents/jest-react-scenario-scanner.agent.md +1 -1
  105. package/assets/copilot/packs/frontend/agents/jest-react-test-generator.agent.md +1 -1
  106. package/assets/copilot/packs/frontend/agents/jest-react-test-planner.agent.md +1 -1
  107. package/assets/copilot/packs/frontend/skills/design-taste-frontend/LICENSE +21 -0
  108. package/assets/copilot/packs/frontend/skills/design-taste-frontend/SKILL.md +529 -0
  109. package/assets/copilot/packs/frontend/skills/design-taste-frontend/UPSTREAM.json +7 -0
  110. package/assets/copilot/packs/frontend/skills/design-taste-frontend/assets/app.css +216 -0
  111. package/assets/copilot/packs/frontend/skills/design-taste-frontend/assets/base.css +105 -0
  112. package/assets/copilot/packs/frontend/skills/design-taste-frontend/assets/base.js +37 -0
  113. package/assets/copilot/packs/frontend/skills/design-taste-frontend/assets/charts.js +617 -0
  114. package/assets/copilot/packs/frontend/skills/design-taste-frontend/assets/scenes/stage.css +28 -0
  115. package/assets/copilot/packs/frontend/skills/design-taste-frontend/assets/scenes/stage.js +133 -0
  116. package/assets/copilot/packs/frontend/skills/design-taste-frontend/evals/evals.json +76 -0
  117. package/assets/copilot/packs/frontend/skills/design-taste-frontend/library/app.json +1327 -0
  118. package/assets/copilot/packs/frontend/skills/design-taste-frontend/library/directions.json +1078 -0
  119. package/assets/copilot/packs/frontend/skills/design-taste-frontend/library/heroes.json +1086 -0
  120. package/assets/copilot/packs/frontend/skills/design-taste-frontend/library/motions.json +92 -0
  121. package/assets/copilot/packs/frontend/skills/design-taste-frontend/library/palettes.json +1485 -0
  122. package/assets/copilot/packs/frontend/skills/design-taste-frontend/library/photos.json +7240 -0
  123. package/assets/copilot/packs/frontend/skills/design-taste-frontend/library/sections.json +4429 -0
  124. package/assets/copilot/packs/frontend/skills/design-taste-frontend/library/sites.json +8350 -0
  125. package/assets/copilot/packs/frontend/skills/design-taste-frontend/library/type.json +2024 -0
  126. package/assets/copilot/packs/frontend/skills/design-taste-frontend/references/app-screens.md +1199 -0
  127. package/assets/copilot/packs/frontend/skills/design-taste-frontend/references/colour.md +141 -0
  128. package/assets/copilot/packs/frontend/skills/design-taste-frontend/references/copy.md +177 -0
  129. package/assets/copilot/packs/frontend/skills/design-taste-frontend/references/critique.md +182 -0
  130. package/assets/copilot/packs/frontend/skills/design-taste-frontend/references/imagery.md +791 -0
  131. package/assets/copilot/packs/frontend/skills/design-taste-frontend/references/layout.md +292 -0
  132. package/assets/copilot/packs/frontend/skills/design-taste-frontend/references/motion.md +980 -0
  133. package/assets/copilot/packs/frontend/skills/design-taste-frontend/references/research.md +356 -0
  134. package/assets/copilot/packs/frontend/skills/design-taste-frontend/references/scenes.md +174 -0
  135. package/assets/copilot/packs/frontend/skills/design-taste-frontend/references/tells.md +115 -0
  136. package/assets/copilot/packs/frontend/skills/design-taste-frontend/references/type.md +170 -0
  137. package/assets/copilot/packs/frontend/skills/design-taste-frontend/scripts/assets.mjs +865 -0
  138. package/assets/copilot/packs/frontend/skills/design-taste-frontend/scripts/draw.mjs +584 -0
  139. package/assets/copilot/packs/frontend/skills/design-taste-frontend/scripts/inspect.mjs +303 -0
  140. package/assets/copilot/packs/frontend/skills/design-taste-frontend/scripts/lib/app-draw.mjs +203 -0
  141. package/assets/copilot/packs/frontend/skills/design-taste-frontend/scripts/lib/cdp.mjs +248 -0
  142. package/assets/copilot/packs/frontend/skills/design-taste-frontend/scripts/lib/probe.mjs +909 -0
  143. package/assets/copilot/packs/frontend/skills/design-taste-frontend/scripts/lib/rules.mjs +243 -0
  144. package/assets/copilot/packs/frontend/skills/design-taste-frontend/scripts/lint.mjs +119 -0
  145. package/assets/copilot/packs/frontend/skills/design-taste-frontend/scripts/scenes.mjs +124 -0
  146. package/assets/copilot/packs/playwright/agents/playwright-component-analyzer.agent.md +1 -1
  147. package/assets/copilot/packs/playwright/agents/playwright-scenario-scanner.agent.md +1 -1
  148. package/assets/copilot/packs/playwright/agents/playwright-test-generator.agent.md +1 -1
  149. package/assets/copilot/packs/playwright/agents/playwright-test-planner.agent.md +1 -1
  150. package/assets/copilot/packs/playwright/agents/playwright-tester.agent.md +1 -1
  151. package/assets/manifest.json +2 -0
  152. package/dist/cli.min.js +102 -102
  153. package/package.json +1 -1
  154. package/scripts/__snapshots__/generate-claude-assets.test.js.snap +1 -1
  155. package/scripts/generate-claude-assets.strict.test.js +1 -1
  156. package/scripts/generate-claude-assets.test.js +6 -6
  157. package/scripts/packs-layout.test.js +2 -1
@@ -0,0 +1,170 @@
1
+ # Type
2
+
3
+ Typography is most of what a visitor sees and most of what makes a page look designed or assembled.
4
+ The direction sheet deals you a type system (faces, weights, settings). This file is how to use it.
5
+
6
+ ## Contents
7
+
8
+ 1. What the study measured
9
+ 2. The scale: few sizes, far apart
10
+ 3. Setting display type
11
+ 4. Setting text
12
+ 5. Loading the fonts properly
13
+ 6. One family or two
14
+ 7. Details that separate set type from typed text
15
+ 8. Mistakes the inspector cannot see
16
+
17
+ ## 1. What the study measured
18
+
19
+ From 202 measurable sites out of the 247 studied (Chrome, 1440×900 and 390×844):
20
+
21
+ | | Median | Middle half | Note |
22
+ | --- | --- | --- | --- |
23
+ | Hero headline size | 72px (5.0vw) | 43–109px | Top-scored sites: 6.0vw median |
24
+ | Largest type on the page | 6.4vw | up to 10.4vw | Top-scored sites 8.4vw, weak sites 5.0vw |
25
+ | Hero headline on a phone | 40px | 32–59px | |
26
+ | Hero tracking | -0.01em | -0.03 to 0 | Tighter as size grows |
27
+ | Hero leading | 1.0 | 0.95–1.1 | |
28
+ | Body size | 16px | 14–18px | |
29
+ | Headline ÷ body size | 4.3 | | Top-scored sites 4.7 |
30
+ | Typefaces in real use | 2 | 31% use one, 45% two, 22% three | |
31
+ | Hero weight | regular 48%, medium 18%, bold or heavier 22% | | Big type does not need to be bold |
32
+ | Hero in capitals | 24% | | |
33
+ | Hero centred | 39% | | 52% on the weak sites |
34
+
35
+ Two things to take from it. First, size contrast is the main lever and the best sites pull it harder.
36
+ Second, weight is not: half of the heroes are set in a regular weight. Scale and spacing make type
37
+ confident; bold is one option among several.
38
+
39
+ ## 2. The scale: few sizes, far apart
40
+
41
+ The panel described about 30 of the 114 strongest sites as using two or three type sizes with nothing
42
+ in between, and none as using a graded five- or six-step scale. So: one display size, one text size
43
+ and a small size carry the page; a lead size and a heading size exist for when they are needed. Five
44
+ is the ceiling. The common failure is nine sizes that are all near each other (16, 18, 20, 24, 28,
45
+ 32…), which reads as mush. Choose steps that are clearly different:
46
+
47
+ ```css
48
+ :root {
49
+ --step-small: clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem); /* 13–14px captions, legal */
50
+ --step-body: clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem); /* 17–19px paragraphs */
51
+ --step-lead: clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem); /* 20–26px supporting line, large body */
52
+ --step-head: clamp(2rem, 1.3rem + 3.2vw, 4rem); /* 32–64px section headings */
53
+ --step-display: clamp(3rem, 1rem + 9vw, 9rem); /* set by the hero blueprint */
54
+ }
55
+ ```
56
+
57
+ - `--step-display` belongs to the direction. A monument wordmark is 16–24vw; a quiet instrument's
58
+ headline is 28px. Use the size the hero blueprint gives, as a `clamp()` so it scales with the
59
+ viewport but is bounded on phones and very wide screens.
60
+ - Keep the gap: the display size should be at least four times the body size on desktop, and nothing
61
+ should sit between `--step-lead` and `--step-head` unless the design truly needs a sixth size.
62
+ - Resist a "subheading" size for every card and label. If two sizes look almost the same, make them
63
+ the same.
64
+
65
+ ## 3. Setting display type
66
+
67
+ Large type exposes spacing that is invisible at text size. Apply all of these to anything over 40px:
68
+
69
+ ```css
70
+ .display {
71
+ font-size: var(--step-display);
72
+ line-height: 0.95; /* 0.85–1.05; tighter for capitals and condensed faces */
73
+ letter-spacing: -0.035em; /* -0.02 to -0.05em; use the value on the direction sheet */
74
+ font-kerning: normal;
75
+ text-wrap: balance;
76
+ max-width: 14ch; /* choose the measure so lines break where you want */
77
+ margin: 0;
78
+ }
79
+ ```
80
+
81
+ - **Tracking scales with size.** The larger the type, the tighter it needs to be; a value right for
82
+ 120px will choke 32px. Set tracking per step, not once for all headings.
83
+ - **Leading below 1.0 needs checking.** Look for collisions between descenders and the ascenders or
84
+ accents of the next line. Two-line headlines make this easy to verify by eye.
85
+ - **All capitals** want slightly open tracking (0 to +0.03em) even at display size, and leading around
86
+ 0.9.
87
+ - **Optical alignment.** Big letters with round or diagonal left edges (O, C, A, T, W) look indented.
88
+ Pull the headline left by about 0.04–0.06em (`margin-left: -0.05em`) so it aligns optically with the
89
+ text beneath it.
90
+ - **Viewport-wide type.** For a line that must span the screen, size it in `vw` and verify at 390 and
91
+ 1440; set `white-space: nowrap` and let the container clip rather than wrap. Calculate the size from
92
+ the character count: `font-size ≈ container width ÷ (characters × k)` with k from `copy.md` §2.
93
+ - Never add a text shadow, an outline stroke, or a gradient fill to display type.
94
+
95
+ ## 4. Setting text
96
+
97
+ ```css
98
+ body { font-size: var(--step-body); line-height: 1.5; font-kerning: normal; text-rendering: optimizeLegibility; }
99
+ p { max-width: 62ch; text-wrap: pretty; margin: 0; }
100
+ p + p { margin-top: 0.9em; }
101
+ .lead { font-size: var(--step-lead); line-height: 1.35; max-width: 40ch; }
102
+ small, .caption { font-size: var(--step-small); line-height: 1.45; }
103
+ ```
104
+
105
+ - Measure: 45–75 characters. Wider than that and the eye loses the next line; the inspector warns
106
+ past about 88.
107
+ - Leading: 1.45–1.6 for body, tighter (1.3–1.4) for the larger lead size, looser for long reading.
108
+ - Secondary text is the same face in a softer ink (`--muted`), not a lighter weight and not smaller
109
+ than 13px.
110
+ - Do not centre paragraphs longer than three lines. Do not justify.
111
+ - Light text on a dark ground looks heavier: drop one weight step or add 0.01em tracking, and raise
112
+ leading slightly.
113
+
114
+ ## 5. Loading the fonts properly
115
+
116
+ The sheet gives a `<link>` tag. Use it exactly; do not swap in a face you prefer.
117
+
118
+ ```html
119
+ <link rel="preconnect" href="https://fonts.googleapis.com">
120
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
121
+ <link href="…from the direction sheet…" rel="stylesheet">
122
+ ```
123
+
124
+ ```css
125
+ :root {
126
+ --font-display: "Family From Sheet", "Helvetica Neue", Arial, sans-serif;
127
+ --font-text: "Family From Sheet", Georgia, serif;
128
+ }
129
+ ```
130
+
131
+ - Request only the weights you use (usually two or three in total).
132
+ - Always give a fallback stack of the same broad kind (sans for sans, serif for serif).
133
+ - In a framework, use its font loader with the same family and weights (`next/font/google`, or a
134
+ self-hosted `@font-face` with `font-display: swap`). Fontshare faces load from the
135
+ `api.fontshare.com` stylesheet on the sheet.
136
+ - After building, `inspect.mjs` reports the families that actually rendered. If it warns that a face
137
+ did not load, the screenshots show a fallback and nothing you judge from them is real. Fix the link
138
+ first.
139
+
140
+ ## 6. One family or two
141
+
142
+ A third of the studied sites use a single family for everything, and it is the safest way to look
143
+ coherent. When the dealt system has two faces:
144
+
145
+ - Give each a job and never swap them: one sets headlines, the other sets everything else.
146
+ - Do not introduce a third face for labels, numbers or quotes.
147
+ - Do not mix two faces inside one headline.
148
+ - Italic is for titles of works and real emphasis inside paragraphs, never as decoration.
149
+
150
+ ## 7. Details that separate set type from typed text
151
+
152
+ - Curly quotes and apostrophes, real dashes, a real ellipsis (see `copy.md` §7).
153
+ - `font-variant-numeric: tabular-nums` for prices, tables, dates in columns; `oldstyle-nums` suits
154
+ serif body text.
155
+ - `text-underline-offset: 0.18em; text-decoration-thickness: 0.07em` on links, so underlines clear the
156
+ descenders.
157
+ - `hyphens: none` on headings. `overflow-wrap: anywhere` only on long URLs or emails.
158
+ - A heading belongs to the text after it: space above a heading is at least twice the space below.
159
+ - `::selection { background: var(--accent); color: var(--accent-ink); }` and a visible
160
+ `:focus-visible` outline in the accent, so even the browser's own states belong to the design.
161
+ - Do not change weight on hover; the line reflows.
162
+
163
+ ## 8. Mistakes the inspector cannot see
164
+
165
+ - A headline that passes the two-line rule but breaks badly: one orphan word on line two, or a break
166
+ that splits a phrase ("Stools for small / kitchens"). Author the break.
167
+ - Display type so tight that letters touch, or so loose it falls apart.
168
+ - A confident hero followed by section headings almost as large. Keep one size dominant per screen.
169
+ - Body text set in the display face when that face was drawn for large sizes only.
170
+ - Everything bold. If every line is emphasised, none is.