@luanpdd/kit-mcp 1.34.0 → 1.36.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 (118) hide show
  1. package/README.md +1 -1
  2. package/bin/cli.js +2 -2
  3. package/bin/mcp.js +6 -6
  4. package/bin/ui.js +74 -74
  5. package/gates/ai-prompt-stability.md +120 -120
  6. package/gates/budget-description.md +68 -68
  7. package/gates/confidence.md +29 -29
  8. package/gates/dependency-check.md +33 -33
  9. package/gates/dept-cycle-prevention.md +179 -179
  10. package/gates/golden-signals-coverage.md +133 -133
  11. package/gates/legacy-refactor-safety.md +178 -178
  12. package/gates/multi-tenant-rls-coverage.md +102 -102
  13. package/gates/no-personal-uuid.md +72 -72
  14. package/gates/obs-agents-mcp-supabase.md +86 -86
  15. package/gates/obs-skills-frontmatter.md +76 -76
  16. package/gates/observability-coverage.md +151 -151
  17. package/gates/omm-no-regression.md +83 -83
  18. package/gates/postmortem-template-required.md +127 -127
  19. package/gates/prr-checklist-coverage.md +128 -128
  20. package/gates/regression.md +32 -32
  21. package/gates/release-pipeline-policy.md +132 -132
  22. package/gates/secrets-scan.md +33 -33
  23. package/gates/service-role-not-in-user-facing.md +113 -113
  24. package/gates/skill-must-include.md +71 -71
  25. package/gates/sync-idempotent.md +62 -62
  26. package/gates/verify-phase-goal.md +34 -34
  27. package/kit/agents/designer-ui.md +216 -216
  28. package/kit/agents/workflow-generator.md +537 -0
  29. package/kit/commands/adicionar-backlog.md +1 -1
  30. package/kit/commands/adicionar-fase.md +1 -1
  31. package/kit/commands/adicionar-tarefa.md +1 -1
  32. package/kit/commands/auditar-observabilidade.md +103 -103
  33. package/kit/commands/auditar-toil.md +129 -129
  34. package/kit/commands/caracterizar-prompt.md +195 -195
  35. package/kit/commands/criar-workflow.md +158 -0
  36. package/kit/commands/definir-perfil.md +1 -1
  37. package/kit/commands/definir-slo.md +108 -108
  38. package/kit/commands/fio.md +1 -1
  39. package/kit/commands/golden-signals.md +142 -142
  40. package/kit/commands/instrumentar-fase.md +200 -200
  41. package/kit/commands/investigar-producao.md +162 -162
  42. package/kit/commands/observabilidade.md +118 -118
  43. package/kit/commands/postmortem.md +179 -179
  44. package/kit/commands/prr.md +205 -205
  45. package/kit/commands/publicar-rapido.md +207 -207
  46. package/kit/commands/risk-budget.md +220 -220
  47. package/kit/commands/sre.md +230 -230
  48. package/kit/file-manifest.json +5 -2
  49. package/kit/framework/references/output-style.md +22 -22
  50. package/kit/hooks/post-apply-migration.js +199 -199
  51. package/kit/hooks/sidecar-tool-publisher.js +210 -210
  52. package/kit/skills/_shared-dados-distribuidos/glossary.md +224 -224
  53. package/kit/skills/_shared-legacy/glossary.md +389 -389
  54. package/kit/skills/_shared-multi-tenant/glossary.md +186 -186
  55. package/kit/skills/_shared-observability/glossary.md +396 -396
  56. package/kit/skills/_shared-sre/glossary.md +712 -712
  57. package/kit/skills/_shared-supabase/glossary.md +234 -234
  58. package/kit/skills/blameless-postmortems/SKILL.md +340 -340
  59. package/kit/skills/burn-rate-alerting/SKILL.md +258 -258
  60. package/kit/skills/cascading-failures/SKILL.md +311 -311
  61. package/kit/skills/core-analysis-loop/SKILL.md +352 -352
  62. package/kit/skills/distributed-tracing/SKILL.md +362 -362
  63. package/kit/skills/dynamic-workflow-authoring/SKILL.md +327 -0
  64. package/kit/skills/eliminating-toil/SKILL.md +243 -243
  65. package/kit/skills/event-based-slos/SKILL.md +296 -296
  66. package/kit/skills/four-golden-signals/SKILL.md +314 -314
  67. package/kit/skills/hermetic-builds/SKILL.md +323 -323
  68. package/kit/skills/legacy-monster-methods/SKILL.md +444 -444
  69. package/kit/skills/llm-as-dependency/SKILL.md +436 -436
  70. package/kit/skills/load-shedding-graceful-degradation/SKILL.md +396 -396
  71. package/kit/skills/observability-driven-development/SKILL.md +315 -315
  72. package/kit/skills/observability-maturity-model/SKILL.md +222 -222
  73. package/kit/skills/opentelemetry-standard/SKILL.md +351 -351
  74. package/kit/skills/production-readiness-review/SKILL.md +305 -305
  75. package/kit/skills/release-engineering/SKILL.md +367 -367
  76. package/kit/skills/retry-strategies/SKILL.md +372 -372
  77. package/kit/skills/sre-risk-management/SKILL.md +221 -221
  78. package/kit/skills/structured-events/SKILL.md +265 -265
  79. package/kit/skills/supabase-cron-queues/SKILL.md +275 -275
  80. package/kit/skills/supabase-database-functions/SKILL.md +332 -332
  81. package/kit/skills/supabase-declarative-schema/SKILL.md +183 -183
  82. package/kit/skills/supabase-pgvector-rag/SKILL.md +253 -253
  83. package/kit/skills/supabase-postgres-style/SKILL.md +138 -138
  84. package/kit/skills/supabase-storage/SKILL.md +234 -234
  85. package/kit/skills/telemetry-pipelines/SKILL.md +259 -259
  86. package/kit/skills/telemetry-sampling/SKILL.md +256 -256
  87. package/kit/skills/ui-anti-padroes-ia/SKILL.md +261 -261
  88. package/kit/skills/ui-contexto-produto/SKILL.md +248 -248
  89. package/kit/skills/ui-cor-estrategia/SKILL.md +213 -213
  90. package/kit/skills/ui-critica-auditoria/SKILL.md +260 -260
  91. package/kit/skills/ui-motion-funcional/SKILL.md +264 -264
  92. package/kit/skills/ui-ritmo-espacial/SKILL.md +259 -259
  93. package/kit/skills/ui-tipografia/SKILL.md +211 -211
  94. package/package.json +1 -1
  95. package/src/cli/index.js +1114 -1114
  96. package/src/cli/render.js +194 -194
  97. package/src/cli/upgrade-check.js +135 -135
  98. package/src/core/error-redaction.js +76 -76
  99. package/src/core/failures.js +153 -153
  100. package/src/core/gate-runner.js +205 -205
  101. package/src/core/gates.js +82 -82
  102. package/src/core/logger.js +170 -170
  103. package/src/core/manifest-verify.js +174 -174
  104. package/src/core/metrics.js +268 -268
  105. package/src/core/notify.js +60 -60
  106. package/src/core/path-safety.js +141 -141
  107. package/src/core/replays.js +120 -120
  108. package/src/core/ui.js +185 -185
  109. package/src/mcp-server/install.js +149 -149
  110. package/src/mcp-server/roots.js +124 -124
  111. package/src/ui/auto-spawn.js +113 -113
  112. package/src/ui/browser.js +78 -78
  113. package/src/ui/client.js +130 -130
  114. package/src/ui/events.js +65 -65
  115. package/src/ui/lockfile.js +191 -191
  116. package/src/ui/port.js +67 -67
  117. package/src/ui/server.js +547 -547
  118. package/src/ui/wrapper.js +129 -129
