@luanpdd/kit-mcp 1.33.0 → 1.34.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/LICENSE +21 -21
- package/README.md +168 -168
- package/gates/agent-no-recursive-dispatch.md +84 -84
- package/kit/COMANDOS.md +138 -138
- package/kit/COMPATIBILITY.md +70 -70
- package/kit/README.md +76 -76
- package/kit/agents/advisor-researcher.md +109 -109
- package/kit/agents/ai-mutation-tester.md +289 -289
- package/kit/agents/assumptions-analyzer.md +110 -110
- package/kit/agents/audit-log-implementer.md +314 -314
- package/kit/agents/auditor-consistencia-isolamento.md +414 -414
- package/kit/agents/b2b-saas-architect.md +157 -157
- package/kit/agents/burn-rate-forecaster.md +153 -153
- package/kit/agents/cascading-failures-auditor.md +299 -299
- package/kit/agents/codebase-mapper.md +769 -769
- package/kit/agents/crm-pipeline-implementer.md +257 -257
- package/kit/agents/debugger.md +814 -814
- package/kit/agents/designer-ui.md +216 -216
- package/kit/agents/detector-tenant-quente.md +338 -338
- package/kit/agents/evolution-go-integrator.md +201 -201
- package/kit/agents/example-reviewer.md +22 -22
- package/kit/agents/executor.md +565 -565
- package/kit/agents/golden-signals-instrumenter.md +232 -232
- package/kit/agents/incident-investigator.md +238 -238
- package/kit/agents/integration-checker.md +203 -203
- package/kit/agents/invite-flow-implementer.md +190 -190
- package/kit/agents/legacy-characterizer.md +369 -369
- package/kit/agents/lgpd-compliance-auditor.md +296 -296
- package/kit/agents/load-shedding-instrumenter.md +290 -290
- package/kit/agents/multi-tenant-isolation-auditor.md +254 -254
- package/kit/agents/multi-tenant-rls-writer.md +341 -341
- package/kit/agents/nyquist-auditor.md +181 -181
- package/kit/agents/observability-coverage-auditor.md +316 -316
- package/kit/agents/observability-instrumenter.md +191 -191
- package/kit/agents/omm-auditor.md +291 -291
- package/kit/agents/org-onboarding-implementer.md +224 -224
- package/kit/agents/payload-capture-instrumenter.md +274 -274
- package/kit/agents/phase-researcher.md +697 -697
- package/kit/agents/plan-checker.md +275 -275
- package/kit/agents/planner.md +923 -923
- package/kit/agents/postmortem-writer.md +273 -273
- package/kit/agents/project-researcher.md +653 -653
- package/kit/agents/prr-conductor.md +287 -287
- package/kit/agents/refactor-safety-auditor.md +405 -405
- package/kit/agents/release-pipeline-auditor.md +364 -364
- package/kit/agents/research-synthesizer.md +246 -246
- package/kit/agents/roadmapper.md +678 -678
- package/kit/agents/schema-checker.md +160 -160
- package/kit/agents/seam-finder.md +360 -360
- package/kit/agents/shotgun-surgery-detector.md +350 -350
- package/kit/agents/slo-engineer.md +217 -217
- package/kit/agents/storytelling-analyst.md +300 -300
- package/kit/agents/supabase-architect.md +249 -249
- package/kit/agents/supabase-auth-bootstrapper.md +400 -400
- package/kit/agents/supabase-auth-hook-writer.md +418 -418
- package/kit/agents/supabase-branching-architect.md +563 -563
- package/kit/agents/supabase-cicd-pipeline-implementer.md +778 -778
- package/kit/agents/supabase-column-privileges-writer.md +400 -400
- package/kit/agents/supabase-edge-fn-tester.md +288 -288
- package/kit/agents/supabase-edge-fn-writer.md +341 -341
- package/kit/agents/supabase-mfa-implementer.md +439 -439
- package/kit/agents/supabase-migration-writer.md +386 -386
- package/kit/agents/supabase-oauth-server-implementer.md +507 -507
- package/kit/agents/supabase-rbac-implementer.md +393 -393
- package/kit/agents/supabase-realtime-implementer.md +364 -364
- package/kit/agents/supabase-rls-hardener.md +522 -522
- package/kit/agents/supabase-rls-writer.md +324 -324
- package/kit/agents/supabase-roles-implementer.md +356 -356
- package/kit/agents/supabase-social-auth-implementer.md +451 -451
- package/kit/agents/supabase-sso-saml-architect.md +549 -549
- package/kit/agents/supabase-storage-implementer.md +407 -407
- package/kit/agents/super-admin-implementer.md +282 -282
- package/kit/agents/toil-auditor.md +268 -268
- package/kit/agents/ui-auditor.md +438 -438
- package/kit/agents/ui-checker.md +305 -305
- package/kit/agents/ui-researcher.md +356 -356
- package/kit/agents/user-profiler.md +176 -176
- package/kit/agents/validador-evolucao-schema.md +336 -336
- package/kit/agents/verifier.md +729 -729
- package/kit/commands/adicionar-backlog.md +75 -75
- package/kit/commands/adicionar-fase.md +42 -42
- package/kit/commands/adicionar-tarefa.md +45 -45
- package/kit/commands/adicionar-testes.md +41 -41
- package/kit/commands/ajuda.md +21 -21
- package/kit/commands/atualizar.md +37 -37
- package/kit/commands/auditar-cascading.md +111 -111
- package/kit/commands/auditar-marco.md +179 -179
- package/kit/commands/auditar-observabilidade-cobertura-workflow.md +121 -0
- package/kit/commands/auditar-observabilidade-cobertura.md +183 -183
- package/kit/commands/auditar-refactor.md +219 -219
- package/kit/commands/auditar-release.md +109 -109
- package/kit/commands/auditar-uat.md +23 -23
- package/kit/commands/autonomo.md +40 -40
- package/kit/commands/branch-pr.md +24 -24
- package/kit/commands/burn-rate-status.md +408 -408
- package/kit/commands/capturar-payloads.md +193 -193
- package/kit/commands/caracterizar.md +212 -212
- package/kit/commands/concluir-marco.md +247 -247
- package/kit/commands/configuracoes.md +36 -36
- package/kit/commands/dados-distribuidos.md +188 -188
- package/kit/commands/definir-perfil.md +10 -10
- package/kit/commands/depurar.md +190 -190
- package/kit/commands/detectar-duplicacao.md +197 -197
- package/kit/commands/discutir-fase.md +131 -131
- package/kit/commands/encontrar-seams.md +136 -136
- package/kit/commands/entrar-discord.md +17 -17
- package/kit/commands/estatisticas.md +18 -18
- package/kit/commands/example-greeting.md +33 -33
- package/kit/commands/executar-fase.md +58 -58
- package/kit/commands/expresso.md +56 -56
- package/kit/commands/fase-ui.md +34 -34
- package/kit/commands/fazer.md +57 -57
- package/kit/commands/fio.md +125 -125
- package/kit/commands/fluxos-trabalho.md +64 -64
- package/kit/commands/forense.md +176 -176
- package/kit/commands/gerenciador.md +38 -38
- package/kit/commands/inserir-fase.md +31 -31
- package/kit/commands/legacy.md +263 -263
- package/kit/commands/limpeza.md +17 -17
- package/kit/commands/listar-hipoteses-fase.md +45 -45
- package/kit/commands/listar-workspaces.md +18 -18
- package/kit/commands/load-shedding.md +117 -117
- package/kit/commands/mapear-codebase.md +70 -70
- package/kit/commands/multi-tenant.md +163 -163
- package/kit/commands/nota.md +33 -33
- package/kit/commands/novo-marco.md +43 -43
- package/kit/commands/novo-projeto.md +41 -41
- package/kit/commands/novo-workspace.md +43 -43
- package/kit/commands/pausar-trabalho.md +37 -37
- package/kit/commands/perfil-usuario.md +45 -45
- package/kit/commands/pesquisar-fase.md +195 -195
- package/kit/commands/planejar-fase.md +67 -67
- package/kit/commands/planejar-lacunas.md +33 -33
- package/kit/commands/plantar-ideia.md +25 -25
- package/kit/commands/progresso.md +24 -24
- package/kit/commands/proximo.md +30 -30
- package/kit/commands/publicar.md +490 -490
- package/kit/commands/rapido.md +35 -35
- package/kit/commands/reaplicar-patches.md +124 -124
- package/kit/commands/refactor-seguro.md +321 -321
- package/kit/commands/relatorio-sessao.md +19 -19
- package/kit/commands/remover-fase.md +31 -31
- package/kit/commands/remover-workspace.md +26 -26
- package/kit/commands/resumo-marco.md +50 -50
- package/kit/commands/retomar-trabalho.md +40 -40
- package/kit/commands/revisar-backlog.md +60 -60
- package/kit/commands/revisar-ui.md +32 -32
- package/kit/commands/revisar.md +37 -37
- package/kit/commands/saude.md +21 -21
- package/kit/commands/setup-notion.md +93 -93
- package/kit/commands/storytelling.md +179 -179
- package/kit/commands/supabase.md +238 -238
- package/kit/commands/sync-main.md +68 -68
- package/kit/commands/validar-fase.md +35 -35
- package/kit/commands/verificar-tarefas.md +44 -44
- package/kit/commands/verificar-trabalho.md +64 -64
- package/kit/file-manifest.json +13 -11
- package/kit/framework/bin/lib/commands.cjs +959 -959
- package/kit/framework/bin/lib/config.cjs +442 -442
- package/kit/framework/bin/lib/core.cjs +1230 -1230
- package/kit/framework/bin/lib/frontmatter.cjs +336 -336
- package/kit/framework/bin/lib/init.cjs +1442 -1442
- package/kit/framework/bin/lib/milestone.cjs +252 -252
- package/kit/framework/bin/lib/model-profiles.cjs +68 -68
- package/kit/framework/bin/lib/phase.cjs +888 -888
- package/kit/framework/bin/lib/profile-output.cjs +952 -952
- package/kit/framework/bin/lib/profile-pipeline.cjs +539 -539
- package/kit/framework/bin/lib/roadmap.cjs +329 -329
- package/kit/framework/bin/lib/security.cjs +382 -382
- package/kit/framework/bin/lib/state.cjs +1031 -1031
- package/kit/framework/bin/lib/template.cjs +222 -222
- package/kit/framework/bin/lib/uat.cjs +282 -282
- package/kit/framework/bin/lib/verify.cjs +888 -888
- package/kit/framework/bin/lib/workstream.cjs +491 -491
- package/kit/framework/bin/tools.cjs +918 -918
- package/kit/framework/commands/workstreams.md +63 -63
- package/kit/framework/references/checkpoints.md +778 -778
- package/kit/framework/references/continuation-format.md +249 -249
- package/kit/framework/references/decimal-phase-calculation.md +64 -64
- package/kit/framework/references/git-integration.md +295 -295
- package/kit/framework/references/git-planning-commit.md +38 -38
- package/kit/framework/references/model-profile-resolution.md +36 -36
- package/kit/framework/references/model-profiles.md +139 -139
- package/kit/framework/references/phase-argument-parsing.md +61 -61
- package/kit/framework/references/planning-config.md +202 -202
- package/kit/framework/references/questioning.md +162 -162
- package/kit/framework/references/tdd.md +263 -263
- package/kit/framework/references/ui-brand.md +160 -160
- package/kit/framework/references/user-profiling.md +657 -657
- package/kit/framework/references/verification-patterns.md +612 -612
- package/kit/framework/references/workstream-flag.md +58 -58
- package/kit/framework/templates/DEBUG.md +164 -164
- package/kit/framework/templates/UAT.md +265 -265
- package/kit/framework/templates/UI-SPEC.md +100 -100
- package/kit/framework/templates/VALIDATION.md +76 -76
- package/kit/framework/templates/claude-md.md +122 -122
- package/kit/framework/templates/codebase/architecture.md +185 -185
- package/kit/framework/templates/codebase/concerns.md +205 -205
- package/kit/framework/templates/codebase/conventions.md +204 -204
- package/kit/framework/templates/codebase/integrations.md +192 -192
- package/kit/framework/templates/codebase/stack.md +158 -158
- package/kit/framework/templates/codebase/structure.md +199 -199
- package/kit/framework/templates/codebase/testing.md +301 -301
- package/kit/framework/templates/config.json +44 -44
- package/kit/framework/templates/context.md +352 -352
- package/kit/framework/templates/continue-here.md +78 -78
- package/kit/framework/templates/copilot-instructions.md +7 -7
- package/kit/framework/templates/debug-subagent-prompt.md +91 -91
- package/kit/framework/templates/dev-preferences.md +20 -20
- package/kit/framework/templates/discovery.md +146 -146
- package/kit/framework/templates/discussion-log.md +63 -63
- package/kit/framework/templates/milestone-archive.md +123 -123
- package/kit/framework/templates/milestone.md +115 -115
- package/kit/framework/templates/phase-prompt.md +610 -610
- package/kit/framework/templates/planner-subagent-prompt.md +117 -117
- package/kit/framework/templates/project.md +186 -186
- package/kit/framework/templates/requirements.md +231 -231
- package/kit/framework/templates/research-project/ARCHITECTURE.md +204 -204
- package/kit/framework/templates/research-project/FEATURES.md +147 -147
- package/kit/framework/templates/research-project/PITFALLS.md +200 -200
- package/kit/framework/templates/research-project/STACK.md +120 -120
- package/kit/framework/templates/research-project/SUMMARY.md +170 -170
- package/kit/framework/templates/research.md +419 -419
- package/kit/framework/templates/retrospective.md +54 -54
- package/kit/framework/templates/roadmap.md +202 -202
- package/kit/framework/templates/state.md +176 -176
- package/kit/framework/templates/summary-complex.md +59 -59
- package/kit/framework/templates/summary-minimal.md +41 -41
- package/kit/framework/templates/summary-standard.md +48 -48
- package/kit/framework/templates/summary.md +209 -209
- package/kit/framework/templates/user-profile.md +146 -146
- package/kit/framework/templates/user-setup.md +256 -256
- package/kit/framework/templates/verification-report.md +258 -258
- package/kit/framework/workflows/add-phase.md +112 -112
- package/kit/framework/workflows/add-tests.md +351 -351
- package/kit/framework/workflows/add-todo.md +158 -158
- package/kit/framework/workflows/audit-milestone.md +340 -340
- package/kit/framework/workflows/audit-uat.md +109 -109
- package/kit/framework/workflows/autonomous.md +891 -891
- package/kit/framework/workflows/check-todos.md +177 -177
- package/kit/framework/workflows/cleanup.md +152 -152
- package/kit/framework/workflows/complete-milestone.md +696 -696
- package/kit/framework/workflows/diagnose-issues.md +231 -231
- package/kit/framework/workflows/discovery-phase.md +289 -289
- package/kit/framework/workflows/discuss-phase-assumptions.md +653 -653
- package/kit/framework/workflows/discuss-phase.md +784 -784
- package/kit/framework/workflows/do.md +104 -104
- package/kit/framework/workflows/execute-phase.md +838 -838
- package/kit/framework/workflows/execute-plan.md +510 -510
- package/kit/framework/workflows/fast.md +102 -102
- package/kit/framework/workflows/forensics.md +265 -265
- package/kit/framework/workflows/health.md +181 -181
- package/kit/framework/workflows/help.md +619 -619
- package/kit/framework/workflows/insert-phase.md +130 -130
- package/kit/framework/workflows/list-phase-assumptions.md +178 -178
- package/kit/framework/workflows/list-workspaces.md +56 -56
- package/kit/framework/workflows/manager.md +362 -362
- package/kit/framework/workflows/map-codebase.md +377 -377
- package/kit/framework/workflows/milestone-summary.md +223 -223
- package/kit/framework/workflows/new-milestone.md +486 -486
- package/kit/framework/workflows/new-project.md +1159 -1159
- package/kit/framework/workflows/new-workspace.md +237 -237
- package/kit/framework/workflows/next.md +97 -97
- package/kit/framework/workflows/node-repair.md +92 -92
- package/kit/framework/workflows/note.md +156 -156
- package/kit/framework/workflows/pause-work.md +176 -176
- package/kit/framework/workflows/plan-milestone-gaps.md +273 -273
- package/kit/framework/workflows/plan-phase.md +765 -765
- package/kit/framework/workflows/plant-seed.md +169 -169
- package/kit/framework/workflows/pr-branch.md +129 -129
- package/kit/framework/workflows/profile-user.md +450 -450
- package/kit/framework/workflows/progress.md +507 -507
- package/kit/framework/workflows/quick.md +757 -757
- package/kit/framework/workflows/remove-phase.md +155 -155
- package/kit/framework/workflows/remove-workspace.md +90 -90
- package/kit/framework/workflows/research-phase.md +82 -82
- package/kit/framework/workflows/resume-project.md +326 -326
- package/kit/framework/workflows/review.md +228 -228
- package/kit/framework/workflows/session-report.md +146 -146
- package/kit/framework/workflows/settings.md +283 -283
- package/kit/framework/workflows/ship.md +228 -228
- package/kit/framework/workflows/stats.md +60 -60
- package/kit/framework/workflows/transition.md +671 -671
- package/kit/framework/workflows/ui-phase.md +302 -302
- package/kit/framework/workflows/ui-review.md +165 -165
- package/kit/framework/workflows/update.md +323 -323
- package/kit/framework/workflows/validate-phase.md +174 -174
- package/kit/framework/workflows/verify-phase.md +252 -252
- package/kit/framework/workflows/verify-work.md +637 -637
- package/kit/hooks/check-update.js +118 -118
- package/kit/hooks/context-monitor.js +163 -163
- package/kit/hooks/kit-attribution-reminder.cjs +92 -92
- package/kit/hooks/kit-router.cjs +137 -137
- package/kit/hooks/prompt-guard.js +103 -103
- package/kit/hooks/statusline.js +125 -125
- package/kit/hooks/workflow-guard.js +101 -101
- package/kit/settings.json +45 -45
- package/kit/skills/ai-prompt-characterization/SKILL.md +335 -335
- package/kit/skills/armadilhas-sistemas-distribuidos/SKILL.md +447 -447
- package/kit/skills/audit-log-multi-tenant/SKILL.md +340 -340
- package/kit/skills/b2b-saas-architecture/SKILL.md +300 -300
- package/kit/skills/consistencia-leitura-replica/SKILL.md +385 -385
- package/kit/skills/crm-lead-pipeline-patterns/SKILL.md +343 -343
- package/kit/skills/escolha-modelo-consistencia/SKILL.md +494 -494
- package/kit/skills/evolucao-schema-compativel/SKILL.md +448 -448
- package/kit/skills/evolution-go-whatsapp-integration/SKILL.md +322 -322
- package/kit/skills/example-skill/SKILL.md +42 -42
- package/kit/skills/legacy-api-only-applications/SKILL.md +358 -358
- package/kit/skills/legacy-characterization-tests/SKILL.md +330 -330
- package/kit/skills/legacy-effect-analysis/SKILL.md +331 -331
- package/kit/skills/legacy-extract-class/SKILL.md +203 -203
- package/kit/skills/legacy-programming-by-difference/SKILL.md +252 -252
- package/kit/skills/legacy-seams-and-test-harness/SKILL.md +460 -460
- package/kit/skills/legacy-shotgun-surgery/SKILL.md +286 -286
- package/kit/skills/legacy-sprout-wrap-techniques/SKILL.md +434 -434
- package/kit/skills/legacy-storytelling-naked-crc/SKILL.md +270 -270
- package/kit/skills/lgpd-multi-tenant-compliance/SKILL.md +340 -340
- package/kit/skills/member-invite-flow/SKILL.md +305 -305
- package/kit/skills/member-management-react-shadcn/SKILL.md +328 -328
- package/kit/skills/multi-tenant-performance-scaling/SKILL.md +316 -316
- package/kit/skills/multi-tenant-rls-hierarchy/SKILL.md +342 -342
- package/kit/skills/org-onboarding-flow/SKILL.md +257 -257
- package/kit/skills/org-switcher-react-pattern/SKILL.md +349 -349
- package/kit/skills/permission-gate-react-pattern/SKILL.md +271 -271
- package/kit/skills/postgres-isolamento-concorrencia/SKILL.md +552 -552
- package/kit/skills/pre-refactor-characterization/SKILL.md +421 -421
- package/kit/skills/rbac-permissions-matrix-supabase/SKILL.md +338 -338
- package/kit/skills/streams-eventos-cdc/SKILL.md +711 -711
- package/kit/skills/supabase-auth-hardening/SKILL.md +674 -674
- package/kit/skills/supabase-auth-hooks/SKILL.md +875 -875
- package/kit/skills/supabase-auth-methods/SKILL.md +486 -486
- package/kit/skills/supabase-auth-sessions/SKILL.md +579 -579
- package/kit/skills/supabase-auth-ssr/SKILL.md +306 -306
- package/kit/skills/supabase-branching-workflow/SKILL.md +544 -544
- package/kit/skills/supabase-ci-cd-github-actions/SKILL.md +880 -880
- package/kit/skills/supabase-column-level-security/SKILL.md +426 -426
- package/kit/skills/supabase-config-toml-remotes/SKILL.md +807 -807
- package/kit/skills/supabase-custom-claims-rbac/SKILL.md +472 -472
- package/kit/skills/supabase-edge-functions/SKILL.md +330 -330
- package/kit/skills/supabase-edge-functions-auth/SKILL.md +309 -309
- package/kit/skills/supabase-edge-functions-limits/SKILL.md +302 -302
- package/kit/skills/supabase-edge-functions-mcp-server/SKILL.md +279 -279
- package/kit/skills/supabase-edge-functions-testing/SKILL.md +277 -277
- package/kit/skills/supabase-edge-runtime-builtins/SKILL.md +357 -357
- package/kit/skills/supabase-enterprise-sso-saml/SKILL.md +545 -545
- package/kit/skills/supabase-jwt-signing-keys/SKILL.md +399 -399
- package/kit/skills/supabase-mfa/SKILL.md +488 -488
- package/kit/skills/supabase-migration-repair/SKILL.md +823 -823
- package/kit/skills/supabase-migrations/SKILL.md +297 -297
- package/kit/skills/supabase-oauth-server/SKILL.md +537 -537
- package/kit/skills/supabase-pgtap-testing/SKILL.md +1053 -1053
- package/kit/skills/supabase-postgres-roles/SKILL.md +392 -392
- package/kit/skills/supabase-realtime/SKILL.md +460 -460
- package/kit/skills/supabase-rls-defense-in-depth/SKILL.md +418 -418
- package/kit/skills/supabase-rls-policies/SKILL.md +635 -635
- package/kit/skills/supabase-social-oauth/SKILL.md +480 -480
- package/kit/skills/supabase-third-party-auth/SKILL.md +450 -450
- package/kit/skills/super-admin-platform-pattern/SKILL.md +326 -326
- package/kit/skills/tenant-quente-mitigacao/SKILL.md +605 -605
- package/kit/skills/ui-anti-padroes-ia/SKILL.md +261 -261
- package/kit/skills/ui-contexto-produto/SKILL.md +248 -248
- package/kit/skills/ui-cor-estrategia/SKILL.md +213 -213
- package/kit/skills/ui-critica-auditoria/SKILL.md +260 -260
- package/kit/skills/ui-motion-funcional/SKILL.md +264 -264
- package/kit/skills/ui-ritmo-espacial/SKILL.md +259 -259
- package/kit/skills/ui-tipografia/SKILL.md +211 -211
- package/kit/skills/whatsapp-conversation-state-machine/SKILL.md +287 -287
- package/kit/workflows/auditar-observabilidade-cobertura.workflow.js +250 -0
- package/package.json +65 -63
- package/src/core/kit.js +333 -216
- package/src/core/reflect.js +247 -247
- package/src/core/registry.js +123 -112
- package/src/core/reverse-sync.js +448 -372
- package/src/core/sync.js +477 -437
- package/src/core/watch.js +121 -121
- package/src/mcp-server/index.js +794 -794
|
@@ -1,263 +1,263 @@
|
|
|
1
|
-
<overview>
|
|
2
|
-
TDD é sobre qualidade de design, não métricas de cobertura. O ciclo vermelho-verde-refatorar força você a pensar sobre o comportamento antes da implementação, produzindo interfaces mais limpas e código mais testável.
|
|
3
|
-
|
|
4
|
-
**Princípio:** Se você pode descrever o comportamento como `expect(fn(input)).toBe(output)` antes de escrever `fn`, o TDD melhora o resultado.
|
|
5
|
-
|
|
6
|
-
**Insight chave:** O trabalho TDD é fundamentalmente mais pesado do que tarefas padrão — requer 2-3 ciclos de execução (VERMELHO → VERDE → REFATORAR), cada um com leituras de arquivo, execuções de teste e possível debugging. Funcionalidades TDD recebem planos dedicados para garantir que o contexto completo esteja disponível durante todo o ciclo.
|
|
7
|
-
</overview>
|
|
8
|
-
|
|
9
|
-
<when_to_use_tdd>
|
|
10
|
-
## Quando o TDD Melhora a Qualidade
|
|
11
|
-
|
|
12
|
-
**Candidatos a TDD (criar um plano TDD):**
|
|
13
|
-
- Lógica de negócio com entradas/saídas definidas
|
|
14
|
-
- Endpoints de API com contratos de requisição/resposta
|
|
15
|
-
- Transformações de dados, análise, formatação
|
|
16
|
-
- Regras e restrições de validação
|
|
17
|
-
- Algoritmos com comportamento testável
|
|
18
|
-
- Máquinas de estado e workflows
|
|
19
|
-
- Funções utilitárias com especificações claras
|
|
20
|
-
|
|
21
|
-
**Pular TDD (usar plano padrão com tarefas `type="auto"`):**
|
|
22
|
-
- Layout de UI, estilo, componentes visuais
|
|
23
|
-
- Alterações de configuração
|
|
24
|
-
- Código de cola conectando componentes existentes
|
|
25
|
-
- Scripts e migrações de uso único
|
|
26
|
-
- CRUD simples sem lógica de negócio
|
|
27
|
-
- Prototipagem exploratória
|
|
28
|
-
|
|
29
|
-
**Heurística:** Você pode escrever `expect(fn(input)).toBe(output)` antes de escrever `fn`?
|
|
30
|
-
→ Sim: Crie um plano TDD
|
|
31
|
-
→ Não: Use plano padrão, adicione testes depois se necessário
|
|
32
|
-
</when_to_use_tdd>
|
|
33
|
-
|
|
34
|
-
<tdd_plan_structure>
|
|
35
|
-
## Estrutura do Plano TDD
|
|
36
|
-
|
|
37
|
-
Cada plano TDD implementa **uma funcionalidade** através do ciclo completo VERMELHO-VERDE-REFATORAR.
|
|
38
|
-
|
|
39
|
-
```markdown
|
|
40
|
-
---
|
|
41
|
-
phase: XX-nome
|
|
42
|
-
plan: NN
|
|
43
|
-
type: tdd
|
|
44
|
-
---
|
|
45
|
-
|
|
46
|
-
<objective>
|
|
47
|
-
[O que é a funcionalidade e por quê]
|
|
48
|
-
Purpose: [Benefício de design do TDD para esta funcionalidade]
|
|
49
|
-
Output: [Funcionalidade funcionando e testada]
|
|
50
|
-
</objective>
|
|
51
|
-
|
|
52
|
-
<context>
|
|
53
|
-
@.planning/PROJECT.md
|
|
54
|
-
@.planning/ROADMAP.md
|
|
55
|
-
@relevant/source/files.ts
|
|
56
|
-
</context>
|
|
57
|
-
|
|
58
|
-
<feature>
|
|
59
|
-
<name>[Nome da funcionalidade]</name>
|
|
60
|
-
<files>[arquivo fonte, arquivo de teste]</files>
|
|
61
|
-
<behavior>
|
|
62
|
-
[Comportamento esperado em termos testáveis]
|
|
63
|
-
Casos: entrada → saída esperada
|
|
64
|
-
</behavior>
|
|
65
|
-
<implementation>[Como implementar uma vez que os testes passem]</implementation>
|
|
66
|
-
</feature>
|
|
67
|
-
|
|
68
|
-
<verification>
|
|
69
|
-
[Comando de teste que prova que a funcionalidade funciona]
|
|
70
|
-
</verification>
|
|
71
|
-
|
|
72
|
-
<success_criteria>
|
|
73
|
-
- Teste falhando escrito e commitado
|
|
74
|
-
- Implementação passa no teste
|
|
75
|
-
- Refatoração concluída (se necessário)
|
|
76
|
-
- Todos os 2-3 commits presentes
|
|
77
|
-
</success_criteria>
|
|
78
|
-
|
|
79
|
-
<output>
|
|
80
|
-
Após a conclusão, crie SUMMARY.md com:
|
|
81
|
-
- VERMELHO: Qual teste foi escrito, por que falhou
|
|
82
|
-
- VERDE: Qual implementação fez passar
|
|
83
|
-
- REFATORAR: Qual limpeza foi feita (se houver)
|
|
84
|
-
- Commits: Lista de commits produzidos
|
|
85
|
-
</output>
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
**Uma funcionalidade por plano TDD.** Se as funcionalidades são triviais o suficiente para agrupar, são triviais o suficiente para pular o TDD — use um plano padrão e adicione testes depois.
|
|
89
|
-
</tdd_plan_structure>
|
|
90
|
-
|
|
91
|
-
<execution_flow>
|
|
92
|
-
## Ciclo Vermelho-Verde-Refatorar
|
|
93
|
-
|
|
94
|
-
**VERMELHO - Escrever teste falhando:**
|
|
95
|
-
1. Criar arquivo de teste seguindo convenções do projeto
|
|
96
|
-
2. Escrever teste descrevendo o comportamento esperado (do elemento `<behavior>`)
|
|
97
|
-
3. Executar o teste - DEVE falhar
|
|
98
|
-
4. Se o teste passar: a funcionalidade existe ou o teste está errado. Investigue.
|
|
99
|
-
5. Commit: `test({fase}-{plano}): add failing test for [funcionalidade]`
|
|
100
|
-
|
|
101
|
-
**VERDE - Implementar para passar:**
|
|
102
|
-
1. Escrever código mínimo para fazer o teste passar
|
|
103
|
-
2. Sem astúcias, sem otimização — apenas faça funcionar
|
|
104
|
-
3. Executar o teste - DEVE passar
|
|
105
|
-
4. Commit: `feat({fase}-{plano}): implement [funcionalidade]`
|
|
106
|
-
|
|
107
|
-
**REFATORAR (se necessário):**
|
|
108
|
-
1. Limpar a implementação se houver melhorias óbvias
|
|
109
|
-
2. Executar os testes - DEVEM ainda passar
|
|
110
|
-
3. Commitar apenas se houver alterações: `refactor({fase}-{plano}): clean up [funcionalidade]`
|
|
111
|
-
|
|
112
|
-
**Resultado:** Cada plano TDD produz 2-3 commits atômicos.
|
|
113
|
-
</execution_flow>
|
|
114
|
-
|
|
115
|
-
<test_quality>
|
|
116
|
-
## Bons Testes vs. Testes Ruins
|
|
117
|
-
|
|
118
|
-
**Teste o comportamento, não a implementação:**
|
|
119
|
-
- Bom: "retorna string de data formatada"
|
|
120
|
-
- Ruim: "chama o helper formatDate com os parâmetros corretos"
|
|
121
|
-
- Os testes devem sobreviver a refatorações
|
|
122
|
-
|
|
123
|
-
**Um conceito por teste:**
|
|
124
|
-
- Bom: Testes separados para entrada válida, entrada vazia, entrada malformada
|
|
125
|
-
- Ruim: Teste único verificando todos os casos extremos com múltiplas asserções
|
|
126
|
-
|
|
127
|
-
**Nomes descritivos:**
|
|
128
|
-
- Bom: "should reject empty email", "returns null for invalid ID"
|
|
129
|
-
- Ruim: "test1", "handles error", "works correctly"
|
|
130
|
-
|
|
131
|
-
**Sem detalhes de implementação:**
|
|
132
|
-
- Bom: Testar API pública, comportamento observável
|
|
133
|
-
- Ruim: Mockar internos, testar métodos privados, verificar estado interno
|
|
134
|
-
</test_quality>
|
|
135
|
-
|
|
136
|
-
<framework_setup>
|
|
137
|
-
## Configuração do Framework de Teste (Se Nenhum Existir)
|
|
138
|
-
|
|
139
|
-
Ao executar um plano TDD mas nenhum framework de teste estiver configurado, configure-o como parte da fase VERMELHO:
|
|
140
|
-
|
|
141
|
-
**1. Detectar o tipo de projeto:**
|
|
142
|
-
```bash
|
|
143
|
-
# JavaScript/TypeScript
|
|
144
|
-
if [ -f package.json ]; then echo "node"; fi
|
|
145
|
-
|
|
146
|
-
# Python
|
|
147
|
-
if [ -f requirements.txt ] || [ -f pyproject.toml ]; then echo "python"; fi
|
|
148
|
-
|
|
149
|
-
# Go
|
|
150
|
-
if [ -f go.mod ]; then echo "go"; fi
|
|
151
|
-
|
|
152
|
-
# Rust
|
|
153
|
-
if [ -f Cargo.toml ]; then echo "rust"; fi
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
**2. Instalar o framework mínimo:**
|
|
157
|
-
| Projeto | Framework | Instalação |
|
|
158
|
-
|---------|-----------|------------|
|
|
159
|
-
| Node.js | Jest | `npm install -D jest @types/jest ts-jest` |
|
|
160
|
-
| Node.js (Vite) | Vitest | `npm install -D vitest` |
|
|
161
|
-
| Python | pytest | `pip install pytest` |
|
|
162
|
-
| Go | testing | Integrado |
|
|
163
|
-
| Rust | cargo test | Integrado |
|
|
164
|
-
|
|
165
|
-
**3. Criar config se necessário:**
|
|
166
|
-
- Jest: `jest.config.js` com preset ts-jest
|
|
167
|
-
- Vitest: `vitest.config.ts` com globals de teste
|
|
168
|
-
- pytest: `pytest.ini` ou seção `pyproject.toml`
|
|
169
|
-
|
|
170
|
-
**4. Verificar a configuração:**
|
|
171
|
-
```bash
|
|
172
|
-
# Executar suite de testes vazia — deve passar com 0 testes
|
|
173
|
-
npm test # Node
|
|
174
|
-
pytest # Python
|
|
175
|
-
go test ./... # Go
|
|
176
|
-
cargo test # Rust
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
**5. Criar primeiro arquivo de teste:**
|
|
180
|
-
Siga as convenções do projeto para localização dos testes:
|
|
181
|
-
- `*.test.ts` / `*.spec.ts` ao lado da fonte
|
|
182
|
-
- Diretório `__tests__/`
|
|
183
|
-
- Diretório `tests/` na raiz
|
|
184
|
-
|
|
185
|
-
A configuração do framework é um custo único incluído na fase VERMELHO do primeiro plano TDD.
|
|
186
|
-
</framework_setup>
|
|
187
|
-
|
|
188
|
-
<error_handling>
|
|
189
|
-
## Tratamento de Erros
|
|
190
|
-
|
|
191
|
-
**O teste não falha na fase VERMELHO:**
|
|
192
|
-
- A funcionalidade pode já existir — investigue
|
|
193
|
-
- O teste pode estar errado (não testando o que você pensa)
|
|
194
|
-
- Corrija antes de prosseguir
|
|
195
|
-
|
|
196
|
-
**O teste não passa na fase VERDE:**
|
|
197
|
-
- Depure a implementação
|
|
198
|
-
- Não pule para refatorar
|
|
199
|
-
- Continue iterando até ficar verde
|
|
200
|
-
|
|
201
|
-
**Os testes falham na fase REFATORAR:**
|
|
202
|
-
- Desfaça a refatoração
|
|
203
|
-
- O commit foi prematuro
|
|
204
|
-
- Refatore em passos menores
|
|
205
|
-
|
|
206
|
-
**Testes não relacionados quebram:**
|
|
207
|
-
- Pare e investigue
|
|
208
|
-
- Pode indicar problema de acoplamento
|
|
209
|
-
- Corrija antes de prosseguir
|
|
210
|
-
</error_handling>
|
|
211
|
-
|
|
212
|
-
<commit_pattern>
|
|
213
|
-
## Padrão de Commit para Planos TDD
|
|
214
|
-
|
|
215
|
-
Planos TDD produzem 2-3 commits atômicos (um por fase):
|
|
216
|
-
|
|
217
|
-
```
|
|
218
|
-
test(08-02): add failing test for email validation
|
|
219
|
-
|
|
220
|
-
- Tests valid email formats accepted
|
|
221
|
-
- Tests invalid formats rejected
|
|
222
|
-
- Tests empty input handling
|
|
223
|
-
|
|
224
|
-
feat(08-02): implement email validation
|
|
225
|
-
|
|
226
|
-
- Regex pattern matches RFC 5322
|
|
227
|
-
- Returns boolean for validity
|
|
228
|
-
- Handles edge cases (empty, null)
|
|
229
|
-
|
|
230
|
-
refactor(08-02): extract regex to constant (optional)
|
|
231
|
-
|
|
232
|
-
- Moved pattern to EMAIL_REGEX constant
|
|
233
|
-
- No behavior changes
|
|
234
|
-
- Tests still pass
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
**Comparação com planos padrão:**
|
|
238
|
-
- Planos padrão: 1 commit por tarefa, 2-4 commits por plano
|
|
239
|
-
- Planos TDD: 2-3 commits para uma única funcionalidade
|
|
240
|
-
|
|
241
|
-
Ambos seguem o mesmo formato: `{tipo}({fase}-{plano}): {descrição}`
|
|
242
|
-
|
|
243
|
-
**Benefícios:**
|
|
244
|
-
- Cada commit é revertível independentemente
|
|
245
|
-
- `git bisect` funciona no nível de commit
|
|
246
|
-
- Histórico claro mostrando disciplina TDD
|
|
247
|
-
- Consistente com a estratégia geral de commits
|
|
248
|
-
</commit_pattern>
|
|
249
|
-
|
|
250
|
-
<context_budget>
|
|
251
|
-
## Orçamento de Contexto
|
|
252
|
-
|
|
253
|
-
Planos TDD visam **~40% de uso de contexto** (menor que os ~50% dos planos padrão).
|
|
254
|
-
|
|
255
|
-
Por que menor:
|
|
256
|
-
- Fase VERMELHO: escrever teste, executar teste, potencialmente depurar por que não falhou
|
|
257
|
-
- Fase VERDE: implementar, executar teste, potencialmente iterar em falhas
|
|
258
|
-
- Fase REFATORAR: modificar código, executar testes, verificar se não houve regressões
|
|
259
|
-
|
|
260
|
-
Cada fase envolve leitura de arquivos, execução de comandos, análise de saída. O vai e vem é inerentemente mais pesado do que a execução linear de tarefas.
|
|
261
|
-
|
|
262
|
-
O foco em uma única funcionalidade garante qualidade total durante todo o ciclo.
|
|
263
|
-
</context_budget>
|
|
1
|
+
<overview>
|
|
2
|
+
TDD é sobre qualidade de design, não métricas de cobertura. O ciclo vermelho-verde-refatorar força você a pensar sobre o comportamento antes da implementação, produzindo interfaces mais limpas e código mais testável.
|
|
3
|
+
|
|
4
|
+
**Princípio:** Se você pode descrever o comportamento como `expect(fn(input)).toBe(output)` antes de escrever `fn`, o TDD melhora o resultado.
|
|
5
|
+
|
|
6
|
+
**Insight chave:** O trabalho TDD é fundamentalmente mais pesado do que tarefas padrão — requer 2-3 ciclos de execução (VERMELHO → VERDE → REFATORAR), cada um com leituras de arquivo, execuções de teste e possível debugging. Funcionalidades TDD recebem planos dedicados para garantir que o contexto completo esteja disponível durante todo o ciclo.
|
|
7
|
+
</overview>
|
|
8
|
+
|
|
9
|
+
<when_to_use_tdd>
|
|
10
|
+
## Quando o TDD Melhora a Qualidade
|
|
11
|
+
|
|
12
|
+
**Candidatos a TDD (criar um plano TDD):**
|
|
13
|
+
- Lógica de negócio com entradas/saídas definidas
|
|
14
|
+
- Endpoints de API com contratos de requisição/resposta
|
|
15
|
+
- Transformações de dados, análise, formatação
|
|
16
|
+
- Regras e restrições de validação
|
|
17
|
+
- Algoritmos com comportamento testável
|
|
18
|
+
- Máquinas de estado e workflows
|
|
19
|
+
- Funções utilitárias com especificações claras
|
|
20
|
+
|
|
21
|
+
**Pular TDD (usar plano padrão com tarefas `type="auto"`):**
|
|
22
|
+
- Layout de UI, estilo, componentes visuais
|
|
23
|
+
- Alterações de configuração
|
|
24
|
+
- Código de cola conectando componentes existentes
|
|
25
|
+
- Scripts e migrações de uso único
|
|
26
|
+
- CRUD simples sem lógica de negócio
|
|
27
|
+
- Prototipagem exploratória
|
|
28
|
+
|
|
29
|
+
**Heurística:** Você pode escrever `expect(fn(input)).toBe(output)` antes de escrever `fn`?
|
|
30
|
+
→ Sim: Crie um plano TDD
|
|
31
|
+
→ Não: Use plano padrão, adicione testes depois se necessário
|
|
32
|
+
</when_to_use_tdd>
|
|
33
|
+
|
|
34
|
+
<tdd_plan_structure>
|
|
35
|
+
## Estrutura do Plano TDD
|
|
36
|
+
|
|
37
|
+
Cada plano TDD implementa **uma funcionalidade** através do ciclo completo VERMELHO-VERDE-REFATORAR.
|
|
38
|
+
|
|
39
|
+
```markdown
|
|
40
|
+
---
|
|
41
|
+
phase: XX-nome
|
|
42
|
+
plan: NN
|
|
43
|
+
type: tdd
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
<objective>
|
|
47
|
+
[O que é a funcionalidade e por quê]
|
|
48
|
+
Purpose: [Benefício de design do TDD para esta funcionalidade]
|
|
49
|
+
Output: [Funcionalidade funcionando e testada]
|
|
50
|
+
</objective>
|
|
51
|
+
|
|
52
|
+
<context>
|
|
53
|
+
@.planning/PROJECT.md
|
|
54
|
+
@.planning/ROADMAP.md
|
|
55
|
+
@relevant/source/files.ts
|
|
56
|
+
</context>
|
|
57
|
+
|
|
58
|
+
<feature>
|
|
59
|
+
<name>[Nome da funcionalidade]</name>
|
|
60
|
+
<files>[arquivo fonte, arquivo de teste]</files>
|
|
61
|
+
<behavior>
|
|
62
|
+
[Comportamento esperado em termos testáveis]
|
|
63
|
+
Casos: entrada → saída esperada
|
|
64
|
+
</behavior>
|
|
65
|
+
<implementation>[Como implementar uma vez que os testes passem]</implementation>
|
|
66
|
+
</feature>
|
|
67
|
+
|
|
68
|
+
<verification>
|
|
69
|
+
[Comando de teste que prova que a funcionalidade funciona]
|
|
70
|
+
</verification>
|
|
71
|
+
|
|
72
|
+
<success_criteria>
|
|
73
|
+
- Teste falhando escrito e commitado
|
|
74
|
+
- Implementação passa no teste
|
|
75
|
+
- Refatoração concluída (se necessário)
|
|
76
|
+
- Todos os 2-3 commits presentes
|
|
77
|
+
</success_criteria>
|
|
78
|
+
|
|
79
|
+
<output>
|
|
80
|
+
Após a conclusão, crie SUMMARY.md com:
|
|
81
|
+
- VERMELHO: Qual teste foi escrito, por que falhou
|
|
82
|
+
- VERDE: Qual implementação fez passar
|
|
83
|
+
- REFATORAR: Qual limpeza foi feita (se houver)
|
|
84
|
+
- Commits: Lista de commits produzidos
|
|
85
|
+
</output>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Uma funcionalidade por plano TDD.** Se as funcionalidades são triviais o suficiente para agrupar, são triviais o suficiente para pular o TDD — use um plano padrão e adicione testes depois.
|
|
89
|
+
</tdd_plan_structure>
|
|
90
|
+
|
|
91
|
+
<execution_flow>
|
|
92
|
+
## Ciclo Vermelho-Verde-Refatorar
|
|
93
|
+
|
|
94
|
+
**VERMELHO - Escrever teste falhando:**
|
|
95
|
+
1. Criar arquivo de teste seguindo convenções do projeto
|
|
96
|
+
2. Escrever teste descrevendo o comportamento esperado (do elemento `<behavior>`)
|
|
97
|
+
3. Executar o teste - DEVE falhar
|
|
98
|
+
4. Se o teste passar: a funcionalidade existe ou o teste está errado. Investigue.
|
|
99
|
+
5. Commit: `test({fase}-{plano}): add failing test for [funcionalidade]`
|
|
100
|
+
|
|
101
|
+
**VERDE - Implementar para passar:**
|
|
102
|
+
1. Escrever código mínimo para fazer o teste passar
|
|
103
|
+
2. Sem astúcias, sem otimização — apenas faça funcionar
|
|
104
|
+
3. Executar o teste - DEVE passar
|
|
105
|
+
4. Commit: `feat({fase}-{plano}): implement [funcionalidade]`
|
|
106
|
+
|
|
107
|
+
**REFATORAR (se necessário):**
|
|
108
|
+
1. Limpar a implementação se houver melhorias óbvias
|
|
109
|
+
2. Executar os testes - DEVEM ainda passar
|
|
110
|
+
3. Commitar apenas se houver alterações: `refactor({fase}-{plano}): clean up [funcionalidade]`
|
|
111
|
+
|
|
112
|
+
**Resultado:** Cada plano TDD produz 2-3 commits atômicos.
|
|
113
|
+
</execution_flow>
|
|
114
|
+
|
|
115
|
+
<test_quality>
|
|
116
|
+
## Bons Testes vs. Testes Ruins
|
|
117
|
+
|
|
118
|
+
**Teste o comportamento, não a implementação:**
|
|
119
|
+
- Bom: "retorna string de data formatada"
|
|
120
|
+
- Ruim: "chama o helper formatDate com os parâmetros corretos"
|
|
121
|
+
- Os testes devem sobreviver a refatorações
|
|
122
|
+
|
|
123
|
+
**Um conceito por teste:**
|
|
124
|
+
- Bom: Testes separados para entrada válida, entrada vazia, entrada malformada
|
|
125
|
+
- Ruim: Teste único verificando todos os casos extremos com múltiplas asserções
|
|
126
|
+
|
|
127
|
+
**Nomes descritivos:**
|
|
128
|
+
- Bom: "should reject empty email", "returns null for invalid ID"
|
|
129
|
+
- Ruim: "test1", "handles error", "works correctly"
|
|
130
|
+
|
|
131
|
+
**Sem detalhes de implementação:**
|
|
132
|
+
- Bom: Testar API pública, comportamento observável
|
|
133
|
+
- Ruim: Mockar internos, testar métodos privados, verificar estado interno
|
|
134
|
+
</test_quality>
|
|
135
|
+
|
|
136
|
+
<framework_setup>
|
|
137
|
+
## Configuração do Framework de Teste (Se Nenhum Existir)
|
|
138
|
+
|
|
139
|
+
Ao executar um plano TDD mas nenhum framework de teste estiver configurado, configure-o como parte da fase VERMELHO:
|
|
140
|
+
|
|
141
|
+
**1. Detectar o tipo de projeto:**
|
|
142
|
+
```bash
|
|
143
|
+
# JavaScript/TypeScript
|
|
144
|
+
if [ -f package.json ]; then echo "node"; fi
|
|
145
|
+
|
|
146
|
+
# Python
|
|
147
|
+
if [ -f requirements.txt ] || [ -f pyproject.toml ]; then echo "python"; fi
|
|
148
|
+
|
|
149
|
+
# Go
|
|
150
|
+
if [ -f go.mod ]; then echo "go"; fi
|
|
151
|
+
|
|
152
|
+
# Rust
|
|
153
|
+
if [ -f Cargo.toml ]; then echo "rust"; fi
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**2. Instalar o framework mínimo:**
|
|
157
|
+
| Projeto | Framework | Instalação |
|
|
158
|
+
|---------|-----------|------------|
|
|
159
|
+
| Node.js | Jest | `npm install -D jest @types/jest ts-jest` |
|
|
160
|
+
| Node.js (Vite) | Vitest | `npm install -D vitest` |
|
|
161
|
+
| Python | pytest | `pip install pytest` |
|
|
162
|
+
| Go | testing | Integrado |
|
|
163
|
+
| Rust | cargo test | Integrado |
|
|
164
|
+
|
|
165
|
+
**3. Criar config se necessário:**
|
|
166
|
+
- Jest: `jest.config.js` com preset ts-jest
|
|
167
|
+
- Vitest: `vitest.config.ts` com globals de teste
|
|
168
|
+
- pytest: `pytest.ini` ou seção `pyproject.toml`
|
|
169
|
+
|
|
170
|
+
**4. Verificar a configuração:**
|
|
171
|
+
```bash
|
|
172
|
+
# Executar suite de testes vazia — deve passar com 0 testes
|
|
173
|
+
npm test # Node
|
|
174
|
+
pytest # Python
|
|
175
|
+
go test ./... # Go
|
|
176
|
+
cargo test # Rust
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**5. Criar primeiro arquivo de teste:**
|
|
180
|
+
Siga as convenções do projeto para localização dos testes:
|
|
181
|
+
- `*.test.ts` / `*.spec.ts` ao lado da fonte
|
|
182
|
+
- Diretório `__tests__/`
|
|
183
|
+
- Diretório `tests/` na raiz
|
|
184
|
+
|
|
185
|
+
A configuração do framework é um custo único incluído na fase VERMELHO do primeiro plano TDD.
|
|
186
|
+
</framework_setup>
|
|
187
|
+
|
|
188
|
+
<error_handling>
|
|
189
|
+
## Tratamento de Erros
|
|
190
|
+
|
|
191
|
+
**O teste não falha na fase VERMELHO:**
|
|
192
|
+
- A funcionalidade pode já existir — investigue
|
|
193
|
+
- O teste pode estar errado (não testando o que você pensa)
|
|
194
|
+
- Corrija antes de prosseguir
|
|
195
|
+
|
|
196
|
+
**O teste não passa na fase VERDE:**
|
|
197
|
+
- Depure a implementação
|
|
198
|
+
- Não pule para refatorar
|
|
199
|
+
- Continue iterando até ficar verde
|
|
200
|
+
|
|
201
|
+
**Os testes falham na fase REFATORAR:**
|
|
202
|
+
- Desfaça a refatoração
|
|
203
|
+
- O commit foi prematuro
|
|
204
|
+
- Refatore em passos menores
|
|
205
|
+
|
|
206
|
+
**Testes não relacionados quebram:**
|
|
207
|
+
- Pare e investigue
|
|
208
|
+
- Pode indicar problema de acoplamento
|
|
209
|
+
- Corrija antes de prosseguir
|
|
210
|
+
</error_handling>
|
|
211
|
+
|
|
212
|
+
<commit_pattern>
|
|
213
|
+
## Padrão de Commit para Planos TDD
|
|
214
|
+
|
|
215
|
+
Planos TDD produzem 2-3 commits atômicos (um por fase):
|
|
216
|
+
|
|
217
|
+
```
|
|
218
|
+
test(08-02): add failing test for email validation
|
|
219
|
+
|
|
220
|
+
- Tests valid email formats accepted
|
|
221
|
+
- Tests invalid formats rejected
|
|
222
|
+
- Tests empty input handling
|
|
223
|
+
|
|
224
|
+
feat(08-02): implement email validation
|
|
225
|
+
|
|
226
|
+
- Regex pattern matches RFC 5322
|
|
227
|
+
- Returns boolean for validity
|
|
228
|
+
- Handles edge cases (empty, null)
|
|
229
|
+
|
|
230
|
+
refactor(08-02): extract regex to constant (optional)
|
|
231
|
+
|
|
232
|
+
- Moved pattern to EMAIL_REGEX constant
|
|
233
|
+
- No behavior changes
|
|
234
|
+
- Tests still pass
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
**Comparação com planos padrão:**
|
|
238
|
+
- Planos padrão: 1 commit por tarefa, 2-4 commits por plano
|
|
239
|
+
- Planos TDD: 2-3 commits para uma única funcionalidade
|
|
240
|
+
|
|
241
|
+
Ambos seguem o mesmo formato: `{tipo}({fase}-{plano}): {descrição}`
|
|
242
|
+
|
|
243
|
+
**Benefícios:**
|
|
244
|
+
- Cada commit é revertível independentemente
|
|
245
|
+
- `git bisect` funciona no nível de commit
|
|
246
|
+
- Histórico claro mostrando disciplina TDD
|
|
247
|
+
- Consistente com a estratégia geral de commits
|
|
248
|
+
</commit_pattern>
|
|
249
|
+
|
|
250
|
+
<context_budget>
|
|
251
|
+
## Orçamento de Contexto
|
|
252
|
+
|
|
253
|
+
Planos TDD visam **~40% de uso de contexto** (menor que os ~50% dos planos padrão).
|
|
254
|
+
|
|
255
|
+
Por que menor:
|
|
256
|
+
- Fase VERMELHO: escrever teste, executar teste, potencialmente depurar por que não falhou
|
|
257
|
+
- Fase VERDE: implementar, executar teste, potencialmente iterar em falhas
|
|
258
|
+
- Fase REFATORAR: modificar código, executar testes, verificar se não houve regressões
|
|
259
|
+
|
|
260
|
+
Cada fase envolve leitura de arquivos, execução de comandos, análise de saída. O vai e vem é inerentemente mais pesado do que a execução linear de tarefas.
|
|
261
|
+
|
|
262
|
+
O foco em uma única funcionalidade garante qualidade total durante todo o ciclo.
|
|
263
|
+
</context_budget>
|