jarvis-ai-framework 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.
Files changed (240) hide show
  1. package/AGENTS.md +416 -0
  2. package/LICENSE +21 -0
  3. package/README.md +190 -0
  4. package/agents/AGENTS.md +234 -0
  5. package/agents/README.md +309 -0
  6. package/agents/engineering/data/eng.data-engineer.agent.md +309 -0
  7. package/agents/engineering/eng.agent.md +303 -0
  8. package/agents/engineering/eng.bug-hunter.md +386 -0
  9. package/agents/engineering/eng.cybersecurity.agent.md +503 -0
  10. package/agents/engineering/eng.dev-code-reviewer.md +148 -0
  11. package/agents/engineering/eng.docs-writer.md +152 -0
  12. package/agents/engineering/eng.frontend.agent.md +117 -0
  13. package/agents/engineering/eng.rpa.agent.md +215 -0
  14. package/agents/engineering/eng.tech-analyst.agent.md +102 -0
  15. package/agents/engineering/eng.ux-designer.agent.md +193 -0
  16. package/agents/engineering/qa/eng.qa.cypress-specialist.md +109 -0
  17. package/agents/engineering/qa/eng.qa.quality-champion-task-agent.md +85 -0
  18. package/agents/engineering/qa/eng.qa.quality-strategist.md +111 -0
  19. package/agents/engineering/qa/eng.qa.test-architect.md +400 -0
  20. package/agents/engineering/qa/eng.qa.test-planner.md +477 -0
  21. package/agents/engineering/qa/eng.qa.testing-engineer.md +339 -0
  22. package/agents/product/prod.pm-checker.md +52 -0
  23. package/bin/commands/docs-publish.js +184 -0
  24. package/bin/commands/docs-sync.js +139 -0
  25. package/bin/commands/info.js +87 -0
  26. package/bin/commands/init.js +237 -0
  27. package/bin/commands/install-rtk.js +90 -0
  28. package/bin/commands/list.js +48 -0
  29. package/bin/commands/qa-signoff.js +112 -0
  30. package/bin/commands/whoami.js +43 -0
  31. package/bin/jarvis.js +159 -0
  32. package/bin/lib/auth/session.js +56 -0
  33. package/bin/lib/config/constants.js +123 -0
  34. package/bin/lib/config/ide-config.js +233 -0
  35. package/bin/lib/core/scanner.js +124 -0
  36. package/bin/lib/core/sync-engine.js +551 -0
  37. package/bin/lib/docs/fetch-file.sh +41 -0
  38. package/bin/lib/docs/publish-file.sh +284 -0
  39. package/bin/lib/docs/validate-frontmatter.js +157 -0
  40. package/bin/lib/env-loader.js +198 -0
  41. package/bin/lib/tasks/comment.js +131 -0
  42. package/bin/lib/utils/git-parser.js +145 -0
  43. package/bin/lib/utils/logger.js +104 -0
  44. package/bin/lib/utils/npmrc-parser.js +106 -0
  45. package/bin/lib/utils/paths.js +55 -0
  46. package/bin/lib/utils/ui.js +59 -0
  47. package/bin/lib/vcs/api.js +312 -0
  48. package/bin/lib/vcs/create-issue.js +43 -0
  49. package/bin/lib/vcs/create-merge.js +43 -0
  50. package/bin/lib/vcs/fetch-raw.js +30 -0
  51. package/bin/postinstall.js +41 -0
  52. package/members.md +25 -0
  53. package/package.json +55 -0
  54. package/rules/AGENTS.md +205 -0
  55. package/rules/engineering/data/data-rules.md +200 -0
  56. package/rules/engineering/eng-rules.md +243 -0
  57. package/rules/engineering/eng-security-rules.md +186 -0
  58. package/rules/engineering/eng.breakdown-subtasks-rules.md +585 -0
  59. package/rules/engineering/eng.bump-rules.md +27 -0
  60. package/rules/engineering/eng.docs-scraping-rules.md +64 -0
  61. package/rules/engineering/eng.downstream-flow-rules.md +297 -0
  62. package/rules/engineering/eng.integrations-rules.md +73 -0
  63. package/rules/engineering/eng.plan-rules.md +333 -0
  64. package/rules/engineering/eng.pr-rules.md +359 -0
  65. package/rules/engineering/eng.pre-pr-rules.md +103 -0
  66. package/rules/engineering/eng.start-rules.md +246 -0
  67. package/rules/engineering/eng.tech-spec-rules.md +968 -0
  68. package/rules/engineering/eng.work-rules.md +312 -0
  69. package/rules/engineering/frontend/eng.frontend-rules.md +147 -0
  70. package/rules/engineering/qa/eng.qa.cypress-standards-rules.md +259 -0
  71. package/rules/engineering/qa/eng.qa.exploratory-session-rules.md +137 -0
  72. package/rules/engineering/qa/eng.qa.quality-gate-scoring-rules.md +181 -0
  73. package/rules/engineering/qa/eng.qa.tech-spec-validation-criteria-rules.md +120 -0
  74. package/rules/engineering/rpa/eng.rpa-rules.md +230 -0
  75. package/rules/product/README.md +24 -0
  76. package/rules/product/prod-rules.md +151 -0
  77. package/rules/rtk-rules.md +68 -0
  78. package/skills/AGENTS.md +290 -0
  79. package/skills/SKILLS-ROADMAP.md +333 -0
  80. package/skills/churn-audit/SKILL.md +385 -0
  81. package/skills/context-detect/SKILL.md +399 -0
  82. package/skills/context-detect/assets/context-profile-template.md +127 -0
  83. package/skills/docs-central/README.md +310 -0
  84. package/skills/docs-central/SKILL.md +423 -0
  85. package/skills/docs-index/SKILL.md +377 -0
  86. package/skills/eng-ai-engineer/SKILL.md +296 -0
  87. package/skills/eng-arch-c4/SKILL.md +358 -0
  88. package/skills/eng-arch-c4/assets/example-code.md +189 -0
  89. package/skills/eng-arch-c4/assets/example-component.md +105 -0
  90. package/skills/eng-arch-c4/assets/example-container.md +104 -0
  91. package/skills/eng-arch-c4/assets/example-context.md +81 -0
  92. package/skills/eng-backend/SKILL.md +776 -0
  93. package/skills/eng-browser-extension-builder/SKILL.md +385 -0
  94. package/skills/eng-cybersecurity/SKILL.md +645 -0
  95. package/skills/eng-data-bi/SKILL.md +199 -0
  96. package/skills/eng-data-debug/SKILL.md +307 -0
  97. package/skills/eng-data-engineer/SKILL.md +256 -0
  98. package/skills/eng-data-onboard/SKILL.md +310 -0
  99. package/skills/eng-data-orchestrator/SKILL.md +426 -0
  100. package/skills/eng-design-system/SKILL.md +619 -0
  101. package/skills/eng-docs-write/SKILL.md +312 -0
  102. package/skills/eng-frontend/SKILL.md +913 -0
  103. package/skills/eng-jira-comment/SKILL.md +17 -0
  104. package/skills/eng-microfrontend/SKILL.md +602 -0
  105. package/skills/eng-ms-trace/SKILL.md +469 -0
  106. package/skills/eng-nestjs/SKILL.md +791 -0
  107. package/skills/eng-performance-engineer/SKILL.md +312 -0
  108. package/skills/eng-pr/SKILL.md +339 -0
  109. package/skills/eng-qa-a11y-audit/SKILL.md +269 -0
  110. package/skills/eng-qa-bug-report/SKILL.md +1088 -0
  111. package/skills/eng-qa-bug-report/TASK_MANAGERS.md +138 -0
  112. package/skills/eng-qa-cypress-e2e/SKILL.md +177 -0
  113. package/skills/eng-qa-dev-guide/SKILL.md +164 -0
  114. package/skills/eng-qa-e2e/SKILL.md +400 -0
  115. package/skills/eng-qa-e2e-spec-writer/SKILL.md +322 -0
  116. package/skills/eng-qa-exploratory/SKILL.md +188 -0
  117. package/skills/eng-qa-gate/SKILL.md +370 -0
  118. package/skills/eng-qa-gate/assets/checklist-validacao.md +291 -0
  119. package/skills/eng-qa-graphql-contract/SKILL.md +256 -0
  120. package/skills/eng-qa-quality-report/SKILL.md +412 -0
  121. package/skills/eng-qa-test-plan/SKILL.md +466 -0
  122. package/skills/eng-qa-test-plan/assets/test-coverage-template.md +92 -0
  123. package/skills/eng-qa-test-plan/assets/test-patterns.md +178 -0
  124. package/skills/eng-qa-testsprite/SKILL.md +325 -0
  125. package/skills/eng-qa-testsprite/references/testsprite-mcp.md +224 -0
  126. package/skills/eng-qa-unit-test/SKILL.md +471 -0
  127. package/skills/eng-rabbitmq/SKILL.md +661 -0
  128. package/skills/eng-scraper/SKILL.md +683 -0
  129. package/skills/eng-scraper-robot-builder/SKILL.md +370 -0
  130. package/skills/eng-security-patch/SKILL.md +378 -0
  131. package/skills/eng-security-triage/SKILL.md +266 -0
  132. package/skills/eng-task-comment/SKILL.md +60 -0
  133. package/skills/eng-tech-analyst/SKILL.md +529 -0
  134. package/skills/eng-threat-model/SKILL.md +161 -0
  135. package/skills/init-jarvis/SKILL.md +1304 -0
  136. package/skills/init-jarvis/assets/mcp-configs.md +389 -0
  137. package/skills/init-jarvis/assets/onboarding-checklist.md +104 -0
  138. package/skills/init-jarvis/assets/setup-guide.md +360 -0
  139. package/skills/lovable-prompt-generator/SKILL.md +304 -0
  140. package/skills/prod-roadmap-report/README.md +303 -0
  141. package/skills/prod-roadmap-report/SKILL.md +198 -0
  142. package/skills/prod-roadmap-report/commands/status.compiled.single.team.md +23 -0
  143. package/skills/prod-roadmap-report/commands/status.list.projects.md +17 -0
  144. package/skills/prod-roadmap-report/commands/status.memory.md +192 -0
  145. package/skills/prod-roadmap-report/commands/status.roadmap.preview.md +94 -0
  146. package/skills/prod-roadmap-report/references/detailed-guide.md +236 -0
  147. package/skills/prod-roadmap-report/rules/detailed-guide.md +237 -0
  148. package/skills/prod-roadmap-report/rules/status-report-rules.md +44 -0
  149. package/skills/prod-roadmap-report/templates/template-multiple-teams-compiled-status.md +53 -0
  150. package/skills/prod-roadmap-report/templates/template-projects-list.md +23 -0
  151. package/skills/prod-roadmap-report/templates/template-single-team-compiled-status.md +60 -0
  152. package/skills/prod-roadmap-report/templates/template-single-team-status.md +49 -0
  153. package/skills/prod-specs/SKILL.md +108 -0
  154. package/skills/prod-specs/references/prod.spec.clarify.md +176 -0
  155. package/skills/prod-specs/references/prod.spec.epic.md +107 -0
  156. package/skills/prod-specs/references/prod.spec.frd.md +135 -0
  157. package/skills/prod-specs/references/prod.spec.issue.md +145 -0
  158. package/skills/prod-specs/references/prod.spec.prd.md +118 -0
  159. package/skills/prod-specs/rules/prod-spec-rules.md +186 -0
  160. package/skills/prod-specs/templates/prod-breakdown-template.md +136 -0
  161. package/skills/prod-specs/templates/prod-epic-template.md +76 -0
  162. package/skills/prod-specs/templates/prod-frd-template.md +172 -0
  163. package/skills/prod-specs/templates/prod-issue-template.md +68 -0
  164. package/skills/prod-specs/templates/prod-prd-full-template.md +159 -0
  165. package/skills/prod-specs/templates/prod-prd-template.md +173 -0
  166. package/skills/prod-specs-update/SKILL.md +272 -0
  167. package/skills/report-issue/SKILL.md +156 -0
  168. package/taxonomy.md +270 -0
  169. package/templates/AGENTS.md +189 -0
  170. package/templates/CDD aplicado a Prompts.md +182 -0
  171. package/templates/ENV-template.md +187 -0
  172. package/templates/engineering/AGENTS-template.md +71 -0
  173. package/templates/engineering/ARD-template.md +193 -0
  174. package/templates/engineering/CONTACTS-template.md +135 -0
  175. package/templates/engineering/PR-template.md +40 -0
  176. package/templates/engineering/RFC-Playbook.md +325 -0
  177. package/templates/engineering/RFC-template.md +199 -0
  178. package/templates/engineering/architecture-template.md +277 -0
  179. package/templates/engineering/breakdown-subtasks-template.md +582 -0
  180. package/templates/engineering/c4-model-template.md +516 -0
  181. package/templates/engineering/data-contract-template.md +135 -0
  182. package/templates/engineering/data-pipeline-template.md +163 -0
  183. package/templates/engineering/plan-template.md +255 -0
  184. package/templates/engineering/qa/eng.qa.quality-gate-examples-template.md +311 -0
  185. package/templates/engineering/qa/eng.qa.quality-gate-report-template.md +249 -0
  186. package/templates/engineering/qa/qa.cypress-test-template.md +172 -0
  187. package/templates/engineering/qa/qa.exploratory-session-template.md +148 -0
  188. package/templates/engineering/qa/qa.quality-report-template.md +130 -0
  189. package/templates/engineering/qa/qa.release-signoff-template.md +54 -0
  190. package/templates/engineering/qa/qa.sprint-plan-template.md +49 -0
  191. package/templates/engineering/swagger-template.md +145 -0
  192. package/templates/engineering/tech-spec-template.md +497 -0
  193. package/templates/engineering/work-progress-template.md +155 -0
  194. package/workflows/AGENTS.md +240 -0
  195. package/workflows/README.md +160 -0
  196. package/workflows/all-tools.md +11 -0
  197. package/workflows/engineering/data/data.contract.md +202 -0
  198. package/workflows/engineering/data/data.new-pipeline.md +234 -0
  199. package/workflows/engineering/eng.breakdown-subtasks.md +420 -0
  200. package/workflows/engineering/eng.bug-audit.md +591 -0
  201. package/workflows/engineering/eng.build-tech-spec.md +1116 -0
  202. package/workflows/engineering/eng.create-ard-from-code.md +259 -0
  203. package/workflows/engineering/eng.create-ard.md +382 -0
  204. package/workflows/engineering/eng.create-rfc.md +245 -0
  205. package/workflows/engineering/eng.debug.md +479 -0
  206. package/workflows/engineering/eng.docs.md +40 -0
  207. package/workflows/engineering/eng.light-arch.md +84 -0
  208. package/workflows/engineering/eng.plan.md +213 -0
  209. package/workflows/engineering/eng.pr.md +466 -0
  210. package/workflows/engineering/eng.pre-pr.md +167 -0
  211. package/workflows/engineering/eng.review.md +185 -0
  212. package/workflows/engineering/eng.rpa.robot.md +342 -0
  213. package/workflows/engineering/eng.security-audit.md +312 -0
  214. package/workflows/engineering/eng.security-incident.md +275 -0
  215. package/workflows/engineering/eng.security-pipeline.md +210 -0
  216. package/workflows/engineering/eng.security-review.md +235 -0
  217. package/workflows/engineering/eng.start.md +494 -0
  218. package/workflows/engineering/eng.work.md +558 -0
  219. package/workflows/engineering/frontend/eng.frontend-component.md +190 -0
  220. package/workflows/engineering/frontend/eng.frontend-perf-audit.md +375 -0
  221. package/workflows/engineering/frontend/eng.frontend-review.md +185 -0
  222. package/workflows/engineering/qa/eng.qa-dev-quality-guide.md +51 -0
  223. package/workflows/engineering/qa/eng.qa-e2e-test-generation.md +51 -0
  224. package/workflows/engineering/qa/eng.qa-exploratory-session.md +60 -0
  225. package/workflows/engineering/qa/eng.qa-quality-gate-validation.md +202 -0
  226. package/workflows/engineering/qa/eng.qa-quality-report.md +83 -0
  227. package/workflows/engineering/qa/eng.qa-refinement-entry.md +83 -0
  228. package/workflows/engineering/qa/eng.qa-release-signoff.md +170 -0
  229. package/workflows/engineering/qa/eng.qa-sprint-planning.md +100 -0
  230. package/workflows/engineering/ta/eng.ta.atendimento.md +93 -0
  231. package/workflows/product/prod.roadmap.preview.md +110 -0
  232. package/workflows/product/prod.spec.breakdown.md +163 -0
  233. package/workflows/product/prod.spec.clarify.md +178 -0
  234. package/workflows/product/prod.spec.epic.md +154 -0
  235. package/workflows/product/prod.spec.frd.md +96 -0
  236. package/workflows/product/prod.spec.issue.md +145 -0
  237. package/workflows/product/prod.spec.md +60 -0
  238. package/workflows/product/prod.spec.prd.md +100 -0
  239. package/workflows/taxonomy.md +92 -0
  240. package/workflows/warm-up.md +574 -0
