synthesisui 0.16.227 → 0.16.231

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.
@@ -38,16 +38,46 @@ com o meu design system?"*.
38
38
 
39
39
  ---
40
40
 
41
- ## 0. O QUE ESTA SKILL NÃO FAZ
41
+ ## 0. COMO VOCÊ FALA COM ELE
42
+
43
+ **Ele quer saber o que está no projeto DELE. Nada do que está do nosso lado interessa.**
44
+
45
+ Esta seção vale acima de qualquer outra abaixo, porque uma medição perfeita escrita na
46
+ nossa língua é uma medição que ele não lê. Palavras que **nunca** aparecem para ele:
47
+
48
+ \`\`\`
49
+ ledger · census · scope · reading as ADOPTION · refresh_system · check_file
50
+ system_doctrine · carrier · alcançável · o número da versão do CLI · --fix --write
51
+ cobertura de token · o nome de qualquer comando ou ferramenta nossa
52
+ \`\`\`
53
+
54
+ A tradução é sempre a mesma: fale do **arquivo**, da **propriedade**, do **valor** e da
55
+ **variável dele**.
56
+
57
+ \`\`\`
58
+ em vez de diga
59
+ o ledger.cli está em 0.16.229 sua ferramenta está em dia
60
+ o scope do sistema é packages/ui este arquivo fica fora da pasta de onde o
61
+ seu design system nasceu, e isso é normal
62
+ 1em → var(--ds-spacing-md) o seu projeto já chama esse valor de \`--spacing-md\`
63
+ cobertura de token: 0% nenhum destes valores vem do seu design system
64
+ rode doctor --fix --write eu troco para você, se você quiser
65
+ \`\`\`
66
+
67
+ **A variável que você oferece é a DELE.** O comando já devolve o nome do vocabulário dele
68
+ quando o repositório tem um - \`--color-lightgray-700\`, e não \`--ds-color-gray-400\`. Nunca
69
+ reescreva a sugestão para o nosso prefixo: renomear a variável dele não é adotar o sistema.
70
+
71
+ ## 0b. O QUE ESTA SKILL NÃO FAZ
42
72
 
43
73
  Três limites, e cada um existe por um motivo que já custou alguma coisa:
44
74
 
45
75
  \`\`\`
46
- não escreve sem propor é o repositório DELE. \`--fix --write\` sem confirmação é
47
- outra categoria de confiança, e uma skill que perde essa
76
+ não escreve sem propor é o repositório DELE. Escrever sem confirmação é outra
77
+ categoria de confiança, e uma skill que perde essa
48
78
  confiança não é rodada uma segunda vez
49
- não arquiva pedido \`request\` fila uma decisão na plataforma. A skill MOSTRA o
50
- comando; quem roda é ele
79
+ não arquiva pedido um pedido fila uma decisão na plataforma. A skill
80
+ PERGUNTA; quem decide é ele
51
81
  não inventa token, nome um agente que cala um relatório fazendo o sistema crescer é
52
82
  nem regra pior que a deriva que ele veio medir
53
83
  \`\`\`
@@ -64,14 +94,14 @@ ao lado é justamente onde os valores à mão se escondem.
64
94
  3. DIGA qual escopo você usou, com o número de arquivos
65
95
  \`\`\`
66
96
 
67
- Nunca meça os dois e escolha o maior. Diga o que mediu.
97
+ Nunca meça os dois e escolha o maior. Diga o que mediu - **com os nomes dos arquivos**, não
98
+ com a palavra "escopo".
68
99
 
69
100
  **O alvo fora da pasta importada é o caso COMUM, e não um erro.** O sistema nasceu de uma
70
- pasta (o \`scope\` no \`.lock\`), e uma tela de app que consome o DS está fora dela - é
71
- literalmente o pedido *"conserta essa página pro meu design system"*. Ali a cobertura de
72
- token vale igual, porque a camada de token é global; o que não existe é receita daquele
73
- componente. Diga isso em uma linha e siga - e quando faltar uma peça, o destino é
74
- \`request component\`.
101
+ pasta, e uma tela de app que consome o DS está fora dela - é literalmente o pedido
102
+ *"conserta essa página pro meu design system"*. Ali as variáveis valem igual, porque elas
103
+ são globais; o que não existe é receita daquele componente. Diga isso em uma linha, sem a
104
+ palavra "escopo", e siga.
75
105
 
76
106
  ## 2. MEÇA - e a medida é determinística, não sua
77
107
 
@@ -82,75 +112,96 @@ MCP check_file { path }
82
112
  terminal npx synthesisui doctor <alvo>
83
113
  \`\`\`
84
114
 
85
- O que volta, medido num componente real (\`ArticleCard\`, 13/08):
115
+ Não recalcule nada de cabeça. O número que você reporta é o que o comando disse.
116
+
117
+ **A abertura tem três linhas e nenhuma a mais.** Ela responde "está em dia?", "o que você
118
+ leu?" e "como estou?", nesta ordem:
86
119
 
87
120
  \`\`\`
88
- SignalUI v7 - 181 tokens, 1 file read
89
- scope: packages/ui/src/lib/SignalUI/organisms/ArticleCard/ArticleCard.tsx
121
+ sua ferramenta está em dia
90
122
 
91
- Token coverage ░░░░░░░░░░░░░░░░░░░░░░░░ 0%
92
- 0 from the system, 2 by hand
93
- 50% is one command away - 1 of those have a name waiting
123
+ li OverviewHeaderInformation - o componente e a folha de estilo dele, 2 arquivos
124
+
125
+ 17 valores estão escritos à mão aqui, e nenhum vem do seu design system
94
126
  \`\`\`
95
127
 
96
- Três números, e eles já vêm separados por natureza:
128
+ Se a ferramenta NÃO estiver em dia, essa primeira linha vira o primeiro item da fila, com o
129
+ comando à vista - uma medição feita com a versão velha responde outra coisa.
130
+
131
+ Os três grupos que o comando separa, e o que cada um vira:
97
132
 
98
133
  \`\`\`
99
- from the system já usa o vocabulário. Nada a fazer
100
- have a name waiting o sistema JÁ nomeia esse valor -> mecânico, é o passo 3
101
- no name for it o sistema não nomeia -> DECISÃO dele, é o passo 5
134
+ já usa uma variável nada a fazer
135
+ o projeto já nomeia é uma troca - vira item, com a variável DELE ao lado
136
+ ninguém nomeia é uma decisão dele - vira item, com as três saídas
102
137
  \`\`\`
103
138
 
104
- Não recalcule nada disso de cabeça. O número que você reporta é o que o comando disse.
105
-
106
139
  ## 3. MONTE A FILA, E CONTE OS ITENS ANTES DE COMEÇAR
107
140
 
108
141
  Aqui é onde esta skill se ganha ou se perde. Despejar tudo de uma vez - duas regras, quatro
109
142
  decisões, dez trocas - não é um relatório, é uma parede. Quem lê não tem como agir; só
110
143
  concordar ou fechar a aba.
111
144
 
112
- Junte tudo o que você achou (o mecânico do passo 2, as regras do passo 4, o que sobrou do
113
- passo 5) numa fila ÚNICA, e **ordene por custo**:
145
+ Junte tudo o que você achou numa fila ÚNICA e **ordene por custo**:
114
146
 
115
147
  \`\`\`
116
- 1º não muda um pixel troca por token de mesmo valor
117
- 2º muda o pixel colapsar um passo, adotar um token semântico
118
- 3º não é troca, é pedido token novo, peça nova, regra nova
148
+ 1º não muda um pixel troca por uma variável de mesmo valor
149
+ 2º pode mudar o pixel \`em\` que segue a fonte, um degrau que colapsa
150
+ 3º não é troca, é pedido variável nova, peça nova, regra nova
119
151
  \`\`\`
120
152
 
121
153
  Assim ele despacha o barato primeiro e para quando quiser, sem ficar devendo nada.
122
154
 
123
- Anuncie o tamanho antes do primeiro item, sempre:
155
+ Anuncie o tamanho antes do primeiro item, sempre, e em uma frase que ele leia:
124
156
 
125
157
  \`\`\`
126
- 7 itens nesta fila: 2 sem mudar pixel, 3 que mudam, 2 pedidos.
158
+ achei 8 coisas. 2 não mudam nada na tela, 4 podem mudar, e 2 são decisão sua.
127
159
  \`\`\`
128
160
 
129
- ## 4. UM ITEM POR VEZ, COM OPÇÕES - e espere a resposta
161
+ ## 4. UM ITEM POR VEZ, COM AS TRÊS SAÍDAS - e espere a resposta
130
162
 
131
163
  Nunca apresente o item 2 antes de ele responder o 1. O cabeçalho carrega a posição, para
132
- ele saber onde está e quanto falta:
164
+ ele saber onde está e quanto falta. O corpo fala do componente dele, e termina numa
165
+ pergunta:
133
166
 
134
167
  \`\`\`
135
- item 1 de 7 · radius 4px · 2 lugares · não muda um pixel
168
+ item 1 de 8
169
+
170
+ OverviewHeaderInformation espaça com \`1em\` em 4 lugares, e esse valor não está
171
+ ligado ao seu design system.
172
+
173
+ styles.module.scss padding: 1em 0
174
+ padding-right: 1em
175
+ margin-left: 1em
176
+ margin-right: 0.5em
177
+
178
+ O que você quer fazer?
136
179
 
137
- DeliveredBox/index.tsx:76 borderRadius: "4px" -> var(--ds-radius-xs)
138
- TotalSentBox/index.tsx:71 borderRadius: "4px" -> var(--ds-radius-xs)
180
+ 1 deixar como está
181
+ 2 usar \`--spacing-md\`, que o seu projeto já tem
182
+ ⚠ \`em\` segue a fonte do elemento, então isto pode mudar o espaçamento na tela
183
+ 3 criar um nome novo para este valor no seu design system
139
184
 
140
- [aplicar] [pular] [ver o diff] [parar por aqui]
185
+ [1] [2] [3] ou me diga outra coisa · [parar por aqui]
141
186
  \`\`\`
142
187
 
143
- Quatro opções, e nenhuma a mais:
188
+ As três saídas são sempre as mesmas, porque são as três que existem de verdade:
144
189
 
145
190
  \`\`\`
146
- aplicar você roda o comando ou faz a edição, e confirma em uma linha
147
- pular segue para o próximo, e ele entra no resumo como não mexido
148
- ver o diff mostre e volte a perguntar - não conte isso como resposta
149
- parar por aqui fecha o resumo com o que andou até aqui. É sempre legítimo
191
+ 1 deixar como está ele segue para o próximo, e o item entra no resumo como não mexido
192
+ 2 usar uma variável você faz a edição e confirma em uma linha
193
+ SE a troca puder mudar a tela, isso vem escrito NA OPÇÃO, não depois
194
+ 3 criar um nome novo vira um pedido, e é ele quem manda - ver o passo 6
150
195
  \`\`\`
151
196
 
152
- Para um item mecânico o "aplicar" é \`npx synthesisui doctor <alvo> --fix --write\`. Para os
153
- outros é edição, e você mostra exatamente as linhas antes.
197
+ E \`parar por aqui\` fecha o resumo com o que andou. É sempre legítimo.
198
+
199
+ **Quando ele pedir para ver antes**, mostre as linhas e volte a perguntar - isso não conta
200
+ como resposta.
201
+
202
+ **Na opção 2, liste as variáveis dele quando houver mais de uma candidata.** Ele não decora
203
+ o vocabulário do próprio projeto, e escolher entre dois nomes é mais fácil que lembrar de
204
+ um.
154
205
 
155
206
  ## 5. AS REGRAS, QUE É A METADE QUE NENHUM COMANDO FAZ
156
207
 
@@ -167,8 +218,8 @@ e a terceira é a que interessa:
167
218
 
168
219
  \`\`\`
169
220
  cumpre some do relatório. Diga só o total no fim
170
- NÃO cumpre vira um ITEM da fila, com arquivo, linha e a troca proposta
171
- a regra não fala sobre isto vira um item de PEDIDO - \`request rule\`
221
+ NÃO cumpre vira um ITEM da fila, com arquivo, linha e as três saídas
222
+ a regra não fala sobre isto vira um item de decisão - uma regra nova
172
223
  \`\`\`
173
224
 
174
225
  Uma regra que você teve que interpretar para aplicar não é "cumpre". É o terceiro caso.
@@ -178,22 +229,25 @@ as que TÊM conserto pronto - é a melhor notícia do relatório vestida como a
178
229
 
179
230
  ## 6. OS PEDIDOS - você mostra o comando, ele roda
180
231
 
181
- Três destinos, e todos existem:
232
+ Quando ele escolhe a saída 3, existem três destinos, e todos existem de verdade:
182
233
 
183
234
  \`\`\`
184
- valor sem nome no sistema
235
+ um valor sem nome no sistema
185
236
  -> npx synthesisui request token --value "<valor>" --name "<como se chamaria>" --for "<o caso>"
186
- peça que falta
237
+ uma peça que falta
187
238
  -> npx synthesisui request component --name "<nome>" --for "<o caso>"
188
- a doutrina não cobre este caso
239
+ o sistema não tem regra sobre este caso
189
240
  -> npx synthesisui request rule --name "<o que a regra diria>" --for "<o caso que pediu>"
190
241
  \`\`\`
191
242
 
192
243
  **Arquivar em nome dele seria decidir por ele** - e tirar dele a chance de dizer "não, isso
193
- fica local mesmo". Antes de propor \`request rule\`, leia a doutrina inteira: uma regra que já
244
+ fica local mesmo". Antes de propor uma regra nova, leia a doutrina inteira: uma regra que já
194
245
  existe e você não achou vira duplicata na fila, e a fila perde valor na terceira.
195
246
 
196
- ## 6b. A RÉGUA É O ALCANÇÁVEL, E O TETO SE DIZ JUNTO
247
+ E o nome que você propõe para a variável nova segue a convenção DELE. Se o projeto escreve
248
+ \`--color-lightgray-700\`, o valor novo não vira \`--ds-color-neutral-4\`.
249
+
250
+ ## 6b. A RÉGUA É O QUE DÁ PARA FAZER HOJE, E O TETO SE DIZ JUNTO
197
251
 
198
252
  **100% quase nunca é alcançável hoje, e isso não é falha dele.** Se o sistema não tem nome
199
253
  para \`#555\`, ninguém chega a 100% sem antes decidir criar esse nome. Um medidor que mostra
@@ -203,46 +257,77 @@ Os números para a conta certa já vêm do comando:
203
257
 
204
258
  \`\`\`
205
259
  3 valores à mão
206
- 2 o sistema já nomeia -> alcançável hoje: 67%
207
- 1 o sistema não nomeia -> precisa de uma decisão dele
260
+ 2 o projeto já nomeia -> alcançável hoje: 67%
261
+ 1 ninguém nomeia -> precisa de uma decisão dele
262
+ \`\`\`
263
+
264
+ Então o teto de hoje é 67% - e ao falar com ele, isso não se chama "alcançável", se chama
265
+ *"o máximo que dá para resolver sem você decidir nada novo"*.
266
+
267
+ ## 6b-2. O ÚLTIMO ITEM DA FILA É MANDAR O REGISTRO
268
+
269
+ Cada escrita fica gravada numa fila local, e ela **nunca toca a rede** sozinha - essa
270
+ divisão é o que mantém a verificação instalada. Uma skill que mandasse por conta própria
271
+ seria a verificação ligando para casa.
272
+
273
+ Então o envio é um item como os outros, o último, e ele só acontece se ele mandar:
274
+
275
+ \`\`\`
276
+ item 8 de 8
277
+
278
+ você mudou 3 coisas nesta conversa. A plataforma ainda está pontuando este
279
+ repositório pelo que ela viu da última vez.
280
+
281
+ [mandar agora] [depois] npx synthesisui sync --record-only
282
+ \`\`\`
283
+
284
+ **\`--record-only\`, e não \`sync\` puro.** O \`sync\` completo re-mede tudo e reescreve as
285
+ receitas no RASCUNHO - fazer isso no fim de uma revisão move o chão de quem está revisando.
286
+
287
+ O \`sync\` COMPLETO é outro item, e só aparece quando algum item mexeu em FUNDAÇÃO (uma cor,
288
+ um degrau, uma variável nova). Aí a plataforma precisa reler, e a skill diz isso sem jargão:
289
+
290
+ \`\`\`
291
+ isto mexeu numa das bases do seu design system, então a plataforma precisa reler o
292
+ seu repositório. Você vê o resultado antes de publicar - ele reescreve as receitas no rascunho.
293
+ [rodar agora] [depois] npx synthesisui sync
208
294
  \`\`\`
209
295
 
210
- Então o teto de hoje é 67%, e aplicar as duas trocas é **chegar no teto** - 100% do que dá
211
- para fazer com o vocabulário que existe.
296
+ Se nada foi escrito, não ofereça nem um nem outro. Um item que não tem o que mandar é ruído.
212
297
 
213
298
  ## 6c. FECHE PELO QUE ANDOU, E MOSTRE O CAMINHO ATÉ 100%
214
299
 
215
300
  \`\`\`
216
- <Componente> <n> arquivos
301
+ OverviewHeaderInformation 2 arquivos
217
302
 
218
- alcançável hoje 67% é o que o vocabulário do sistema cobre
219
- aplicado 67% ✓ no teto - nada mecânico ficou para trás
220
- pulado 8 espaçamentos que mudam layout (item 5, quando quiser)
221
- na sua fila 1 #555, que o sistema ainda não nomeia
303
+ dá para resolver hoje 82% é o que o seu vocabulário já cobre
304
+ resolvido 82% ✓ nada mecânico ficou para trás
305
+ deixado como estava 12 os \`em\`, que podem mexer no layout
306
+ esperando você 3 valores que ainda não têm nome
222
307
  \`\`\`
223
308
 
224
309
  Nunca "0% -> 0%". Se nada era mecânico, o teto era zero, e a frase é *"não havia nada que
225
- o vocabulário de hoje resolvesse - o que existe são N decisões suas"*.
310
+ o seu vocabulário de hoje resolvesse - o que existe são N decisões suas"*.
226
311
 
227
312
  E quando sobrou pedido, termine com o caminho, porque ele é de dois passos e o primeiro é
228
313
  dele:
229
314
 
230
315
  \`\`\`
231
316
  para chegar a 100%, faltam dois passos:
232
- 1. autorize o pedido no dashboard (ele já está na fila; \`sync\` o levou)
317
+ 1. autorize o pedido no painel (ele já está na fila)
233
318
  2. publique, e rode \`npx synthesisui upgrade\` aqui
234
319
  depois disso, /sui-adapt neste componente fecha em 100%
235
320
  \`\`\`
236
321
 
237
- Autorizar escreve o RASCUNHO, e o repo recebe a última PUBLICADA - por isso os dois passos,
238
- e por isso o \`sync\` também diz isso quando a decisão volta. Prometer que \`upgrade\` sozinho
239
- traz o token é mandar a pessoa rodar um comando que responde "already at the latest version".
322
+ Autorizar escreve o RASCUNHO, e o repo recebe a última PUBLICADA - por isso os dois passos.
323
+ Prometer que \`upgrade\` sozinho traz a variável é mandar a pessoa rodar um comando que
324
+ responde "already at the latest version".
240
325
 
241
326
  Se a fila esvaziou, o fim é uma linha só:
242
327
 
243
328
  \`\`\`
244
- alcançável hoje 100%
245
- aplicado 100% ✓ este componente está inteiro no sistema
329
+ dá para resolver hoje 100%
330
+ resolvido 100% ✓ este componente está inteiro no seu design system
246
331
  \`\`\`
247
332
 
248
333
  ## 7. ROTINA
@@ -255,8 +340,8 @@ depois de mexer componente novo, ou alteração grande: rode ANTES do commit, e
255
340
  decisão ainda está quente e o conserto ainda é barato
256
341
  \`\`\`
257
342
 
258
- O hook (\`PostToolUse\`) já roda a metade determinística a cada escrita, calado quando não há
259
- o que dizer. Esta skill é o passo deliberado: ela junta o hook, a doutrina e a fila numa
260
- conversa só, e termina com o cliente decidindo - não com um relatório.
343
+ A verificação automática já roda a metade determinística a cada escrita, calada quando não
344
+ há o que dizer. Esta skill é o passo deliberado: ela junta a verificação, a doutrina e a
345
+ fila numa conversa só, e termina com o cliente decidindo - não com um relatório.
261
346
  `;
262
347
  export const ADAPT_SKILL_PATH = ".claude/skills/sui-adapt/SKILL.md";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "synthesisui",
3
- "version": "0.16.227",
3
+ "version": "0.16.231",
4
4
  "description": "Bring SynthesisUI design systems into any project - tokens, typed components, whole pages and an agent-ready CLAUDE.md manifest.",
5
5
  "type": "module",
6
6
  "bin": {