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.
@@ -1,46 +1,46 @@
1
1
  # UI Design Skill — Anti-Generic Guide
2
- ### Para Next.js + Tailwind CSS + shadcn/ui
2
+ ### For Next.js + Tailwind CSS + shadcn/ui
3
3
 
4
- > Leia este documento **antes** de escrever qualquer componente de UI.
5
- > Ele não é uma lista de regras opcionais. É o contrato visual do projeto.
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. O problema que você está sendo contratado para evitar
9
+ ## 1. The problem you are being hired to avoid
10
10
 
11
- Modelos de linguagem treinados em código público aprenderam com milhares de projetos que usam os mesmos templates: Tailwind UI, shadcn/ui boilerplates, v0.dev outputs. O resultado é uma "média estatística" do que existee essa média tem cara reconhecível:
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 existsand this average has a highly recognizable face:
12
12
 
13
- - Grade de 3 colunas com cards idênticos
14
- - Ícone + título + parágrafo cinza repetido N vezes
15
- - `border rounded-lg p-6 shadow-sm` em absolutamente tudo
16
- - Hierarquia tipográfica `text-2xl font-bold` → `text-sm text-muted-foreground` sem variação
17
- - Paleta: branco, cinza-100, cinza-800, uma cor de accent genérica
18
- - Fonte: Inter. Sempre Inter.
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 geradas assim são corretas. Funcionam. E são completamente invisíveis.**
20
+ **Interfaces generated like this are correct. They work. And they are completely invisible.**
21
21
 
22
22
  ---
23
23
 
24
- ## 2. Antes de escrever uma linha de código
24
+ ## 2. Before writing a single line of code
25
25
 
26
- Responda mentalmente:
26
+ Answer these questions mentally:
27
27
 
28
- 1. **Qual é a hierarquia de informação?** O que o usuário precisa ver *primeiro*? O que é secundário? O que pode sumir?
29
- 2. **Qual é o tom emocional?** Técnico/preciso? Quente/humano? Urgente? Contemplativo?
30
- 3. **O que quebra o padrão aqui?** Um tamanho tipográfico inesperado, uma cor fora do grid, um elemento que não está dentro de um card.
31
- 4. **Onde está a tensão visual?** Contraste de peso, escala, cor ou espaço que cria direção de leitura.
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
- Se você não consegue responder essas perguntas, **não comece a codar**. Volte para o contexto do componente.
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. Padrões proibidos
37
+ ## 3. Prohibited patterns
38
38
 
39
39
  ### 3.1 Layout
40
40
 
41
- ❌ **Grade uniforme de cards com mesmo peso visual**
41
+ ❌ **Uniform grid of cards with the same visual weight**
42
42
  ```tsx
43
- // PROIBIDOtodos os cards iguais, hierarquia zero
43
+ // PROHIBITEDall 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
- ✅ **Hierarquia explícitaum elemento domina**
51
+ ✅ **Explicit hierarchyone element dominates**
52
52
  ```tsx
53
- // Um item principal (grande), outros secundários (menores)
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> {/* ancora visual */}
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 dentro de Card dentro de Card**
63
+ ❌ **Card inside a Card inside a Card**
64
64
  ```tsx
65
- // PROIBIDOcaixas aninhadas sem propósito
65
+ // PROHIBITEDnested boxes without a valid purpose
66
66
  <Card>
67
67
  <CardContent>
68
- <Card> {/* por quê? */}
69
- <Card> {/* sério? */}
68
+ <Card> {/* why? */}
69
+ <Card> {/* seriously? */}
70
70
  ```
71
71
 
72
- ✅ **Use separação visual sem container**
72
+ ✅ **Use visual separation without containers**
73
73
  ```tsx
74
- // Divida com espaço, tipografia ou bordanão com mais boxes
74
+ // Divide using space, typography, or bordersnot 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
- Seção
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
- **Ícone flutuante genérico acima de cada heading**
87
+ **Generic floating icon above every heading**
88
88
  ```tsx
89
- // PROIBIDOesse padrão grita "template"
89
+ // PROHIBITEDthis 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">Título</h3>
95
- <p className="text-sm text-muted-foreground">Descrição genérica</p>
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
- ✅ **Integre o ícone no fluxo tipográfico ou elimine-o**
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
- Título
104
+ Title
105
105
  </h3>