@@ -0,0 +1,585 @@
1
+ ---
2
+ trigger: always_on
3
+ ---
4
+
5
+ > **Applies to:** HUB: all | POSITION: all | AREA: all | SQUAD: all
6
+
7
+ # Regras do Workflow Breakdown Subtasks
8
+
9
+ ## Propósito
10
+
11
+ O workflow `breakdown-subtasks` tem como objetivo **quebrar uma Tech Spec em subtarefas que sejam entregáveis completos e independentes** (fatias verticais), cada uma detalhada o suficiente para que um desenvolvedor júnior execute sem perguntar nada.
12
+
13
+ ---
14
+
15
+ ## ⚠️ REGRA INVIOLÁVEL: PRINCÍPIO DE INDEPENDÊNCIA
16
+
17
+ > **Cada subtarefa é uma unidade de entrega completa e independente.**
18
+ > Cada subtarefa será um card no `$TASK_MANAGER` com **sua própria branch, seu próprio commit e seu próprio deploy**.
19
+ > Por isso, a subtarefa precisa ser **mergeável isoladamente sem quebrar o sistema**.
20
+
21
+ **Toda subtarefa deve ser uma fatia vertical completa (vertical slice):**
22
+
23
+ - ✅ Atravessa todas as camadas técnicas necessárias (DB, backend, frontend, testes — tudo que for preciso para a entrega ficar de pé)
24
+ - ✅ Implementa um fluxo end-to-end mínimo funcional, não um componente técnico isolado
25
+ - ✅ Quando mergeada sozinha, a aplicação continua funcionando
26
+ - ✅ A entrega é observável: testável, demonstrável ou verificável
27
+
28
+ ### Teste de Validação (obrigatório para cada subtarefa)
29
+
30
+ Responda **sim** para as três perguntas. Se qualquer uma for **não** → reagrupar com a próxima subtarefa até formar uma fatia vertical completa.
31
+
32
+ 1. **Posso fazer merge desta branch sem quebrar o sistema?**
33
+ 2. **Posso testar/demonstrar esta entrega sem depender das próximas subtarefas?**
34
+ 3. **Esta subtarefa entrega valor observável (endpoint funcionando, modal usável, tela navegável)?**
35
+
36
+ ### Exemplos Canônicos
37
+
38
+ | ❌ Fatia horizontal (PROIBIDA) | ✅ Fatia vertical (OBRIGATÓRIA) |
39
+ |---|---|
40
+ | Subtask só para editar um enum | Subtask que implementa o endpoint X inteiro — use-case + factory + enum + repository + contratos + testes |
41
+ | Subtask só para criar um repository | Subtask que implementa outro endpoint Y completo com a mesma estrutura |
42
+ | Subtask só para construir um use-case | Subtask que edita um endpoint existente (+ estrutura associada na aplicação) |
43
+ | Subtask só para construir a factory do use-case | Subtask que implementa um modal inteiro no frontend (componente + estado + integração + estilos + testes) |
44
+ | Subtask só para criar um DTO | Subtask que altera uma tela inteira no frontend |
45
+
46
+ ---
47
+
48
+ ## ⚠️ REGRA CRÍTICA: DETALHAMENTO EXTREMO
49
+
50
+ > **Cada subtarefa deve ser um TUTORIAL PASSO-A-PASSO COMPLETO**
51
+ >
52
+ > Se um dev júnior não conseguir implementar seguindo sua description, ela está RUIM.
53
+
54
+ O princípio de independência define **o escopo** de cada subtarefa; o detalhamento extremo define **como ela é descrita**. Os dois se somam — um sem o outro não resolve.
55
+
56
+ **O texto deve responder:**
57
+
58
+ - ✅ Exatamente O QUE fazer (descrição em 2-3 frases)
59
+ - ✅ POR QUÊ fazer (contexto de negócio/técnico)
60
+ - ✅ ONDE fazer (arquivos específicos)
61
+ - ✅ COMO fazer (código COMPLETO + explicação linha a linha)
62
+ - ✅ COMO TESTAR (cenários com input/output)
63
+ - ✅ COMO VERIFICAR (checklist acionável)
64
+
65
+ ---
66
+
67
+ ## Princípios Fundamentais
68
+
69
+ ### 1. Granularidade Obrigatória
70
+
71
+ **Tempo por subtarefa: mínimo 4h, máximo 1 dia de trabalho**
72
+
73
+ A granularidade é guiada **primeiro pela independência (fatia vertical completa)** e só depois pelo tempo. Tempo é um sanity check — independência é lei.
74
+
75
+ Regras de divisão:
76
+
77
+ - Se a subtarefa não passa no **Teste de Validação** acima → reagrupar com a próxima até formar uma fatia vertical
78
+ - Se o entregável completo leva > 1 dia → dividir em **duas entregas verticais independentes** (ex: dois endpoints distintos, não "camada de dados" vs "camada de API")
79
+ - Se a subtarefa cabe em menos de 4h → sinal forte de **fatia horizontal atômica** (enum isolado, DTO isolado, factory isolada) → **agrupar obrigatoriamente** com a próxima até ultrapassar 4h formando uma fatia vertical
80
+
81
+ **Exemplo:**
82
+
83
+ - ❌ "[BACKEND] Implementar sistema de pagamento inteiro" — MUITO grande (múltiplos endpoints = múltiplos entregáveis)
84
+ - ❌ "[BACKEND] Criar schema de validação Stripe" + "[BACKEND] Implementar endpoint POST /api/payment/create" + "[QA] Testes" — fatiamento horizontal PROIBIDO (cada peça sozinha não entrega valor)
85
+ - ✅ "[BACKEND] Implementar endpoint POST /api/payment/create (schema + validação + use-case + repository + testes)" + "[BACKEND] Implementar endpoint POST /api/payment/refund (mesma estrutura)"
86
+
87
+ ### 2. Ordem Lógica de Implementação (não separação por camada)
88
+
89
+ Quando múltiplas subtarefas irmãs existem, sugira a **ordem lógica** de implementação abaixo. **Essa ordem não separa cada subtarefa em uma camada diferente** — uma única subtarefa pode (e geralmente precisa) tocar várias camadas ao mesmo tempo.
90
+
91
+ 1. **[DATA]** — Subtarefas cujo entregável predominante é dado persistido (ex: nova tabela + migration + seed que já é útil por si só)
92
+ 2. **[BACKEND]** — Endpoints/workers completos (incluindo migration, schema, DTO, use-case, factory, repository, controller e testes na mesma subtarefa)
93
+ 3. **[FRONTEND]** — Telas, modais ou fluxos completos (incluindo tipos, hooks, integração com API, componentes e testes na mesma subtarefa)
94
+ 4. **[QA]** — Testes de integração/E2E que cruzam fronteiras de várias subtarefas já entregues
95
+
96
+ > ⚠️ **Atenção**: as subtarefas `[BACKEND]` e `[FRONTEND]` **não são "uma para cada camada"**. O prefixo indica a stack **predominante** do entregável, mas o escopo inclui tudo que for necessário para a fatia ficar de pé.
97
+
98
+ ### 3. Prefixos de Stack (OBRIGATÓRIO)
99
+
100
+ **CADA título deve começar com um prefixo indicando a stack PREDOMINANTE do entregável** (não a única camada tocada):
101
+
102
+ | Prefixo | Owner | Uso |
103
+ | ---------------- | ------------------ | ------------------------------------------------------------------------------------------------ |
104
+ | `[DATA]` | Dev (back) | Entregáveis cujo valor principal é dado estruturado (migrations + seeds de referência úteis) |
105
+ | `[BACKEND]` | Dev (back) | Endpoint, worker ou job completo (inclui migration, schema, DTO, use-case, factory, repo, testes unitários) |
106
+ | `[FRONTEND]` | Dev (front) | Tela, modal ou fluxo UI completo (inclui tipos, hooks, integração, componente, estilos, testes unitários) |
107
+ | `[QA-BACKEND]` | Dev (back) | Testes de integração ou contrato específicos do backend que extrapolam o escopo de uma única subtarefa `[BACKEND]` |
108
+ | `[QA-FRONTEND]` | Dev (front) | Testes de componente ou fluxo UI específicos do frontend que extrapolam o escopo de uma única subtarefa `[FRONTEND]` |
109
+ | `[QA]` | QA Engineer | Testes E2E e de integração que cruzam fronteiras de múltiplas subtarefas já mergeadas — exclusivo para QA Engineer |
110
+ | `[INFRA]` | Dev / DevOps | Mudança completa de pipeline, config de ambiente ou deployment |
111
+ | `[DOCS]` | Autor da entrega | Documentação independente (não parte de uma subtarefa de código) |
112
+
113
+ ---
114
+
115
+ ## ⚠️ REGRA DE OWNERSHIP DE QA
116
+
117
+ > **Testes são responsabilidade de quem entregou o código — salvo quando cruzam fronteiras.**
118
+
119
+ Ao gerar subtarefas com escopo de QA/testes, aplique a seguinte divisão **obrigatória**:
120
+
121
+ | Escopo do teste | Prefixo correto | Owner |
122
+ |---|---|---|
123
+ | Testes unitários de um endpoint/worker | Incluir dentro do próprio `[BACKEND]` | Dev de back |
124
+ | Testes unitários de um componente/tela | Incluir dentro do próprio `[FRONTEND]` | Dev de front |
125
+ | Testes de integração ou contrato apenas do backend (multi-subtarefa) | `[QA-BACKEND]` | Dev de back |
126
+ | Testes de componente ou fluxo apenas do frontend (multi-subtarefa) | `[QA-FRONTEND]` | Dev de front |
127
+ | Testes E2E ou integração que cruzam backend + frontend (multi-subtarefa) | `[QA]` | QA Engineer |
128
+
129
+ **Regras práticas:**
130
+
131
+ - ✅ Testes unitários **nunca** viram subtarefa separada — ficam dentro da subtarefa de código correspondente
132
+ - ✅ `[QA-BACKEND]` e `[QA-FRONTEND]` só existem quando o escopo de validação **ultrapassa** uma única subtarefa de código (ex: validar que dois endpoints novos interagem corretamente)
133
+ - ✅ `[QA]` é exclusivo do **QA Engineer** e cobre apenas cenários que cruzam frontend + backend + dados ao mesmo tempo
134
+ - ❌ Nunca criar um `[QA]` para testar algo que é responsabilidade exclusiva do dev (ex: `[QA] Testar endpoint POST /users` — isso é `[BACKEND]` com testes incluídos)
135
+
136
+ **Exemplos:**
137
+
138
+ ```
139
+ ❌ ERRADO
140
+ [BACKEND] Criar endpoint POST /api/payments/create
141
+ [QA] Testar endpoint POST /api/payments/create ← errado: teste de backend vira [BACKEND]
142
+
143
+ ✅ CORRETO
144
+ [BACKEND] Criar endpoint POST /api/payments/create ← inclui os testes unitários do endpoint
145
+
146
+ [BACKEND] Criar endpoint POST /api/payments/create
147
+ [BACKEND] Criar endpoint POST /api/payments/refund
148
+ [QA-BACKEND] Validar integração entre /create e /refund ← só se necessário testar os dois juntos
149
+
150
+ [BACKEND] Criar endpoint POST /api/payments/create
151
+ [FRONTEND] Criar modal de pagamento
152
+ [QA] Fluxo E2E de pagamento completo (do modal ao banco) ← QA Engineer, cruza fronteiras
153
+ ```
154
+
155
+ ---
156
+
157
+ ## Estrutura de Subtarefa
158
+
159
+ **TODAS as subtarefas DEVEM seguir este template EXATAMENTE:**
160
+
161
+ ```markdown
162
+ ## 🎯 O Que Você Vai Fazer
163
+
164
+ {Descrição em 2-3 frases do objetivo final. O que o dev terá ao finalizar?}
165
+
166
+ ---
167
+
168
+ ## 📋 Contexto da Tarefa
169
+
170
+ ### Por que isso é necessário?
171
+
172
+ {Explique o motivo de negócio ou técnico}
173
+
174
+ ### Onde isso se encaixa?
175
+
176
+ {Como se conecta com outras subtarefas e a feature final}
177
+
178
+ ### Pré-requisitos
179
+
180
+ - [ ] {Subtarefa anterior, se houver}
181
+ - [ ] {Ambiente/config, se necessário}
182
+
183
+ ---
184
+
185
+ ## 🛠️ Stack Técnico
186
+
187
+ | Tecnologia | Versão | Para que |
188
+ | ---------- | ------ | -------- |
189
+ | {Tech 1} | {ver} | {uso} |
190
+
191
+ ### Padrões do Projeto a Seguir
192
+
193
+ - **Nomenclatura**: {padrão específico do projeto}
194
+ - **Estrutura**: {organização de pastas}
195
+ - **Convenções**: {eslint, prettier, etc}
196
+
197
+ ### Arquivos de Referência (COPIE O PADRÃO)
198
+
199
+ - `{caminho/arquivo.ts}` - Use como base para {o quê}
200
+
201
+ ---
202
+
203
+ ## 📁 Arquivos a Criar/Modificar
204
+
205
+ | Arquivo | Ação | Descrição |
206
+ | -------- | ------------------------ | ----------- |
207
+ | `{path}` | 🆕 Criar ou ✏️ Modificar | {O que faz} |
208
+
209
+ ---
210
+
211
+ ## 👣 Passo a Passo de Implementação
212
+
213
+ ### Passo 1: {Título descritivo}
214
+
215
+ **O que fazer:**
216
+ {Explicação detalhada}
217
+
218
+ **Código:**
219
+
220
+ \`\`\`{language}
221
+ // {caminho/do/arquivo.ts}
222
+
223
+ {CÓDIGO COMPLETO - NÃO use "..." ou placeholder}
224
+ \`\`\`
225
+
226
+ **Explicação do código:**
227
+
228
+ - Linha X: {explica o que faz e por quê}
229
+ - Linha Y: {explica o que faz e por quê}
230
+
231
+ **Validação deste passo:**
232
+
233
+ - [ ] {Como verificar}
234
+
235
+ ---
236
+
237
+ ### Passo 2: ...
238
+
239
+ {Continuar com mais passos}
240
+
241
+ ---
242
+
243
+ ## 🧪 Testes Obrigatórios
244
+
245
+ **Arquivo: `{caminho/arquivo.spec.ts}`**
246
+
247
+ \`\`\`{language}
248
+ // {CÓDIGO DE TESTE COMPLETO}
249
+ \`\`\`
250
+
251
+ ### Cenários a Testar
252
+
253
+ | Cenário | Input | Output | ✓ |
254
+ | -------- | ---------------- | --------------- | --- |
255
+ | {caso 1} | {input} | {output} | [ ] |
256
+ | {erro 1} | {input inválido} | {erro esperado} | [ ] |
257
+
258
+ ### Como Executar
259
+
260
+ \`\`\`bash
261
+ {comando específico para testar esta subtarefa}
262
+ \`\`\`
263
+
264
+ ---
265
+
266
+ ## ✅ Checklist de Conclusão
267
+
268
+ ### Implementação
269
+
270
+ - [ ] Código implementado conforme os passos
271
+ - [ ] Sem `console.log` de debug
272
+ - [ ] Sem `TODO` ou `FIXME` sem issue
273
+ - [ ] Imports organizados
274
+ - [ ] Tipagem TypeScript completa (sem `any`)
275
+
276
+ ### Qualidade
277
+
278
+ - [ ] Testes passando
279
+ - [ ] Linter sem erros (`npm run lint`)
280
+ - [ ] Build sem erros (`npm run build`)
281
+
282
+ ### Documentação
283
+
284
+ - [ ] Comentários em código complexo
285
+ - [ ] JSDoc em funções públicas
286
+ - [ ] README atualizado (se necessário)
287
+
288
+ ---
289
+
290
+ ## ⚠️ Riscos e Cuidados
291
+
292
+ | Risco | Como Evitar |
293
+ | --------- | ----------- |
294
+ | {risco 1} | {mitigação} |
295
+
296
+ ### ❌ Não Faça Isso
297
+
298
+ - ❌ {Erro comum 1 e por que é errado}
299
+
300
+ ### 💡 Dicas
301
+
302
+ - 💡 {Dica útil}
303
+
304
+ ---
305
+
306
+ ## 🔗 Dependências
307
+
308
+ ### Esta subtarefa depende de:
309
+
310
+ - `[{STACK}] {Nome da subtarefa anterior}` - {O que precisa estar pronto}
311
+
312
+ ### Desbloqueia:
313
+
314
+ - `[{STACK}] {Nome da próxima subtarefa}` - {O que será desbloqueado}
315
+
316
+ ### Pode ser feita em paralelo com:
317
+
318
+ - `[{STACK}] {Nome de subtarefa paralela}` - {Por que não há dependência}
319
+
320
+ ---
321
+
322
+ ## 📚 Referências
323
+
324
+ ### Documentação Oficial
325
+
326
+ - [{Nome da doc}]({link}) - {Para que usar}
327
+
328
+ ### Arquivos de Exemplo
329
+
330
+ - `{caminho/arquivo-exemplo.ts}` - {O que copiar daqui}
331
+
332
+ ### Tech Spec Relacionada
333
+
334
+ - Seção {X.Y}: {descrição}
335
+
336
+ ---
337
+
338
+ ## 🆘 Precisa de Ajuda?
339
+
340
+ 1. **Revise os arquivos de referência** listados acima
341
+ 2. **Consulte a Tech Spec** seção relevante
342
+ 3. **Pergunte no Slack** canal #{canal}
343
+ 4. **Documentação**: {links úteis}
344
+ ```
345
+
346
+ ---
347
+
348
+ ## Regras de Qualidade CRÍTICAS
349
+
350
+ ### ✅ Uma subtarefa BEM mastigada tem
351
+
352
+ | Característica | Descrição | BOM | RUIM |
353
+ | ---------------------------- | --------------------------------- | --------------------------------------------------- | -------------------------------- |
354
+ | **Título específico** | Descreve exatamente o que fazer | "[BACKEND] Criar endpoint POST /api/users/register" | "[BACKEND] Criar API de usuário" |
355
+ | **Código COMPLETO** | TODO o código, sem "..." | Código com imports, função, tipos | "Implemente a função X" |
356
+ | **Explicação linha a linha** | Explica POR QUÊ existe | "bcrypt.hash com salt 10 para..." | Código sem explicação |
357
+ | **Cenários de teste** | TODOS os casos | Tabela input/output | "Escreva testes" |
358
+ | **Referências concretas** | Aponta arquivos reais para copiar | "Copie user.controller.ts" | "Siga o padrão" |
359
+ | **Checklist verificável** | Itens específicos | "Linter sem erros: npm run lint" | "Código limpo" |
360
+
361
+ ### ❌ REJEITE subtarefas que
362
+
363
+ - Sejam **fatias horizontais** (só enum, só repository, só factory, só DTO, só contratos/interfaces sem implementação funcional)
364
+ - **Não passem no Teste de Validação de independência** (não mergeáveis isoladamente sem quebrar o sistema)
365
+ - Usem termos vagos: "implementar", "criar" sem detalhes
366
+ - Não tenham código de exemplo
367
+ - Não listem arquivos específicos
368
+ - Não expliquem o contexto e o porquê
369
+ - Assumam conhecimento que o dev pode não ter
370
+ - Usem "..." ou "// rest of code"
371
+ - Caibam em **menos de 4h** — é sinal forte de fatia horizontal atômica; agrupar com a próxima subtarefa
372
+ - Excedam 1 dia de trabalho (nesse caso, dividir em **duas fatias verticais independentes**, nunca em fatias horizontais)
373
+
374
+ ---
375
+
376
+ ## Formato de Saída: JSON
377
+
378
+ ### Estrutura Obrigatória
379
+
380
+ ```json
381
+ {
382
+ "subtasks": [
383
+ {
384
+ "summary": "[STACK] Título específico da subtarefa",
385
+ "description": "Template completo com:\n\n## 🎯 O Que Você Vai Fazer\n\n... (resto conforme template acima)"
386
+ },
387
+ {
388
+ "summary": "[STACK] Próxima subtarefa",
389
+ "description": "..."
390
+ }
391
+ ]
392
+ }
393
+ ```
394
+
395
+ ### Regras CRÍTICAS para o JSON
396
+
397
+ 1. **APENAS JSON** - Sem texto antes ou depois
398
+ 2. **Use `\n` para quebras de linha** dentro das strings
399
+ 3. **Escape aspas com `\"`** dentro das strings
400
+ 4. **Todos os títulos com [STACK]** - Obrigatório
401
+ 5. **Description ULTRA DETALHADA** - Siga o template COMPLETAMENTE
402
+ 6. **Código COMPLETO** - Não use "..." ou placeholder
403
+ 7. **Caminhos reais** - Use paths que existem no projeto
404
+ 8. **Valide JSON** - Antes de retornar
405
+
406
+ ---
407
+
408
+ ## Mapeamento de Dependências
409
+
410
+ ### Padrão de Dependência (fatias verticais, não camadas)
411
+
412
+ Cada nó abaixo é uma subtarefa **completa e independente** — endpoint inteiro, modal inteiro, tela inteira. As setas indicam dependência real de dados/contratos entre entregáveis, não split por camada.
413
+
414
+ ```
415
+ [BACKEND] Endpoint POST /X (migration + use-case + factory + repo + testes)
416
+ ↓ (fornece contrato de API)
417
+ [FRONTEND] Modal de criação de X (componente + integração + testes)
418
+
419
+ [BACKEND] Endpoint GET /Y (fatia vertical completa) ←── pode rodar em paralelo
420
+ [FRONTEND] Tela de listagem de Y (fatia vertical) ←── pode rodar em paralelo
421
+ ```
422
+
423
+ > ⚠️ Se você está montando uma cadeia do tipo `[DATA] tabela → [BACKEND] DTO → [BACKEND] repository → [BACKEND] use-case → [BACKEND] controller`, **pare**: isso é fatia horizontal. Reagrupe tudo em uma única subtarefa `[BACKEND] Endpoint POST /X`.
424
+
425
+ ### Como Documentar
426
+
427
+ Cada subtarefa deve ter seção "🔗 Dependências" indicando:
428
+
429
+ - ✅ **Depende de**: qual subtarefa precisa estar pronta (ex: endpoint pronto antes da tela que o consome)
430
+ - ✅ **Desbloqueia**: qual subtarefa será desbloqueada
431
+ - ✅ **Paralela com**: qual pode ser feita simultaneamente (geralmente outro entregável vertical independente)
432
+
433
+ ---
434
+
435
+ ## Checklist de Qualidade Final
436
+
437
+ Antes de retornar o JSON, valide CADA subtarefa:
438
+
439
+ ### ✅ Completude
440
+
441
+ - [ ] Cobre TODAS as partes da Tech Spec
442
+ - [ ] Setup, implementação, testes incluídos
443
+ - [ ] Cada subtarefa é um "tutorial completo"
444
+
445
+ ### ✅ Granularidade
446
+
447
+ - [ ] TODAS as subtarefas têm entre 4h e 1 dia de trabalho
448
+ - [ ] Subtarefas são autocontidas
449
+ - [ ] Nenhuma é vaga
450
+
451
+ ### ✅ Independência (fatia vertical)
452
+
453
+ - [ ] Cada subtarefa, mergeada isoladamente, deixa a aplicação funcionando
454
+ - [ ] A entrega de cada subtarefa é observável (testável ou demonstrável)
455
+ - [ ] Nenhuma subtarefa é apenas contrato, interface, tipo, enum ou repository isolado
456
+ - [ ] Cadeia `[DATA] → [BACKEND] DTO → [BACKEND] repo → [BACKEND] use-case` foi consolidada em UMA subtarefa por endpoint
457
+
458
+ ### ✅ Ownership de QA
459
+
460
+ - [ ] Testes unitários de backend estão dentro do próprio `[BACKEND]` — não viraram `[QA]` separado
461
+ - [ ] Testes unitários de frontend estão dentro do próprio `[FRONTEND]` — não viraram `[QA]` separado
462
+ - [ ] Subtarefas `[QA-BACKEND]` existem **apenas** quando o escopo ultrapassa uma única subtarefa de backend
463
+ - [ ] Subtarefas `[QA-FRONTEND]` existem **apenas** quando o escopo ultrapassa uma única subtarefa de frontend
464
+ - [ ] Subtarefas `[QA]` são exclusivamente E2E ou integração cruzando backend + frontend — ownership do QA Engineer
465
+
466
+ ### ✅ Detalhamento
467
+
468
+ - [ ] Código COMPLETO em cada passo
469
+ - [ ] Explicações de código
470
+ - [ ] Arquivos específicos listados
471
+ - [ ] Cenários de teste com input/output
472
+ - [ ] Checklist verificável
473
+
474
+ ### ✅ Dependências
475
+
476
+ - [ ] Ordem de execução clara
477
+ - [ ] Dependências mapeadas
478
+ - [ ] Paralelas identificadas
479
+
480
+ ### ✅ Validação
481
+
482
+ - [ ] JSON é válido
483
+ - [ ] Nenhuma subtarefa vaga
484
+ - [ ] Toda subtarefa tem ≥ 4h e ≤ 1 dia de trabalho
485
+ - [ ] Nenhuma fatia horizontal (split por camada)
486
+ - [ ] Todas passam no Teste de Validação de independência
487
+ - [ ] Todos os títulos com [STACK]
488
+ - [ ] Nenhum "..."
489
+
490
+ ---
491
+
492
+ ## Integração com Outros Workflows
493
+
494
+ ### Entrada (de onde vem)
495
+
496
+ ```
497
+ eng.build-tech-spec → tech-spec.md → eng.breakdown-subtasks
498
+ ```
499
+
500
+ ### Saída (para onde vai)
501
+
502
+ ```
503
+ eng.breakdown-subtasks → subtasks JSON → Jira
504
+ ```
505
+
506
+ ### Relação com Outros Workflows
507
+
508
+ | Workflow | Relação |
509
+ | -------------------- | ---------------------------------- |
510
+ | `build-tech-spec` | Cria a Tech Spec que será quebrada |
511
+ | `breakdown-subtasks` | Quebra em subtarefas executáveis |
512
+ | `start` | Cria a architecture.md |
513
+ | `plan` | Usa as fases (não as subtarefas) |
514
+
515
+ ---
516
+
517
+ ## Erros Comuns a Evitar
518
+
519
+ ### ❌ Anti-padrões
520
+
521
+ 1. **Fatia horizontal (split por camada)** — o erro mais comum
522
+ - ❌ `[DATA] Criar migration users` + `[BACKEND] Criar DTO` + `[BACKEND] Criar repository` + `[BACKEND] Criar use-case` + `[BACKEND] Criar controller` (5 cards, nenhum entrega valor sozinho)
523
+ - ❌ `[BACKEND] Adicionar valor ao enum StatusPagamento`
524
+ - ❌ `[BACKEND] Criar factory do use-case X`
525
+ - ✅ `[BACKEND] Criar endpoint POST /api/payments/create` — uma subtarefa contendo migration + DTO + repository + use-case + factory + controller + enum + testes
526
+
527
+ 2. **Subtarefa muito grande (múltiplos entregáveis juntos)**
528
+ - ❌ "[BACKEND] Implementar todo o sistema de pagamento" (múltiplos endpoints = múltiplos entregáveis)
529
+ - ✅ "[BACKEND] Endpoint POST /api/payment/create" + "[BACKEND] Endpoint POST /api/payment/refund" (duas fatias verticais independentes)
530
+
531
+ 3. **Título vago**
532
+ - ❌ "[BACKEND] Implementar feature"
533
+ - ✅ "[BACKEND] Criar endpoint POST /api/payment/process"
534
+
535
+ 4. **Sem código de exemplo**
536
+ - ❌ "Crie um serviço para..."
537
+ - ✅ Código COMPLETO com imports, tipos, implementação
538
+
539
+ 5. **Sem arquivos específicos**
540
+ - ❌ "Siga o padrão do projeto"
541
+ - ✅ "Copie a estrutura de `src/services/user.service.ts`"
542
+
543
+ 6. **Sem checklist**
544
+ - ❌ "Código pronto"
545
+ - ✅ Lista verificável de itens
546
+
547
+ ---
548
+
549
+ ## Exemplo de Subtarefa BEM FEITA vs MAL FEITA
550
+
551
+ ### ❌ MAL FEITA
552
+
553
+ ```json
554
+ {
555
+ "summary": "[BACKEND] Criar autenticação",
556
+ "description": "Implementar o sistema de autenticação com JWT.\n\nFaça: Login, registro e validação.\n\nUse bcrypt para senha e JWT para token.\n\nRetorne o usuário no login."
557
+ }
558
+ ```
559
+
560
+ **Problemas:**
561
+
562
+ - Título vago
563
+ - Sem detalhamento
564
+ - Sem código
565
+ - Sem arquivos específicos
566
+ - Sem testes
567
+
568
+ ### ✅ BEM FEITA
569
+
570
+ ````json
571
+ {
572
+ "summary": "[BACKEND] Criar endpoint POST /api/auth/register com validação",
573
+ "description": "## 🎯 O Que Você Vai Fazer\n\nCriar o endpoint de registro que recebe email/senha, valida dados, cria usuário no banco e retorna JWT.\n\n---\n\n## 📋 Contexto\n\n### Por que?\nSistema precisa permitir novos usuários se cadastrem.\n\n### Pré-requisitos\n- [ ] Migration de usuários ([DATA] Criar migration tabela users)\n\n---\n\n## 🛠️ Stack\n\n| Tech | Versão | Para |\n|------|--------|------|\n| Express | 4.18+ | Framework HTTP |\n| bcrypt | 5.1+ | Hash de senha |\n| JWT | 9.0+ | Tokens |\n\n---\n\n## 📁 Arquivos\n\n| Arquivo | Ação | Descrição |\n|---------|------|--------|\n| `src/controllers/auth.controller.ts` | 🆕 | Controlador |\n| `src/services/auth.service.ts` | 🆕 | Lógica de negócio |\n| `src/routes/auth.ts` | 🆕 | Rotas |\n| `src/__tests__/auth.spec.ts` | 🆕 | Testes |\n\n---\n\n## 👣 Passos\n\n### Passo 1: Criar schema de validação\n\n```typescript\n// src/schemas/auth.schema.ts\nimport { body } from 'express-validator';\n\nexport const registerSchema = [\n body('email')\n .isEmail()\n .withMessage('Email inválido')\n .normalizeEmail(),\n body('password')\n .isLength({ min: 8 })\n .withMessage('Mínimo 8 caracteres')\n .matches(/[A-Z]/)\n .withMessage('Precisa letra maiúscula'),\n];\n```\n\n**Explicação:**\n- `isEmail()`: Valida formato\n- `normalizeEmail()`: Padroniza\n- `matches(/[A-Z]/)`: Regex para maiúscula\n\n---\n\n### Passo 2: Criar AuthService\n\n```typescript\n// src/services/auth.service.ts\nimport bcrypt from 'bcrypt';\nimport jwt from 'jsonwebtoken';\n\nexport class AuthService {\n async register(email: string, password: string) {\n // Hash da senha\n const hash = await bcrypt.hash(password, 10);\n \n // Criar usuário (assumindo repo existe)\n const user = await this.userRepo.create({\n email,\n passwordHash: hash,\n });\n \n // Gerar token\n const token = jwt.sign(\n { userId: user.id },\n process.env.JWT_SECRET!,\n { expiresIn: '24h' }\n );\n \n return { user, token };\n }\n}\n```\n\n**Explicação:**\n- `bcrypt.hash(password, 10)`: 10 salt rounds é seguro\n- `jwt.sign()`: Cria token que expira em 24h\n- Não retornamos passwordHash no response\n\n---\n\n## 🧪 Testes\n\n```typescript\n// src/__tests__/auth.spec.ts\nimport request from 'supertest';\nimport { app } from '../app';\n\ndescribe('POST /api/auth/register', () => {\n it('deve registrar com email e senha válidos', async () => {\n const response = await request(app)\n .post('/api/auth/register')\n .send({\n email: 'test@example.com',\n password: 'Senha123!',\n });\n \n expect(response.status).toBe(201);\n expect(response.body).toHaveProperty('token');\n });\n \n it('deve retornar 400 para email inválido', async () => {\n const response = await request(app)\n .post('/api/auth/register')\n .send({\n email: 'invalid',\n password: 'Senha123!',\n });\n \n expect(response.status).toBe(400);\n });\n});\n```\n\n### Cenários\n\n| Cenário | Input | Output |\n|---------|-------|--------|\n| Válido | email + senha válidos | 201 + token |\n| Email inválido | email sem @ | 400 VALIDATION_ERROR |\n| Senha fraca | < 8 chars | 400 VALIDATION_ERROR |\n\n---\n\n## ✅ Checklist\n\n- [ ] Schema criado\n- [ ] AuthService implementado\n- [ ] AuthController implementado\n- [ ] Rotas configuradas\n- [ ] Testes passando\n- [ ] Linter clean\n- [ ] Build ok\n\n---\n\n## ⚠️ Riscos\n\n| Risco | Como Evitar |\n|-------|-------------|\n| JWT_SECRET exposto | Usar .env, nunca commitar |\n| Senha em log | Não logar req.body |\n\n---\n\n## 🔗 Dependências\n\n**Depende de:** [DATA] Criar migration tabela users\n**Desbloqueia:** [FRONTEND] Criar tela de registro\n**Paralela com:** [INFRA] Configurar variáveis JWT\n"
574
+ }
575
+ ````
576
+
577
+ **Diferenças:**
578
+
579
+ - ✅ Título específico
580
+ - ✅ Código COMPLETO
581
+ - ✅ Explicação linha a linha
582
+ - ✅ Testes com cenários
583
+ - ✅ Arquivos específicos
584
+ - ✅ Checklist verificável
585
+ - ✅ Dependências mapeadas
@@ -0,0 +1,27 @@
1
+ ---
2
+ description: modelo de versionamento de codigo
3
+ auto_execution_mode: 3
4
+ env_file: "@/ENV.md"
5
+ ---
6
+
7
+ > **Applies to:** HUB: all | POSITION: all | AREA: ENGINEERING | SQUAD: all
8
+
9
+ Vamos preparar isso para um release aumentando o número da versão.
10
+
11
+ Siga estas regras para versionamento x.y.z:
12
+
13
+ - x (Versão major): Incremente quando você fizer mudanças incompatíveis na API ou feature. Exemplos incluem:
14
+ Mudanças que quebram APIs públicas (ex.: remover ou renomear métodos).
15
+ Reescritas majors ou refatoração que alteram comportamento.
16
+ Mudanças que requerem que usuários atualizem seu código ou dependências para manter compatibilidade.
17
+ - y (Versão minor): Incremente quando você adicionar novas features ou melhorias de forma retrocompatível. Exemplos incluem:
18
+ Adicionando novos métodos, ponto de acessos, ou features.
19
+ Depreciar features (mas não removê-las ainda).
20
+ Melhorias que não quebram features existentes.
21
+ - z (Versão patch): Incremente quando você fizer correções de bugs retrocompatíveis ou pequenas atualizações. Exemplos incluem:
22
+ Corrigir bugs sem alterar feature pretendida.
23
+ Pequenas melhorias de performance.
24
+ Atualizações de documentação ou mudanças de metadata.
25
+
26
+ Altere a versão no pyproject.toml.
27
+ Então, execute `uv sync --all-extras` para regenerar o lock file.
@@ -0,0 +1,64 @@
1
+ > **Applies to:** HUB: all | POSITION: all | AREA: ENGINEERING | SQUAD: all
2
+
3
+ # Eng Docs Scraping Rules — Documentação de Robôs de Scraping
4
+
5
+ ## Objetivo
6
+
7
+ Definir o padrão de documentação técnica para robôs de scraping do projeto.
8
+
9
+ ## Escopo
10
+
11
+ Aplicável sempre que um robô novo for implementado, um bug estrutural for resolvido, ou descobertas relevantes sobre o site-alvo forem feitas.
12
+
13
+ ---
14
+
15
+ ## Regras
16
+
17
+ ### Obrigatório
18
+
19
+ #### Localização
20
+
21
+ - Sempre criar em `docs/engineering/robots/{robot-tag}-robot.md`
22
+ - Exemplos: `docs/engineering/robots/ba-robot.md`, `docs/engineering/robots/sp-robot.md`
23
+
24
+ #### Conteúdo obrigatório
25
+
26
+ Todo arquivo `{robot-tag}-robot.md` deve conter:
27
+
28
+ | Seção | O que documentar |
29
+ |---|---|
30
+ | **Visão Geral** | O que o robô coleta e o que **não** coleta (limitações por design) |
31
+ | **Fluxo de Execução** | Sequência de chamadas HTTP com URLs completas de cada etapa |
32
+ | **Fontes de Dados** | Cada fonte (PDF, HTML, API) com mapeamento de campos/colunas |
33
+ | **Campos Extraídos** | Tabela por `situation` (ex: IMPOSTA vs AGUARDANDO IMPOSICAO) — quais campos existem em cada uma e a fonte |
34
+ | **Limitações Conhecidas** | Campos indisponíveis na fonte do DETRAN/órgão — documentar por que não é possível extrair |
35
+ | **Histórico de Bugs** | Bugs resolvidos com referência ao Jira key, sintoma, causa e fix aplicado |
36
+ | **Checklist de Troubleshooting** | Tabela: sintoma → causa provável → ação |
37
+
38
+ #### Quando atualizar
39
+
40
+ - Ao implementar um robô novo
41
+ - Ao resolver qualquer bug estrutural (ex: campo retornando vazio, matching falho)
42
+ - Ao fazer descobertas relevantes sobre o comportamento do site-alvo (ex: estrutura de colunas HTML, campos disponíveis por situação de multa)
43
+ - Sempre referenciar o Jira key no histórico de bugs
44
+
45
+ ### Proibido
46
+
47
+ - ❌ Criar em `docs/robots/` — pasta incorreta, usar `docs/engineering/robots/`
48
+ - ❌ Omitir a seção de **Limitações Conhecidas** — é fundamental para evitar que outros devs tentem implementar algo impossível
49
+ - ❌ Omitir o **Histórico de Bugs** — descobertas custam tempo; documentar evita retrabalho
50
+
51
+ ### Recomendado
52
+
53
+ - Chamar `/docs-index` após criar ou atualizar qualquer `{robot-tag}-robot.md` para manter o índice atualizado
54
+ - Incluir o índice de colunas da tabela HTML (com numeração `[0]`, `[1]`, etc.) sempre que for inspecionado via log
55
+
56
+ ---
57
+
58
+ ## Exceções
59
+
60
+ Nenhuma — todo robô deve ter sua documentação, independente do tamanho ou complexidade.
61
+
62
+ ## Referências
63
+
64
+ - `docs/engineering/robots/{robot-tag}-robot.md` — referência de implementação completa