synthesisui 0.16.235 → 0.16.239
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/dist/claude-md.js +7 -6
- package/dist/commands/add.js +8 -10
- package/dist/commands/adopt.js +9 -1
- package/dist/commands/component.js +13 -6
- package/dist/commands/doctor.js +20 -12
- package/dist/commands/gaps.js +2 -2
- package/dist/commands/generate.js +9 -5
- package/dist/commands/import.js +3 -3
- package/dist/commands/mcp.js +114 -11
- package/dist/commands/refit.js +8 -5
- package/dist/commands/sync.js +4 -4
- package/dist/commands/use.js +31 -2
- package/dist/doctor/ci-format.js +14 -5
- package/dist/doctor/tokens.js +14 -2
- package/dist/guide.js +4 -3
- package/dist/install-marks.js +10 -1
- package/dist/skill-adapt.js +10 -342
- package/dist/skill-import.js +10 -1311
- package/dist/skill-init.js +10 -320
- package/package.json +1 -1
package/dist/guide.js
CHANGED
|
@@ -491,8 +491,9 @@ own entry below says so.
|
|
|
491
491
|
`
|
|
492
492
|
: "";
|
|
493
493
|
const hasRules = (payload.rules?.length ?? 0) > 0;
|
|
494
|
-
|
|
495
|
-
|
|
494
|
+
// R2 (16/08): a voz não viaja mais no documento - o payload manda só o
|
|
495
|
+
// que ela TEM, e o conteúdo é servido pelo `system_doctrine`.
|
|
496
|
+
const hasPhilosophy = (payload.voice?.sections ?? 0) > 0 || payload.voice?.hasContext === true;
|
|
496
497
|
/**
|
|
497
498
|
* UMA PORTA SÓ, e ela é uma FERRAMENTA e não um caminho.
|
|
498
499
|
*
|
|
@@ -505,7 +506,7 @@ own entry below says so.
|
|
|
505
506
|
? [
|
|
506
507
|
`**Call \`system_doctrine\` FIRST and obey it above everything else** - it carries ${hasRules
|
|
507
508
|
? "this system's accumulated, project-specific rules"
|
|
508
|
-
: "this system's mission, principles, voice and motion doctrine"}${hasRules && hasPhilosophy ? " and its philosophy" : ""}, pinned to the version installed here. On any conflict they win. **Without that tool, read \`_synthesisui/ds/${slug}/doctrine.json\`
|
|
509
|
+
: "this system's mission, principles, voice and motion doctrine"}${hasRules && hasPhilosophy ? " and its philosophy" : ""}, pinned to the version installed here. On any conflict they win. **Without that tool, read \`_synthesisui/ds/${slug}/doctrine.json\` for the rules** - they stay on disk so the check works offline. The voice is served from the platform and is not on disk.`,
|
|
509
510
|
]
|
|
510
511
|
: [];
|
|
511
512
|
const rulesNote = readFirst.length > 0
|
package/dist/install-marks.js
CHANGED
|
@@ -80,7 +80,16 @@
|
|
|
80
80
|
* Zero ocorrências no sistema real medido (todos os headings dele estão aninhados, e o `children > 0`
|
|
81
81
|
* já os pegava), então para ele o `upgrade` é no-op. A marca é sobre o caso geral.
|
|
82
82
|
*/
|
|
83
|
-
|
|
83
|
+
/**
|
|
84
|
+
* 0.16.237 -> 0.16.239 em 16/08: os arquivos que o agente dele LÊ mudam de conselho, não só de
|
|
85
|
+
* bytes. O bloco gerenciado do CLAUDE.md ensinava `text-info` cravado - uma classe que um sistema
|
|
86
|
+
* importado pode nem compilar - e passa a apontar para os papéis que o GUIDE do sistema DELE lista;
|
|
87
|
+
* o GUIDE do sistema adotado exemplificava com `--<slug>-color-primary`, um nome que nós derivamos,
|
|
88
|
+
* e passa a usar o primeiro token de cor REAL dele (a promessa três linhas acima do exemplo é
|
|
89
|
+
* "YOUR tokens, under YOUR names"). É a fatia de CLI da decisão de 16/08: toda superfície fala a
|
|
90
|
+
* língua do cliente.
|
|
91
|
+
*/
|
|
92
|
+
export const MATERIALISER_SINCE = "0.16.239";
|
|
84
93
|
/**
|
|
85
94
|
* A ÚLTIMA VERSÃO EM QUE O QUE O HOOK RODA MUDOU.
|
|
86
95
|
*
|
package/dist/skill-adapt.js
CHANGED
|
@@ -1,347 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* O STUB DA SKILL - o corpo é SERVIDO, não embarcado (R1, dono 16/08).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* O playbook inteiro morava aqui (13 KB) e, por consequência, no tarball
|
|
5
|
+
* público do npm e no repo de cada cliente em texto plano. Ele mudou para a
|
|
6
|
+
* plataforma (apps/web/src/lib/ds/playbooks.ts, gêmeo por spec do
|
|
7
|
+
* `.claude/skills/sui-adapt/SKILL.md`) e é servido pelo catalogue autenticado -
|
|
8
|
+
* a mesma doutrina de sempre: SERVED, NOT SHIPPED. O agente busca o sumário
|
|
9
|
+
* e depois SÓ o capítulo do passo em que está (a dieta de contexto).
|
|
7
10
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* E ela é a TERCEIRA que o `connect` instala - as outras duas são de ENTRADA (primeira corrida,
|
|
12
|
-
* import). Esta responde a pergunta do dia seguinte, apontando para uma tela: *"isso aqui está de
|
|
13
|
-
* acordo com o meu design system?"*. Deixá-la fora do `connect` faria dela uma skill nossa, e o caso
|
|
14
|
-
* de uso que a motivou é o cliente rodando sozinho toda semana.
|
|
11
|
+
* O frontmatter fica INTEIRO no stub: é a description que faz a skill ser
|
|
12
|
+
* invocada, e ela não é segredo - a esteira é.
|
|
15
13
|
*/
|
|
16
|
-
export const ADAPT_SKILL = `---
|
|
17
|
-
name: sui-adapt
|
|
18
|
-
description: Confronta UM componente (ou uma página, ou uma pasta) contra o design system instalado e adapta o que der - cobertura de token medida, conserto mecânico proposto antes de escrever, e o que sobra classificado em "regra nova" ou "conserto local". Use quando alguém aponta para uma peça e pergunta se ela está de acordo com o sistema (ex. "/sui-adapt components/ui/card", "analisa esse componente aqui", "isso aqui segue o meu design system?"), como rotina semanal, ou logo depois de criar/alterar um componente. Mede antes de propor, propõe antes de escrever, e nunca arquiva pedido em nome de ninguém.
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
# Adaptar uma peça ao sistema
|
|
22
|
-
|
|
23
|
-
**Seu primeiro comando é a medição.** Não leia \`.mcp.json\`, não abra o censo, não liste
|
|
24
|
-
arquivo: \`check_file\` ou \`doctor <alvo>\` responde tudo isso em um passo, e é o que o resto
|
|
25
|
-
desta skill consome. Um agente que sai explorando antes gasta a paciência de quem pediu e
|
|
26
|
-
chega ao mesmo lugar.
|
|
27
|
-
|
|
28
|
-
O propósito do produto, que decide todo empate abaixo: **ler o repositório do cliente e
|
|
29
|
-
devolver receitas com paridade visual, semântica e funcional, sem supor e sem inventar
|
|
30
|
-
nada.**
|
|
31
|
-
|
|
32
|
-
Esta skill é a ponta de manutenção. As outras duas que o cliente tem são de ENTRADA -
|
|
33
|
-
\`sui-init\` e \`sui-import-ds\` transformam o repositório dele em sistema. Esta responde a
|
|
34
|
-
pergunta do dia seguinte, que ele faz apontando para uma tela: *"isso aqui está de acordo
|
|
35
|
-
com o meu design system?"*.
|
|
36
|
-
|
|
37
|
-
\`CLAUDE.md\` manda. Quando os dois divergirem, este arquivo é que está velho.
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
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
|
|
72
|
-
|
|
73
|
-
Três limites, e cada um existe por um motivo que já custou alguma coisa:
|
|
74
|
-
|
|
75
|
-
\`\`\`
|
|
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
|
|
78
|
-
confiança não é rodada uma segunda vez
|
|
79
|
-
não arquiva pedido um pedido fila uma decisão na plataforma. A skill
|
|
80
|
-
PERGUNTA; quem decide é ele
|
|
81
|
-
não inventa token, nome um agente que cala um relatório fazendo o sistema crescer é
|
|
82
|
-
nem regra pior que a deriva que ele veio medir
|
|
83
|
-
\`\`\`
|
|
84
|
-
|
|
85
|
-
## 1. O ALVO, E POR QUE O ESCOPO É DECISÃO DA SKILL
|
|
86
|
-
|
|
87
|
-
Componente quase nunca é um arquivo. \`Card.tsx\` costuma vir com \`Card.css\`, \`Card.stories.tsx\`
|
|
88
|
-
e às vezes um \`index.ts\` - e medir só o \`.tsx\` produz um número que mente por omissão: o css
|
|
89
|
-
ao lado é justamente onde os valores à mão se escondem.
|
|
90
|
-
|
|
91
|
-
\`\`\`
|
|
92
|
-
1. resolva o alvo o que ele apontou, ou o arquivo aberto, ou o que ele acabou de mexer
|
|
93
|
-
2. suba para a PASTA quando o irmão existir (mesmo nome, extensão diferente)
|
|
94
|
-
3. DIGA qual escopo você usou, com o número de arquivos
|
|
95
|
-
\`\`\`
|
|
96
|
-
|
|
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".
|
|
99
|
-
|
|
100
|
-
**O alvo fora da pasta importada é o caso COMUM, e não um erro.** O sistema nasceu de uma
|
|
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.
|
|
105
|
-
|
|
106
|
-
## 2. MEÇA - e a medida é determinística, não sua
|
|
107
|
-
|
|
108
|
-
Duas portas, mesma resposta. Use a que a sessão tiver:
|
|
109
|
-
|
|
110
|
-
\`\`\`
|
|
111
|
-
MCP check_file { path }
|
|
112
|
-
terminal npx synthesisui doctor <alvo>
|
|
113
|
-
\`\`\`
|
|
114
|
-
|
|
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:
|
|
119
|
-
|
|
120
|
-
\`\`\`
|
|
121
|
-
sua ferramenta está em dia
|
|
122
|
-
|
|
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
|
|
126
|
-
\`\`\`
|
|
127
|
-
|
|
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:
|
|
132
|
-
|
|
133
|
-
\`\`\`
|
|
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
|
|
137
|
-
\`\`\`
|
|
138
|
-
|
|
139
|
-
## 3. MONTE A FILA, E CONTE OS ITENS ANTES DE COMEÇAR
|
|
140
|
-
|
|
141
|
-
Aqui é onde esta skill se ganha ou se perde. Despejar tudo de uma vez - duas regras, quatro
|
|
142
|
-
decisões, dez trocas - não é um relatório, é uma parede. Quem lê não tem como agir; só
|
|
143
|
-
concordar ou fechar a aba.
|
|
144
|
-
|
|
145
|
-
Junte tudo o que você achou numa fila ÚNICA e **ordene por custo**:
|
|
146
|
-
|
|
147
|
-
\`\`\`
|
|
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
|
|
151
|
-
\`\`\`
|
|
152
|
-
|
|
153
|
-
Assim ele despacha o barato primeiro e para quando quiser, sem ficar devendo nada.
|
|
154
|
-
|
|
155
|
-
Anuncie o tamanho antes do primeiro item, sempre, e em uma frase que ele leia:
|
|
156
|
-
|
|
157
|
-
\`\`\`
|
|
158
|
-
achei 8 coisas. 2 não mudam nada na tela, 4 podem mudar, e 2 são decisão sua.
|
|
159
|
-
\`\`\`
|
|
160
|
-
|
|
161
|
-
## 4. UM ITEM POR VEZ, COM AS TRÊS SAÍDAS - e espere a resposta
|
|
162
|
-
|
|
163
|
-
Nunca apresente o item 2 antes de ele responder o 1. O cabeçalho carrega a posição, para
|
|
164
|
-
ele saber onde está e quanto falta. O corpo fala do componente dele, e termina numa
|
|
165
|
-
pergunta:
|
|
166
|
-
|
|
167
|
-
\`\`\`
|
|
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?
|
|
179
|
-
|
|
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
|
|
184
|
-
|
|
185
|
-
[1] [2] [3] ou me diga outra coisa · [parar por aqui]
|
|
186
|
-
\`\`\`
|
|
187
|
-
|
|
188
|
-
As três saídas são sempre as mesmas, porque são as três que existem de verdade:
|
|
189
|
-
|
|
190
|
-
\`\`\`
|
|
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
|
|
195
|
-
\`\`\`
|
|
196
|
-
|
|
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.
|
|
205
|
-
|
|
206
|
-
## 5. AS REGRAS, QUE É A METADE QUE NENHUM COMANDO FAZ
|
|
207
|
-
|
|
208
|
-
O passo 2 é determinístico e sai de graça. Este não: o sistema carrega uma doutrina em
|
|
209
|
-
prosa, e **nada a verifica mecanicamente**. É aqui que você trabalha.
|
|
210
|
-
|
|
211
|
-
\`\`\`
|
|
212
|
-
MCP system_doctrine
|
|
213
|
-
terminal as regras viajam no documento instalado (_synthesisui/ds/<slug>/doctrine.json)
|
|
214
|
-
\`\`\`
|
|
215
|
-
|
|
216
|
-
Leia as regras e confronte o componente com cada uma. Três respostas possíveis por regra,
|
|
217
|
-
e a terceira é a que interessa:
|
|
218
|
-
|
|
219
|
-
\`\`\`
|
|
220
|
-
cumpre some do relatório. Diga só o total no fim
|
|
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
|
|
223
|
-
\`\`\`
|
|
224
|
-
|
|
225
|
-
Uma regra que você teve que interpretar para aplicar não é "cumpre". É o terceiro caso.
|
|
226
|
-
|
|
227
|
-
E nunca escreva "3 de 5 cumpridas". Isso lê como boletim, e as 2 que faltam são justamente
|
|
228
|
-
as que TÊM conserto pronto - é a melhor notícia do relatório vestida como a pior.
|
|
229
|
-
|
|
230
|
-
## 6. OS PEDIDOS - você mostra o comando, ele roda
|
|
231
|
-
|
|
232
|
-
Quando ele escolhe a saída 3, existem três destinos, e todos existem de verdade:
|
|
233
|
-
|
|
234
|
-
\`\`\`
|
|
235
|
-
um valor sem nome no sistema
|
|
236
|
-
-> npx synthesisui request token --value "<valor>" --name "<como se chamaria>" --for "<o caso>"
|
|
237
|
-
uma peça que falta
|
|
238
|
-
-> npx synthesisui request component --name "<nome>" --for "<o caso>"
|
|
239
|
-
o sistema não tem regra sobre este caso
|
|
240
|
-
-> npx synthesisui request rule --name "<o que a regra diria>" --for "<o caso que pediu>"
|
|
241
|
-
\`\`\`
|
|
242
|
-
|
|
243
|
-
**Arquivar em nome dele seria decidir por ele** - e tirar dele a chance de dizer "não, isso
|
|
244
|
-
fica local mesmo". Antes de propor uma regra nova, leia a doutrina inteira: uma regra que já
|
|
245
|
-
existe e você não achou vira duplicata na fila, e a fila perde valor na terceira.
|
|
246
|
-
|
|
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
|
|
251
|
-
|
|
252
|
-
**100% quase nunca é alcançável hoje, e isso não é falha dele.** Se o sistema não tem nome
|
|
253
|
-
para \`#555\`, ninguém chega a 100% sem antes decidir criar esse nome. Um medidor que mostra
|
|
254
|
-
0% contra um teto imaginário faz trabalho completo parecer trabalho pela metade.
|
|
255
|
-
|
|
256
|
-
Os números para a conta certa já vêm do comando:
|
|
257
|
-
|
|
258
|
-
\`\`\`
|
|
259
|
-
3 valores à mão
|
|
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
|
|
294
|
-
\`\`\`
|
|
295
|
-
|
|
296
|
-
Se nada foi escrito, não ofereça nem um nem outro. Um item que não tem o que mandar é ruído.
|
|
297
|
-
|
|
298
|
-
## 6c. FECHE PELO QUE ANDOU, E MOSTRE O CAMINHO ATÉ 100%
|
|
299
|
-
|
|
300
|
-
\`\`\`
|
|
301
|
-
OverviewHeaderInformation 2 arquivos
|
|
302
|
-
|
|
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
|
|
307
|
-
\`\`\`
|
|
308
|
-
|
|
309
|
-
Nunca "0% -> 0%". Se nada era mecânico, o teto era zero, e a frase é *"não havia nada que
|
|
310
|
-
o seu vocabulário de hoje resolvesse - o que existe são N decisões suas"*.
|
|
311
|
-
|
|
312
|
-
E quando sobrou pedido, termine com o caminho, porque ele é de dois passos e o primeiro é
|
|
313
|
-
dele:
|
|
314
|
-
|
|
315
|
-
\`\`\`
|
|
316
|
-
para chegar a 100%, faltam dois passos:
|
|
317
|
-
1. autorize o pedido no painel (ele já está na fila)
|
|
318
|
-
2. publique, e rode \`npx synthesisui upgrade\` aqui
|
|
319
|
-
depois disso, /sui-adapt neste componente fecha em 100%
|
|
320
|
-
\`\`\`
|
|
321
|
-
|
|
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".
|
|
325
|
-
|
|
326
|
-
Se a fila esvaziou, o fim é uma linha só:
|
|
327
|
-
|
|
328
|
-
\`\`\`
|
|
329
|
-
dá para resolver hoje 100%
|
|
330
|
-
resolvido 100% ✓ este componente está inteiro no seu design system
|
|
331
|
-
\`\`\`
|
|
332
|
-
|
|
333
|
-
## 7. ROTINA
|
|
334
|
-
|
|
335
|
-
Ela foi desenhada para duas horas do dia, e a segunda é a que mais rende:
|
|
336
|
-
|
|
337
|
-
\`\`\`
|
|
338
|
-
semanal "roda o sui-adapt no dashboard" - pega deriva antes de virar hábito
|
|
339
|
-
depois de mexer componente novo, ou alteração grande: rode ANTES do commit, enquanto a
|
|
340
|
-
decisão ainda está quente e o conserto ainda é barato
|
|
341
|
-
\`\`\`
|
|
342
|
-
|
|
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.
|
|
346
|
-
`;
|
|
347
14
|
export const ADAPT_SKILL_PATH = ".claude/skills/sui-adapt/SKILL.md";
|
|
15
|
+
export const ADAPT_SKILL = '---\nname: sui-adapt\ndescription: Confronta UM componente (ou uma p\u00e1gina, ou uma pasta) contra o design system instalado e adapta o que der - cobertura de token medida, conserto mec\u00e2nico proposto antes de escrever, e o que sobra classificado em "regra nova" ou "conserto local". Use quando algu\u00e9m aponta para uma pe\u00e7a e pergunta se ela est\u00e1 de acordo com o sistema (ex. "/sui-adapt components/ui/card", "analisa esse componente aqui", "isso aqui segue o meu design system?"), como rotina semanal, ou logo depois de criar/alterar um componente. Mede antes de propor, prop\u00f5e antes de escrever, e nunca arquiva pedido em nome de ningu\u00e9m.\n---\n\n# Adaptar uma pe\u00e7a ao sistema - served live\n\nThis playbook is served from the platform, not shipped in this file - it is\nalways current, and your context only carries the step you are on.\n\n1. Call the `playbook` tool on the `synthesisui` MCP server with\n { "skill": "adapt" } - you get the framing and a table of contents.\n2. Fetch ONLY the chapter for the step you are on:\n { "skill": "adapt", "section": "<id from the toc>" }. Never fetch more\n than the current step needs.\n3. Follow it exactly. When the step is done, fetch the next chapter.\n\nIf the tool answers that you are not signed in, run `npx synthesisui login`\nin the terminal and call it again. If the `synthesisui` MCP server is not\navailable at all, run `npx synthesisui connect`, restart the session, and\ninvoke this skill again.\n';
|