@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,248 +1,248 @@
1
- ---
2
- name: ui-contexto-produto
3
- description: Use ANTES de trabalho de UI — carrega/gera MARCA.md (marca vs produto, persona, voz, anti-refs) + DESIGN.md (Visao/Cores/Tipografia/Elevacao/Componentes/Regras). Bootstrap de fluencia de design IA.
4
- ---
5
-
6
- # UI — Contexto de Produto (MARCA.md + DESIGN.md)
7
-
8
- ## Quando usar
9
-
10
- LLM carrega esta skill quando:
11
-
12
- - "Desenhe / refine / audite UI" em projeto que ainda não tem brand spec
13
- - "Crie um DESIGN.md / MARCA.md / docs de design system"
14
- - "Onboard o IA no design deste projeto"
15
- - "Faça o ensino / extração de design"
16
- - Antes de invocar agente `designer-ui` pela primeira vez
17
-
18
- ## Regras absolutas
19
-
20
- **REGRA #1 (separação de preocupações):** `MARCA.md` responde **estratégia** (quem/o quê/porquê). `DESIGN.md` responde **visual** (como aparenta). Nunca coloque cor, fonte ou pixel em MARCA.md. Nunca coloque persona ou tom de voz em DESIGN.md.
21
-
22
- **REGRA #2 (registro primeiro):** Primeira pergunta sempre é registro: **marca** (marketing, hero, motion-rich) vs **produto** (dashboard, calm-clinical). Tudo deriva disso.
23
-
24
- **REGRA #3 (específico, não adjetivo):** Recuse respostas genéricas. "Moderno e limpo" → reject. "Caloroso, mecânico, opinativo" → accept. Referências por **nome próprio**: "Linear sidebar density", não "técnico e limpo".
25
-
26
- **REGRA #4 (6 seções fixas):** DESIGN.md tem exatamente 6 seções, em ordem fixa, com nomes fixos. NÃO adicione Layout, Motion ou Responsivo como top-level — eles vivem dentro de Componentes ou Regras.
27
-
28
- **REGRA #5 (ancorado no codebase):** Modo scan lê tokens reais (CSS vars, Tailwind config, shadcn preset). Nunca invente valores que o codebase não suporta — marque como `<!-- RASCUNHO -->` se vier de prompt e não de código.
29
-
30
- ## Template canônico — MARCA.md
31
-
32
- ```markdown
33
- # MARCA.md
34
-
35
- > Contexto estratégico para parceiros de design IA. Visuais vivem em DESIGN.md.
36
-
37
- ## Registro
38
- {marca | produto | híbrido — justifique em 1 linha}
39
-
40
- ## Usuários
41
- - Primário: {persona específica, contexto, estado de espírito}
42
- Exemplo: "SRE em on-call às 3h, debugando incidente, só mobile, janela de paciência 90s"
43
- - Secundário: {se houver}
44
-
45
- ## Propósito
46
- {O que o produto faz, em 1 frase de no máximo 20 palavras. Sem "platform" ou "solution"}
47
-
48
- ## Personalidade
49
- 3-5 adjetivos. Exemplo: "Calmo, clínico, opinativo, mecânico, sem hype"
50
- Reject: "moderno, limpo, simples, intuitivo" (genéricos)
51
-
52
- ## Referências
53
- - {Nome próprio + URL}. Ex: "Linear app — densidade de sidebar"
54
- - {Nome próprio + URL}. Ex: "Vercel dashboard — empty states"
55
-
56
- ## Anti-referências
57
- - {Nome próprio + razão}. Ex: "Templates SaaS genéricos — sobreuso de cards"
58
- - {Nome próprio + razão}. Ex: "Hero Stripe 2014 — era do gradiente roxo"
59
-
60
- ## Voz
61
- - Tom: {calmo | brincalhão | clínico | caloroso | mecânico | outro}
62
- - Tempo verbal: {presente padrão | passado para eventos}
63
- - Frases banidas: {liste 3-5. Ex: "alavancar", "seamless", "incrível"}
64
-
65
- ## Acessibilidade
66
- - WCAG: {AA | AAA}
67
- - Locale: {pt-BR primário | en secundário | etc}
68
- - Sensibilidade a motion: {respeitar prefers-reduced-motion: sim/não — default sim}
69
- - Daltonismo: {protanopia/deuteranopia testados via tooling}
70
-
71
- ## Restrições
72
- - {Técnica. Ex: "shadcn/ui locked", "Tailwind v4 OKLCH tokens"}
73
- - {Negócio. Ex: "deve parecer sério para pitch enterprise"}
74
- ```
75
-
76
- ## Template canônico — DESIGN.md
77
-
78
- ```markdown
79
- # DESIGN.md
80
-
81
- > Sistema visual. Agentes IA leem isto antes de gerar UI. 6 seções, ordem fixa.
82
-
83
- ## Visão
84
- {North Star em 2-3 frases. O "feeling" do produto traduzido em direção visual.}
85
- Exemplo: "Quietude editorial. Preto sobre creme, accent único, espaçamento generoso, motion apenas em mudança de estado."
86
-
87
- ## Cores
88
- - Superfície (60%): `{token | hex}` — `--background`
89
- - Secundária (30%): `{token | hex}` — `--muted`
90
- - Destaque (10%): `{token | hex}` — reservada para: {liste elementos exatos. Ex: "apenas CTA primário"}
91
- - Destrutiva: `{token | hex}` — reservada para: confirmação de ação irreversível
92
- - Foreground / contraste: AA mín 4.5:1 em cada superfície
93
- Modo: {claro só | escuro só | ambos com pref do sistema}
94
-
95
- ## Tipografia
96
- - Display ({nome próprio}): h1/h2 hero
97
- - Body ({nome próprio}): todo o resto
98
- - Mono ({nome próprio}): código, dados, tempo
99
-
100
- Tamanhos (exatos, máximo 4): {ex: 14, 16, 20, 32}
101
- Pesos (exatos, máximo 2): {ex: 400, 600}
102
- Altura de linha: body 1.5, heading 1.2
103
- Comprimento de linha: 50-75 chars body, 30-50 hero
104
-
105
- Banidas: {liste fontes proibidas. Ex: "Inter, Geist, Space Grotesk" se quer fugir do default genérico}
106
-
107
- ## Elevação
108
- Filosofia: {flat | sombra sutil | dramático | nenhuma}
109
- Tokens:
110
- - `elev-0`: `none` — superfície rasa
111
- - `elev-1`: `{shadow value}` — cards, popovers
112
- - `elev-2`: `{shadow value}` — modais, command palette
113
- Anti-pattern: glassmorphism (`backdrop-blur` em ≥ 3 camadas) PROIBIDO
114
-
115
- ## Componentes
116
- Notas breves de caráter por padrão. Não replique docs do shadcn — declare *o que é opinativo aqui*.
117
- - **Button**: {raio, peso, altura, caráter}. Ex: "Raio 4px afiado, semibold, h-10, sem sombra"
118
- - **Card**: {quando usar, quando NÃO}. Ex: "Apenas para itens de dados em lista. Nunca envolva uma seção em card. Nunca aninhe."
119
- - **Input**: {caráter}. Ex: "Apenas underline, sem borda, foco = border-bottom accent"
120
- - **Dialog**: {motion, tamanho, dismiss}. Ex: "Slide-from-bottom em mobile, scale central em desktop, ESC sempre dismissa"
121
- - **Toast**: {posição, duração, caráter}
122
-
123
- ## Regras (Faça / Não faça)
124
- FAÇA:
125
- - {regra brand-específica. Ex: "Use cor de destaque APENAS em CTA primário por tela"}
126
- - {regra. Ex: "Body copy max 70ch — wrap container em 65ch"}
127
-
128
- NÃO FAÇA:
129
- - {anti-pattern relevante. Ex: "Sem gradiente em texto. Nunca."}
130
- - {anti-pattern brand. Ex: "Sem emoji em strings de UI fora de error toasts"}
131
- - {anti-pattern. Ex: "Nunca envolva headings em italic serif. Display é grotesk."}
132
- ```
133
-
134
- ## Sidecar — DESIGN.json
135
-
136
- Companion machine-readable. Tokens primários extraídos do codebase:
137
-
138
- ```json
139
- {
140
- "version": "1.0",
141
- "tokens": {
142
- "color": {
143
- "surface": "oklch(0.99 0 0)",
144
- "muted": "oklch(0.94 0.005 240)",
145
- "accent": "oklch(0.55 0.18 28)"
146
- },
147
- "typography": {
148
- "display": "Söhne Breit",
149
- "body": "Söhne",
150
- "sizes": [14, 16, 20, 32],
151
- "weights": [400, 600]
152
- },
153
- "spacing": [4, 8, 16, 24, 32, 48, 64],
154
- "radius": { "default": 4, "pill": 9999 }
155
- }
156
- }
157
- ```
158
-
159
- ## Workflow
160
-
161
- ### Modo Scan (codebase existe)
162
-
163
- 1. `Grep` por `tailwind.config.*`, `globals.css`, `:root {` para extrair tokens
164
- 2. `Read` `components.json` (shadcn) para preset
165
- 3. `Glob` `src/components/**` para inventário
166
- 4. Apresentar valores detectados → pedir confirmação para Visão + notas de caráter
167
- 5. Gerar MARCA.md (via entrevista) + DESIGN.md (via scan + confirmação)
168
-
169
- ### Modo Rascunho (greenfield)
170
-
171
- 1. Entrevista de 5-8 minutos. Perguntas mínimas:
172
- - Registro (marca vs produto)?
173
- - Usuário primário em 1 frase com contexto + estado de espírito?
174
- - 3-5 adjetivos de personalidade (não-genéricos)?
175
- - 2-3 referências **nomeadas** com URL?
176
- - 2 anti-referências **nomeadas**?
177
- - Locale + nível WCAG?
178
- 2. Scaffold DESIGN.md com comentários `<!-- RASCUNHO -->` em valores não-extraídos
179
- 3. Marcar para revisão pós-implementação inicial
180
-
181
- ## Anti-patterns
182
-
183
- ### Anti-pattern 1: misturar estratégia e visual
184
-
185
- **Errado (MARCA.md):**
186
- ```markdown
187
- ## Personalidade
188
- Moderno, limpo, com #4F46E5 primário
189
- ```
190
-
191
- **Por quê:** REGRA #1 — cor pertence a DESIGN.md. MARCA.md fica fora de sincronia quando rebrand.
192
-
193
- **Certo:** "Personalidade: Mecânico, opinativo" em MARCA.md. "#4F46E5" em DESIGN.md > Cores > Destaque.
194
-
195
- ### Anti-pattern 2: respostas adjetivais genéricas
196
-
197
- **Errado:**
198
- ```markdown
199
- ## Referências
200
- - Apps SaaS modernos
201
- - Design systems limpos
202
- ```
203
-
204
- **Por quê:** REGRA #3 — sem nome próprio, IA volta ao default genérico ("dribbble médio").
205
-
206
- **Certo:**
207
- ```markdown
208
- ## Referências
209
- - [Linear](https://linear.app) — densidade de sidebar + gravidade do command palette
210
- - [Klim Type Foundry](https://klim.co.nz) — hero editorial quieto
211
- ```
212
-
213
- ### Anti-pattern 3: criar Layout/Motion/Responsivo como seção top-level em DESIGN.md
214
-
215
- **Errado:**
216
- ```markdown
217
- ## Visão
218
- ## Cores
219
- ## Tipografia
220
- ## Layout ← não!
221
- ## Motion ← não!
222
- ## Responsivo ← não!
223
- ```
224
-
225
- **Por quê:** REGRA #4 — schema canônico tem 6 seções fixas. Layout/motion/responsivo são propriedades dos Componentes ou regras em Faça/Não faça. Agentes IA downstream esperam o schema fixo.
226
-
227
- **Certo:** Embuta em Componentes ("Dialog: slide-from-bottom em mobile, scale central em desktop") ou Regras ("FAÇA: respeitar prefers-reduced-motion").
228
-
229
- ### Anti-pattern 4: MARCA.md sem anti-referências
230
-
231
- **Errado:**
232
- ```markdown
233
- ## Referências
234
- - Linear
235
- ## Personalidade
236
- - Limpo
237
- ```
238
- (sem anti-referências)
239
-
240
- **Por quê:** IA tende a regressão à média. Sem "NÃO se parecer com X", o output gravita para template SaaS médio mesmo com referências fortes.
241
-
242
- **Certo:** sempre 2+ anti-referências nomeadas com razão.
243
-
244
- ## Ver também
245
-
246
- - [ui-anti-padroes-ia](../ui-anti-padroes-ia/SKILL.md) — catálogo de tells a evitar (alimenta seção Não faça de DESIGN.md)
247
- - [ui-tipografia](../ui-tipografia/SKILL.md) — preenche seção Tipografia
248
- - [ui-cor-estrategia](../ui-cor-estrategia/SKILL.md) — preenche seção Cores
1
+ ---
2
+ name: ui-contexto-produto
3
+ description: Use ANTES de trabalho de UI — carrega/gera MARCA.md (marca vs produto, persona, voz, anti-refs) + DESIGN.md (Visao/Cores/Tipografia/Elevacao/Componentes/Regras). Bootstrap de fluencia de design IA.
4
+ ---
5
+
6
+ # UI — Contexto de Produto (MARCA.md + DESIGN.md)
7
+
8
+ ## Quando usar
9
+
10
+ LLM carrega esta skill quando:
11
+
12
+ - "Desenhe / refine / audite UI" em projeto que ainda não tem brand spec
13
+ - "Crie um DESIGN.md / MARCA.md / docs de design system"
14
+ - "Onboard o IA no design deste projeto"
15
+ - "Faça o ensino / extração de design"
16
+ - Antes de invocar agente `designer-ui` pela primeira vez
17
+
18
+ ## Regras absolutas
19
+
20
+ **REGRA #1 (separação de preocupações):** `MARCA.md` responde **estratégia** (quem/o quê/porquê). `DESIGN.md` responde **visual** (como aparenta). Nunca coloque cor, fonte ou pixel em MARCA.md. Nunca coloque persona ou tom de voz em DESIGN.md.
21
+
22
+ **REGRA #2 (registro primeiro):** Primeira pergunta sempre é registro: **marca** (marketing, hero, motion-rich) vs **produto** (dashboard, calm-clinical). Tudo deriva disso.
23
+
24
+ **REGRA #3 (específico, não adjetivo):** Recuse respostas genéricas. "Moderno e limpo" → reject. "Caloroso, mecânico, opinativo" → accept. Referências por **nome próprio**: "Linear sidebar density", não "técnico e limpo".
25
+
26
+ **REGRA #4 (6 seções fixas):** DESIGN.md tem exatamente 6 seções, em ordem fixa, com nomes fixos. NÃO adicione Layout, Motion ou Responsivo como top-level — eles vivem dentro de Componentes ou Regras.
27
+
28
+ **REGRA #5 (ancorado no codebase):** Modo scan lê tokens reais (CSS vars, Tailwind config, shadcn preset). Nunca invente valores que o codebase não suporta — marque como `<!-- RASCUNHO -->` se vier de prompt e não de código.
29
+
30
+ ## Template canônico — MARCA.md
31
+
32
+ ```markdown
33
+ # MARCA.md
34
+
35
+ > Contexto estratégico para parceiros de design IA. Visuais vivem em DESIGN.md.
36
+
37
+ ## Registro
38
+ {marca | produto | híbrido — justifique em 1 linha}
39
+
40
+ ## Usuários
41
+ - Primário: {persona específica, contexto, estado de espírito}
42
+ Exemplo: "SRE em on-call às 3h, debugando incidente, só mobile, janela de paciência 90s"
43
+ - Secundário: {se houver}
44
+
45
+ ## Propósito
46
+ {O que o produto faz, em 1 frase de no máximo 20 palavras. Sem "platform" ou "solution"}
47
+
48
+ ## Personalidade
49
+ 3-5 adjetivos. Exemplo: "Calmo, clínico, opinativo, mecânico, sem hype"
50
+ Reject: "moderno, limpo, simples, intuitivo" (genéricos)
51
+
52
+ ## Referências
53
+ - {Nome próprio + URL}. Ex: "Linear app — densidade de sidebar"
54
+ - {Nome próprio + URL}. Ex: "Vercel dashboard — empty states"
55
+
56
+ ## Anti-referências
57
+ - {Nome próprio + razão}. Ex: "Templates SaaS genéricos — sobreuso de cards"
58
+ - {Nome próprio + razão}. Ex: "Hero Stripe 2014 — era do gradiente roxo"
59
+
60
+ ## Voz
61
+ - Tom: {calmo | brincalhão | clínico | caloroso | mecânico | outro}
62
+ - Tempo verbal: {presente padrão | passado para eventos}
63
+ - Frases banidas: {liste 3-5. Ex: "alavancar", "seamless", "incrível"}
64
+
65
+ ## Acessibilidade
66
+ - WCAG: {AA | AAA}
67
+ - Locale: {pt-BR primário | en secundário | etc}
68
+ - Sensibilidade a motion: {respeitar prefers-reduced-motion: sim/não — default sim}
69
+ - Daltonismo: {protanopia/deuteranopia testados via tooling}
70
+
71
+ ## Restrições
72
+ - {Técnica. Ex: "shadcn/ui locked", "Tailwind v4 OKLCH tokens"}
73
+ - {Negócio. Ex: "deve parecer sério para pitch enterprise"}
74
+ ```
75
+
76
+ ## Template canônico — DESIGN.md
77
+
78
+ ```markdown
79
+ # DESIGN.md
80
+
81
+ > Sistema visual. Agentes IA leem isto antes de gerar UI. 6 seções, ordem fixa.
82
+
83
+ ## Visão
84
+ {North Star em 2-3 frases. O "feeling" do produto traduzido em direção visual.}
85
+ Exemplo: "Quietude editorial. Preto sobre creme, accent único, espaçamento generoso, motion apenas em mudança de estado."
86
+
87
+ ## Cores
88
+ - Superfície (60%): `{token | hex}` — `--background`
89
+ - Secundária (30%): `{token | hex}` — `--muted`
90
+ - Destaque (10%): `{token | hex}` — reservada para: {liste elementos exatos. Ex: "apenas CTA primário"}
91
+ - Destrutiva: `{token | hex}` — reservada para: confirmação de ação irreversível
92
+ - Foreground / contraste: AA mín 4.5:1 em cada superfície
93
+ Modo: {claro só | escuro só | ambos com pref do sistema}
94
+
95
+ ## Tipografia
96
+ - Display ({nome próprio}): h1/h2 hero
97
+ - Body ({nome próprio}): todo o resto
98
+ - Mono ({nome próprio}): código, dados, tempo
99
+
100
+ Tamanhos (exatos, máximo 4): {ex: 14, 16, 20, 32}
101
+ Pesos (exatos, máximo 2): {ex: 400, 600}
102
+ Altura de linha: body 1.5, heading 1.2
103
+ Comprimento de linha: 50-75 chars body, 30-50 hero
104
+
105
+ Banidas: {liste fontes proibidas. Ex: "Inter, Geist, Space Grotesk" se quer fugir do default genérico}
106
+
107
+ ## Elevação
108
+ Filosofia: {flat | sombra sutil | dramático | nenhuma}
109
+ Tokens:
110
+ - `elev-0`: `none` — superfície rasa
111
+ - `elev-1`: `{shadow value}` — cards, popovers
112
+ - `elev-2`: `{shadow value}` — modais, command palette
113
+ Anti-pattern: glassmorphism (`backdrop-blur` em ≥ 3 camadas) PROIBIDO
114
+
115
+ ## Componentes
116
+ Notas breves de caráter por padrão. Não replique docs do shadcn — declare *o que é opinativo aqui*.
117
+ - **Button**: {raio, peso, altura, caráter}. Ex: "Raio 4px afiado, semibold, h-10, sem sombra"
118
+ - **Card**: {quando usar, quando NÃO}. Ex: "Apenas para itens de dados em lista. Nunca envolva uma seção em card. Nunca aninhe."
119
+ - **Input**: {caráter}. Ex: "Apenas underline, sem borda, foco = border-bottom accent"
120
+ - **Dialog**: {motion, tamanho, dismiss}. Ex: "Slide-from-bottom em mobile, scale central em desktop, ESC sempre dismissa"
121
+ - **Toast**: {posição, duração, caráter}
122
+
123
+ ## Regras (Faça / Não faça)
124
+ FAÇA:
125
+ - {regra brand-específica. Ex: "Use cor de destaque APENAS em CTA primário por tela"}
126
+ - {regra. Ex: "Body copy max 70ch — wrap container em 65ch"}
127
+
128
+ NÃO FAÇA:
129
+ - {anti-pattern relevante. Ex: "Sem gradiente em texto. Nunca."}
130
+ - {anti-pattern brand. Ex: "Sem emoji em strings de UI fora de error toasts"}
131
+ - {anti-pattern. Ex: "Nunca envolva headings em italic serif. Display é grotesk."}
132
+ ```
133
+
134
+ ## Sidecar — DESIGN.json
135
+
136
+ Companion machine-readable. Tokens primários extraídos do codebase:
137
+
138
+ ```json
139
+ {
140
+ "version": "1.0",
141
+ "tokens": {
142
+ "color": {
143
+ "surface": "oklch(0.99 0 0)",
144
+ "muted": "oklch(0.94 0.005 240)",
145
+ "accent": "oklch(0.55 0.18 28)"
146
+ },
147
+ "typography": {
148
+ "display": "Söhne Breit",
149
+ "body": "Söhne",
150
+ "sizes": [14, 16, 20, 32],
151
+ "weights": [400, 600]
152
+ },
153
+ "spacing": [4, 8, 16, 24, 32, 48, 64],
154
+ "radius": { "default": 4, "pill": 9999 }
155
+ }
156
+ }
157
+ ```
158
+
159
+ ## Workflow
160
+
161
+ ### Modo Scan (codebase existe)
162
+
163
+ 1. `Grep` por `tailwind.config.*`, `globals.css`, `:root {` para extrair tokens
164
+ 2. `Read` `components.json` (shadcn) para preset
165
+ 3. `Glob` `src/components/**` para inventário
166
+ 4. Apresentar valores detectados → pedir confirmação para Visão + notas de caráter
167
+ 5. Gerar MARCA.md (via entrevista) + DESIGN.md (via scan + confirmação)
168
+
169
+ ### Modo Rascunho (greenfield)
170
+
171
+ 1. Entrevista de 5-8 minutos. Perguntas mínimas:
172
+ - Registro (marca vs produto)?
173
+ - Usuário primário em 1 frase com contexto + estado de espírito?
174
+ - 3-5 adjetivos de personalidade (não-genéricos)?
175
+ - 2-3 referências **nomeadas** com URL?
176
+ - 2 anti-referências **nomeadas**?
177
+ - Locale + nível WCAG?
178
+ 2. Scaffold DESIGN.md com comentários `<!-- RASCUNHO -->` em valores não-extraídos
179
+ 3. Marcar para revisão pós-implementação inicial
180
+
181
+ ## Anti-patterns
182
+
183
+ ### Anti-pattern 1: misturar estratégia e visual
184
+
185
+ **Errado (MARCA.md):**
186
+ ```markdown
187
+ ## Personalidade
188
+ Moderno, limpo, com #4F46E5 primário
189
+ ```
190
+
191
+ **Por quê:** REGRA #1 — cor pertence a DESIGN.md. MARCA.md fica fora de sincronia quando rebrand.
192
+
193
+ **Certo:** "Personalidade: Mecânico, opinativo" em MARCA.md. "#4F46E5" em DESIGN.md > Cores > Destaque.
194
+
195
+ ### Anti-pattern 2: respostas adjetivais genéricas
196
+
197
+ **Errado:**
198
+ ```markdown
199
+ ## Referências
200
+ - Apps SaaS modernos
201
+ - Design systems limpos
202
+ ```
203
+
204
+ **Por quê:** REGRA #3 — sem nome próprio, IA volta ao default genérico ("dribbble médio").
205
+
206
+ **Certo:**
207
+ ```markdown
208
+ ## Referências
209
+ - [Linear](https://linear.app) — densidade de sidebar + gravidade do command palette
210
+ - [Klim Type Foundry](https://klim.co.nz) — hero editorial quieto
211
+ ```
212
+
213
+ ### Anti-pattern 3: criar Layout/Motion/Responsivo como seção top-level em DESIGN.md
214
+
215
+ **Errado:**
216
+ ```markdown
217
+ ## Visão
218
+ ## Cores
219
+ ## Tipografia
220
+ ## Layout ← não!
221
+ ## Motion ← não!
222
+ ## Responsivo ← não!
223
+ ```
224
+
225
+ **Por quê:** REGRA #4 — schema canônico tem 6 seções fixas. Layout/motion/responsivo são propriedades dos Componentes ou regras em Faça/Não faça. Agentes IA downstream esperam o schema fixo.
226
+
227
+ **Certo:** Embuta em Componentes ("Dialog: slide-from-bottom em mobile, scale central em desktop") ou Regras ("FAÇA: respeitar prefers-reduced-motion").
228
+
229
+ ### Anti-pattern 4: MARCA.md sem anti-referências
230
+
231
+ **Errado:**
232
+ ```markdown
233
+ ## Referências
234
+ - Linear
235
+ ## Personalidade
236
+ - Limpo
237
+ ```
238
+ (sem anti-referências)
239
+
240
+ **Por quê:** IA tende a regressão à média. Sem "NÃO se parecer com X", o output gravita para template SaaS médio mesmo com referências fortes.
241
+
242
+ **Certo:** sempre 2+ anti-referências nomeadas com razão.
243
+
244
+ ## Ver também
245
+
246
+ - [ui-anti-padroes-ia](../ui-anti-padroes-ia/SKILL.md) — catálogo de tells a evitar (alimenta seção Não faça de DESIGN.md)
247
+ - [ui-tipografia](../ui-tipografia/SKILL.md) — preenche seção Tipografia
248
+ - [ui-cor-estrategia](../ui-cor-estrategia/SKILL.md) — preenche seção Cores