ll-skills 1.0.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.
- package/CHANGELOG.md +18 -0
- package/README.md +105 -0
- package/agents/ll-implementador.md +23 -0
- package/bin/install.js +475 -0
- package/hooks/ll-skills-check-update.js +157 -0
- package/package.json +38 -0
- package/skills/ll-atualizar/SKILL.md +68 -0
- package/skills/ll-decidir-antes/SKILL.md +81 -0
- package/skills/ll-decidir-antes/referencias/protocolo-entrevista.md +112 -0
- package/skills/ll-decidir-antes/referencias/template-spec.md +238 -0
- package/skills/ll-desarmar/SKILL.md +254 -0
- package/skills/ll-desarmar/referencias/execucao-adversarial.md +217 -0
- package/skills/ll-desarmar/referencias/humanos-e-substitutos.md +116 -0
- package/skills/ll-desarmar/referencias/placar-e-realimentacao.md +140 -0
- package/skills/ll-orquestrar/SKILL.md +100 -0
- package/skills/ll-pesquisar/SKILL.md +159 -0
- package/skills/ll-pesquisar/referencias/frente-de-pesquisa.md +147 -0
- package/skills/ll-pesquisar/referencias/sintese-e-fontes.md +148 -0
- package/skills/ll-pesquisar-mercado/SKILL.md +112 -0
- package/skills/ll-pesquisar-mercado/referencias/dossie.md +375 -0
- package/skills/ll-pesquisar-mercado/referencias/indice-e-fechamento.md +122 -0
- package/skills/ll-pesquisar-mercado/referencias/padroes-de-pesquisa.md +149 -0
- package/skills/ll-verificar-entrega/SKILL.md +73 -0
- package/skills/ll-verificar-entrega/referencias/briefs-auditoria.md +291 -0
- package/skills/ll-voltar-do-futuro/SKILL.md +239 -0
- package/skills/ll-voltar-do-futuro/referencias/anti-padroes-e-fundamentos.md +201 -0
- package/skills/ll-voltar-do-futuro/referencias/vetores-e-testes.md +228 -0
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
# Template comentado — SPEC.md + PROGRESS.md
|
|
2
|
+
|
|
3
|
+
Leitor: o agente da skill `ll-decidir-antes`, na fase 4. Você escreve o SPEC.md a partir da FILA.md fechada; o consumidor é um implementador autônomo que NÃO conhece esta skill e pode rodar por dias — a spec é tudo o que ele tem. Autossuficiência é o requisito; cada seção abaixo vem com o seu papel e o que a invalida.
|
|
4
|
+
|
|
5
|
+
Orçamento: o SPEC.md inteiro cabe em ~300 linhas. Detalhe fino (mapa do sistema, comparativos de pesquisa, copy literal extensa) entra por referência de caminho, lido just-in-time — spec longa é spec que o implementador para de consultar. Após aprovação, o SPEC.md é append-only: decisões novas são entradas novas com supersede explícito, nunca reescrita silenciosa.
|
|
6
|
+
|
|
7
|
+
Precedência entre seções: em conflito, a de número menor vence. Declare isso no preâmbulo — sem hierarquia explícita, o implementador sob pressão sacrifica o inegociável para salvar a preferência.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## §0 — Cabeçalho e preâmbulo
|
|
12
|
+
|
|
13
|
+
Papel: contrato de leitura. Fixa autossuficiência, precedência e o "não re-litigar" antes de qualquer conteúdo. Invalidado por: pivô de escopo aprovado pelo dono → versão nova, com a anterior preservada no git.
|
|
14
|
+
|
|
15
|
+
<template>
|
|
16
|
+
# SPEC: <nome> — v1 (<data>) — status: APROVADA
|
|
17
|
+
|
|
18
|
+
Para o implementador: leia este arquivo inteiro antes de qualquer código. Ele é
|
|
19
|
+
autossuficiente — os materiais de origem só são abertos nos caminhos citados aqui,
|
|
20
|
+
no trecho citado. As decisões da seção 3 foram tomadas com o dono do projeto: são
|
|
21
|
+
contrato, não sugestões — não as re-litigue. Em conflito entre seções, a de número
|
|
22
|
+
menor prevalece (2 > 3 > 4 > 5).
|
|
23
|
+
</template>
|
|
24
|
+
|
|
25
|
+
## §1 — Objetivo e resultado final
|
|
26
|
+
|
|
27
|
+
Papel: âncora anti-drift. É o parágrafo que o implementador relê a cada marco para responder "o que estou construindo mesmo?". Um parágrafo, com o teste de sucesso de mais alto nível — comportamento de ponta a ponta, não lista de features. Invalidado por: mudança de objetivo = spec nova, não edição.
|
|
28
|
+
|
|
29
|
+
<template>
|
|
30
|
+
## 1. Objetivo e resultado final
|
|
31
|
+
Quando este trabalho terminar, um assinante importa um extrato CSV do banco, revisa
|
|
32
|
+
as transações categorizadas automaticamente e exporta o relatório mensal em PDF —
|
|
33
|
+
de ponta a ponta, sem intervenção manual. Teste de mais alto nível: o fluxo
|
|
34
|
+
importar → revisar → exportar completa com `fixtures/extrato-real.csv` e o PDF
|
|
35
|
+
gerado contém as 3 seções do relatório.
|
|
36
|
+
</template>
|
|
37
|
+
|
|
38
|
+
## §2 — Invariantes (inegociáveis)
|
|
39
|
+
|
|
40
|
+
Papel: a constituição. Lista numerada, ≤15 itens, linguagem normativa MUST/NEVER — o implementador segue palavras normativas com mais fidelidade que parágrafos. Ficam no topo porque compactação de contexto e primazia preservam o início do arquivo. Entram aqui: stack travada, contratos que não podem quebrar, proibições absolutas. Invariante só muda pelo dono, via escalada — nunca pelo implementador.
|
|
41
|
+
|
|
42
|
+
<template>
|
|
43
|
+
## 2. Invariantes (MUST/NEVER)
|
|
44
|
+
I-01. MUST manter todas as suítes existentes verdes em todo commit.
|
|
45
|
+
I-02. NEVER deletar, desabilitar ou editar teste ou critério de aceite — mudança
|
|
46
|
+
neles é escalada (seção 7), sem exceção.
|
|
47
|
+
I-03. MUST usar o Postgres já provisionado; NEVER introduzir outro datastore.
|
|
48
|
+
I-04. NEVER rodar migração destrutiva, deleção de dados ou push forçado fora do
|
|
49
|
+
que um marco autoriza explicitamente.
|
|
50
|
+
I-05. MUST manter compatibilidade do endpoint público `GET /api/v1/reports`
|
|
51
|
+
(contrato em `docs/spec-relatorios/mapas/api.md`).
|
|
52
|
+
</template>
|
|
53
|
+
|
|
54
|
+
## §3 — Decisões tomadas (mini-ADRs, append-only)
|
|
55
|
+
|
|
56
|
+
Papel: onde o porquê vive. Sem o porquê e a alternativa rejeitada, o implementador re-decide errado no primeiro atrito — e redescobre com entusiasmo exatamente a alternativa que o dono rejeitou. A **Origem** separa o que é escalável do que não é: resposta do dono = contrato fechado; assunção = escalável por evidência contrária. Transcreva da FILA.md só as decisões materiais (todo ALTO; MÉDIO que muda contrato); o restante fica na FILA, referenciada por caminho.
|
|
57
|
+
|
|
58
|
+
Regras herdadas do registro (falhas reais que esta seção previne):
|
|
59
|
+
- Decisão que cita um entregável **nomeia o entregável** (arquivo, rota, migração, tela). "Alimenta o CTA" sem nomear o CTA é re-pergunta na semana 2.
|
|
60
|
+
- Decisão contra a recomendação carrega a marca e as consequências aceitas — e não é re-litigada.
|
|
61
|
+
- Supersede é explícito: entrada nova com `Supersede: DEC-NNN`; a original ganha ~~strikethrough~~ + data + quem decidiu. Nunca reescrita silenciosa.
|
|
62
|
+
|
|
63
|
+
<template>
|
|
64
|
+
## 3. Decisões
|
|
65
|
+
### DEC-004 — Identidade de contato: chave canônica ao lado (dono, 2026-08-20)
|
|
66
|
+
- Escolha: coluna canônica DERIVADA ao lado da original, sem backfill.
|
|
67
|
+
- Porquê: com DEC-001 = big-bang, o schema novo nasce sem custo de migração
|
|
68
|
+
incremental; a original preserva o histórico de auditoria.
|
|
69
|
+
- Alternativa rejeitada: normalizar in place — reescreveria os 4 writers de
|
|
70
|
+
`contact-service` e quebraria a trilha de auditoria.
|
|
71
|
+
- Origem: resposta do dono (entrevista, PERGUNTA 4/12).
|
|
72
|
+
- Entregáveis: migração `migrations/2026xxxx_add_canonical_key.sql`; atualização
|
|
73
|
+
de `src/services/contact-identity.ts`.
|
|
74
|
+
|
|
75
|
+
### DEC-007 — Retenção de uploads: 90 dias (dono, CONTRA a recomendação, 2026-08-20)
|
|
76
|
+
- Escolha: reter CSVs originais por 90 dias. Recomendação era 30 dias (custo de
|
|
77
|
+
storage + LGPD); dono aceitou o custo pelo suporte a re-processamento.
|
|
78
|
+
- Risco aceito conscientemente: ~3× storage; revisão de política LGPD é pendência
|
|
79
|
+
P-02 (dono: humano, marco M4). NÃO re-litigar.
|
|
80
|
+
|
|
81
|
+
### ASS-002 — Datas: date-fns (assunção, two-way door)
|
|
82
|
+
- Default: date-fns, já presente no lockfile e usada em 12 módulos.
|
|
83
|
+
- Porquê: troca posterior é um codemod local; não condiciona outra decisão.
|
|
84
|
+
- Escalar se: a evidência exigir aritmética de timezone que date-fns não cobre.
|
|
85
|
+
</template>
|
|
86
|
+
|
|
87
|
+
## §4 — Critérios de aceite (verificáveis por comando)
|
|
88
|
+
|
|
89
|
+
Papel: o oráculo. Critério bom é binário, observável e inequívoco — teste: duas pessoas poderiam discordar se passou? Então não é critério. Formato QUANDO/O SISTEMA (ou Given/When/Then), com valores exatos e caminhos de erro cobertos.
|
|
90
|
+
|
|
91
|
+
**Regra dura: critério sem comando de verificação executável não entra nesta seção.** Ele vira pendência com dono nomeado e marco (seção 5c) até ganhar um comando — foi assim que "maximizar cache ≥90%" vazou numa execução real: estava escrito, ninguém tinha como verificar, e quem pegou a falha foi o dono olhando a fatura. Verificação é por comando, nunca por julgamento do implementador.
|
|
92
|
+
|
|
93
|
+
<template>
|
|
94
|
+
## 4. Critérios de aceite
|
|
95
|
+
CA-03 — Importação com linha inválida
|
|
96
|
+
QUANDO o CSV contém uma linha com valor não numérico, O SISTEMA importa as
|
|
97
|
+
demais linhas e lista a rejeitada com o motivo "valor inválido na coluna N".
|
|
98
|
+
Verificação: `npm test -- import.spec.ts -t "linha inválida"` → exit 0.
|
|
99
|
+
|
|
100
|
+
CA-07 — Endpoint protegido
|
|
101
|
+
QUANDO a requisição não tem token, `GET /api/v1/reports` responde 401 com corpo
|
|
102
|
+
`{"error":"unauthorized"}`.
|
|
103
|
+
Verificação: `curl -s -o /dev/null -w "%{http_code}" localhost:3000/api/v1/reports` → `401`.
|
|
104
|
+
</template>
|
|
105
|
+
|
|
106
|
+
Contra-exemplo (não entra): "a importação lida bem com dados ruins" — não falseável; ou o CA-03 sem a linha de Verificação — vira P-NN com dono, não critério.
|
|
107
|
+
|
|
108
|
+
## §5 — Fora de escopo, liberdades e pendências
|
|
109
|
+
|
|
110
|
+
Papel: a cerca dos dois lados — previne tanto scope creep quanto paralisia. (a) lista o que NÃO construir (o não-escopo é listado, não omitido); (b) lista as two-way doors delegadas ao implementador — cada uma registrada no PROGRESS.md quando tomada; (c) pendências que sobraram da entrevista, cada uma com dono e marco — pendência sem dono some.
|
|
111
|
+
|
|
112
|
+
<template>
|
|
113
|
+
## 5. Escopo negativo, liberdades, pendências
|
|
114
|
+
(a) Fora de escopo — não construir: exportação para Excel; multi-moeda;
|
|
115
|
+
onboarding novo (fica como está).
|
|
116
|
+
(b) Liberdade do implementador (registrar no PROGRESS.md ao decidir): estrutura
|
|
117
|
+
interna de componentes; naming de módulos novos; texto de mensagens de erro
|
|
118
|
+
(tom: direto, sem jargão).
|
|
119
|
+
(c) Pendências: P-02 — revisão LGPD da retenção de 90d (dono: humano, até M4);
|
|
120
|
+
P-03 — comando de verificação para o custo por request (dono: implementador,
|
|
121
|
+
definir no M1 e promover a CA).
|
|
122
|
+
</template>
|
|
123
|
+
|
|
124
|
+
## §6 — Marcos
|
|
125
|
+
|
|
126
|
+
Papel: fatiamento em unidades de sessão. 3–7 marcos; cada um cabe numa sessão de trabalho — marco gigante é o modo de falha "tentar tudo e esgotar contexto no meio". `passes` nasce `false` e é mecânico: só vira `true` com os comandos passando (impede declaração prematura de conclusão). Estado dos marcos vive AQUI (é a exceção de mutabilidade da spec: só o campo `passes` muda, e só de false para true).
|
|
127
|
+
|
|
128
|
+
<template>
|
|
129
|
+
## 6. Marcos
|
|
130
|
+
### M1 — Parser de CSV com rejeição por linha — passes: false
|
|
131
|
+
- Entregável: `src/import/parser.ts` + `import.spec.ts`.
|
|
132
|
+
- Verificação (todas passam): `npm test -- import.spec.ts`; `npm run typecheck`.
|
|
133
|
+
### M2 — Categorização automática — passes: false
|
|
134
|
+
- Entregável: `src/import/categorize.ts`; cobre CA-04, CA-05.
|
|
135
|
+
- Verificação: `npm test -- categorize.spec.ts`; `npm run typecheck`.
|
|
136
|
+
</template>
|
|
137
|
+
|
|
138
|
+
## §7 — Protocolo de execução
|
|
139
|
+
|
|
140
|
+
Papel: o anti-drift. Este texto vai **completo e verbatim** em toda spec (parametrize `<comando de sanidade>` e os orçamentos) — qualquer agente que receba o SPEC.md o segue sem conhecer a skill que o gerou.
|
|
141
|
+
|
|
142
|
+
<template>
|
|
143
|
+
## 7. Protocolo de execução
|
|
144
|
+
Estas regras regem o implementador desta spec e prevalecem sobre hábitos ou
|
|
145
|
+
instruções genéricas de sessão.
|
|
146
|
+
|
|
147
|
+
Início de cada sessão:
|
|
148
|
+
1. Leia esta spec inteira, depois PROGRESS.md e `git log --oneline -20`.
|
|
149
|
+
2. Rode a sanidade (`<comando de sanidade>`) e confirme baseline verde ANTES de
|
|
150
|
+
implementar. Vermelho herdado: registre no PROGRESS.md e restaure o verde
|
|
151
|
+
antes de avançar qualquer marco.
|
|
152
|
+
3. Escolha o próximo marco `passes: false` na ordem da seção 6. Um marco por
|
|
153
|
+
sessão/ciclo.
|
|
154
|
+
|
|
155
|
+
Durante o marco:
|
|
156
|
+
4. Releia as seções 1 e 2 ao iniciar cada marco.
|
|
157
|
+
5. `passes: true` somente com os comandos de verificação do marco passando nesta
|
|
158
|
+
sessão — nunca por julgamento.
|
|
159
|
+
6. Critérios de aceite e testes não são editáveis (I-02). Critério errado ou
|
|
160
|
+
inatingível é motivo de escalada, não de edição.
|
|
161
|
+
7. Decisão two-way tomada em voo (seção 5b): uma linha no PROGRESS.md com o
|
|
162
|
+
porquê.
|
|
163
|
+
8. PROGRESS.md é cronológico e append-only: feito, decisão, surpresa, próximo
|
|
164
|
+
passo. Commits pequenos e descritivos a cada unidade verde. Antes de
|
|
165
|
+
registrar qualquer progresso (aqui ou ao dono), audite cada afirmação contra
|
|
166
|
+
um resultado de ferramenta desta sessão — comando rodado, teste executado,
|
|
167
|
+
arquivo lido. Afirmação sem resultado que a sustente não é registrável.
|
|
168
|
+
|
|
169
|
+
Escalada — pare o marco e escale se, e somente se:
|
|
170
|
+
(a) a ação é irreversível e nenhum marco a autoriza (migração destrutiva,
|
|
171
|
+
deleção de dados, push forçado, gasto externo);
|
|
172
|
+
(b) a evidência do código contradiz uma decisão da seção 3 ou torna um
|
|
173
|
+
invariante da seção 2 insatisfazível;
|
|
174
|
+
(c) o orçamento estourou: <N> tentativas no mesmo erro, ou <limite> de
|
|
175
|
+
tempo/tokens no marco.
|
|
176
|
+
Fora dessas classes, decida e registre — sem perguntar por cadência nem por
|
|
177
|
+
conforto.
|
|
178
|
+
|
|
179
|
+
Ambiguidade nova (o humano pode não estar presente):
|
|
180
|
+
9. Escreva `decisoes/DEC-P-NNN.md` (formato ao fim da spec) com pergunta,
|
|
181
|
+
opções com custo, recomendação, impacto e fonte. Se ela não bloqueia o marco
|
|
182
|
+
atual, continue; se bloqueia, passe ao próximo marco desbloqueado. Nunca
|
|
183
|
+
decida silenciosamente uma one-way door; nunca pare tudo por uma ambiguidade
|
|
184
|
+
localizada.
|
|
185
|
+
10. A realidade mudou algo que a spec referencia (rota reescrita por marco
|
|
186
|
+
anterior, arquivo movido, decisão que envelheceu): não obedeça a referência
|
|
187
|
+
morta nem "conserte" a spec — registre a contradição no PROGRESS.md e trate
|
|
188
|
+
como escalada (b). A resposta do dono entra na seção 3 como entrada nova com
|
|
189
|
+
`Supersede: DEC-NNN`.
|
|
190
|
+
|
|
191
|
+
Precedência: seção 2 > 3 > 4 > 5. Intenção: spec > código existente. Fato
|
|
192
|
+
descoberto: código > spec — reporte o conflito em vez de resolvê-lo
|
|
193
|
+
reinterpretando a spec.
|
|
194
|
+
</template>
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## PROGRESS.md — esqueleto (criado por você na fase 4, mantido pelo implementador)
|
|
199
|
+
|
|
200
|
+
Estado mutável fica aqui, fora da spec — a spec permanece estável e cacheável; o par spec/progress é o que permite a qualquer sessão nova reconstruir o estado só do filesystem.
|
|
201
|
+
|
|
202
|
+
<template>
|
|
203
|
+
# PROGRESS — <nome da spec>
|
|
204
|
+
|
|
205
|
+
## Estado
|
|
206
|
+
- Marco atual: M1 — <título> · passes: false
|
|
207
|
+
- Sanidade: <verde|vermelho> (<data>, `<comando>`)
|
|
208
|
+
- Pendências abertas: P-02 (dono: humano, até M4) · DEC-P-001 (aguarda humano)
|
|
209
|
+
- Próximo passo: <concreto>
|
|
210
|
+
|
|
211
|
+
## Diário (append-only, mais recente por último)
|
|
212
|
+
- <data hora> — M1: parser implementado; `npm test -- import.spec.ts` verde;
|
|
213
|
+
commit abc123. passes: true.
|
|
214
|
+
- <data hora> — [two-way, §5b] mensagens de erro em pt-BR sem código interno —
|
|
215
|
+
tom da spec pede "sem jargão".
|
|
216
|
+
- <data hora> — [surpresa] `contact-service` já normaliza telefone na
|
|
217
|
+
escrita (src/services/contact.ts:88) — sem conflito com DEC-004; registrado.
|
|
218
|
+
</template>
|
|
219
|
+
|
|
220
|
+
## decisoes/DEC-P-NNN.md — formato da ambiguidade serializada
|
|
221
|
+
|
|
222
|
+
A mesma anatomia de uma pergunta da entrevista, gravada em arquivo para o humano responder assincronamente. Inclua este formato ao fim do SPEC.md (após a seção 7) para o implementador copiar.
|
|
223
|
+
|
|
224
|
+
<template>
|
|
225
|
+
# DEC-P-001 — <a pergunta em uma linha>
|
|
226
|
+
- Contexto: <o que a spec diz + o que o código mostra, com arquivo:linha>
|
|
227
|
+
- Opções:
|
|
228
|
+
A) <opção> — <custo/consequência> ← recomendada, porque <porquê>
|
|
229
|
+
B) <opção> — <custo/consequência>
|
|
230
|
+
- Impacto: <marcos afetados; bloqueia M-n? o que segue enquanto isso>
|
|
231
|
+
- Status: AGUARDANDO HUMANO (<data>)
|
|
232
|
+
</template>
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## Fecho da fase 4
|
|
237
|
+
|
|
238
|
+
Escritos os dois arquivos: confira que toda decisão ALTO da FILA.md está na seção 3 ou referenciada; que cada critério da seção 4 tem comando; que cada pendência tem dono e marco; que a seção 7 está completa com sanidade e orçamentos preenchidos. Commit. Siga para a fase 5 do SKILL.md.
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ll-desarmar
|
|
3
|
+
description: Executa os testes desarmadores e as POCs com critério de aceite pré-registrado — confere cada teste contra a anatomia de 8 partes antes de rodar, executa com disciplina "reprova primeiro" (amostra adversarial, ground truth independente, auditoria de contexto limpo) e fecha o placar com veredicto medido por falha. Use quando pedirem para rodar os testes do premortem, executar uma POC ou spike com critério de aceite, desarmar riscos ou premissas, validar barato uma premissa antes de construir, ou preencher o placar de veredictos.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Desarmar
|
|
7
|
+
|
|
8
|
+
Listar risco não desarma nada. Uma falha prevista só sai da lista quando um teste barato
|
|
9
|
+
rodou contra um aceite pré-registrado e devolveu um número. Esta skill executa esses testes
|
|
10
|
+
e fecha o placar — é a metade do premortem que costuma faltar, e sem ela o exercício inteiro
|
|
11
|
+
vira teatro: a sensação de risco endereçado enquanto o plano segue intocado.
|
|
12
|
+
|
|
13
|
+
O padrão de qualidade é o inverso do intuitivo: **o teste vale pelo que consegue reprovar**.
|
|
14
|
+
Aprovação fácil é o resultado mais perigoso, porque compra confiança sem pagar por ela — num
|
|
15
|
+
caso real, um critério aprovado pelos números agregados escondia recall de 7,7%, e só uma
|
|
16
|
+
auditoria adversarial de contexto limpo o reprovou; depois de corrigido, passou com 100%.
|
|
17
|
+
Reprovar é sucesso do método: **CONFIRMADA, COM ROTA DE SAÍDA QUANTIFICADA** é o resultado
|
|
18
|
+
de maior valor que esta skill produz, porque redesenha o produto antes da primeira linha de
|
|
19
|
+
código.
|
|
20
|
+
|
|
21
|
+
## Arquivos desta skill
|
|
22
|
+
|
|
23
|
+
Resolva o **caminho absoluto do diretório desta skill** no início — os briefs precisam dele
|
|
24
|
+
literal, e subagentes não herdam este contexto.
|
|
25
|
+
|
|
26
|
+
| Arquivo | Quem lê | Quando |
|
|
27
|
+
|---|---|---|
|
|
28
|
+
| `referencias/execucao-adversarial.md` | você, todo executor e todo auditor | D2 e D3 |
|
|
29
|
+
| `referencias/humanos-e-substitutos.md` | você e quem monta o kit | D1, quando um teste exige terceiros |
|
|
30
|
+
| `referencias/placar-e-realimentacao.md` | você | D4 e D5 |
|
|
31
|
+
|
|
32
|
+
Quando a skill `ll-voltar-do-futuro` estiver instalada ao lado,
|
|
33
|
+
`../voltar-do-futuro/referencias/vetores-e-testes.md` é a fonte canônica do **desenho** do
|
|
34
|
+
teste (anatomia de 8 componentes, padrões por tipo de incógnita). Aqui a leitura é de
|
|
35
|
+
**conformidade e execução** — o teste já existe, a pergunta é se ele está pronto para rodar.
|
|
36
|
+
|
|
37
|
+
## Regras invioláveis
|
|
38
|
+
|
|
39
|
+
1. **O aceite congela antes de rodar.** Nenhum teste executa sem critério numérico
|
|
40
|
+
pré-registrado e sem a frase "reprova se ___". Teste incompleto volta para ser completado
|
|
41
|
+
**antes** da execução, com data de congelamento no plano. Completar critério depois de ver
|
|
42
|
+
os dados não é teste, é justificação.
|
|
43
|
+
2. **Reprova primeiro.** Quem executa procura ativamente o resultado que reprova: o formato
|
|
44
|
+
raro, o caso limítrofe, a classe de entrada esquisita. Passar sem esforço adversarial não
|
|
45
|
+
é aprovação — é auditoria pendente.
|
|
46
|
+
3. **Amostra adversarial e ground truth independente do sistema testado.** Amostra fácil
|
|
47
|
+
produz aprovação falsa, e aprovação falsa é pior que não testar. Sem verdade externa, você
|
|
48
|
+
está medindo o sistema contra si mesmo.
|
|
49
|
+
4. **Número agregado não é veredicto.** Todo resultado sai quebrado por classe de entrada. A
|
|
50
|
+
média esconde exatamente a classe onde o produto morre; a fronteira de validade só aparece
|
|
51
|
+
na quebra.
|
|
52
|
+
5. **O aceite não se ajusta post-hoc.** Ficou no fio (79,7% contra aceite de 80%)? Isso é
|
|
53
|
+
DESARMADA COM CONDIÇÕES, com a condição escrita — nunca DESARMADA.
|
|
54
|
+
6. **Simulação não vira humano.** Substituto de terceiros roda com o perfil oculto do
|
|
55
|
+
instrumento e com o que ele prova e o que **não** prova escrito no resultado.
|
|
56
|
+
7. **A decisão pré-comprometida se executa.** O número dispara o ramo que já estava escrito;
|
|
57
|
+
ele não reabre a discussão. Racionalizar o número ruim no dia seguinte é o modo de falha
|
|
58
|
+
que o pré-compromisso existe para impedir.
|
|
59
|
+
|
|
60
|
+
## Entradas
|
|
61
|
+
|
|
62
|
+
Reúna os testes de onde eles estiverem, nesta ordem de prioridade:
|
|
63
|
+
|
|
64
|
+
- `docs/premortem/premortem.md` — o bloco **(c)** de cada falha, na ordem de letalidade, com
|
|
65
|
+
o TOP 3 primeiro. Esta é a entrada canônica.
|
|
66
|
+
- `docs/decisoes-em-aberto.md` e o **Estado da decisão** de `docs/README.md` — decisões em
|
|
67
|
+
aberto do dossiê de pesquisa cujo método de resolução já está especificado.
|
|
68
|
+
- Um teste descrito pelo usuário na conversa, ad-hoc. Trate igual: ele atravessa o mesmo
|
|
69
|
+
portão de D0 antes de rodar.
|
|
70
|
+
|
|
71
|
+
Sem nenhuma das três, não há o que executar: peça a falha ou a decisão que o teste desarma,
|
|
72
|
+
porque teste sem premissa alvo não tem como ter aceite.
|
|
73
|
+
|
|
74
|
+
Artefatos que esta skill escreve:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
docs/desarmar/plano-de-testes.md # pré-registro congelado, com data
|
|
78
|
+
docs/desarmar/resultados/<slug>.md # um relatório por teste
|
|
79
|
+
docs/desarmar/kits/<slug>/ # protocolo + formulário dos testes com humanos
|
|
80
|
+
docs/premortem/placar.md # o placar (ou docs/desarmar/placar.md sem premortem)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## D0 — Congelar o pré-registro
|
|
84
|
+
|
|
85
|
+
Escreva `docs/desarmar/plano-de-testes.md`: uma seção por teste, copiando **literalmente** o
|
|
86
|
+
bloco (c) de origem, e submeta cada uma ao portão de conformidade.
|
|
87
|
+
|
|
88
|
+
| # | Pergunta de conformidade | Falta ⇒ o que fazer antes de rodar |
|
|
89
|
+
|---|---|---|
|
|
90
|
+
| 1 | Existe a afirmação falsificável, uma frase no presente do indicativo? | Escreva-a a partir da falha. Se não sai, o teste ataca um tema, não uma premissa: volte à falha. |
|
|
91
|
+
| 2 | A amostra está descrita com n **e** composição adversarial? | Desenhe a composição: os casos escolhidos para quebrar, nomeados um a um. |
|
|
92
|
+
| 3 | O ground truth é independente do sistema testado? | Nomeie a fonte externa (gabarito oficial, dois revisores com adjudicação, critério preditivo). |
|
|
93
|
+
| 4 | O aceite tem número, unidade e direção, e é **conjunto**? | Acrescente os critérios que faltam — um de qualidade, um de cobertura, um de operação. Um número sozinho quase sempre tem jeito trivial de passar. |
|
|
94
|
+
| 5 | Existe "reprova se ___", com um resultado plausível? | Redija a frase. Se nenhum resultado plausível reprova, o critério está frouxo e o teste é cerimônia. |
|
|
95
|
+
| 6 | Prazo e custo declarados, ≤ ~2 semanas, sem construir o produto? | Redesenhe para a versão de mesa (simulação, planilha, amostra de 30, script) que ataca a mesma premissa. |
|
|
96
|
+
| 7 | A decisão pré-comprometida está escrita nos **dois** ramos? | Escreva o "se… então…" agora, antes de qualquer dado. |
|
|
97
|
+
| 8 | Está dito o que este teste bloqueia? | Nomeie a decisão que ele antecede. Teste que roda depois dela é autópsia. |
|
|
98
|
+
|
|
99
|
+
Feche cada seção com a linha `Pré-registro congelado em {data}` e o orçado (prazo + custo).
|
|
100
|
+
|
|
101
|
+
> **Checkpoint 1 (humano).** Em ≤ 12 linhas: a lista dos testes prontos na ordem em que vão
|
|
102
|
+
> rodar, o custo e prazo somados, o que cada um bloqueia, o que foi completado no portão, e
|
|
103
|
+
> — separadamente — os testes que dependem de terceiros, com a pergunta que só o humano
|
|
104
|
+
> responde: **recrutar as pessoas agora ou rodar o substituto declarado?** Siga após a
|
|
105
|
+
> resposta.
|
|
106
|
+
|
|
107
|
+
## D1 — Triagem em três trilhas
|
|
108
|
+
|
|
109
|
+
- **(A) Executável agora por agente** — script sobre dados reais, amostra processada,
|
|
110
|
+
simulação com verdade conhecida, orçamento bottom-up com preços reais. Vai para D2.
|
|
111
|
+
- **(B) De duração** — regime contínuo, cron por N dias, operação sem intervenção. Instale
|
|
112
|
+
hoje (timer/cron, dashboard de 3–5 métricas, log em arquivo), registre a **data de
|
|
113
|
+
leitura** e marque **EM CURSO**. O dia 1 costuma render correções reais: capture-as.
|
|
114
|
+
- **(C) Depende de terceiros** — entrevista, avaliação cega, parecer profissional. Leia
|
|
115
|
+
`referencias/humanos-e-substitutos.md`, monte o kit completo em `docs/desarmar/kits/<slug>/`
|
|
116
|
+
e execute a decisão do Checkpoint 1.
|
|
117
|
+
|
|
118
|
+
Um subagente por teste, em paralelo. Dois testes que compartilham a mesma amostra ou o mesmo
|
|
119
|
+
pipeline ficam com **um único** agente, dono dos dois de ponta a ponta — decomponha por
|
|
120
|
+
fronteira de contexto, nunca por fase. Para roteamento e limites de fan-out, a skill
|
|
121
|
+
`ll-orquestrar` vale aqui integralmente.
|
|
122
|
+
|
|
123
|
+
## D2 — Execução paralela, um subagente por teste
|
|
124
|
+
|
|
125
|
+
Executores em `subagent_type: general-purpose`, modelo **Sonnet** para execução bem
|
|
126
|
+
especificada e **Opus** quando o teste exige julgamento adversarial dentro da própria
|
|
127
|
+
execução (adjudicação semântica, personas com perfil oculto, análise jurídica). Cada um grava
|
|
128
|
+
seu relatório e devolve só o caminho e um resumo curto — o orquestrador lê arquivos, não
|
|
129
|
+
transcritos.
|
|
130
|
+
|
|
131
|
+
<brief-modelo-executor>
|
|
132
|
+
Você executa um teste desarmador de {PROJETO} — um experimento barato desenhado para
|
|
133
|
+
reprovar uma premissa antes que ela custe caro.
|
|
134
|
+
|
|
135
|
+
CONTEXTO E MOTIVAÇÃO
|
|
136
|
+
O projeto ainda não construiu {o que está em jogo}. Este teste decide, nesta semana, se
|
|
137
|
+
{premissa} sobrevive. O critério de aceite foi congelado em {data}, ANTES de existir
|
|
138
|
+
qualquer dado — ele não pode ser reinterpretado, relaxado ou completado por você. Um
|
|
139
|
+
resultado que reprova é o desfecho mais valioso possível aqui: economiza meses. Um resultado
|
|
140
|
+
que aprova sem ter sido atacado é o mais perigoso, porque compra confiança falsa.
|
|
141
|
+
|
|
142
|
+
DADOS E REFERÊNCIAS (leia antes de rodar)
|
|
143
|
+
1. {abs}/docs/desarmar/plano-de-testes.md, seção "{título do teste}" — afirmação
|
|
144
|
+
falsificável, amostra, ground truth, aceite, "reprova se", decisão pré-comprometida.
|
|
145
|
+
2. {abs da skill}/referencias/execucao-adversarial.md — disciplina de execução, receitas por
|
|
146
|
+
tipo de incógnita, o que registrar, e o esqueleto obrigatório do relatório.
|
|
147
|
+
3. {caminhos dos dados, scripts, credenciais e artefatos do projeto que este teste usa}
|
|
148
|
+
|
|
149
|
+
INSTRUÇÕES
|
|
150
|
+
Monte a amostra adversarial descrita no plano — os casos escolhidos para quebrar, não os
|
|
151
|
+
fáceis; se um caso previsto não existir nos dados, registre a substituição e por quê.
|
|
152
|
+
Estabeleça o ground truth independente antes de olhar a saída do sistema. Rode. Procure
|
|
153
|
+
ativamente o resultado que reprova: quebre os números por classe de entrada, inspecione
|
|
154
|
+
manualmente os casos-limite, e teste a hipótese "este número está alto porque estou medindo
|
|
155
|
+
a coisa fácil". Trabalho determinístico (hash, dedupe, contagem, replay) fica em script, não
|
|
156
|
+
em julgamento de modelo. Use o mesmo tier de modelo que o produto usará — medir com um tier
|
|
157
|
+
melhor infla qualidade, medir com um pior infla custo.
|
|
158
|
+
Todo defeito que você encontrar e corrigir no caminho é achado de primeira classe: registre
|
|
159
|
+
o defeito, a correção e o re-teste. Se a correção mudar o resultado, o relatório mostra os
|
|
160
|
+
dois números, antes e depois.
|
|
161
|
+
|
|
162
|
+
CONTRATO DE SAÍDA
|
|
163
|
+
Grave {abs}/docs/desarmar/resultados/{slug}.md no esqueleto de execucao-adversarial.md
|
|
164
|
+
§Relatório: o que rodou (amostra real, ground truth, comandos/caminhos reproduzíveis, modelo,
|
|
165
|
+
período) → dados medidos quebrados por classe → aceite critério a critério com o número ao
|
|
166
|
+
lado → fronteira de validade (onde vale e onde não vale, com número) → achados colaterais e
|
|
167
|
+
correções estruturais → custo e prazo real contra o orçado → o que este teste NÃO prova.
|
|
168
|
+
Termine com **Veredicto proposto** e uma frase de justificativa; a atribuição final é do
|
|
169
|
+
orquestrador.
|
|
170
|
+
Devolva na resposta, em ≤ 200 palavras: o caminho do arquivo, o veredicto proposto, os
|
|
171
|
+
números que decidem, e o que ficou sem medir.
|
|
172
|
+
|
|
173
|
+
LIMITES
|
|
174
|
+
Não altere o critério de aceite por nenhum motivo — divergência entre o plano e a realidade
|
|
175
|
+
dos dados vira uma nota "Desvio do plano" no relatório, não uma correção silenciosa. Não
|
|
176
|
+
escreva nem edite arquivos fora de {caminhos permitidos}. Não construa produto: se o teste
|
|
177
|
+
parecer exigir isso, pare e reporte.
|
|
178
|
+
|
|
179
|
+
CRITÉRIOS DE SUCESSO
|
|
180
|
+
O relatório traz n real e composição da amostra; cada critério do aceite tem um número
|
|
181
|
+
medido ao lado, não um adjetivo; existe pelo menos uma tabela por classe de entrada; a
|
|
182
|
+
fronteira de validade nomeia uma condição onde o sistema **falha**; comandos e caminhos
|
|
183
|
+
permitem outra pessoa reproduzir; custo e prazo reais estão registrados contra o orçado.
|
|
184
|
+
</brief-modelo-executor>
|
|
185
|
+
|
|
186
|
+
## D3 — Auditoria adversarial de contexto limpo
|
|
187
|
+
|
|
188
|
+
Todo teste que **passou** atravessa esta etapa; os que passaram folgado, com prioridade —
|
|
189
|
+
folga é sintoma de amostra fácil até prova em contrário. O auditor roda em **Opus**, em
|
|
190
|
+
subagente novo, e nunca vê o raciocínio do executor: só a amostra, os dados brutos, o aceite
|
|
191
|
+
pré-registrado e o relatório. O protocolo e o brief-modelo do auditor estão em
|
|
192
|
+
`referencias/execucao-adversarial.md` §Auditoria.
|
|
193
|
+
|
|
194
|
+
Auditoria que reprova um critério aprovado é o retorno mais alto da rodada inteira: rode o
|
|
195
|
+
ciclo de correção, re-teste, e grave a trajetória — reprovou com X, corrigiu com Y, passou
|
|
196
|
+
com Z.
|
|
197
|
+
|
|
198
|
+
## D4 — Placar
|
|
199
|
+
|
|
200
|
+
Leia `referencias/placar-e-realimentacao.md` e escreva o placar: uma linha por falha, com
|
|
201
|
+
**vocabulário fechado**. O veredicto é atribuído por você, depois da auditoria, nunca pelo
|
|
202
|
+
executor.
|
|
203
|
+
|
|
204
|
+
| Veredicto | Atribua quando |
|
|
205
|
+
|---|---|
|
|
206
|
+
| **DESARMADA** | O aceite passou em todos os critérios conjuntos, atravessou a auditoria, e a fronteira de validade está escrita com número. Desarmar não é aprovar tudo: é delimitar onde vale. |
|
|
207
|
+
| **DESARMADA COM CONDIÇÕES** | Passou no fio ou passou porque uma decisão de desenho o sustenta. A condição vira requisito nomeado, não recomendação. |
|
|
208
|
+
| **CONFIRMADA, COM ROTA DE SAÍDA QUANTIFICADA** | O premortem estava certo e o teste mediu **qual alavanca resolve**, com número. Redesenho fundamentado antes do código — o resultado de maior valor. |
|
|
209
|
+
| **EM CURSO** | Teste de duração instalado e rodando, com data de leitura marcada e as correções do dia 1 registradas. |
|
|
210
|
+
| **PENDENTE, COM SUBSTITUTO DECLARADO** | Exige terceiros; o substituto rodou, a fronteira epistêmica está escrita, o instrumento está corrigido e pronto, e o item foi reclassificado de bloqueio para validação pré-lançamento. |
|
|
211
|
+
|
|
212
|
+
O placar carrega também, em seções próprias: **achados colaterais** (bugs reais e decisões de
|
|
213
|
+
arquitetura que os testes cravaram — testes desenhados para falsear premissas encontram o que
|
|
214
|
+
nenhuma revisão de código encontra), **custo da rodada** (real contra orçado, por teste) e **o
|
|
215
|
+
que continua com o humano**, com dono e marco.
|
|
216
|
+
|
|
217
|
+
> **Checkpoint 2 (humano).** Apresente o placar em uma tela: veredicto por falha com o número
|
|
218
|
+
> que o sustenta, o que cada decisão pré-comprometida obriga agora, e as escolhas que só o
|
|
219
|
+
> humano faz — recrutar as pessoas dos itens pendentes, aceitar o redesenho das CONFIRMADAS,
|
|
220
|
+
> ou parar.
|
|
221
|
+
|
|
222
|
+
## D5 — Realimentação e decisão disparada
|
|
223
|
+
|
|
224
|
+
1. **Execute a decisão pré-comprometida de cada teste.** O ramo já estava escrito: aplique-o
|
|
225
|
+
como decisão tomada, registrando qual ramo disparou e o que ele obriga. Reabrir a
|
|
226
|
+
discussão aqui anula o valor do pré-compromisso.
|
|
227
|
+
2. **Devolva os números ao dossiê**, quando `docs/README.md` existir: linha nova na seção
|
|
228
|
+
correspondente com a conclusão **e os números**, Estado da decisão reescrito, e caveat no
|
|
229
|
+
cabeçalho de todo documento que o teste superou — sem reescrever em silêncio e sem deletar
|
|
230
|
+
(`referencias/placar-e-realimentacao.md` §Realimentação).
|
|
231
|
+
3. **Feche as decisões em aberto** que os testes resolveram e marque as que continuam abertas
|
|
232
|
+
com o motivo.
|
|
233
|
+
4. **Handoff**: os requisitos que os testes cravaram (condições das DESARMADAS COM CONDIÇÕES,
|
|
234
|
+
redesenhos das CONFIRMADAS, decisões de arquitetura dos achados colaterais) entram como
|
|
235
|
+
decisões **já tomadas** na skill `ll-decidir-antes` — elas não voltam a ser perguntadas.
|
|
236
|
+
Feche nomeando esse próximo passo; o placar é o entregável final desta skill, e
|
|
237
|
+
invocar a `ll-decidir-antes` é decisão do usuário.
|
|
238
|
+
|
|
239
|
+
## Verificação antes de entregar
|
|
240
|
+
|
|
241
|
+
Reporte ao usuário o resultado destas quatro checagens, que são as que mais falham:
|
|
242
|
+
|
|
243
|
+
- **Pré-registro intacto**: cada aceite no relatório bate literalmente com o do plano
|
|
244
|
+
congelado. Diga quantos conferiu e liste qualquer desvio registrado.
|
|
245
|
+
- **Reprovação possível**: nenhum teste passou sem uma classe de entrada onde o sistema
|
|
246
|
+
falha estar nomeada com número. Um relatório sem nenhum número ruim descreve uma amostra
|
|
247
|
+
fácil, não um sistema bom.
|
|
248
|
+
- **Auditoria**: quantos testes aprovados foram auditados em contexto limpo e quantos
|
|
249
|
+
critérios a auditoria reprovou.
|
|
250
|
+
- **Orçamento**: custo e prazo reais somados contra o orçado, por teste.
|
|
251
|
+
|
|
252
|
+
Diga também o que ficou sem medir e por quê. "O teste 3 não rodou porque a fonte de ground
|
|
253
|
+
truth não existe sem dois revisores humanos" é resultado válido e esperado; preencher a
|
|
254
|
+
lacuna com uma aprovação plausível não é.
|