106
- <p className="text-sm text-muted-foreground mt-1 pl-6">Descrição</p>
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 Tipografia
112
+ ### 3.2 Typography
113
113
 
114
- ❌ **Escala homogêneatudo `text-sm` ou tudo `text-base`**
114
+ ❌ **Homogeneous scaleeverything is `text-sm` or everything is `text-base`**
115
115
 
116
- ✅ **Contraste de escala intencional**
116
+ ✅ **Intentional scale contrast**
117
117
  ```tsx
118
- // Crie tensão: um elemento muito grande, outro muito pequeno
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
- Receita mensal
121
+ Monthly Revenue
122
122
  </span>
123
- <p className="text-4xl font-bold tracking-tight mt-1">R$ 48.320</p>
124
- <p className="text-sm text-muted-foreground mt-1">↑ 12% vs mês anterior</p>
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` como único grau de ênfase**
128
+ ❌ **`font-semibold` as the only degree of emphasis**
129
129
 
130
- ✅ **Use o sistema completo: peso + tamanho + cor + espaçamento + opacidade**
130
+ ✅ **Use the complete system: weight + size + color + spacing + opacity**
131
131
  ```tsx
132
- // Hierarquia sem usar negrito em tudo
133
- <p className="text-sm font-medium">Label</p> // primário
134
- <p className="text-sm text-muted-foreground">Desc</p> // secundário
135
- <p className="text-xs opacity-50">Metadata</p> // terciário
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 como fonte padrão por inércia**
140
+ ❌ **Inter as the default font out of pure inertia**
141
141
 
142
- ✅ **Escolha com intenção** — ou use o que está no `tailwind.config`, ou questione se deve adicionar uma fonte display para headings:
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
- // No tailwind.config.ts — fonts com personalidade
144
+ // In tailwind.config.ts — fonts with personality
145
145
  fontFamily: {
146
- sans: ['Geist', 'system-ui', 'sans-serif'], // corpo
147
- display: ['Cal Sans', 'serif'], // headings grandes
148
- mono: ['Geist Mono', 'monospace'], // código/dados
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 Cor
154
+ ### 3.3 Color
155
155
 
156
- ❌ **Paleta de 50 tons de cinza + uma cor de brand genérica**
156
+ ❌ **A palette of 50 shades of gray + one generic brand color**
157
157
 
158
- ✅ **Cor com função editorial**
159
- - Use cor para criar *hierarquia*, não apenas *identidade*
160
- - Uma cor quente num contexto frio chama atenção — use isso
161
- - `text-muted-foreground` é para informação *realmente* secundária, não para tudo que não é título
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
- **`#000000` ou `#ffffff` puros**
163
+ **Pure `#000000` or `#ffffff`**
164
164
 
165
- ✅ **Neutros com matiz** — cinzas levemente azulados, quentes ou frios dependem do tom do produto:
165
+ ✅ **Tinted neutrals** — slightly blue, warm, or cold grays depending on the product's tone:
166
166
  ```css
167
- /* Em vez de gray puro, use slate (frio/técnico) ou zinc (neutro) ou stone (quente) */
168
- --foreground: 224 71% 4%; /* quase preto com matiz azul */
169
- --background: 210 20% 98%; /* quase branco com matiz frio */
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 Espaço e ritmo
174
+ ### 3.4 Space and Rhythm
175
175
 
176
- ❌ **`gap-6` e `p-6` em tudo, uniformemente**
176
+ ❌ **`gap-6` and `p-6` on everything, uniformly**
177
177
 
178
- ✅ **Espaço como hierarquia** — mais espaço = mais importância
178
+ ✅ **Space as hierarchy** — more space = more importance
179
179
  ```tsx
180
- // Seções principais: espaço generoso
181
- // Elementos relacionados: espaço comprimido
182
- <div className="space-y-16"> {/* entre seções */}
183
- <section className="space-y-8"> {/* dentro da seção */}
184
- <header className="space-y-2"> {/* dentro do header */}
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. Padrões que funcionam (use com consciência)
189
+ ## 4. Patterns that work (use consciously)
190
190
 
191
- ### 4.1 Âncora visual
192
- Todo layout precisa de um elemento que domine tamanho, cor ou posição. O olho precisa saber *onde começar*.
191
+ ### 4.1 Visual Anchor
192
+ Every layout needs an element that dominatesthrough size, color, or position. The eye must know *where to begin*.
193
193
 