@@ -1,211 +1,211 @@
1
- ---
2
- name: ui-tipografia
3
- description: Use ao escolher fontes/tamanhos/pesos — Display + Body + Mono (sem monocultura Inter), max 4 sizes x 2 weights, line-height 1.5/1.2, line-length 65ch body / 30ch hero. Sem fontes saturadas IA.
4
- ---
5
-
6
- # UI — Tipografia
7
-
8
- ## Quando usar
9
-
10
- LLM carrega esta skill quando:
11
-
12
- - "Que fonte uso?" / "Escolher tipografia"
13
- - "Hierarquia tipográfica" / "type scale"
14
- - "Heading parece genérico" / "tipo parece acidental"
15
- - Preenchendo seção **Tipografia** de DESIGN.md
16
- - Editando `tailwind.config.*` font tokens
17
-
18
- ## Regras absolutas
19
-
20
- **REGRA #1 (3 famílias distintas):** Sistema canônico tem **display + body + mono**, três tipos visualmente distintos. Inter como todas as três = monocultura (T07).
21
-
22
- **REGRA #2 (max 4 sizes × 2 weights):** Exatamente 3-4 tamanhos em uso ativo, máximo 2 pesos. Se você precisa de mais, há um problema de hierarquia, não de escala tipográfica.
23
-
24
- **REGRA #3 (line-length real):** Body 50-75 chars per line. Hero 30-50 chars. Container width = `ch` unit, não pixel. Texto que estica viewport inteira = ilegível.
25
-
26
- **REGRA #4 (line-height por contexto):** Body 1.5, headings 1.2, mono/code 1.4. Não 1.6 "para respirar" (afrouxa demais).
27
-
28
- **REGRA #5 (defaults banidos em produto novo):** Fraunces, Geist, Mona Sans, Plus Jakarta Sans, Space Grotesk, Recoleta, Instrument Sans — saturadas no default IA. Use só com justificativa em MARCA.md (ex: "Geist intencional para match com infra cloud space").
29
-
30
- ## Escala canônica
31
-
32
- ### Type scale (em px, base 16)
33
-
34
- | Nome | px | uso |
35
- |------|----|----|
36
- | `xs` | 12 | Microcopy, labels secundárias, badges |
37
- | `sm` | 14 | UI controls, table cells, dense lists |
38
- | `base` | 16 | Body padrão, paragraphs |
39
- | `lg` | 20 | Lead paragraph, dialog title |
40
- | `xl` | 24 | h3 |
41
- | `2xl` | 32 | h2 |
42
- | `4xl` | 48 | h1 (produto) |
43
- | `6xl` | 72 | h1 (hero marca) |
44
-
45
- **Use 3-4 destas em ativo.** Esconda o resto do Tailwind via `fontSize` override no config.
46
-
47
- ### Pesos
48
-
49
- Apenas 2 pesos por família:
50
- - **Body:** `400` (regular) + `600` (semibold para emphasis)
51
- - **Display:** `400` (regular) + `700` (bold) OU peso único caracteristicamente forte
52
-
53
- Pesos proibidos sem justificativa: `300` (light), `100` (thin) — fica frágil em LCD comum + baixa legibilidade.
54
-
55
- ### Line-height
56
-
57
- ```css
58
- --lh-tight: 1.1; /* hero 6xl+ */
59
- --lh-heading: 1.2; /* h1, h2 */
60
- --lh-snug: 1.35; /* lg lead */
61
- --lh-body: 1.5; /* base body */
62
- --lh-mono: 1.4; /* code */
63
- ```
64
-
65
- ### Line-length
66
-
67
- ```css
68
- .prose { max-width: 65ch; } /* body content */
69
- .hero { max-width: 18ch; } /* big heading */
70
- .lead { max-width: 50ch; } /* large intro paragraph */
71
- ```
72
-
73
- `ch` unit > pixel para textos. Em mono use `30em`.
74
-
75
- ## Pareamentos canônicos (com nome próprio)
76
-
77
- ### Marca editorial
78
- - Display: **GT Sectra** (Grilli Type) ou **Söhne Breit** (Klim)
79
- - Body: **Söhne** (Klim) ou **Inter Display**
80
- - Mono: **JetBrains Mono** ou **Berkeley Mono**
81
-
82
- ### Produto calm/clinical
83
- - Display: **Söhne Breit** (Klim) ou **ABC Diatype** (Dinamo)
84
- - Body: **Söhne** ou **ABC Diatype**
85
- - Mono: **JetBrains Mono**
86
-
87
- ### Produto warm/playful
88
- - Display: **GT Maru** (Grilli) ou **Söhne Schmal**
89
- - Body: **GT Walsheim** ou **Söhne**
90
- - Mono: **MD IO** (Mass-Driver)
91
-
92
- ### Editorial serif moment
93
- - Display: **Tiempos Headline** (Klim) ou **GT Sectra**
94
- - Body: **Tiempos Text** ou **Söhne**
95
- - Mono: **JetBrains Mono**
96
-
97
- ### Free / open-source fallback (justificar em MARCA.md)
98
- - Display: **Manrope** (free) ou **Inter Display** (free variante!)
99
- - Body: **Inter** OK como único free se for **apenas** body
100
- - Mono: **JetBrains Mono** (free)
101
-
102
- > **Inter no display** é sempre tell de IA. Inter Display (variante distinta) é aceitável.
103
-
104
- ## Hierarquia — patterns
105
-
106
- ### Hierarquia por size + weight + color (3 alavancas)
107
-
108
- ```tsx
109
- // Bom — 3 alavancas, claramente diferenciado
110
- <h2 className="text-2xl font-semibold text-foreground">Section</h2>
111
- <p className="text-sm font-normal text-muted-foreground">Caption</p>
112
-
113
- // Ruim — só size, peso body, muddy
114
- <h2 className="text-base text-foreground">Section</h2>
115
- <p className="text-sm text-foreground">Caption</p>
116
- ```
117
-
118
- ### Widow/orphan em heading
119
-
120
- Last word sozinho em line = widow. Use `text-wrap: balance` ou `&nbsp;` no penúltimo separator.
121
-
122
- ```tsx
123
- <h1 className="text-balance">Build better software with one calm tool</h1>
124
- ```
125
-
126
- ### Letter-spacing
127
-
128
- - Display tamanhos grandes (`4xl`+): `tracking-tight` (-0.01em) ou `-0.02em`
129
- - Body: default `tracking-normal`
130
- - All-caps: `tracking-wider` mas SOMENTE em badge pequena (rótulo uppercase decorativo acima de heading é proibido — ver T04 em anti-padroes-ia)
131
-
132
- ## Anti-patterns
133
-
134
- ### Anti-pattern 1: 6+ tamanhos diferentes em uma tela
135
-
136
- **Errado:** `text-xs`, `text-sm`, `text-base`, `text-lg`, `text-xl`, `text-2xl` todos numa página.
137
-
138
- **Por quê:** REGRA #2 — hierarquia inflacionada, agente IA depois perde sinal sobre o que é importante.
139
-
140
- **Certo:** restringir a 4. Se "preciso de mais", problema é decisão de info architecture, não de tipo.
141
-
142
- ### Anti-pattern 2: Inter em display + body + mono
143
-
144
- **Errado:**
145
- ```css
146
- :root {
147
- --font-display: Inter;
148
- --font-sans: Inter;
149
- --font-mono: Inter;
150
- }
151
- ```
152
-
153
- **Por quê:** T07 — monocultura é tell #1 de "IA gerou isto".
154
-
155
- **Certo:** display + body distintos, mesmo que ambos sans. Mono é monospace, sempre distinto.
156
-
157
- ### Anti-pattern 3: weight `300` para hero
158
-
159
- **Errado:** `<h1 className="font-light text-6xl">Build it</h1>`
160
-
161
- **Por quê:** thin no display falha em retina baixa + perde presença. Era moda 2015-2018, agora datado.
162
-
163
- **Certo:** `font-medium` ou `font-semibold`. Hero quer presença, não fragilidade.
164
-
165
- ### Anti-pattern 4: body em 14px porque "fica clean"
166
-
167
- **Errado:** `<body class="text-sm">`
168
-
169
- **Por quê:** 14px body falha em legibilidade > 40 anos + cansa em sessões longas. AA exige 16px effective.
170
-
171
- **Certo:** 16px body min. 14px só em controls densos, tables, captions.
172
-
173
- ### Anti-pattern 5: hero text estica viewport
174
-
175
- **Errado:**
176
- ```tsx
177
- <h1 className="text-7xl">Build something amazing with our platform today and ship faster than ever</h1>
178
- ```
179
-
180
- **Por quê:** REGRA #3 — line-length destruído, leitura interrompida múltiplas vezes.
181
-
182
- **Certo:** wrap container 18-25ch + balance:
183
- ```tsx
184
- <h1 className="text-7xl max-w-[18ch] text-balance leading-[1.05] tracking-tight">
185
- Ship faster.
186
- </h1>
187
- <p className="text-lg max-w-[50ch] mt-4 text-muted-foreground">
188
- Sub-headline com contexto em line-length confortável.
189
- </p>
190
- ```
191
-
192
- ## Detecção
193
-
194
- ```bash
195
- # tamanhos em uso (deveria ser 3-4)
196
- grep -rohE "text-(xs|sm|base|lg|xl|2xl|3xl|4xl|5xl|6xl|7xl|8xl|9xl)\b" src --include="*.tsx" 2>/dev/null | sort -u | wc -l
197
-
198
- # pesos em uso (deveria ser 2)
199
- grep -rohE "font-(thin|extralight|light|normal|medium|semibold|bold|extrabold|black)\b" src --include="*.tsx" 2>/dev/null | sort -u
200
-
201
- # Inter monocultura
202
- grep -rohE "Inter\b" src --include="*.css" --include="*.ts" 2>/dev/null | wc -l
203
-
204
- # defaults banidos
205
- grep -rohE "(Fraunces|Geist|Mona Sans|Plus Jakarta Sans|Space Grotesk|Recoleta|Instrument Sans)" src 2>/dev/null
206
- ```
207
-
208
- ## Ver também
209
-
210
- - [ui-anti-padroes-ia](../ui-anti-padroes-ia/SKILL.md) — T03, T04, T07, T08 detalhados
211
- - [ui-contexto-produto](../ui-contexto-produto/SKILL.md) — onde Display/Body/Mono são declarados
1
+ ---
2
+ name: ui-tipografia
3
+ description: Use ao escolher fontes/tamanhos/pesos — Display + Body + Mono (sem monocultura Inter), max 4 sizes x 2 weights, line-height 1.5/1.2, line-length 65ch body / 30ch hero. Sem fontes saturadas IA.
4
+ ---
5
+
6
+ # UI — Tipografia
7
+
8
+ ## Quando usar
9
+
10
+ LLM carrega esta skill quando:
11
+
12
+ - "Que fonte uso?" / "Escolher tipografia"
13
+ - "Hierarquia tipográfica" / "type scale"
14
+ - "Heading parece genérico" / "tipo parece acidental"
15
+ - Preenchendo seção **Tipografia** de DESIGN.md
16
+ - Editando `tailwind.config.*` font tokens
17
+
18
+ ## Regras absolutas
19
+
20
+ **REGRA #1 (3 famílias distintas):** Sistema canônico tem **display + body + mono**, três tipos visualmente distintos. Inter como todas as três = monocultura (T07).
21
+
22
+ **REGRA #2 (max 4 sizes × 2 weights):** Exatamente 3-4 tamanhos em uso ativo, máximo 2 pesos. Se você precisa de mais, há um problema de hierarquia, não de escala tipográfica.
23
+
24
+ **REGRA #3 (line-length real):** Body 50-75 chars per line. Hero 30-50 chars. Container width = `ch` unit, não pixel. Texto que estica viewport inteira = ilegível.
25
+
26
+ **REGRA #4 (line-height por contexto):** Body 1.5, headings 1.2, mono/code 1.4. Não 1.6 "para respirar" (afrouxa demais).
27
+
28
+ **REGRA #5 (defaults banidos em produto novo):** Fraunces, Geist, Mona Sans, Plus Jakarta Sans, Space Grotesk, Recoleta, Instrument Sans — saturadas no default IA. Use só com justificativa em MARCA.md (ex: "Geist intencional para match com infra cloud space").
29
+
30
+ ## Escala canônica
31
+
32
+ ### Type scale (em px, base 16)
33
+
34
+ | Nome | px | uso |
35
+ |------|----|----|
36
+ | `xs` | 12 | Microcopy, labels secundárias, badges |
37
+ | `sm` | 14 | UI controls, table cells, dense lists |
38
+ | `base` | 16 | Body padrão, paragraphs |
39
+ | `lg` | 20 | Lead paragraph, dialog title |
40
+ | `xl` | 24 | h3 |
41
+ | `2xl` | 32 | h2 |
42
+ | `4xl` | 48 | h1 (produto) |
43
+ | `6xl` | 72 | h1 (hero marca) |
44
+
45
+ **Use 3-4 destas em ativo.** Esconda o resto do Tailwind via `fontSize` override no config.
46
+
47
+ ### Pesos
48
+
49
+ Apenas 2 pesos por família:
50
+ - **Body:** `400` (regular) + `600` (semibold para emphasis)
51
+ - **Display:** `400` (regular) + `700` (bold) OU peso único caracteristicamente forte
52
+
53
+ Pesos proibidos sem justificativa: `300` (light), `100` (thin) — fica frágil em LCD comum + baixa legibilidade.
54
+
55
+ ### Line-height
56
+
57
+ ```css
58
+ --lh-tight: 1.1; /* hero 6xl+ */
59
+ --lh-heading: 1.2; /* h1, h2 */
60
+ --lh-snug: 1.35; /* lg lead */
61
+ --lh-body: 1.5; /* base body */
62
+ --lh-mono: 1.4; /* code */
63
+ ```
64
+
65
+ ### Line-length
66
+
67
+ ```css
68
+ .prose { max-width: 65ch; } /* body content */
69
+ .hero { max-width: 18ch; } /* big heading */
70
+ .lead { max-width: 50ch; } /* large intro paragraph */
71
+ ```
72
+
73
+ `ch` unit > pixel para textos. Em mono use `30em`.
74
+
75
+ ## Pareamentos canônicos (com nome próprio)
76
+
77
+ ### Marca editorial
78
+ - Display: **GT Sectra** (Grilli Type) ou **Söhne Breit** (Klim)
79
+ - Body: **Söhne** (Klim) ou **Inter Display**
80
+ - Mono: **JetBrains Mono** ou **Berkeley Mono**
81
+
82
+ ### Produto calm/clinical
83
+ - Display: **Söhne Breit** (Klim) ou **ABC Diatype** (Dinamo)
84
+ - Body: **Söhne** ou **ABC Diatype**
85
+ - Mono: **JetBrains Mono**
86
+
87
+ ### Produto warm/playful
88
+ - Display: **GT Maru** (Grilli) ou **Söhne Schmal**
89
+ - Body: **GT Walsheim** ou **Söhne**
90
+ - Mono: **MD IO** (Mass-Driver)
91
+
92
+ ### Editorial serif moment
93
+ - Display: **Tiempos Headline** (Klim) ou **GT Sectra**
94
+ - Body: **Tiempos Text** ou **Söhne**
95
+ - Mono: **JetBrains Mono**
96
+
97
+ ### Free / open-source fallback (justificar em MARCA.md)
98
+ - Display: **Manrope** (free) ou **Inter Display** (free variante!)
99
+ - Body: **Inter** OK como único free se for **apenas** body
100
+ - Mono: **JetBrains Mono** (free)
101
+
102
+ > **Inter no display** é sempre tell de IA. Inter Display (variante distinta) é aceitável.
103
+
104
+ ## Hierarquia — patterns
105
+
106
+ ### Hierarquia por size + weight + color (3 alavancas)
107
+
108
+ ```tsx
109
+ // Bom — 3 alavancas, claramente diferenciado
110
+ <h2 className="text-2xl font-semibold text-foreground">Section</h2>
111
+ <p className="text-sm font-normal text-muted-foreground">Caption</p>
112
+
113
+ // Ruim — só size, peso body, muddy
114
+ <h2 className="text-base text-foreground">Section</h2>
115
+ <p className="text-sm text-foreground">Caption</p>
116
+ ```
117
+
118
+ ### Widow/orphan em heading
119
+
120
+ Last word sozinho em line = widow. Use `text-wrap: balance` ou `&nbsp;` no penúltimo separator.
121
+
122
+ ```tsx
123
+ <h1 className="text-balance">Build better software with one calm tool</h1>
124
+ ```
125
+
126
+ ### Letter-spacing
127
+
128
+ - Display tamanhos grandes (`4xl`+): `tracking-tight` (-0.01em) ou `-0.02em`
129
+ - Body: default `tracking-normal`
130
+ - All-caps: `tracking-wider` mas SOMENTE em badge pequena (rótulo uppercase decorativo acima de heading é proibido — ver T04 em anti-padroes-ia)
131
+
132
+ ## Anti-patterns
133
+
134
+ ### Anti-pattern 1: 6+ tamanhos diferentes em uma tela
135
+
136
+ **Errado:** `text-xs`, `text-sm`, `text-base`, `text-lg`, `text-xl`, `text-2xl` todos numa página.
137
+
138
+ **Por quê:** REGRA #2 — hierarquia inflacionada, agente IA depois perde sinal sobre o que é importante.
139
+
140
+ **Certo:** restringir a 4. Se "preciso de mais", problema é decisão de info architecture, não de tipo.
141
+
142
+ ### Anti-pattern 2: Inter em display + body + mono
143
+
144
+ **Errado:**
145
+ ```css
146
+ :root {
147
+ --font-display: Inter;
148
+ --font-sans: Inter;
149
+ --font-mono: Inter;
150
+ }
151
+ ```
152
+
153
+ **Por quê:** T07 — monocultura é tell #1 de "IA gerou isto".
154
+
155
+ **Certo:** display + body distintos, mesmo que ambos sans. Mono é monospace, sempre distinto.
156
+
157
+ ### Anti-pattern 3: weight `300` para hero
158
+
159
+ **Errado:** `<h1 className="font-light text-6xl">Build it</h1>`
160
+
161
+ **Por quê:** thin no display falha em retina baixa + perde presença. Era moda 2015-2018, agora datado.
162
+
163
+ **Certo:** `font-medium` ou `font-semibold`. Hero quer presença, não fragilidade.
164
+
165
+ ### Anti-pattern 4: body em 14px porque "fica clean"
166
+
167
+ **Errado:** `<body class="text-sm">`
168
+
169
+ **Por quê:** 14px body falha em legibilidade > 40 anos + cansa em sessões longas. AA exige 16px effective.
170
+
171
+ **Certo:** 16px body min. 14px só em controls densos, tables, captions.
172
+
173
+ ### Anti-pattern 5: hero text estica viewport
174
+
175
+ **Errado:**
176
+ ```tsx
177
+ <h1 className="text-7xl">Build something amazing with our platform today and ship faster than ever</h1>
178
+ ```
179
+
180
+ **Por quê:** REGRA #3 — line-length destruído, leitura interrompida múltiplas vezes.
181
+
182
+ **Certo:** wrap container 18-25ch + balance:
183
+ ```tsx
184
+ <h1 className="text-7xl max-w-[18ch] text-balance leading-[1.05] tracking-tight">
185
+ Ship faster.
186
+ </h1>
187
+ <p className="text-lg max-w-[50ch] mt-4 text-muted-foreground">
188
+ Sub-headline com contexto em line-length confortável.
189
+ </p>
190
+ ```
191
+
192
+ ## Detecção
193
+
194
+ ```bash
195
+ # tamanhos em uso (deveria ser 3-4)
196
+ grep -rohE "text-(xs|sm|base|lg|xl|2xl|3xl|4xl|5xl|6xl|7xl|8xl|9xl)\b" src --include="*.tsx" 2>/dev/null | sort -u | wc -l
197
+
198
+ # pesos em uso (deveria ser 2)
199
+ grep -rohE "font-(thin|extralight|light|normal|medium|semibold|bold|extrabold|black)\b" src --include="*.tsx" 2>/dev/null | sort -u
200
+
201
+ # Inter monocultura
202
+ grep -rohE "Inter\b" src --include="*.css" --include="*.ts" 2>/dev/null | wc -l
203
+
204
+ # defaults banidos
205
+ grep -rohE "(Fraunces|Geist|Mona Sans|Plus Jakarta Sans|Space Grotesk|Recoleta|Instrument Sans)" src 2>/dev/null
206
+ ```
207
+
208
+ ## Ver também
209
+
210
+ - [ui-anti-padroes-ia](../ui-anti-padroes-ia/SKILL.md) — T03, T04, T07, T08 detalhados
211
+ - [ui-contexto-produto](../ui-contexto-produto/SKILL.md) — onde Display/Body/Mono são declarados
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luanpdd/kit-mcp",
3
- "version": "1.34.0",
3
+ "version": "1.36.0",
4
4
  "description": "Generic infrastructure to ship YOUR personal kit of agents/commands/skills as an MCP server, with cross-IDE sync (Claude Code, Cursor, Codex, Gemini, Windsurf, Antigravity, Copilot, Trae).",
5
5
  "type": "module",
6
6
  "bin": {