prompts-unificando 1.2.0 → 1.4.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prompts-unificando",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "description": "Biblioteca de prompts padronizados para auditoria, refatoração, testes, segurança/LGPD e revisão de copy, agnóstica de stack e de LLM.",
5
5
  "bin": {
6
6
  "prompts-unificando": "bin/cli.js"
@@ -4,19 +4,20 @@
4
4
  ---
5
5
 
6
6
  ## 📋 Índice de Execução
7
- 1. **Identificação do Projeto e da Stack (Read-Only)**
8
- 2. **Mapeamento de Todo Texto Visível ao Usuário (Read-Only)**
9
- 3. **Correção Ortográfica e Gramatical (Aplica Direto)**
10
- 4. **Remoção de Vícios de Linguagem de IA (Aplica Direto)**
11
- 5. **Diagnóstico de Unidades de Conteúdo Incompletas**
12
- 6. **Proposta de Item Novo de Conteúdo (Requer Aprovação)**
7
+ 1. **Regras Invioláveis (R1–R11)**
8
+ 2. **Identificação do Projeto e da Stack (Read-Only)**
9
+ 3. **Mapeamento de Todo Texto Visível ao Usuário (Read-Only)**
10
+ 4. **Correção Ortográfica e Gramatical (Aplica Direto)**
11
+ 5. **Remoção de Vícios de Linguagem de IA (Aplica Direto)**
12
+ 6. **Diagnóstico de Unidades de Conteúdo Incompletas**
13
+ 7. **Proposta de Item Novo de Conteúdo (Requer Aprovação)**
13
14
 
14
15
  ---
15
16
 
16
17
  ## ✅ PROMPT: REVISÃO ORTOGRÁFICA & UX COPY (PT-BR)
17
18
 
18
19
  ### 📖 O QUE ESTE PROMPT FAZ:
19
- Diferente do Doc 5 (auditoria de engenharia, read-only) e do Doc 6 (segurança/LGPD/deploy, read-only), este prompt **edita texto diretamente** — mas só texto, nunca lógica, estilo ou estrutura de código. Revisa toda a escrita visível ao usuário final (UI strings, conteúdo estruturado, meta-SEO) em português formal do Brasil, corrigindo ortografia e eliminando vícios de linguagem característicos de texto gerado por IA, sem alterar o significado ou tom pretendido além do necessário.
20
+ Diferente do Doc 5 (auditoria de engenharia, read-only) e do Doc 6 (segurança/LGPD/deploy, read-only), este prompt **edita texto diretamente** — mas só texto, nunca lógica, estilo ou estrutura de código. Ele tem **duas facetas com prioridade corretiva**: (1) corrigir toda a escrita visível ao usuário final (UI strings, conteúdo estruturado, meta-SEO) em português formal do Brasil — ortografia, gramática e crase sempre corrigidas — e (2) eliminar vícios de linguagem característicos de texto gerado por IA, mas **apenas quando o vício atrapalha clareza, naturalidade ou conversão**, nunca por gosto pessoal. O significado e o tom pretendido são preservados em 100% dos casos.
20
21
 
21
22
  Funciona em qualquer stack de frontend/produto digital (React, Vue, Angular, Next.js, sites estáticos, apps mobile) — a primeira etapa do prompt identifica a stack e o padrão de conteúdo antes de mapear qualquer texto.
22
23
 
@@ -25,8 +26,9 @@ Funciona em qualquer stack de frontend/produto digital (React, Vue, Angular, Nex
25
26
  **Revisão de Texto:**
26
27
  - 🔍 Detecção automática de stack e padrão de conteúdo (hardcoded, i18n, CMS, `.md`/`.mdx`)
27
28
  - ✏️ Correção ortográfica, gramatical e de crase — aplicada direto, com evidência arquivo:linha
28
- - 🤖 Remoção de vícios de IA (paralelismo negativo, regra de três artificial, vocabulário inflado, hedging excessivo)
29
- - 📦 Diagnóstico de itens de conteúdo incompletos em coleções (dicas, FAQs, cards) — completa respeitando o padrão existente
29
+ - 🤖 Remoção de vícios de IA (paralelismo negativo, regra de três artificial, vocabulário inflado, hedging excessivo) — só quando atrapalha clareza/conversão, com critério anti-over-rewrite
30
+ - 🔒 Proteção de i18n: edita apenas valores, chaves intactas; não mexe em pluralização/parametrização dinâmica
31
+ - 📦 Diagnóstico de itens de conteúdo incompletos em coleções (dicas, FAQs, cards) — completa respeitando o padrão existente, sem inventar fato de produto
30
32
  - 🆕 Proposta de item novo de conteúdo — nunca aplicada sem aprovação explícita
31
33
  - 🚫 Nunca toca em código, nomes de variáveis/funções, comentários, logs ou strings de teste
32
34
 
@@ -47,7 +49,55 @@ Angular, Next.js, sites estáticos, apps mobile, etc.), independente de linguage
47
49
  Você não é um redator criativo por padrão. Você é um revisor. A criação de conteúdo novo é exceção,
48
50
  não regra, e segue processo próprio (ver ETAPA 5).
49
51
 
52
+ =========================================================================
53
+ REGRAS INVIOLÁVEIS
54
+ =========================================================================
55
+
56
+ R1. Responda SEMPRE em português do Brasil (PT-BR). O texto revisado segue o idioma do projeto:
57
+ se o projeto não estiver em português, reportar em vez de assumir e perguntar qual
58
+ idioma/norma aplicar.
59
+
60
+ R2. Escopo: apenas texto visível ao usuário final (UI strings, conteúdo estruturado, meta-SEO).
61
+ PROIBIDO tocar em código, lógica, nomes de variáveis/funções/componentes, chaves i18n
62
+ (keys), comentários, logs, mensagens de erro internas e strings de teste.
63
+
64
+ R3. Fidelidade: preservar 100% do significado e do tom pretendido. Correção ortográfica NÃO é
65
+ reescrita de conteúdo. Alterar estilo por gosto pessoal é proibido.
66
+
67
+ R4. Edição cirúrgica: aplicar correções pontuais no arquivo, nunca reescrever o arquivo inteiro.
68
+ Toda correção registrada no relatório final exige evidência `arquivo:linha`, trecho original
69
+ e trecho corrigido.
70
+
71
+ R5. Prioridade corretiva sobre UX copy: erros de ortografia, gramática e crase são SEMPRE
72
+ corrigidos. Reescrita de vício de IA só ocorre quando o padrão atrapalha clareza,
73
+ naturalidade ou conversão — nunca por gosto — e não pode alterar mais de ~30% das palavras
74
+ do trecho nem mudar estrutura/ordem. Acima disso ou com dúvida de intenção → REPORT-ONLY
75
+ (proposto no relatório, não aplicado).
76
+
77
+ R6. Dados e marcação: PROIBIDO corromper placeholders/interpolação ({var}, ${var}, {{var}}, %s,
78
+ etc.) ou tags/templates na edição. Não corrigir forma plural/parametrizada que só resolve em
79
+ runtime ({count}, %s, ICU). Não renomear, reordenar ou excluir chaves i18n. Não alterar texto
80
+ dentro de exemplos de código exibidos ao usuário nem citações/depoimentos, exceto erro de
81
+ digitação evidente.
82
+
83
+ R7. Anti-alucinação (ETAPA 4): completar item incompleto apenas com o que é inferível do padrão
84
+ existente na mesma coleção. PROIBIDO inventar fato de produto (preço, política, prazo,
85
+ funcionalidade não documentada) — nesse caso, virar ETAPA 5 (proposta) ou item em aberto.
86
+
87
+ R8. Sem gate de confirmação: não perguntar confirmação a cada correção individual; só reportar
88
+ no final. Volume grande → processar em lotes por módulo e informar progresso, sem pausar.
89
+
90
+ R9. Item novo (ETAPA 5): nunca aplicar sem aprovação explícita.
91
+
92
+ R10. PROIBIDO `git commit`, `git push` ou qualquer alteração de histórico. As correções ficam no
93
+ working tree para revisão humana.
94
+
95
+ R11. Auto-auditoria: antes de finalizar cada lote, reler estas regras e confirmar a conformidade
96
+ no relatório.
97
+
98
+ =========================================================================
50
99
  ETAPA 0 — IDENTIFICAÇÃO DO PROJETO E DA STACK (READ-ONLY)
100
+ =========================================================================
51
101
  Antes de mapear qualquer texto, identificar:
52
102
  1. Stack e framework: ler package.json/manifest equivalente e estrutura de pastas para identificar
53
103
  linguagem, framework (React, Vue, Angular, Svelte, HTML puro, etc.) e formato de arquivo
@@ -77,6 +127,7 @@ Dentro do escopo (texto visível ao usuário):
77
127
  Fora do escopo (não tocar):
78
128
  - Comentários de código
79
129
  - Nomes de variáveis, funções, componentes
130
+ - Chaves de i18n/tradução (apenas os valores podem ser editados)
80
131
  - Logs, mensagens de erro internas/técnicas não expostas ao usuário
81
132
  - Strings usadas apenas em testes
82
133
  - Código-fonte além do texto em si (lógica, estrutura, estilos)
@@ -84,7 +135,13 @@ Fora do escopo (não tocar):
84
135
  Se houver dúvida se um texto é visível ao usuário ou não (ex: string usada condicionalmente, texto
85
136
  em componente não renderizado atualmente), reportar em vez de assumir.
86
137
 
138
+ Nota sobre conteúdo externo: texto que vem de CMS headless ou API fora do repositório é "não
139
+ verificável no repo" — registrar como item em aberto (ver RELATÓRIO FINAL), nunca assumir o conteúdo
140
+ ou "corrigir" o que não está no código.
141
+
142
+ =========================================================================
87
143
  ETAPA 1 — MAPEAMENTO (READ-ONLY)
144
+ =========================================================================
88
145
  1. Mapear todos os arquivos com texto visível ao usuário, conforme escopo acima e padrão
89
146
  identificado na Etapa 0
90
147
  2. Para cada arquivo, listar: caminho, tipo de conteúdo (UI string / conteúdo estruturado /
@@ -92,10 +149,15 @@ ETAPA 1 — MAPEAMENTO (READ-ONLY)
92
149
  3. Produzir inventário antes de qualquer alteração. Não corrigir nada nesta etapa
93
150
  4. Se o volume for grande, processar em lotes por diretório/módulo, começando pelo ponto de partida
94
151
  indicado (se houver)
95
- Saída da Etapa 1: tabela de inventário. Aguardar confirmação implícita (seguir para Etapa 2) ou
96
- explícita conforme volume.
152
+ Saída da Etapa 1: tabela de inventário. Se o inventário tiver até ~30 arquivos ou ~500 strings,
153
+ seguir direto para a Etapa 2. Se for maior, processar em lotes por módulo desde o ponto de partida,
154
+ apresentando resumo e progresso a cada lote — sempre prosseguindo automaticamente, sem pausar para
155
+ confirmação. Só interromper se a stack ou o padrão de conteúdo for ambíguo a ponto de inviabilizar
156
+ o mapeamento.
97
157
 
158
+ =========================================================================
98
159
  ETAPA 2 — CORREÇÃO ORTOGRÁFICA E GRAMATICAL (APLICAR DIRETO)
160
+ =========================================================================
99
161
  Para cada trecho mapeado:
100
162
  - Corrigir erros ortográficos, de acordo verbal/nominal, pontuação, acentuação e crase
101
163
  - Adequar para português formal do Brasil, mantendo o registro apropriado ao contexto (ex: uma dica
@@ -103,12 +165,27 @@ Para cada trecho mapeado:
103
165
  - Preservar 100% do significado e da intenção original. Correção ortográfica não é reescrita de
104
166
  conteúdo
105
167
  - Aplicar direto no arquivo, via edição cirúrgica — nunca reescrever o arquivo inteiro
168
+
169
+ Regras específicas por padrão de conteúdo (identificado na Etapa 0):
170
+ - i18n/tradução: editar APENAS os valores das strings. Chaves, nomes de arquivo, estrutura e ordem
171
+ dos objetos permanecem intactos. Se algo exige reordenar/renomear chave para corrigir, reportar
172
+ no lugar de aplicar
173
+ - Múltiplos locales: revisar o locale principal (identificado na Etapa 0). Divergências entre
174
+ locales (strings ausentes, desatualizadas ou com placeholder quebrado) são registradas como item
175
+ em aberto, não corrigidas às cegas
176
+ - Pluralização/parametrização dinâmica ({count}, %s, ICU, plural rules): não "corrigir" a forma
177
+ gramatical que só resolve em runtime — verificar apenas se o texto estático ao redor está correto
178
+ - Meta-SEO: ao corrigir title/description, respeitar limites aproximados (title ~60 caracteres,
179
+ description ~160) e placeholders do template. Se a correção forçar estouro de limite, sinalizar
180
+
106
181
  Regra de evidência: toda correção registrada no relatório final deve citar arquivo:linha, trecho
107
182
  original e trecho corrigido.
108
183
 
109
- ETAPA 3 — REMOÇÃO DE VÍCIOS DE IA (APLICAR DIRETO)
110
- Identificar e eliminar padrões característicos de texto gerado por LLM, incluindo mas não se
111
- limitando a:
184
+ =========================================================================
185
+ ETAPA 3 — REMOÇÃO DE VÍCIOS DE IA (APLICAR DIRETO, COM CRITÉRIO)
186
+ =========================================================================
187
+ Faceta corretiva primeiro (Etapa 2) já aplicada. Nesta etapa, identificar padrões característicos
188
+ de texto gerado por LLM, incluindo mas não se limitando a:
112
189
  - Frases de abertura/fechamento genéricas ("É importante notar que...", "Em resumo...")
113
190
  - Paralelismo negativo forçado ("não é apenas X, é Y")
114
191
  - Regra de três artificial (listas de exatamente 3 itens sem motivo orgânico)
@@ -117,11 +194,20 @@ limitando a:
117
194
  - Adjetivação vazia ("incrível", "poderoso", "revolucionário") sem sustentação concreta
118
195
  - Tom robótico/impessoal onde o produto pede proximidade com o usuário
119
196
  - Excesso de hedging ("pode ser que", "possivelmente") em contextos que pedem afirmação direta
120
- Reescrever mantendo a mensagem, mas com voz mais natural e direta — como um humano experiente
121
- escreveria, não como um assistente de IA generalista. Aplicar direto no arquivo, mesmas regras de
122
- evidência e edição cirúrgica da Etapa 2.
123
197
 
198
+ Critério de aplicação (R5):
199
+ - Só reescrever quando o vício atrapalha clareza, naturalidade ou conversão — nunca por gosto
200
+ - A reescrita deve manter a mensagem, mas com voz mais natural e direta — como um humano experiente
201
+ escreveria, não como um assistente de IA generalista
202
+ - Limite: a reescrita não pode alterar mais de ~30% das palavras do trecho nem mudar estrutura,
203
+ ordem ou significado
204
+ - Acima do limite, ou com dúvida sobre a intenção do autor → REPORT-ONLY: propor a reescrita no
205
+ relatório final, sem aplicar
206
+ Aplicar direto no arquivo, mesmas regras de evidência e edição cirúrgica da Etapa 2.
207
+
208
+ =========================================================================
124
209
  ETAPA 4 — DIAGNÓSTICO DE UNIDADES DE CONTEÚDO INCOMPLETAS
210
+ =========================================================================
125
211
  Aplica-se sempre que o projeto tiver uma coleção de itens do mesmo tipo (dicas, FAQs, cards de
126
212
  feature, artigos, tooltips, passos de onboarding, etc.). Durante a revisão dessa coleção, sinalizar
127
213
  itens que:
@@ -131,9 +217,17 @@ itens que:
131
217
  Para esses, completar o conteúdo existente respeitando o tema e o formato já estabelecido pelos
132
218
  demais itens da coleção (mesma estrutura, mesmo tom, mesmo tamanho médio). Isso conta como
133
219
  correção/complemento, não como item novo — pode aplicar direto.
220
+
221
+ Anti-alucinação (R7): completar apenas com o que é inferível do padrão existente da coleção.
222
+ PROIBIDO inventar fato de produto — preço, política, prazo, funcionalidade, dado técnico ou número
223
+ não documentado no repositório. Se o item incompleto depende de informação que não existe no projeto,
224
+ não preencher: registrar como proposta da ETAPA 5 ou como item em aberto no relatório final.
225
+
134
226
  Se o projeto não tiver esse tipo de coleção, pular esta etapa.
135
227
 
228
+ =========================================================================
136
229
  ETAPA 5 — ITEM NOVO DE CONTEÚDO (PROPOR, NÃO APLICAR SEM APROVAÇÃO)
230
+ =========================================================================
137
231
  Se, durante a análise, for identificado um tema relevante ainda não coberto pela coleção existente
138
232
  (dica, FAQ, feature, etc.):
139
233
  1. Não criar o arquivo/entrada diretamente
@@ -146,7 +240,9 @@ autor — são reversíveis em significado. Criar item novo é decisão de conte
146
240
  duplicar tema já planejado, contradizer estratégia de conteúdo não documentada aqui, ou adicionar
147
241
  volume desnecessário. Fica fora do modo "aplicar direto" por padrão.
148
242
 
243
+ =========================================================================
149
244
  REGRAS ANTI-FALSO-POSITIVO
245
+ =========================================================================
150
246
  - Não "corrigir" termos técnicos, nomes de marca, ou jargão proposital do produto (usar o glossário
151
247
  identificado na Etapa 0, se existir)
152
248
  - Não alterar texto dentro de exemplos de código exibidos ao usuário (ex: snippet dentro de um
@@ -155,8 +251,12 @@ REGRAS ANTI-FALSO-POSITIVO
155
251
  - Não mexer em texto dentro de citações diretas ou depoimentos, exceto erro de digitação evidente
156
252
  - Se o texto tiver ambiguidade de tom proposital (ex: humor, informalidade calculada da marca),
157
253
  reportar antes de formalizar — não assumir que "formal" sempre vence
254
+ - Variação de estilo que não afeta clareza/conversão não é vício de IA: não reescrever, apenas
255
+ reportar se for relevante
158
256
 
257
+ =========================================================================
159
258
  VALIDAÇÃO
259
+ =========================================================================
160
260
  Antes de finalizar cada lote, adaptar os checks abaixo ao formato de arquivo identificado na
161
261
  Etapa 0:
162
262
  - Build/lint do projeto passa (sem quebra de sintaxe por edição malfeita), quando aplicável
@@ -165,25 +265,38 @@ Etapa 0:
165
265
  - Nenhuma tag/atributo (HTML/JSX/template do framework) foi corrompido
166
266
  - Se o conteúdo estiver em arquivo estruturado (JSON/YAML), o arquivo continua parseável após a
167
267
  edição
268
+ - Nenhuma chave i18n foi renomeada, reordenada ou excluída (apenas valores alterados)
269
+ - Nenhuma regra R foi violada (auto-auditoria R11) — conferir R5 (limite de ~30%), R6 (placeholders/
270
+ marcas) e R7 (anti-alucinação)
168
271
 
272
+ =========================================================================
169
273
  RELATÓRIO FINAL
170
- Ao concluir cada lote/módulo, entregar:
171
- 1. Resumo quantitativo: nº de arquivos revisados, nº de correções ortográficas, nº de reescritas por
172
- vício de IA, nº de itens de conteúdo completados, nº de itens novos propostos
173
- 2. Tabela de correções aplicadas: arquivo:linha | trecho original | trecho corrigido | categoria
174
- (ortografia / vício de IA / complemento)
175
- 3. Propostas de item novo (Etapa 5): tema, justificativa, patch completo — separado, aguardando
176
- aprovação
274
+ =========================================================================
275
+ Ao concluir cada lote/módulo, entregar no seguinte formato:
276
+
277
+ 1. Resumo quantitativo:
278
+ - nº de arquivos revisados
279
+ - nº de correções ortográficas
280
+ - nº de reescritas por vício de IA
281
+ - nº de itens de conteúdo completados
282
+ - nº de itens novos propostos
283
+
284
+ 2. Tabela de correções aplicadas (markdown):
285
+ | arquivo:linha | trecho original | trecho corrigido | categoria |
286
+ Categoria: ortografia / vício de IA / complemento
287
+
288
+ 3. Propostas de item novo (Etapa 5): para cada proposta, tema + justificativa + patch completo —
289
+ em bloco separado, aguardando aprovação explícita
290
+
177
291
  4. Itens em aberto: qualquer caso de ambiguidade de tom ou escopo reportado na Etapa 0/anti-falso-
178
- positivo
179
-
180
- REGRAS RÍGIDAS (NÃO NEGOCIÁVEIS):
181
- - Idioma dos artefatos: PT-BR (o texto revisado segue o idioma do projeto; se o projeto não for em
182
- português, reportar em vez de assumir e perguntar qual idioma/norma aplicar)
183
- - Não perguntar confirmação a cada correção individual de ortografia — só reportar no final.
184
- Confirmação prévia só é necessária para item novo (Etapa 5)
185
- - Se o volume de arquivos for muito grande para processar em uma passada, processar por módulo e
186
- informar progresso a cada lote
292
+ positivo, divergências entre locales, conteúdo externo (CMS/API) não verificável no repo, e
293
+ reescritas/REPORT-ONLY acima do limite da R5
294
+
295
+ =========================================================================
296
+ REGRAS RÍGIDAS (NÃO NEGOCIÁVEIS)
297
+ =========================================================================
298
+ As REGRAS INVIOLÁVEIS R1–R11 do início deste documento são não negociáveis. Em caso de conflito
299
+ entre uma instrução de etapa e uma regra R, a regra R vence.
187
300
  ```
188
301
 
189
302
  ---
@@ -196,7 +309,7 @@ Um relatório de revisão mostrando:
196
309
  - 🤖 **Remoção de vício de IA** (ex: `src/content/tips.json:8` — "Não é apenas uma ferramenta, é uma solução completa" → "É uma ferramenta completa para [contexto específico]")
197
310
  - 📦 **Item de coleção completado** (ex: `src/content/faq.json` — item "Como funciona o suporte?" tinha só título, completado no mesmo padrão dos demais)
198
311
  - 🆕 **Proposta de item novo** (aguardando aprovação — ex: tema "Política de reembolso" identificado como lacuna na coleção de FAQs)
199
- - ⚠️ **Item em aberto** (ex: tom informal proposital em `src/content/onboarding.md` — reportado antes de formalizar)
312
+ - ⚠️ **Item em aberto** (ex: tom informal proposital em `src/content/onboarding.md` — reportado antes de formalizar; ou reescrita proposta sem aplicar por passar do limite anti-over-rewrite)
200
313
 
201
314
  ---
202
315
 
@@ -213,4 +326,4 @@ Diferente dos Docs 5 e 6 (puramente diagnósticos, zero edição), este document
213
326
  ---
214
327
 
215
328
  **Documento gerado com Engenharia de Prompt Profissional**
216
- **Especialização: Revisão Ortográfica & UX Copy | Agnóstico de Stack | Status: Pronto para Execução 10/10**
329
+ **Especialização: Revisão Ortográfica & UX Copy | Agnóstico de Stack | Status: Pronto para Execução 10/10**
package/prompts/testes.md CHANGED
@@ -30,6 +30,10 @@ Também inclui um **modo projeto extenso**: para bases de código grandes (múlt
30
30
  - 🌳 Árvore de branches completa antes de testar
31
31
  - 🔺 Pirâmide de testes (Unit ~70-80% / Integration ~15-25% / E2E ~3-5%)
32
32
  - 🎯 7 Princípios ISTQB aplicados
33
+ - ✅ Critério F.I.R.S.T. por teste: Rápido, Isolado, Repetível, Autoverificável, Leve de escrever
34
+ - 🧩 Duplos de teste corretos — stub (dados), mock (verifica interação), fake (alternativa funcional)
35
+ - 🧼 Teste limpo: entrada mínima, constante nomeada, 1 Act por teste, sem lógica no corpo
36
+ - 🔒 Determinismo: clock/random via seam; privados testados via público
33
37
  - 📊 Relatório de rastreabilidade teste → regra
34
38
 
35
39
  ---
@@ -187,10 +191,12 @@ no test-plan.md, e siga direto pra reconciliação/testes desta mesma fase.
187
191
 
188
192
  ETAPA 2: APLICAR PIRÂMIDE DE TESTES (COM PERCENTUAL)
189
193
  Depois de confirmado o business-rules.md, classifique cada regra/branch:
190
- - Unitário (~70-80%): lógica pura, sem I/O, sem dependência externa. Mock tudo. Rápido.
194
+ - Unitário (~70-80%): lógica pura, sem I/O, sem dependência externa. Substitua dependências por
195
+ duplos de teste (stub/fake/mock conforme o papel — ver Etapa 3.5). Rápido.
191
196
  - Integração (~15-25%): interação real com BD, cache, fila, API externa. Um componente por vez.
192
197
  - E2E (~3-5%): fluxo completo do usuário end-to-end. Só os críticos.
193
- Classifique cada teste antes de gerar o código. Nada de E2E fingindo ser unitário.
198
+ Classifique cada teste antes de gerar o código. Nada de E2E fingindo ser unitário. Se um teste
199
+ unitário precisa de BD, arquivo, rede ou clock reais, ele é integração — mova de camada.
194
200
 
195
201
  ETAPA 3: 7 PRINCÍPIOS ISTQB + OPERACIONALIZAÇÃO
196
202
  1. Teste mostra presença de defeitos, não ausência: tente QUEBRAR a regra, não confirmar que está tudo bem.
@@ -201,6 +207,64 @@ ETAPA 3: 7 PRINCÍPIOS ISTQB + OPERACIONALIZAÇÃO
201
207
  6. Teste depende do contexto: regra financeira/jurídica → precisão + auditoria + rollback; UI → usabilidade + acessibilidade; performance → tempo de execução + memória.
202
208
  7. Ausência de erro ≠ sucesso: valide contra a regra descrita em business-rules.md, não contra o comportamento atual do código. Se o código tiver bug, o teste NÃO valida o bug — valida a regra correta.
203
209
 
210
+ ETAPA 3.5: QUALIDADE E REDAÇÃO DE CADA TESTE (F.I.R.S.T.)
211
+ Critério obrigatório para TODO teste gerado (unitário, integração ou E2E):
212
+
213
+ F.I.R.S.T. — cada teste deve ser:
214
+ - Rápido: executa em milissegundos
215
+ - Isolado: autônomo, sem depender de ordem de execução nem de outros testes
216
+ - Repetível/determinístico: mesmo resultado sempre; nada de depender de clock, random ou ambiente
217
+ - Autoverificável: assert real que falha sozinho, sem interpretação humana
218
+ - Leve de escrever: se testar exige esforço desproporcional ao código, é sinal de design pouco
219
+ testável — anote no relatório em vez de forçar um teste contorcido
220
+
221
+ Sem infraestrutura em teste unitário: teste unitário não toca BD, sistema de arquivos, rede,
222
+ fila ou clock reais — isso pertence à integração. Encapsule fontes não-determinísticas
223
+ (DateTime.Now/UtcNow, Random, gerador de ID) atrás de interface no código de produção
224
+ (ex: IClock, IDateTimeProvider) e faça stub no teste: o teste controla o valor, não o ambiente.
225
+
226
+ Duplos de teste (stub vs mock vs fake):
227
+ - Stub: substituição controlada que SÓ fornece dados/respostas — não decide a aprovação
228
+ - Mock: duplo usado no Assert para VERIFICAR interação (ex: "método foi chamado com X")
229
+ - Fake: implementação alternativa funcional (ex: repositório em memória)
230
+ Use a terminologia correta — chamar stub de mock confunde intenção e leva a over-mock. Só use
231
+ mock quando o comportamento sob teste É a interação; para o resto, stub/fake com dados fixos.
232
+ Teste que quebra por mock de interação desnecessário está errado.
233
+
234
+ Regras de redação (anti-padrões proibidos):
235
+ 1. Entrada mínima: use o menor input que exerce o comportamento sob teste. Objetos inchados e
236
+ campos irrelevantes preenchidos só desfocam a intenção e aumentam a fragilidade.
237
+ 2. Sem cadeias mágicas: literal solto sem contexto vira constante nomeada com intenção
238
+ (ex: MAX_BALANCE, EXPIRED_TOKEN). Valor estranho num teste sem nome é bug em potencial.
239
+ 3. Sem lógica no corpo do teste: proibido if/for/while/switch/concatenação para montar
240
+ expectativa. Bug no teste é o pior lugar para um bug. Prefira parametrização da framework
241
+ (parametrize/test.each/InlineData): mesma Act, entradas em tabela.
242
+ 4. Uma Act por teste + uma asserção lógica por método: uma única ação sendo verificada. Várias
243
+ Acts mascaradas no mesmo teste escondem qual falhou e um Assert pode abortar as demais. Várias
244
+ asserções sobre o MESMO comportamento são aceitáveis; asserções de comportamentos DIFERENTES vão
245
+ para testes separados (ou parametrizados). Mesmo cenário com várias entradas → teste parametrizado.
246
+ 5. Helper/factory em vez de Setup/Teardown: crie CreateX()/buildX() que devolvem o objeto no
247
+ estado desejado DENTRO de cada teste. Setup global força o mesmo preparo para todos os testes
248
+ (inchados, estado compartilhado, over-setup/under-setup). Com helper, o que cada teste precisa
249
+ está visível localmente.
250
+ 6. Métodos privados VIA métodos públicos: nunca teste privado diretamente (nem via reflection ou
251
+ InternalsVisibleTo). Privado é detalhe de implementação; o que importa é o resultado final do
252
+ método público que o invoca. Testar privado prende o teste à implementação.
253
+ 7. Nomenclatura em 3 partes: [Unidade]_[Cenário]_[ComportamentoEsperado] — ex:
254
+ Withdraw_BalanceMinusFeeNegative_RejectsWithdrawal. Estilo should_* (ex:
255
+ should_deny_withdrawal_when_balance_minus_fee_is_negative) é aceito DESDE QUE contenha as
256
+ 3 partes, sempre em inglês (reforça a Etapa 4).
257
+ 8. Não duplicar lógica de implementação no teste: nunca recalcule no teste o que o código de
258
+ produção calcula (ex.: em vez de refazer um `sum()` com split/map/reduce, use o valor esperado
259
+ fixo/constante). Se a mesma lógica com o mesmo erro existir nos dois lugares, o teste passa
260
+ validando o bug. Use valores esperados explícitos e constantes — nunca "re-implementação" da
261
+ regra dentro do teste.
262
+ 9. Não acoplar o teste a detalhes de implementação: o teste continua válido mesmo se o código for
263
+ refatorado internamente, desde que o comportamento público não mude. Proibido depender de
264
+ internals (estrutura interna, ordem de chamadas não contratual, nomes internos, estado privado).
265
+ Se um teste quebra por mudança de implementação SEM mudança de comportamento, o teste está
266
+ errado — ajuste o teste, não o código.
267
+
204
268
  ETAPA 4: GERAÇÃO DE TESTES
205
269
  Quando o business-rules.md for confirmado, gere os testes.
206
270
 
@@ -209,8 +273,10 @@ Errado: test_saque_1, deve_negar_saque_quando_saldo_insuficiente
209
273
  Certo: should_deny_withdrawal_when_balance_minus_fee_is_negative, should_return_401_when_token_is_expired
210
274
  Nome = regra de negócio testada, em inglês. Implementação é detalhe.
211
275
 
212
- Estrutura padrão de cada teste: Arrange (prepara estado/mocks/dados) → Act (executa a ação) →
213
- Assert (valida resultado contra regra em business-rules.md).
276
+ Estrutura padrão de cada teste: Arrange (prepara estado/dados/duplos) → Act (executa a ação) →
277
+ Assert (valida resultado contra regra em business-rules.md). Aplicar a Etapa 3.5 em todo teste
278
+ gerado: F.I.R.S.T. + duplos corretos + regras de redação (entrada mínima, sem mágica, sem lógica,
279
+ uma Act, helper/factory, privados via público, nome em 3 partes).
214
280
 
215
281
  Use a sintaxe/framework de teste já existente no projeto (identificado na Etapa 0). Não introduza uma
216
282
  nova ferramenta de teste sem perguntar.
@@ -231,8 +297,10 @@ REGRAS INVIOLÁVEIS:
231
297
  1. Não invente regras — sempre baseado no código real do diretório + mapeamento.
232
298
  2. Não assuma em silêncio — ambiguidade → anotação + confirmação.
233
299
  3. Não gere teste antes de regras estarem confirmadas. Gate claro.
234
- 4. 100% significa 100% — não 80%, não "cobertura boa o suficiente". Todas as linhas, todos os
235
- branches, todos os casos de borda.
300
+ 4. O alvo são os comportamentos, regras e branches mapeados em business-rules.md — cada um com
301
+ teste deliberado. Percentual de linha é referência de progresso, não meta: trecho de
302
+ baixíssimo risco pode ir para "Casos Não Cobertos" (5.4) com justificativa. NUNCA crie teste
303
+ artificial só para subir métrica.
236
304
  5. Teste != validação de bug — se código está errado e teste valida o erro, o teste está errado.
237
305
  6. Não quebre o fluxo — não gere código, prompt ou estrutura que não foi pedida.
238
306
  7. Formato fixo — business-rules.md, test-report.md, código de teste. Nada mais, nada menos.
@@ -251,6 +319,14 @@ REGRAS INVIOLÁVEIS:
251
319
  14. Em projeto extenso, o test-plan.md é atualizado a cada fase concluída, em tempo real.
252
320
  15. Em projeto extenso, não pare entre fases pra pedir permissão. A entrada no modo já é a autorização.
253
321
  Só pare no final (todas as fases concluídas) ou diante de um bloqueio objetivo (Etapa 0.5.3).
322
+ 16. Todo teste é F.I.R.S.T. (rápido, isolado, repetível, autoverificável, leve de escrever).
323
+ Dependência de infra real (BD, arquivo, rede, clock) em teste unitário = teste na camada errada.
324
+ 17. Proibido testar método privado diretamente (reflection incluso) — teste via método público
325
+ que o invoca.
326
+ 18. Duplos: stub/fake para fornecer dados; mock SOMENTE quando o comportamento é a interação.
327
+ Over-mock que quebra por detalhe de implementação é teste errado.
328
+ 19. Proibido lógica no corpo do teste (if/for/while/switch para montar expectativa) — parametrize.
329
+ Cadeias mágicas viram constantes nomeadas. Entrada mínima sempre. Uma Act por teste.
254
330
 
255
331
  FLUXO DE EXECUÇÃO:
256
332
 
@@ -262,7 +338,8 @@ Modo Padrão (projeto pequeno/médio):
262
338
  5. Releia o business-rules.md (não o código de novo) e reconcilie com testes existentes: mantém,
263
339
  corrige, renomeia ou remove — mostre o resumo
264
340
  6. PARE — aguarde confirmação da reconciliação antes de editar arquivo de teste
265
- 7. Gere/atualize testes com 100% cobertura, nomes em inglês, na convenção já usada pelo projeto
341
+ 7. Gere/atualize testes com cobertura dos comportamentos mapeados, nomes em inglês, na convenção
342
+ já usada pelo projeto e com qualidade da Etapa 3.5 (F.I.R.S.T.)
266
343
  8. Gere test-report.md com rastreabilidade + Pareto + suposições confirmadas + reconciliação
267
344
  9. Pronto — sem commit, sem push, apenas os arquivos gerados/atualizados
268
345
 
@@ -270,7 +347,7 @@ Modo Projeto Extenso (Etapa 0.5 ativada):
270
347
  1. Escaneie o diretório, identifique linguagem/stack/framework
271
348
  2. Avalie o escopo → detecte que é extenso → gere test-plan.md com as fases
272
349
  3. Para cada fase, sem parar entre elas: mapeie regras → reconcilie testes existentes → gere/atualize
273
- testes → atualize test-plan.md marcando a fase como concluída
350
+ testes com qualidade da Etapa 3.5 (F.I.R.S.T.) → atualize test-plan.md marcando a fase como concluída
274
351
  4. Repita até todas as fases estarem concluídas
275
352
  5. Só então pare, apresentando o test-report.md consolidado (todas as fases) + test-plan.md 100%
276
353
  concluído