dev-booster 1.4.0 → 1.6.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/README.md +59 -19
- package/package.json +1 -1
- package/src/index.js +34 -24
- package/template/.devbooster/MANIFEST.md +23 -1
- package/template/.devbooster/boosters/advisor.md +5 -0
- package/template/.devbooster/boosters/code-audit.md +83 -0
- package/template/.devbooster/boosters/context.md +5 -4
- package/template/.devbooster/boosters/debug.md +5 -0
- package/template/.devbooster/boosters/deploy.md +5 -0
- package/template/.devbooster/boosters/discovery.md +5 -0
- package/template/.devbooster/boosters/investigation.md +5 -0
- package/template/.devbooster/boosters/planning.md +5 -0
- package/template/.devbooster/boosters/review.md +0 -1
- package/template/.devbooster/boosters/security.md +5 -0
- package/template/.devbooster/hub/scripts/doctor_parser.py +77 -0
- package/template/.devbooster/hub/skills/frontend-design/anti-generic-guide.md +113 -113
- package/template/.devbooster/rules/{COMERCIAL.md → COMMERCIAL.md} +4 -4
- package/template/.devbooster/rules/GUIDE.md +99 -99
- package/template/.devbooster/rules/PROTOCOL.md +15 -2
- package/template/.devbooster/rules/USER_PREFERENCES.md +15 -15
- package/template/DEVBOOSTER_INIT.md +2 -2
|
@@ -1,46 +1,46 @@
|
|
|
1
1
|
# UI Design Skill — Anti-Generic Guide
|
|
2
|
-
###
|
|
2
|
+
### For Next.js + Tailwind CSS + shadcn/ui
|
|
3
3
|
|
|
4
|
-
>
|
|
5
|
-
>
|
|
4
|
+
> Read this document **before** writing any UI component.
|
|
5
|
+
> This is not a list of optional rules. It is the visual contract of the project.
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
## 1.
|
|
9
|
+
## 1. The problem you are being hired to avoid
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Language models trained on public code have learned from thousands of projects that use the same templates: Tailwind UI, shadcn/ui boilerplates, v0.dev outputs. The result is a "statistical average" of what exists — and this average has a highly recognizable face:
|
|
12
12
|
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
- `border rounded-lg p-6 shadow-sm`
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
13
|
+
- A 3-column grid with identical cards
|
|
14
|
+
- Icon + title + gray paragraph repeated N times
|
|
15
|
+
- `border rounded-lg p-6 shadow-sm` on absolutely everything
|
|
16
|
+
- Typographic hierarchy: `text-2xl font-bold` → `text-sm text-muted-foreground` without variation
|
|
17
|
+
- Palette: white, gray-100, gray-800, and one generic accent color
|
|
18
|
+
- Font: Inter. Always Inter.
|
|
19
19
|
|
|
20
|
-
**Interfaces
|
|
20
|
+
**Interfaces generated like this are correct. They work. And they are completely invisible.**
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
24
|
-
## 2.
|
|
24
|
+
## 2. Before writing a single line of code
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
Answer these questions mentally:
|
|
27
27
|
|
|
28
|
-
1. **
|
|
29
|
-
2. **
|
|
30
|
-
3. **
|
|
31
|
-
4. **
|
|
28
|
+
1. **What is the information hierarchy?** What does the user need to see *first*? What is secondary? What can fade away?
|
|
29
|
+
2. **What is the emotional tone?** Technical/precise? Warm/human? Urgent? Contemplative?
|
|
30
|
+
3. **What breaks the pattern here?** An unexpected typographic size, a color outside the grid, an element that is not contained inside a card.
|
|
31
|
+
4. **Where is the visual tension?** Contrast in weight, scale, color, or space that creates a reading direction.
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
If you cannot answer these questions, **do not start coding**. Go back to the context of the component.
|
|
34
34
|
|
|
35
35
|
---
|
|
36
36
|
|
|
37
|
-
## 3.
|
|
37
|
+
## 3. Prohibited patterns
|
|
38
38
|
|
|
39
39
|
### 3.1 Layout
|
|
40
40
|
|
|
41
|
-
❌ **
|
|
41
|
+
❌ **Uniform grid of cards with the same visual weight**
|
|
42
42
|
```tsx
|
|
43
|
-
//
|
|
43
|
+
// PROHIBITED — all cards look identical, zero hierarchy
|
|
44
44
|
<div className="grid grid-cols-3 gap-6">
|
|
45
45
|
<Card>...</Card>
|
|
46
46
|
<Card>...</Card>
|
|
@@ -48,11 +48,11 @@ Se você não consegue responder essas perguntas, **não comece a codar**. Volte
|
|
|
48
48
|
</div>
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
✅ **
|
|
51
|
+
✅ **Explicit hierarchy — one element dominates**
|
|
52
52
|
```tsx
|
|
53
|
-
//
|
|
53
|
+
// One main item (large), other secondary ones (smaller)
|
|
54
54
|
<div className="grid grid-cols-3 gap-6">
|
|
55
|
-
<div className="col-span-2 row-span-2">...</div> {/*
|
|
55
|
+
<div className="col-span-2 row-span-2">...</div> {/* visual anchor */}
|
|
56
56
|
<Card className="...">...</Card>
|
|
57
57
|
<Card className="...">...</Card>
|
|
58
58
|
</div>
|
|
@@ -60,22 +60,22 @@ Se você não consegue responder essas perguntas, **não comece a codar**. Volte
|
|
|
60
60
|
|
|
61
61
|
---
|
|
62
62
|
|
|
63
|
-
❌ **Card
|
|
63
|
+
❌ **Card inside a Card inside a Card**
|
|
64
64
|
```tsx
|
|
65
|
-
//
|
|
65
|
+
// PROHIBITED — nested boxes without a valid purpose
|
|
66
66
|
<Card>
|
|
67
67
|
<CardContent>
|
|
68
|
-
<Card> {/*
|
|
69
|
-
<Card> {/*
|
|
68
|
+
<Card> {/* why? */}
|
|
69
|
+
<Card> {/* seriously? */}
|
|
70
70
|
```
|
|
71
71
|
|
|
72
|
-
✅ **Use
|
|
72
|
+
✅ **Use visual separation without containers**
|
|
73
73
|
```tsx
|
|
74
|
-
//
|
|
74
|
+
// Divide using space, typography, or borders — not with more boxes
|
|
75
75
|
<div className="space-y-6">
|
|
76
76
|
<section>
|
|
77
77
|
<h3 className="text-xs font-medium uppercase tracking-widest text-muted-foreground mb-3">
|
|
78
|
-
|
|
78
|
+
Section
|
|
79
79
|
</h3>
|
|
80
80
|
<div className="space-y-2">...</div>
|
|
81
81
|
</section>
|
|
@@ -84,169 +84,169 @@ Se você não consegue responder essas perguntas, **não comece a codar**. Volte
|
|
|
84
84
|
|
|
85
85
|
---
|
|
86
86
|
|
|
87
|
-
❌
|
|
87
|
+
❌ **Generic floating icon above every heading**
|
|
88
88
|
```tsx
|
|
89
|
-
//
|
|
89
|
+
// PROHIBITED — this pattern screams "template"
|
|
90
90
|
<div className="flex flex-col items-center text-center">
|
|
91
91
|
<div className="rounded-full bg-primary/10 p-3 mb-4">
|
|
92
92
|
<Icon className="h-6 w-6 text-primary" />
|
|
93
93
|
</div>
|
|
94
|
-
<h3 className="font-semibold">
|
|
95
|
-
<p className="text-sm text-muted-foreground">
|
|
94
|
+
<h3 className="font-semibold">Title</h3>
|
|
95
|
+
<p className="text-sm text-muted-foreground">Generic description</p>
|
|
96
96
|
</div>
|
|
97
97
|
```
|
|
98
98
|
|
|
99
|
-
✅ **
|
|
99
|
+
✅ **Integrate the icon into the typographic flow or eliminate it**
|
|
100
100
|
```tsx
|
|
101
101
|
<div>
|
|
102
102
|
<h3 className="font-semibold flex items-center gap-2">
|
|
103
103
|
<Icon className="h-4 w-4 opacity-50" />
|
|
104
|
-
|
|
104
|
+
Title
|
|
105
105
|
</h3>
|
|
106
|
-
<p className="text-sm text-muted-foreground mt-1 pl-6">
|
|
106
|
+
<p className="text-sm text-muted-foreground mt-1 pl-6">Description</p>
|
|
107
107
|
</div>
|
|
108
108
|
```
|
|
109
109
|
|
|
110
110
|
---
|
|
111
111
|
|
|
112
|
-
### 3.2
|
|
112
|
+
### 3.2 Typography
|
|
113
113
|
|
|
114
|
-
❌ **
|
|
114
|
+
❌ **Homogeneous scale — everything is `text-sm` or everything is `text-base`**
|
|
115
115
|
|
|
116
|
-
✅ **
|
|
116
|
+
✅ **Intentional scale contrast**
|
|
117
117
|
```tsx
|
|
118
|
-
//
|
|
118
|
+
// Create tension: one very large element, another very small one
|
|
119
119
|
<div>
|
|
120
120
|
<span className="text-[11px] font-medium uppercase tracking-[0.15em] text-muted-foreground">
|
|
121
|
-
|
|
121
|
+
Monthly Revenue
|
|
122
122
|
</span>
|
|
123
|
-
<p className="text-4xl font-bold tracking-tight mt-1"
|
|
124
|
-
<p className="text-sm text-muted-foreground mt-1">↑ 12% vs
|
|
123
|
+
<p className="text-4xl font-bold tracking-tight mt-1">$ 48,320</p>
|
|
124
|
+
<p className="text-sm text-muted-foreground mt-1">↑ 12% vs last month</p>
|
|
125
125
|
</div>
|
|
126
126
|
```
|
|
127
127
|
|
|
128
|
-
❌ **`font-semibold`
|
|
128
|
+
❌ **`font-semibold` as the only degree of emphasis**
|
|
129
129
|
|
|
130
|
-
✅ **Use
|
|
130
|
+
✅ **Use the complete system: weight + size + color + spacing + opacity**
|
|
131
131
|
```tsx
|
|
132
|
-
//
|
|
133
|
-
<p className="text-sm font-medium">Label</p> //
|
|
134
|
-
<p className="text-sm text-muted-foreground">Desc</p> //
|
|
135
|
-
<p className="text-xs opacity-50">Metadata</p> //
|
|
132
|
+
// Hierarchy without relying entirely on bold text
|
|
133
|
+
<p className="text-sm font-medium">Label</p> // primary
|
|
134
|
+
<p className="text-sm text-muted-foreground">Desc</p> // secondary
|
|
135
|
+
<p className="text-xs opacity-50">Metadata</p> // tertiary
|
|
136
136
|
```
|
|
137
137
|
|
|
138
138
|
---
|
|
139
139
|
|
|
140
|
-
❌ **Inter
|
|
140
|
+
❌ **Inter as the default font out of pure inertia**
|
|
141
141
|
|
|
142
|
-
✅ **
|
|
142
|
+
✅ **Choose with intention** — either use what is defined in `tailwind.config`, or question whether a display font should be added for headings:
|
|
143
143
|
```tsx
|
|
144
|
-
//
|
|
144
|
+
// In tailwind.config.ts — fonts with personality
|
|
145
145
|
fontFamily: {
|
|
146
|
-
sans: ['Geist', 'system-ui', 'sans-serif'],
|
|
147
|
-
display: ['Cal Sans', 'serif'],
|
|
148
|
-
mono: ['Geist Mono', 'monospace'], //
|
|
146
|
+
sans: ['Geist', 'system-ui', 'sans-serif'], // body text
|
|
147
|
+
display: ['Cal Sans', 'serif'], // large headings
|
|
148
|
+
mono: ['Geist Mono', 'monospace'], // code/data
|
|
149
149
|
}
|
|
150
150
|
```
|
|
151
151
|
|
|
152
152
|
---
|
|
153
153
|
|
|
154
|
-
### 3.3
|
|
154
|
+
### 3.3 Color
|
|
155
155
|
|
|
156
|
-
❌ **
|
|
156
|
+
❌ **A palette of 50 shades of gray + one generic brand color**
|
|
157
157
|
|
|
158
|
-
✅ **
|
|
159
|
-
- Use
|
|
160
|
-
-
|
|
161
|
-
- `text-muted-foreground`
|
|
158
|
+
✅ **Color with an editorial function**
|
|
159
|
+
- Use color to create *hierarchy*, not just *identity*
|
|
160
|
+
- A warm color in a cold context grabs attention — use this to your advantage
|
|
161
|
+
- `text-muted-foreground` is for *truly* secondary information, not just anything that isn't a title
|
|
162
162
|
|
|
163
|
-
❌
|
|
163
|
+
❌ **Pure `#000000` or `#ffffff`**
|
|
164
164
|
|
|
165
|
-
✅ **
|
|
165
|
+
✅ **Tinted neutrals** — slightly blue, warm, or cold grays depending on the product's tone:
|
|
166
166
|
```css
|
|
167
|
-
/*
|
|
168
|
-
--foreground: 224 71% 4%; /*
|
|
169
|
-
--background: 210 20% 98%; /*
|
|
167
|
+
/* Instead of pure gray, use slate (cold/tech), zinc (neutral), or stone (warm) */
|
|
168
|
+
--foreground: 224 71% 4%; /* nearly black with a blue tint */
|
|
169
|
+
--background: 210 20% 98%; /* nearly white with a cold tint */
|
|
170
170
|
```
|
|
171
171
|
|
|
172
172
|
---
|
|
173
173
|
|
|
174
|
-
### 3.4
|
|
174
|
+
### 3.4 Space and Rhythm
|
|
175
175
|
|
|
176
|
-
❌ **`gap-6`
|
|
176
|
+
❌ **`gap-6` and `p-6` on everything, uniformly**
|
|
177
177
|
|
|
178
|
-
✅ **
|
|
178
|
+
✅ **Space as hierarchy** — more space = more importance
|
|
179
179
|
```tsx
|
|
180
|
-
//
|
|
181
|
-
//
|
|
182
|
-
<div className="space-y-16"> {/*
|
|
183
|
-
<section className="space-y-8">
|
|
184
|
-
<header className="space-y-2">
|
|
180
|
+
// Main sections: generous spacing
|
|
181
|
+
// Related elements: compressed spacing
|
|
182
|
+
<div className="space-y-16"> {/* between sections */}
|
|
183
|
+
<section className="space-y-8"> {/* inside the section */}
|
|
184
|
+
<header className="space-y-2"> {/* inside the header */}
|
|
185
185
|
```
|
|
186
186
|
|
|
187
187
|
---
|
|
188
188
|
|
|
189
|
-
## 4.
|
|
189
|
+
## 4. Patterns that work (use consciously)
|
|
190
190
|
|
|
191
|
-
### 4.1
|
|
192
|
-
|
|
191
|
+
### 4.1 Visual Anchor
|
|
192
|
+
Every layout needs an element that dominates — through size, color, or position. The eye must know *where to begin*.
|
|
193
193
|
|
|
194
|
-
### 4.2
|
|
195
|
-
`col-span-2` + `col-span-1`
|
|
194
|
+
### 4.2 Intentional Asymmetry
|
|
195
|
+
`col-span-2` + `col-span-1` creates more visual tension than a repeated `col-span-1`. Use it.
|
|
196
196
|
|
|
197
|
-
### 4.3
|
|
198
|
-
|
|
197
|
+
### 4.3 Baseline and Data Alignment
|
|
198
|
+
For numerical data, align to the right. For text lists, align to the left. Never center tables.
|
|
199
199
|
|
|
200
|
-
### 4.4
|
|
201
|
-
|
|
200
|
+
### 4.4 Varied Density
|
|
201
|
+
A dense section (high information density, compressed space) placed next to an airy section creates rhythm. Avoid uniform density across the page.
|
|
202
202
|
|
|
203
|
-
### 4.5
|
|
203
|
+
### 4.5 Borders as separation, not decoration
|
|
204
204
|
```tsx
|
|
205
|
-
//
|
|
205
|
+
// Border as a typographic divider — no shadows, no excessive rounded corners
|
|
206
206
|
<div className="border-t pt-4 mt-4">
|
|
207
207
|
```
|
|
208
208
|
|
|
209
209
|
---
|
|
210
210
|
|
|
211
|
-
## 5. Checklist
|
|
211
|
+
## 5. Pre-delivery Checklist
|
|
212
212
|
|
|
213
|
-
|
|
213
|
+
Before finalizing a component, ask yourself:
|
|
214
214
|
|
|
215
|
-
- [ ]
|
|
216
|
-
- [ ]
|
|
217
|
-
- [ ]
|
|
218
|
-
- [ ]
|
|
219
|
-
- [ ]
|
|
220
|
-
- [ ]
|
|
221
|
-
- [ ]
|
|
215
|
+
- [ ] Can I clearly identify the element with the highest visual hierarchy?
|
|
216
|
+
- [ ] Is there a `<Card>` that could be replaced by negative space + typography?
|
|
217
|
+
- [ ] Does the typographic scale have at least 3 distinct levels of weight/size?
|
|
218
|
+
- [ ] Is there at least one element that breaks the symmetry of the grid?
|
|
219
|
+
- [ ] Do colors serve a function (hierarchy/attention/state), or are they purely decorative?
|
|
220
|
+
- [ ] If someone looks at this component for 3 seconds, will they know what to do?
|
|
221
|
+
- [ ] Could this component have come straight out of v0.dev without any changes? **(If yes, revise it)**
|
|
222
222
|
|
|
223
223
|
---
|
|
224
224
|
|
|
225
|
-
## 6.
|
|
225
|
+
## 6. Quick Reference — Problematic Tailwind classes vs Better alternatives
|
|
226
226
|
|
|
227
|
-
|
|
|
227
|
+
| Generic Pattern | Why it fails | Alternative |
|
|
228
228
|
|---|---|---|
|
|
229
|
-
| `rounded-lg`
|
|
230
|
-
| `shadow-sm`
|
|
231
|
-
| `text-muted-foreground`
|
|
232
|
-
| `p-6`
|
|
233
|
-
| `gap-6`
|
|
234
|
-
| `font-semibold`
|
|
229
|
+
| `rounded-lg` everywhere | Fake uniformity trying to look "modern" | Vary intentionally: `rounded-none`, `rounded-sm`, `rounded-2xl` |
|
|
230
|
+
| `shadow-sm` on every card | Depth without meaning | Use shadows only for truly elevated elements (modals, dropdowns) |
|
|
231
|
+
| `text-muted-foreground` in desc | Makes everything equally secondary | Use gradual opacity: `opacity-70`, `opacity-50` |
|
|
232
|
+
| Universal `p-6` | Mechanical grid | Asymmetrical padding: `px-6 py-4`, `pt-8 pb-4 px-6` |
|
|
233
|
+
| Universal `gap-6` | Lack of rhythm | Vary spacing based on the hierarchical level |
|
|
234
|
+
| `font-semibold` for emphasis | Only one degree of emphasis used | Combine `font-medium` + larger size OR a different color |
|
|
235
235
|
|
|
236
236
|
---
|
|
237
237
|
|
|
238
|
-
## 7.
|
|
238
|
+
## 7. Core Philosophy
|
|
239
239
|
|
|
240
|
-
>
|
|
241
|
-
>
|
|
240
|
+
> A *correct* interface is one that works.
|
|
241
|
+
> A *signature* interface is one that the user recognizes without seeing the logo.
|
|
242
242
|
|
|
243
|
-
|
|
243
|
+
The difference isn't in using different tools. It lies in making intentional choices instead of statistically safe ones.
|
|
244
244
|
|
|
245
|
-
**
|
|
246
|
-
|
|
245
|
+
**shadcn/ui is a starting point, not a destination.**
|
|
246
|
+
Modify the components. Break the defaults. Use Radix primitives directly when the shadcn wrapper starts limiting you.
|
|
247
247
|
|
|
248
|
-
|
|
248
|
+
The most generic interface possible is the one where the developer never questioned the default settings.
|
|
249
249
|
|
|
250
250
|
---
|
|
251
251
|
|
|
252
|
-
*
|
|
252
|
+
*Version 1.0 — Based on pattern analysis of AI-generated UI with Next.js + Tailwind + shadcn/ui*
|
|
@@ -18,12 +18,12 @@
|
|
|
18
18
|
- What are the main objections and how to counter them?
|
|
19
19
|
- What are the core sales arguments (Time saving, cost reduction, etc)?
|
|
20
20
|
|
|
21
|
-
**STEP 3: Generate Elite Rule
|
|
22
|
-
Rewrite this entire file (
|
|
21
|
+
**STEP 3: Generate Elite Rule:**
|
|
22
|
+
Rewrite this entire file (COMMERCIAL.md) in the **USER'S NATIVE LANGUAGE**. You MUST create a high-impact commercial guide following the 'Pattern Reference' below. Use persuasive language (Copywriting), focus on benefits instead of features, and define the brand's 'tone of voice'. The goal is to provide a guide that could be used by a marketing or sales team to position the product accurately."
|
|
23
23
|
|
|
24
24
|
---
|
|
25
25
|
|
|
26
|
-
## 🏗️ EXPECTED STRUCTURE (IN
|
|
26
|
+
## 🏗️ EXPECTED STRUCTURE (IN USER'S NATIVE LANGUAGE)
|
|
27
27
|
1. **O que é o Produto**: Definição comercial (o que ele vende de verdade).
|
|
28
28
|
2. **Promessa e Posicionamento**: Headlines e subheadlines magnéticas.
|
|
29
29
|
3. **Público-Alvo e Dores**: Quem compra e qual problema estamos resolvendo.
|
|
@@ -66,4 +66,4 @@ O empresário sente que 'trabalha para a empresa' e não o contrário. Ele não
|
|
|
66
66
|
|
|
67
67
|
1. Scan the project as instructed.
|
|
68
68
|
2. Analyze the commercial and positioning patterns.
|
|
69
|
-
3. Overwrite this entire file with the project-specific commercial documentation **
|
|
69
|
+
3. Overwrite this entire file with the project-specific commercial documentation in the **USER'S NATIVE LANGUAGE**.
|