aiblueprint-cli 1.4.73 → 1.4.75
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/README.md +7 -0
- package/agents-config/skills/use-style/SKILL.md +54 -0
- package/agents-config/skills/use-style/examples/anthropic.html +400 -0
- package/agents-config/skills/use-style/examples/dusk.html +368 -0
- package/agents-config/skills/use-style/examples/gumroad.html +396 -0
- package/agents-config/skills/use-style/examples/linear.html +389 -0
- package/agents-config/skills/use-style/examples/new-york-times.html +417 -0
- package/agents-config/skills/use-style/examples/raycast.html +402 -0
- package/agents-config/skills/use-style/examples/split-auth.html +366 -0
- package/agents-config/skills/use-style/examples/stripe.html +386 -0
- package/agents-config/skills/use-style/examples/vercel.html +379 -0
- package/agents-config/skills/use-style/styles/anthropic.md +266 -0
- package/agents-config/skills/use-style/styles/dusk.md +269 -0
- package/agents-config/skills/use-style/styles/grid.md +284 -0
- package/agents-config/skills/use-style/styles/gumroad.md +273 -0
- package/agents-config/skills/use-style/styles/linear.md +355 -0
- package/agents-config/skills/use-style/styles/new-york-times.md +277 -0
- package/agents-config/skills/use-style/styles/raycast.md +285 -0
- package/agents-config/skills/use-style/styles/split-auth.md +281 -0
- package/agents-config/skills/use-style/styles/stripe.md +372 -0
- package/agents-config/skills/use-style/styles/vercel-simple.md +322 -0
- package/dist/cli.js +513 -42
- package/package.json +1 -1
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
# Vercel Simple Style
|
|
2
|
+
|
|
3
|
+
Minimal dark-mode developer UI. High contrast, line-driven structure, no decoration.
|
|
4
|
+
|
|
5
|
+
**Reference vibe:** Vercel dashboard, blog, and data tools (take-home pay, country index).
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Core vibe
|
|
10
|
+
|
|
11
|
+
- **Developer-first.** Utilitarian, not marketing-soft.
|
|
12
|
+
- **Pure dark canvas.** Black background, white primary text, gray hierarchy.
|
|
13
|
+
- **Line over depth.** 1px borders define structure; no shadows or blur.
|
|
14
|
+
- **Restrained radius.** `0` on data/tool surfaces, `6-8px` on nav buttons and cards in app shells.
|
|
15
|
+
- **Monospace for data.** Labels, nav, tables, inputs, metadata.
|
|
16
|
+
- **Sans for prose.** Blog posts, long descriptions, dashboard titles (Geist / Inter stack).
|
|
17
|
+
- **Generous whitespace.** Wide section gaps, airy row padding.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Color
|
|
22
|
+
|
|
23
|
+
Portable palette. Map to project tokens when available.
|
|
24
|
+
|
|
25
|
+
| Role | Hex | CSS var (suggested) | Usage |
|
|
26
|
+
|------|-----|---------------------|-------|
|
|
27
|
+
| Canvas | `#000000` | `--vs-bg` | Page background |
|
|
28
|
+
| Surface | `#111111` | `--vs-surface` | Summary boxes, sidebar panels, inset blocks |
|
|
29
|
+
| Surface raised | `#1a1a1a` | `--vs-surface-raised` | Hover rows, secondary panels |
|
|
30
|
+
| Ink | `#ffffff` | `--vs-fg` | Headlines, primary values, active tab text |
|
|
31
|
+
| Muted ink | `#888888` | `--vs-muted-fg` | Descriptions, metadata, inactive tabs |
|
|
32
|
+
| Subtle ink | `#a1a1aa` | `--vs-subtle-fg` | Breadcrumbs, timestamps, helper text |
|
|
33
|
+
| Border | `#333333` | `--vs-border` | Boxes, dividers, input outlines |
|
|
34
|
+
| Border strong | `#444444` | `--vs-border-strong` | Active/hover borders |
|
|
35
|
+
| Data bar | `#666666` | `--vs-bar` | Progress / comparison bars |
|
|
36
|
+
| Link | `#0070f3` | `--vs-link` | Text links, copy actions |
|
|
37
|
+
| Success | `#50e3c2` | `--vs-success` | Stable / success states |
|
|
38
|
+
| Error | `#ee0000` | `--vs-error` | Failed states |
|
|
39
|
+
|
|
40
|
+
### Tailwind mapping (when no project tokens)
|
|
41
|
+
|
|
42
|
+
```css
|
|
43
|
+
:root {
|
|
44
|
+
--vs-bg: #000;
|
|
45
|
+
--vs-surface: #111;
|
|
46
|
+
--vs-fg: #fff;
|
|
47
|
+
--vs-muted-fg: #888;
|
|
48
|
+
--vs-border: #333;
|
|
49
|
+
--vs-link: #0070f3;
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
| Tailwind | Value |
|
|
54
|
+
|----------|-------|
|
|
55
|
+
| `bg-black` | Canvas |
|
|
56
|
+
| `bg-[#111]` | Surface |
|
|
57
|
+
| `text-white` | Primary |
|
|
58
|
+
| `text-[#888]` | Muted |
|
|
59
|
+
| `border-[#333]` | Structure |
|
|
60
|
+
|
|
61
|
+
**Rule:** Keep 90% of the UI monochromatic. Color accents only for links, status, and flag/icon glyphs.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Typography
|
|
66
|
+
|
|
67
|
+
### Font stacks
|
|
68
|
+
|
|
69
|
+
| Role | Stack |
|
|
70
|
+
|------|-------|
|
|
71
|
+
| Sans (prose / dashboard) | `Geist, Inter, ui-sans-serif, system-ui, sans-serif` |
|
|
72
|
+
| Mono (data / tools) | `Geist Mono, ui-monospace, SFMono-Regular, Menlo, monospace` |
|
|
73
|
+
|
|
74
|
+
Load Geist via `@fontsource/geist-sans` / `@fontsource/geist-mono`, or `next/font/local` in Next.js.
|
|
75
|
+
|
|
76
|
+
### Scale
|
|
77
|
+
|
|
78
|
+
| Level | Font | Pattern |
|
|
79
|
+
|-------|------|---------|
|
|
80
|
+
| Page title | Sans or Mono | `text-2xl md:text-3xl font-medium tracking-tight text-white` |
|
|
81
|
+
| Section label | Mono | `text-[10px] sm:text-xs uppercase tracking-wider text-[#888]` |
|
|
82
|
+
| Body | Sans | `text-sm md:text-base leading-relaxed text-[#888]` |
|
|
83
|
+
| Data / nav / button | Mono | `font-mono text-xs uppercase tracking-wide` |
|
|
84
|
+
| Large input value | Mono | `font-mono text-2xl md:text-3xl tabular-nums text-white` |
|
|
85
|
+
| Metadata | Sans or Mono | `text-xs text-[#888]` |
|
|
86
|
+
|
|
87
|
+
### Section labels
|
|
88
|
+
|
|
89
|
+
All-caps, small, muted gray. Examples: `TAX`, `TOOLS`, `SORT BY`, `YOUR GROSS ANNUAL SALARY`.
|
|
90
|
+
|
|
91
|
+
```tsx
|
|
92
|
+
<p className="font-mono text-xs uppercase tracking-wider text-[#888]">Tools</p>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Layout tokens
|
|
98
|
+
|
|
99
|
+
| Token | Value |
|
|
100
|
+
|-------|-------|
|
|
101
|
+
| `VS_SHELL` | `mx-auto w-full max-w-5xl px-4 sm:px-6 md:px-8` |
|
|
102
|
+
| `VS_SHELL_WIDE` | `max-w-7xl` (dashboard) |
|
|
103
|
+
| `VS_SECTION` | `py-12 md:py-16 lg:py-20` |
|
|
104
|
+
| `VS_STACK` | `px-4 py-4 sm:px-5 sm:py-5 md:px-6 md:py-6` |
|
|
105
|
+
| `VS_GAP_SECTION` | `mb-12 md:mb-16` |
|
|
106
|
+
|
|
107
|
+
### Page shell (tool / index)
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
+---------------------------------------- viewport --+
|
|
111
|
+
| VS_SHELL |
|
|
112
|
+
| - Section label (mono, uppercase, muted) |
|
|
113
|
+
| - Page title |
|
|
114
|
+
| - Description (muted sans) |
|
|
115
|
+
| - Search / controls |
|
|
116
|
+
| - Bordered grid or list |
|
|
117
|
+
+----------------------------------------------------+
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
```tsx
|
|
121
|
+
<div className="min-h-screen bg-black text-white">
|
|
122
|
+
<main className={VS_SHELL}>
|
|
123
|
+
<section className={VS_SECTION}>...</section>
|
|
124
|
+
</main>
|
|
125
|
+
</div>
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### App shell (dashboard)
|
|
129
|
+
|
|
130
|
+
Sidebar + main. Sidebar is narrow, icon + label, muted inactive links.
|
|
131
|
+
|
|
132
|
+
```tsx
|
|
133
|
+
<div className="flex min-h-screen bg-black">
|
|
134
|
+
<aside className="w-56 border-r border-[#333]">...</aside>
|
|
135
|
+
<main className="flex-1 p-6 md:p-8">...</main>
|
|
136
|
+
</div>
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Borders & radius
|
|
142
|
+
|
|
143
|
+
| Context | Radius | Border |
|
|
144
|
+
|---------|--------|--------|
|
|
145
|
+
| Data tools, country lists, tables | `rounded-none` | `border border-[#333]` |
|
|
146
|
+
| Cards, project tiles, blog feature | `rounded-lg` (8px) | `border border-[#333]` |
|
|
147
|
+
| Primary button | `rounded-md` (6px) | filled or outline |
|
|
148
|
+
| Inputs | `rounded-none` or `rounded-md` | `border border-[#333] bg-transparent` |
|
|
149
|
+
|
|
150
|
+
Dividers: `border-t border-[#333]`, full width inside the container.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Component patterns
|
|
155
|
+
|
|
156
|
+
### Search input
|
|
157
|
+
|
|
158
|
+
```tsx
|
|
159
|
+
<input
|
|
160
|
+
className="w-full border border-[#333] bg-transparent px-4 py-3 font-mono text-sm text-white placeholder:text-[#888] focus:border-[#444] focus:outline-none"
|
|
161
|
+
placeholder="Search countries..."
|
|
162
|
+
/>
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Link row (index grid)
|
|
166
|
+
|
|
167
|
+
Bordered box, icon left, title white, arrow right.
|
|
168
|
+
|
|
169
|
+
```tsx
|
|
170
|
+
<a className="flex items-center justify-between border border-[#333] px-4 py-3 transition-colors hover:border-[#444] hover:bg-[#111]">
|
|
171
|
+
<span className="flex items-center gap-3 font-mono text-sm text-white">...</span>
|
|
172
|
+
<span className="font-mono text-[#888]">{"->"}</span>
|
|
173
|
+
</a>
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Tab / sort toggle
|
|
177
|
+
|
|
178
|
+
Inactive: gray border + gray text. Active: white border + white text.
|
|
179
|
+
|
|
180
|
+
```tsx
|
|
181
|
+
<button className={cn(
|
|
182
|
+
"border px-3 py-1.5 font-mono text-xs uppercase tracking-wide",
|
|
183
|
+
active ? "border-white text-white" : "border-[#333] text-[#888]"
|
|
184
|
+
)}>...</button>
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Data table row
|
|
188
|
+
|
|
189
|
+
Row inside a bordered container. Primary number is white + mono tabular. Secondary detail is muted and small.
|
|
190
|
+
|
|
191
|
+
```tsx
|
|
192
|
+
<div className="flex items-center gap-4 border-b border-[#333] px-4 py-4 last:border-b-0">
|
|
193
|
+
<span className="w-28 font-mono text-sm">Germany</span>
|
|
194
|
+
<div className="h-2 flex-1 bg-[#333]">
|
|
195
|
+
<div className="h-full bg-[#666]" style={{ width: `${pct}%` }} />
|
|
196
|
+
</div>
|
|
197
|
+
<span className="font-mono tabular-nums text-white">52,340</span>
|
|
198
|
+
</div>
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Progress bars: track `#333`, fill `#666`. Flat, no gradient.
|
|
202
|
+
|
|
203
|
+
### Summary / highlight box
|
|
204
|
+
|
|
205
|
+
```tsx
|
|
206
|
+
<div className="border border-[#333] bg-[#111] px-5 py-4 font-mono text-sm">
|
|
207
|
+
<span className="text-[#888]">Best value: </span>
|
|
208
|
+
<span className="text-white">Bulgaria</span>
|
|
209
|
+
</div>
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Card (dashboard / blog)
|
|
213
|
+
|
|
214
|
+
```tsx
|
|
215
|
+
<div className="rounded-lg border border-[#333] bg-black p-4 transition-colors hover:border-[#444]">
|
|
216
|
+
<div className="mb-3 flex items-start justify-between">...</div>
|
|
217
|
+
<h3 className="text-sm font-medium text-white">Project name</h3>
|
|
218
|
+
<p className="mt-1 text-xs text-[#888]">project.vercel.app</p>
|
|
219
|
+
</div>
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### Buttons
|
|
223
|
+
|
|
224
|
+
| Variant | Classes |
|
|
225
|
+
|---------|---------|
|
|
226
|
+
| Primary | `rounded-md bg-white px-4 py-2 text-sm font-medium text-black hover:bg-white/90` |
|
|
227
|
+
| Secondary | `rounded-md border border-[#333] bg-black px-4 py-2 text-sm text-white hover:border-[#444]` |
|
|
228
|
+
| Ghost link | `text-[#0070f3] hover:underline` |
|
|
229
|
+
|
|
230
|
+
### Two-column grid
|
|
231
|
+
|
|
232
|
+
```tsx
|
|
233
|
+
<div className="grid grid-cols-1 gap-3 sm:grid-cols-2">
|
|
234
|
+
{items.map(...)}
|
|
235
|
+
</div>
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
Each cell is its own bordered box, not a `gap-px` mosaic unless every cell sets explicit `bg-black`.
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## Grid patterns
|
|
243
|
+
|
|
244
|
+
### Bordered list stack
|
|
245
|
+
|
|
246
|
+
```tsx
|
|
247
|
+
<div className="border border-[#333] divide-y divide-[#333]">
|
|
248
|
+
{rows.map(...)}
|
|
249
|
+
</div>
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### Full-width tool card
|
|
253
|
+
|
|
254
|
+
```tsx
|
|
255
|
+
<a className="block border border-[#333] px-5 py-5 transition-colors hover:bg-[#111]">
|
|
256
|
+
<p className="font-mono text-base text-white">Europe: Take-Home Pay Comparison</p>
|
|
257
|
+
<p className="mt-1 text-sm text-[#888]">Calculate, visualize, and compare...</p>
|
|
258
|
+
</a>
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## Charts (data viz)
|
|
264
|
+
|
|
265
|
+
Match the line-driven, monochrome tool aesthetic:
|
|
266
|
+
|
|
267
|
+
- Series in grayscale: `#fff`, `#888`, `#666`, `#333`. Add **one** accent only when a series must stand out - `#0070f3` (link blue) or `#50e3c2` (success).
|
|
268
|
+
- **Sharp bars** (`borderRadius: 0`) - same square geometry as the data tools. Flat fills, no gradients.
|
|
269
|
+
- Gridlines `#333`; axis text **mono** (`Geist Mono`), muted `#888`.
|
|
270
|
+
- Tooltip: `#111` background, white text, square or 6px corners.
|
|
271
|
+
- Bars/progress reuse the data-bar token: track `#333`, fill `#666` (or `#fff` for the active series).
|
|
272
|
+
- Doughnut: segments separated by a `#000` stroke; legend in mono uppercase.
|
|
273
|
+
|
|
274
|
+
```js
|
|
275
|
+
const FG="#fff", S2="#888", S3="#666", S4="#333", ACCENT="#0070f3", GRID="#333";
|
|
276
|
+
Chart.defaults.font.family = "Geist Mono, ui-monospace, monospace";
|
|
277
|
+
Chart.defaults.color = "#888";
|
|
278
|
+
// bars: backgroundColor:[S3, FG], borderRadius:0
|
|
279
|
+
// grid: { color: GRID }, border: { color: GRID }
|
|
280
|
+
// tooltip: { backgroundColor:"#111", cornerRadius:0 }
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## Motion & effects
|
|
286
|
+
|
|
287
|
+
- No drop shadows, glass blur, gradient backgrounds, or glow halos.
|
|
288
|
+
- Hover: border lighten (`#333` to `#444`), subtle bg (`#111`), or text color shift.
|
|
289
|
+
- `transition-colors duration-150` on interactive elements.
|
|
290
|
+
- No scale/lift animations on cards.
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## Mode selection
|
|
295
|
+
|
|
296
|
+
| Surface type | Font | Radius |
|
|
297
|
+
|--------------|------|--------|
|
|
298
|
+
| Data tools, tax calculators, index pages | Mono primary | Sharp (`0`) |
|
|
299
|
+
| Dashboard, blog, marketing docs | Sans primary, mono for metadata | Soft (`6-8px`) |
|
|
300
|
+
|
|
301
|
+
When unsure, default to mono + sharp for new tool UIs, and sans + `rounded-lg` for app shells and content pages.
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Anti-patterns
|
|
306
|
+
|
|
307
|
+
| Avoid | Why |
|
|
308
|
+
|-------|-----|
|
|
309
|
+
| `rounded-xl`, `rounded-2xl`, `rounded-full` on data/tool UI | Breaks the utilitarian look |
|
|
310
|
+
| `shadow-lg`, `ring-*`, `backdrop-blur-*` | Depth replaces line hierarchy |
|
|
311
|
+
| Gradient backgrounds | Keep flat black / `#111` surfaces |
|
|
312
|
+
| Bright saturated fills on large areas | Reserve color for links and status |
|
|
313
|
+
| `gap-px` + `bg-border` without per-cell bg | Unintended gray gutters |
|
|
314
|
+
| Pill-shaped tabs on tool pages | Use rectangular bordered toggles |
|
|
315
|
+
| Light mode by default | The style is dark-first |
|
|
316
|
+
| Decorative hero imagery on a tool index | Text + bordered grid only |
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## Project overrides
|
|
321
|
+
|
|
322
|
+
If the repo defines `.agents/styles/vercel-simple.md` or `.agents/styles/vercel-simple-theme.md`, prefer those tokens and components over this portable spec.
|