194
- ### 4.2 Assimetria intencional
195
- `col-span-2` + `col-span-1` cria mais tensão visual do que `col-span-1` repetido. Use.
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 Linha de base e alinhamento de dados
198
- Para dados numéricos, alinhe à direita. Para listas de texto, alinhe à esquerda. Nunca centralize tabelas.
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 Densidade variada
201
- Uma seção densa (muita informação, espaço comprimido) ao lado de uma seção arejada cria ritmo. Evite densidade uniforme.
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 Bordas como separação, não como decoração
203
+ ### 4.5 Borders as separation, not decoration
204
204
  ```tsx
205
- // Borda como divisor tipográficosem shadow, sem rounded excessivo
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 antes de entregar um componente
211
+ ## 5. Pre-delivery Checklist
212
212
 
213
- Antes de finalizar, responda:
213
+ Before finalizing a component, ask yourself:
214
214
 
215
- - [ ] Consigo identificar claramente o elemento de maior hierarquia visual?
216
- - [ ] Tem algum `<Card>` que poderia ser substituído por espaço + tipografia?
217
- - [ ] A escala tipográfica tem pelo menos 3 níveis distintos de peso/tamanho?
218
- - [ ] Existe ao menos um elemento que quebra a simetria da grade?
219
- - [ ] As cores têm função (hierarquia/atenção/estado) ou são decoração?
220
- - [ ] Se alguém ver este componente por 3 segundos, saberá o que fazer?
221
- - [ ] Este componente poderia ter saído do v0.dev sem alteração? **(se sim, revise)**
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. Referência rápida — Tailwind classes problemáticas vs melhores alternativas
225
+ ## 6. Quick ReferenceProblematic Tailwind classes vs Better alternatives
226
226
 
227
- | Padrão genérico | Por que é ruim | Alternativa |
227
+ | Generic Pattern | Why it fails | Alternative |
228
228
  |---|---|---|
229
- | `rounded-lg` em tudo | Uniformidade falsa de "modernidade" | Varie: `rounded-none`, `rounded-sm`, `rounded-2xl` com intenção |
230
- | `shadow-sm` em todo card | Profundidade sem significado | Use sombra para elementos elevados de verdade (modals, dropdowns) |
231
- | `text-muted-foreground` em desc | Torna tudo secundário igualmente | Use opacidade gradual: `opacity-70`, `opacity-50` |
232
- | `p-6` universal | Grade mecânica | Padding assimétrico: `px-6 py-4`, `pt-8 pb-4 px-6` |
233
- | `gap-6` universal | Sem ritmo | Varie espaço por nível hierárquico |
234
- | `font-semibold` para ênfase | Único grau de ênfase disponível | Combine `font-medium` + tamanho maior OU cor diferente |
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. Filosofia de base
238
+ ## 7. Core Philosophy
239
239
 
240
- > Uma interface *correta* é aquela que funciona.
241
- > Uma interface com *assinatura* é aquela que o usuário reconhece sem ver o logo.
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
- A diferença não está em usar ferramentas diferentes. Está em fazer escolhas intencionais em vez de escolhas estatisticamente seguras.
243
+ The difference isn't in using different tools. It lies in making intentional choices instead of statistically safe ones.
244
244
 
245
- **O shadcn/ui é um ponto de partida, não um destino.**
246
- Modifique os componentes. Quebre os defaults. Use as primitivas do Radix diretamente quando o wrapper do shadcn estiver te limitando.
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
- A interface mais genérica possível é aquela onde o desenvolvedor nunca questionou o default.
248
+ The most generic interface possible is the one where the developer never questioned the default settings.
249
249
 
250
250
  ---
251
251
 
252
- *Versão 1.0 — Baseado em análise de padrões recorrentes de AI-generated UI com Next.js + Tailwind + shadcn/ui*
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 (OUTPUT IN PT-BR):**
22
- Rewrite this entire file (COMERCIAL.md) in **PORTUGUESE (PT-BR)**. 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."
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 PORTUGUESE)
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 **IN PORTUGUESE (PT-BR)**.
69
+ 3. Overwrite this entire file with the project-specific commercial documentation in the **USER'S NATIVE LANGUAGE**.