jarvis-ai-framework 1.0.3 → 2.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 (193) hide show
  1. package/AGENTS.md +66 -64
  2. package/README.md +24 -10
  3. package/agents/AGENTS.md +12 -8
  4. package/agents/README.md +14 -16
  5. package/agents/engineering/data/eng.data-engineer.agent.md +6 -6
  6. package/agents/engineering/eng.agent.md +19 -36
  7. package/agents/engineering/eng.bug-hunter.md +13 -12
  8. package/agents/engineering/eng.cybersecurity.agent.md +20 -35
  9. package/agents/engineering/eng.docs-writer.md +2 -2
  10. package/agents/engineering/eng.frontend.agent.md +17 -22
  11. package/agents/engineering/eng.rpa.agent.md +5 -15
  12. package/agents/engineering/qa/eng.qa.test-architect.md +4 -4
  13. package/agents/engineering/qa/eng.qa.test-planner.md +3 -3
  14. package/agents/engineering/qa/eng.qa.testing-engineer.md +3 -3
  15. package/agents/product/prod.discovery-interviewer.md +86 -0
  16. package/bin/commands/init.js +6 -6
  17. package/bin/jarvis.js +1 -1
  18. package/bin/lib/config/constants.js +47 -0
  19. package/bin/lib/core/sync-engine.js +12 -0
  20. package/package.json +2 -5
  21. package/rules/AGENTS.md +6 -4
  22. package/rules/engineering/eng-rules.md +5 -3
  23. package/rules/engineering/eng-security-rules.md +4 -4
  24. package/rules/engineering/eng.breakdown-subtasks-rules.md +208 -37
  25. package/rules/engineering/eng.docs-scraping-rules.md +1 -1
  26. package/rules/engineering/eng.downstream-flow-rules.md +1 -1
  27. package/rules/engineering/eng.integrations-rules.md +2 -2
  28. package/rules/engineering/eng.pre-pr-rules.md +1 -1
  29. package/rules/engineering/eng.skills-rules.md +60 -0
  30. package/rules/engineering/eng.specializations-rules.md +69 -0
  31. package/rules/engineering/eng.start-rules.md +11 -11
  32. package/rules/engineering/eng.work-rules.md +19 -14
  33. package/rules/engineering/frontend/eng.frontend-rules.md +70 -69
  34. package/rules/product/README.md +2 -0
  35. package/rules/product/prod-rules.md +7 -5
  36. package/{skills/prod-specs/rules/prod-spec-rules.md → rules/product/prod.spec-rules.md} +55 -50
  37. package/skills/AGENTS.md +111 -47
  38. package/skills/SKILLS-ROADMAP.md +26 -45
  39. package/skills/eng-ai-engineer/SKILL.md +1 -0
  40. package/skills/eng-backend/SKILL.md +142 -644
  41. package/skills/eng-backend/references/1-fundamentos-programacao.md +41 -0
  42. package/skills/eng-backend/references/10-seguranca.md +61 -0
  43. package/skills/eng-backend/references/11-performance.md +49 -0
  44. package/skills/eng-backend/references/12-erros-logging.md +42 -0
  45. package/skills/eng-backend/references/13-qualidade-codigo.md +51 -0
  46. package/skills/eng-backend/references/2-design-arquitetura.md +48 -0
  47. package/skills/eng-backend/references/3-design-patterns.md +50 -0
  48. package/skills/eng-backend/references/4-algoritmos-estruturas.md +43 -0
  49. package/skills/eng-backend/references/5-banco-dados.md +53 -0
  50. package/skills/eng-backend/references/6-api-comunicacao.md +42 -0
  51. package/skills/eng-backend/references/7-concorrencia-async.md +49 -0
  52. package/skills/eng-backend/references/8-arquitetura-servidor.md +49 -0
  53. package/skills/eng-backend/references/9-testes.md +43 -0
  54. package/skills/{eng-arch-c4 → eng-backend-arch-c4}/SKILL.md +12 -7
  55. package/skills/{eng-ms-trace → eng-backend-microservices-trace}/SKILL.md +6 -4
  56. package/skills/{eng-nestjs → eng-backend-nestjs}/SKILL.md +3 -1
  57. package/skills/{eng-rabbitmq → eng-backend-rabbitmq}/SKILL.md +3 -1
  58. package/skills/eng-data-bi/SKILL.md +1 -0
  59. package/skills/eng-data-debug/SKILL.md +2 -1
  60. package/skills/eng-data-engineer/SKILL.md +1 -0
  61. package/skills/eng-data-onboard/SKILL.md +1 -0
  62. package/skills/eng-data-orchestrator/SKILL.md +1 -0
  63. package/skills/{eng-performance-engineer → eng-devops-performance-engineer}/SKILL.md +2 -1
  64. package/skills/eng-frontend/SKILL.md +145 -782
  65. package/skills/eng-frontend/references/1-fundamentos-programacao.md +37 -0
  66. package/skills/eng-frontend/references/10-testes.md +47 -0
  67. package/skills/eng-frontend/references/11-seguranca.md +56 -0
  68. package/skills/eng-frontend/references/12-qualidade-codigo.md +51 -0
  69. package/skills/eng-frontend/references/2-html-fundamentals.md +51 -0
  70. package/skills/eng-frontend/references/3-css-responsive.md +61 -0
  71. package/skills/eng-frontend/references/4-javascript-dom.md +60 -0
  72. package/skills/eng-frontend/references/5-state-management.md +55 -0
  73. package/skills/eng-frontend/references/6-uiux-design.md +59 -0
  74. package/skills/eng-frontend/references/7-acessibilidade.md +46 -0
  75. package/skills/eng-frontend/references/8-performance.md +58 -0
  76. package/skills/eng-frontend/references/9-browser-apis.md +54 -0
  77. package/skills/{eng-design-system → eng-frontend-design-system}/SKILL.md +4 -2
  78. package/skills/{eng-microfrontend → eng-frontend-microfrontend}/SKILL.md +4 -2
  79. package/skills/{eng-browser-extension-builder → eng-global-browser-extension-builder}/SKILL.md +2 -1
  80. package/skills/{eng-docs-write → eng-global-docs-write}/SKILL.md +8 -4
  81. package/skills/eng-global-jira-comment/SKILL.md +21 -0
  82. package/skills/{eng-pr → eng-global-pr}/SKILL.md +7 -3
  83. package/skills/{eng-task-comment → eng-global-task-comment}/SKILL.md +6 -2
  84. package/skills/eng-qa-a11y-audit/SKILL.md +1 -0
  85. package/skills/eng-qa-bug-report/SKILL.md +2 -1
  86. package/skills/eng-qa-bug-report/TASK_MANAGERS.md +1 -1
  87. package/skills/eng-qa-cypress-e2e/SKILL.md +1 -0
  88. package/skills/eng-qa-dev-guide/SKILL.md +1 -0
  89. package/skills/eng-qa-e2e/SKILL.md +1 -0
  90. package/skills/eng-qa-e2e-spec-writer/SKILL.md +1 -0
  91. package/skills/eng-qa-exploratory/SKILL.md +1 -0
  92. package/skills/eng-qa-gate/SKILL.md +3 -2
  93. package/skills/eng-qa-graphql-contract/SKILL.md +1 -0
  94. package/skills/eng-qa-quality-report/SKILL.md +3 -2
  95. package/skills/eng-qa-test-plan/SKILL.md +1 -0
  96. package/skills/eng-qa-testsprite/SKILL.md +2 -1
  97. package/skills/eng-qa-unit-test/SKILL.md +1 -0
  98. package/skills/eng-scraper/SKILL.md +1 -0
  99. package/skills/eng-scraper-robot-builder/SKILL.md +1 -0
  100. package/skills/{eng-cybersecurity → eng-security-cybersecurity}/SKILL.md +3 -2
  101. package/skills/eng-security-patch/SKILL.md +6 -2
  102. package/skills/{eng-threat-model → eng-security-threat-model}/SKILL.md +6 -2
  103. package/skills/eng-security-triage/SKILL.md +4 -0
  104. package/skills/{context-detect → jarvis-context-detect}/SKILL.md +6 -5
  105. package/skills/{context-detect → jarvis-context-detect}/assets/context-profile-template.md +3 -3
  106. package/skills/jarvis-create-specialization/SKILL.md +230 -0
  107. package/skills/jarvis-create-specialization/assets/referencia-template.md +39 -0
  108. package/skills/jarvis-create-specialization/assets/skill-especializacao-template.md +78 -0
  109. package/skills/{docs-central → jarvis-docs-central}/README.md +1 -1
  110. package/skills/{docs-central → jarvis-docs-central}/SKILL.md +3 -40
  111. package/skills/{docs-index → jarvis-docs-index}/SKILL.md +8 -4
  112. package/skills/{init-jarvis → jarvis-init}/SKILL.md +42 -19
  113. package/skills/{init-jarvis → jarvis-init}/assets/mcp-configs.md +3 -3
  114. package/skills/{init-jarvis → jarvis-init}/assets/onboarding-checklist.md +1 -1
  115. package/skills/jarvis-init/assets/passo-adicionar-stacks.md +163 -0
  116. package/skills/{init-jarvis → jarvis-init}/assets/setup-guide.md +1 -1
  117. package/skills/jarvis-init/assets/sinais-de-stack.md +54 -0
  118. package/skills/jarvis-list-specializations/SKILL.md +148 -0
  119. package/skills/{report-issue → jarvis-report-issue}/SKILL.md +3 -2
  120. package/skills/{prod-roadmap-report → product-roadmap-report}/SKILL.md +2 -1
  121. package/skills/product-specs/SKILL.md +45 -0
  122. package/skills/{prod-specs-update → product-specs-update}/SKILL.md +3 -2
  123. package/taxonomy.md +3 -21
  124. package/templates/AGENTS.md +7 -6
  125. package/templates/CDD aplicado a Prompts.md +5 -5
  126. package/templates/ENV-template.md +12 -9
  127. package/templates/engineering/AGENTS-template.md +1 -1
  128. package/templates/engineering/CONTACTS-template.md +1 -1
  129. package/templates/product/prod-discovery-template.md +98 -0
  130. package/{skills/prod-specs/templates → templates/product}/prod-epic-template.md +1 -0
  131. package/{skills/prod-specs/templates → templates/product}/prod-frd-template.md +1 -0
  132. package/{skills/prod-specs/templates → templates/product}/prod-issue-template.md +1 -0
  133. package/{skills/prod-specs/templates → templates/product}/prod-prd-template.md +1 -0
  134. package/workflows/AGENTS.md +3 -1
  135. package/workflows/README.md +2 -0
  136. package/workflows/engineering/eng.bug-audit.md +2 -2
  137. package/workflows/engineering/eng.build-tech-spec.md +38 -49
  138. package/workflows/engineering/eng.debug.md +10 -10
  139. package/workflows/engineering/eng.docs.md +2 -2
  140. package/workflows/engineering/eng.plan.md +5 -5
  141. package/workflows/engineering/eng.pr.md +8 -8
  142. package/workflows/engineering/eng.pre-pr.md +16 -20
  143. package/workflows/engineering/eng.review.md +5 -10
  144. package/workflows/engineering/eng.rpa.robot.md +3 -3
  145. package/workflows/engineering/eng.security-audit.md +5 -5
  146. package/workflows/engineering/eng.security-incident.md +2 -2
  147. package/workflows/engineering/eng.security-pipeline.md +2 -2
  148. package/workflows/engineering/eng.start.md +16 -50
  149. package/workflows/engineering/eng.work.md +9 -12
  150. package/workflows/engineering/frontend/eng.frontend-component.md +68 -96
  151. package/workflows/engineering/frontend/eng.frontend-perf-audit.md +90 -220
  152. package/workflows/engineering/frontend/eng.frontend-review.md +57 -63
  153. package/workflows/engineering/qa/eng.qa-quality-report.md +0 -5
  154. package/workflows/product/prod.roadmap.preview.md +2 -2
  155. package/workflows/product/prod.spec.breakdown.md +3 -8
  156. package/workflows/product/prod.spec.discovery.md +152 -0
  157. package/workflows/product/prod.spec.epic.md +3 -0
  158. package/workflows/product/prod.spec.frd.md +123 -8
  159. package/workflows/product/prod.spec.issue.md +3 -2
  160. package/workflows/product/prod.spec.md +2 -0
  161. package/workflows/product/prod.spec.prd.md +105 -6
  162. package/workflows/taxonomy.md +1 -1
  163. package/workflows/warm-up.md +5 -26
  164. package/agents/engineering/eng.tech-analyst.agent.md +0 -102
  165. package/skills/churn-audit/SKILL.md +0 -385
  166. package/skills/eng-jira-comment/SKILL.md +0 -17
  167. package/skills/eng-tech-analyst/SKILL.md +0 -529
  168. package/skills/lovable-prompt-generator/SKILL.md +0 -304
  169. package/skills/prod-specs/SKILL.md +0 -108
  170. package/skills/prod-specs/references/prod.spec.clarify.md +0 -176
  171. package/skills/prod-specs/references/prod.spec.epic.md +0 -107
  172. package/skills/prod-specs/references/prod.spec.frd.md +0 -135
  173. package/skills/prod-specs/references/prod.spec.issue.md +0 -145
  174. package/skills/prod-specs/references/prod.spec.prd.md +0 -118
  175. package/skills/prod-specs/templates/prod-prd-full-template.md +0 -159
  176. package/workflows/engineering/ta/eng.ta.atendimento.md +0 -93
  177. /package/skills/{eng-arch-c4 → eng-backend-arch-c4}/assets/example-code.md +0 -0
  178. /package/skills/{eng-arch-c4 → eng-backend-arch-c4}/assets/example-component.md +0 -0
  179. /package/skills/{eng-arch-c4 → eng-backend-arch-c4}/assets/example-container.md +0 -0
  180. /package/skills/{eng-arch-c4 → eng-backend-arch-c4}/assets/example-context.md +0 -0
  181. /package/skills/{prod-roadmap-report → product-roadmap-report}/README.md +0 -0
  182. /package/skills/{prod-roadmap-report → product-roadmap-report}/commands/status.compiled.single.team.md +0 -0
  183. /package/skills/{prod-roadmap-report → product-roadmap-report}/commands/status.list.projects.md +0 -0
  184. /package/skills/{prod-roadmap-report → product-roadmap-report}/commands/status.memory.md +0 -0
  185. /package/skills/{prod-roadmap-report → product-roadmap-report}/commands/status.roadmap.preview.md +0 -0
  186. /package/skills/{prod-roadmap-report → product-roadmap-report}/references/detailed-guide.md +0 -0
  187. /package/skills/{prod-roadmap-report → product-roadmap-report}/rules/detailed-guide.md +0 -0
  188. /package/skills/{prod-roadmap-report → product-roadmap-report}/rules/status-report-rules.md +0 -0
  189. /package/skills/{prod-roadmap-report → product-roadmap-report}/templates/template-multiple-teams-compiled-status.md +0 -0
  190. /package/skills/{prod-roadmap-report → product-roadmap-report}/templates/template-projects-list.md +0 -0
  191. /package/skills/{prod-roadmap-report → product-roadmap-report}/templates/template-single-team-compiled-status.md +0 -0
  192. /package/skills/{prod-roadmap-report → product-roadmap-report}/templates/template-single-team-status.md +0 -0
  193. /package/{skills/prod-specs/templates → templates/product}/prod-breakdown-template.md +0 -0
@@ -8,7 +8,7 @@ trigger: always_on
8
8
 
9
9
  ## Propósito
10
10
 
11
- O workflow `work` tem como **único objetivo** implementar código seguindo o plano de execução (`plan.md`). É uma etapa de **codificação pura**, sem commits ou PRs.
11
+ O workflow `work` tem como **único objetivo** implementar código seguindo o plano de execução (`plan.md`). É uma etapa de **codificação**: commita ao final de cada fase validada, mas nunca faz push nem abre PR.
12
12
 
13
13
  ---
14
14
 
@@ -67,19 +67,23 @@ Confirmar que está na branch certa? (s/n)
67
67
 
68
68
  ## Princípios Fundamentais
69
69
 
70
- ### 1. Somente Codificação - NUNCA Commits ou PRs
70
+ ### 1. Codificação com commit por fase - NUNCA push ou PR
71
71
 
72
72
  O `work` é **estritamente proibido** de:
73
73
 
74
74
 
75
- | ❌ Proibido | ✅ Permitido |
76
- | ------------------------------------------- | ----------------------------------- |
77
- | Fazer commits | Escrever código |
78
- | Criar Pull Requests | Criar/modificar arquivos de código |
79
- | Executar`git add`, `git commit`, `git push` | Ler arquivos da sessão |
80
- | Mover cards no Jira | Executar testes locais |
81
- | Fazer merge de branches | Atualizar`plan.md` com progresso |
82
- | Sugerir "vamos fazer o PR agora" | Validar código com o usuário |
75
+ | ❌ Proibido | ✅ Permitido |
76
+ | -------------------------------------------------- | --------------------------------------------------------- |
77
+ | Fazer `git push` | Escrever código |
78
+ | Criar Pull Requests | Criar/modificar arquivos de código |
79
+ | Usar `git add .` | `git add` de arquivos específicos da fase |
80
+ | Commitar sem aprovação do usuário na fase | Commitar ao final da fase validada, com testes passando |
81
+ | Commitar com testes falhando | Executar testes locais |
82
+ | Mover cards no Jira | Ler arquivos da sessão |
83
+ | Fazer merge de branches | Atualizar `plan.md` com progresso |
84
+ | Sugerir "vamos fazer o PR agora" | Validar código com o usuário |
85
+
86
+ O commit segue o formato do workflow (`{TASK_MANAGER_KEY} {tipo}({escopo}): {descrição}`, com `Refs:`). Push e PR são responsabilidade do `eng.pr`.
83
87
 
84
88
  ### 2. Escopo de Atuação
85
89
 
@@ -187,7 +191,7 @@ O workflow segue um ciclo rígido:
187
191
 
188
192
  - Informar que a fase foi concluída
189
193
  - Perguntar se deseja iniciar próxima fase
190
- - ⚠️ **NUNCA sugerir PR ou commit**
194
+ - ⚠️ **NUNCA sugerir push ou PR** (são do `eng.pr`)
191
195
 
192
196
  ---
193
197
 
@@ -243,9 +247,9 @@ O workflow **DEVE pausar e aguardar confirmação**:
243
247
 
244
248
  1. **Escapar para Git**
245
249
 
246
- - "Vou fazer o commit dessas mudanças..."
247
250
  - "Agora podemos criar o PR..."
248
251
  - "Deixa eu dar push das alterações..."
252
+ - `git add .` ou commit com testes falhando
249
253
  2. **Pular validação**
250
254
 
251
255
  - Implementar várias fases sem pausar
@@ -291,7 +295,7 @@ Ao finalizar **TODAS as fases** do `plan.md`, informe:
291
295
  2. Execute os testes completos
292
296
  3. Quando estiver pronto, use `eng.pr` para criar o Pull Request
293
297
 
294
- ⚠️ Este workflow NÃO faz commits ou PRs.
298
+ ⚠️ Este workflow commita por fase, mas NÃO faz push nem PR.
295
299
  Use `eng.pr` quando estiver pronto para submeter.
296
300
  ```
297
301
 
@@ -307,6 +311,7 @@ Antes de considerar uma fase completa:
307
311
  - [ ] Usuário validou o código
308
312
  - [ ] `plan.md` atualizado com status
309
313
  - [ ] Comentários adicionados no plan.md
310
- - [ ] NENHUM commit foi feito
314
+ - [ ] Commit da fase feito (arquivos adicionados um a um, testes passando)
315
+ - [ ] NENHUM push foi feito
311
316
  - [ ] NENHUM PR foi criado
312
317
  - [ ] Próximos passos comunicados
@@ -1,47 +1,50 @@
1
1
  ---
2
2
  name: eng.frontend-rules
3
3
  description: >
4
- Padrões obrigatórios para devs com HUB: FRONTEND — componentes, TypeScript,
5
- acessibilidade, performance, micro frontend e design system.
4
+ Padrões obrigatórios para devs com HUB: FRONTEND, neutros de stack — componentes,
5
+ tipagem, acessibilidade, performance, testes, arquiteturas distribuídas e tokens de design.
6
+ O que depende da stack vem das especializações registradas em FRONTEND_SPECIALIZATIONS.
6
7
  author: jarvis-team
7
- version: "1.0"
8
+ version: "1.1"
8
9
  ---
9
10
 
10
11
  > **Applies to:** HUB: FRONTEND | POSITION: all | AREA: ENGINEERING | SQUAD: all
11
12
 
12
13
  # Regras de Engenharia Frontend
13
14
 
15
+ > **Neutras de stack.** Estas regras valem para qualquer framework ou linguagem de frontend. Onde uma regra depende da stack (como se busca dados, como se organiza um módulo, qual ferramenta de teste usar), siga a **especialização registrada** em `FRONTEND_SPECIALIZATIONS` no `ENV.md` e o código existente do projeto. Sem especialização registrada, **pergunte** em vez de presumir uma stack. Ver `eng.specializations-rules.md`.
16
+
14
17
  ---
15
18
 
16
19
  ## 1. Componentes
17
20
 
18
21
  ### Estrutura obrigatória
19
- - Todo componente deve ter props tipadas com TypeScript — `any` é proibido sem justificativa documentada
20
- - Props obrigatórias devem ser declaradas sem `?`; opcionais com `?` e valor default explícito
22
+ - Toda entrada de um componente (props, parâmetros ou atributos) é **tipada ou documentada**; tipo genérico solto (`any` ou equivalente) é proibido sem justificativa documentada
23
+ - Entradas obrigatórias são declaradas como obrigatórias; opcionais têm valor default explícito
21
24
  - Componentes com mais de uma responsabilidade devem ser divididos (Single Responsibility)
22
- - Lógica de negócio não pertence ao componente de UI — usar hooks ou camada de serviço
25
+ - Lógica de negócio não pertence ao componente de UI — usar a camada de lógica ou de serviço que o projeto adota
23
26
 
24
27
  ### Nomenclatura
25
- - Componentes: `PascalCase` (`UserCard`, `ProductTable`)
26
- - Hooks: `use` + `PascalCase` (`useUserData`, `useProductFilters`)
27
- - Arquivos de componente: `PascalCase.tsx` (`UserCard.tsx`)
28
- - Arquivos de hook: `camelCase.ts` (`useUserData.ts`)
28
+ - Seguir a convenção de nomes **do projeto** (e da especialização registrada) para componentes, funções de lógica reutilizável e arquivos
29
+ - Manter o padrão consistente: um mesmo tipo de arquivo, um mesmo estilo de nome
29
30
 
30
31
  ### Checklist mínimo por componente
31
- - [ ] Props tipadas (TypeScript)
32
+ - [ ] Entradas tipadas ou documentadas
32
33
  - [ ] Estados visuais: normal, hover, focus, disabled, loading, erro, vazio
33
- - [ ] Semântica HTML correta (não usar `<div>` para botões, links ou listas)
34
- - [ ] Responsivo (mobile-first com breakpoints do design system)
35
- - [ ] Testável sem DOM real (lógica isolada em hooks)
34
+ - [ ] Semântica HTML correta (não usar um contêiner genérico para botões, links ou listas)
35
+ - [ ] Responsivo (mobile-first, nos tamanhos de tela do projeto)
36
+ - [ ] Testável sem depender de um navegador real (lógica isolada da apresentação)
36
37
 
37
38
  ---
38
39
 
39
- ## 2. TypeScript
40
+ ## 2. Tipagem e contratos
41
+
42
+ Aplica-se quando a linguagem do projeto tem tipagem estática ou contratos explícitos.
40
43
 
41
- - `strict: true` obrigatório em `tsconfig.json`
42
- - Proibido: `as any`, `@ts-ignore` sem comentário explicativo, `!` (non-null assertion) sem verificação prévia
43
- - Types vs Interfaces: usar `interface` para objetos de domínio, `type` para uniões e utilitários
44
- - Exportar tipos públicos de componentes (`export type { ButtonProps }`)
44
+ - O **modo estrito** de verificação do projeto fica ligado e não é relaxado
45
+ - Proibido: tipo genérico solto, supressão de verificação de tipos sem comentário explicativo e asserção de "não nulo" sem verificação prévia
46
+ - Modelar objetos de domínio de forma explícita e unir ou derivar tipos com os recursos da linguagem
47
+ - Exportar o contrato público dos componentes, quando a linguagem permite
45
48
 
46
49
  ---
47
50
 
@@ -49,12 +52,12 @@ version: "1.0"
49
52
 
50
53
  - Semântica HTML nativa antes de ARIA (`<button>`, `<nav>`, `<main>`, `<article>`)
51
54
  - Todos os elementos interativos são navegáveis por teclado
52
- - Contraste mínimo: 4.5:1 para texto normal, 3:1 para texto grande e elementos UI
53
- - Imagens informativas têm `alt` descritivo; decorativas têm `alt=""`
54
- - Modais usam `role="dialog"`, `aria-modal="true"`, `aria-labelledby` e focus trap
55
- - Formulários: todo `<input>` tem `<label>` associado via `htmlFor` ou `aria-label`
55
+ - Contraste mínimo: 4.5:1 para texto normal, 3:1 para texto grande e elementos de interface
56
+ - Imagens informativas têm texto alternativo descritivo; decorativas têm texto alternativo vazio
57
+ - Modais usam `role="dialog"`, `aria-modal="true"`, `aria-labelledby` e prendem o foco
58
+ - Formulários: todo campo tem rótulo associado
56
59
  - Erros de formulário: exibidos com `role="alert"` ou `aria-live="polite"`
57
- - Screen reader: testar com VoiceOver (Mac) ou NVDA (Windows) em features críticas
60
+ - Leitor de tela: testar com VoiceOver (Mac) ou NVDA (Windows) em features críticas
58
61
 
59
62
  ---
60
63
 
@@ -66,59 +69,56 @@ version: "1.0"
66
69
  - INP (Interaction to Next Paint): < 200ms
67
70
 
68
71
  ### Práticas obrigatórias
69
- - Imagens sempre com `width` e `height` definidos para evitar CLS
70
- - Componentes pesados com `lazy()` + `<Suspense fallback>`
71
- - Dependências novas: avaliar impacto no bundle antes de instalar (`bundlephobia.com`)
72
- - Sem `useEffect` para buscar dados — usar React Query / TanStack Query ou Server Components
73
- - Memoização apenas quando necessário e comprovado com profiler (não premature optimization)
72
+ - Imagens sempre com largura e altura definidas, para evitar CLS
73
+ - Carregamento tardio de componentes pesados, com o recurso que a stack oferece, e um substituto visual com o mesmo tamanho enquanto carrega
74
+ - Dependências novas: avaliar o impacto no tamanho do pacote final antes de instalar
75
+ - Busca de dados pela camada que o projeto adota para isso (conforme a especialização), e não por efeitos soltos no componente de apresentação
76
+ - Otimização de renderização apenas quando necessária e **comprovada com medição** (não otimização prematura)
74
77
 
75
78
  ---
76
79
 
77
80
  ## 5. Testes
78
81
 
79
- - **Testing Library**: queries por acessibilidade primeiro (`getByRole`, `getByLabelText`)
80
- - **Proibido**: `getByTestId` como primeira opção (usar só quando sem alternativa acessível)
81
- - **Cobertura mínima**: fluxos críticos de usuário (happy path + estado de erro)
82
- - **Vitest**: unitários para lógica pura, hooks e utilitários
83
- - **Playwright / Cypress**: E2E para fluxos de usuário completos (login, checkout, etc.)
84
- - Mocks de módulos externos devem estar em `__mocks__/` ou `*.mock.ts`
82
+ - **Consultas por acessibilidade primeiro** (por papel e por rótulo): focar no que o usuário vê e faz, não em detalhes de implementação
83
+ - **Proibido** usar identificador de teste como primeira opção (só quando não houver alternativa acessível)
84
+ - **Cobertura mínima:** fluxos críticos de usuário (caminho feliz e estado de erro)
85
+ - **Testes unitários** para lógica pura e utilitários, com a ferramenta que o projeto já usa
86
+ - **Testes de ponta a ponta** para fluxos completos de usuário (login, checkout etc.), com a ferramenta que o projeto já usa
87
+ - Substitutos de módulos externos ficam num lugar previsível do projeto (por exemplo, uma pasta de mocks)
85
88
 
86
89
  ### Ferramentas disponíveis no framework
87
90
 
88
- - **TestSprite** (`/eng-qa-testsprite`): se o TestSprite estiver instalado no projeto, usá-lo para geração
89
- e execução de testes de componente e E2E — ele gera planos de teste e código automaticamente.
91
+ - **TestSprite** (`/eng-qa-testsprite`): se estiver instalado no projeto, usá-lo para gerar e executar testes de componente e de ponta a ponta — ele gera planos de teste e código automaticamente.
90
92
  Verificar: `ls node_modules/@testsprite 2>/dev/null || cat package.json | grep testsprite`
91
-
92
- - **Stagehand** (`/eng-scraper-robot-builder`, `/eng-qa-e2e`): para testes E2E em linguagem natural
93
- ou automação de fluxos de usuário complexos, o Stagehand permite descrever o fluxo em português
94
- e gera os steps Playwright automaticamente.
93
+ - **Stagehand** (`/eng-scraper-robot-builder`, `/eng-qa-e2e`): para testes de ponta a ponta em linguagem natural ou automação de fluxos complexos, descrevendo o fluxo em português.
95
94
  Verificar: `cat package.json | grep stagehand`
96
95
 
97
- > Quando qualquer dessas ferramentas estiver disponível no projeto, **preferir sobre a implementação
98
- > manual** — reduz custo de manutenção e aumenta cobertura mais rapidamente.
96
+ > Quando qualquer dessas ferramentas estiver disponível no projeto, **preferir sobre a implementação manual** — reduz o custo de manutenção e aumenta a cobertura mais rápido.
99
97
 
100
98
  ---
101
99
 
102
- ## 6. Micro Frontend
100
+ ## 6. Arquiteturas distribuídas (se o projeto divide o frontend em partes)
101
+
102
+ Aplica-se somente se o projeto divide o frontend em partes carregadas separadamente (por exemplo, uma aplicação principal que carrega módulos independentes). O detalhe da arquitetura em uso vem da especialização registrada. Princípios que valem em qualquer variante:
103
103
 
104
- - Todo remote deve ser versionado e publicado com URL de fallback definida
105
- - Contratos de interface entre shell e remotes são declarados em tipos TypeScript compartilhados
106
- - Nenhum remote depende diretamente de outro remote — comunicação via shell ou event bus
107
- - Shared dependencies declaradas explicitamente no `ModuleFederationPlugin` com `singleton: true`
108
- - Cada remote deve funcionar em modo standalone (sem shell) para desenvolvimento local
109
- - Testes de integração entre shell e remote são obrigatórios para cada ponto de montagem
110
- - Versionamento: breaking changes no contrato de um remote exigem bump de versão major
104
+ - Cada módulo é **versionado e publicado** com uma alternativa definida quando não carrega
105
+ - Os contratos de interface entre a aplicação principal e os módulos são declarados de forma explícita e compartilhada
106
+ - Nenhum módulo depende diretamente de outro: a comunicação passa pela aplicação principal ou por um barramento de eventos
107
+ - Dependências compartilhadas são declaradas explicitamente, para não serem carregadas em duplicidade
108
+ - Cada módulo deve funcionar de forma isolada, para desenvolvimento local
109
+ - Testes de integração entre a aplicação principal e cada módulo são obrigatórios em cada ponto de montagem
110
+ - Mudança que quebra o contrato de um módulo exige aumento de versão **major**
111
111
 
112
112
  ---
113
113
 
114
- ## 7. Design System
114
+ ## 7. Tokens de design e componentes compartilhados
115
115
 
116
- - Cores, tipografia, espaçamentos e breakpoints vêm **exclusivamente** dos tokens do design system
117
- - Proibido hardcodar valores de cor, fonte ou espaçamento fora dos tokens
118
- - Novos componentes de UI são criados no design system antes de serem usados nos remotes
119
- - Variantes de componente usam `cva` (class-variance-authority) como padrão
120
- - Componentes públicos do design system têm story no Storybook antes de serem liberados
121
- - Alterações na API pública de um componente (props) seguem semver
116
+ - Cores, tipografia, espaçamentos e tamanhos de tela vêm **exclusivamente** dos tokens de design do projeto (quando o projeto tem)
117
+ - Proibido fixar valores de cor, fonte ou espaçamento fora dos tokens
118
+ - Novos componentes reutilizáveis nascem na biblioteca de componentes compartilhados do projeto (se existir) antes de serem usados nos módulos
119
+ - Variantes de componente seguem o padrão que o projeto já usa
120
+ - Componentes públicos da biblioteca compartilhada têm documentação visual antes de serem liberados, quando o projeto usa um catálogo de componentes
121
+ - Alterações na interface pública de um componente seguem o versionamento semântico
122
122
 
123
123
  ---
124
124
 
@@ -126,22 +126,23 @@ version: "1.0"
126
126
 
127
127
  Ao revisar PR de frontend, verificar:
128
128
 
129
- - [ ] TypeScript sem `any` ou `@ts-ignore` injustificado
129
+ - [ ] Tipagem sem tipo genérico solto nem supressões injustificadas (quando a linguagem tem tipagem)
130
130
  - [ ] Nenhuma lógica de negócio em componente de UI
131
131
  - [ ] Acessibilidade: semântica HTML, ARIA correto, navegação por teclado
132
- - [ ] Performance: sem re-renders desnecessários, lazy loading aplicado quando cabível
133
- - [ ] Tokens do design system usados (sem valores hardcodados)
134
- - [ ] Testes cobrem happy path e estado de erro
135
- - [ ] Responsividade verificada em mobile e desktop
136
- - [ ] Se micro frontend: contrato de interface atualizado, remote funciona standalone
132
+ - [ ] Performance: sem renderizações desnecessárias comprovadas, carregamento tardio aplicado quando cabível
133
+ - [ ] Tokens de design do projeto usados (sem valores fixos)
134
+ - [ ] Testes cobrem o caminho feliz e o estado de erro
135
+ - [ ] Responsividade verificada em celular e desktop
136
+ - [ ] Se arquitetura distribuída: contrato de interface atualizado e módulo funciona de forma isolada
137
+ - [ ] Itens exigidos pelas especializações registradas atendidos
137
138
 
138
139
  ---
139
140
 
140
141
  ## 9. Proibições Absolutas
141
142
 
142
- - `document.querySelector` / manipulação direta do DOM em contexto React
143
+ - Manipulação direta do DOM fora do mecanismo que o framework do projeto prevê para isso
143
144
  - `!important` em CSS sem comentário explicativo
144
- - Fetch direto em componente de UI (usar hooks, queries ou Server Actions)
145
- - Importar de outro remote diretamente (rompe o isolamento do micro frontend)
146
- - Hardcodar tokens de design (cores, espaçamentos, fontes) fora do sistema de tokens
147
- - `console.log` em código commitado (usar logger estruturado ou remover)
145
+ - Busca de dados direto no componente de apresentação (usar a camada que o projeto adota)
146
+ - Importar diretamente de outro módulo de uma arquitetura distribuída (rompe o isolamento)
147
+ - Fixar tokens de design (cores, espaçamentos, fontes) fora do sistema de tokens
148
+ - Log de depuração (`console.log` ou equivalente) em código commitado (usar logger estruturado ou remover)
@@ -12,6 +12,7 @@ Documentação didática (termos por extenso, exemplos, quando usar cada comando
12
12
  |---------|--------|
13
13
  | Guia de decisão (qual spec?) | [prod.spec.guide.md](../../docs/produto/prod.spec.guide.md) |
14
14
  | `/prod.spec` | [prod.spec.md](../../docs/produto/prod.spec.md) |
15
+ | `/prod.spec.discovery` | [prod.spec.discovery.md](../../docs/produto/prod.spec.discovery.md) |
15
16
  | `/prod.spec.prd` | [prod.spec.prd.md](../../docs/produto/prod.spec.prd.md) |
16
17
  | `/prod.spec.frd` | [prod.spec.frd.md](../../docs/produto/prod.spec.frd.md) |
17
18
  | `/prod.spec.breakdown` | [prod.spec.breakdown.md](../../docs/produto/prod.spec.breakdown.md) |
@@ -22,3 +23,4 @@ Documentação didática (termos por extenso, exemplos, quando usar cada comando
22
23
  ## Arquivo normativo (agentes)
23
24
 
24
25
  - [`prod-rules.md`](./prod-rules.md) — ENV, pastas, status, convenção de nomes, formato de perguntas
26
+ - [`prod.spec-rules.md`](./prod.spec-rules.md) — princípios de escrita de spec: critérios de aceitação por tipo de documento, contexto completo e terminologia consistente
@@ -7,9 +7,9 @@ trigger: always_on
7
7
  ## Principais Regras
8
8
  - O idioma padrão é o português do Brasil. Mas mude caso o usuário solicite outro idioma.
9
9
  - Leia o `./$IDE/ENV.md` para entender as variáveis de ambiente do framework. Ele é importante para você saber caminhos de pastas e outras informações sobre projeto e usuário.
10
- - Se não existir, use o skill `init-jarvis` para criar o `ENV.md`.
10
+ - Se não existir, use o skill `jarvis-init` para criar o `ENV.md`.
11
11
  - Procure `CLAUDE.md` ou `AGENTS.md` para entender informações sobre o contexto e objetivo do projeto.
12
- - Se não existirem, use o skill `init-jarvis` para criar o `AGENTS.md` e após essa criação, copie o conteúdo do `AGENTS.md` para o `CLAUDE.md` (se não existir o CLAUDE.md, crie-o).
12
+ - Se não existirem, use o skill `jarvis-init` para criar o `AGENTS.md` e após essa criação, copie o conteúdo do `AGENTS.md` para o `CLAUDE.md` (se não existir o CLAUDE.md, crie-o).
13
13
  - Nunca invente ou presuma dados ou informações. Se não souber, pergunte, valide e confirme com o usuário.
14
14
  - Entenda se o projeto é novo ou existente, para criar ou modificar especificações de produto ou técnicas.
15
15
 
@@ -18,7 +18,7 @@ trigger: always_on
18
18
  IMPORTANTE: Para que você funcione como o previsto e tenha todas as informações necessárias, é importante que você leia e interprete o arquivo `./$IDE/ENV.md`. Esse é o arquivo que guardamos variáveis de informações importantes sobre o projeto, o usuário e estruturas de pastas e arquivos que você precisará para operar corretamente.
19
19
 
20
20
  - **Sempre no início de novas sessões ou interações, ANTES de executar qualquer comando ou workflow**, o agente **DEVE verificar** se o arquivo `$IDE/ENV.md` existe e está preenchido corretamente.
21
- - **Exceção**: O comando `/init-jarvis` é o único que pode ser executado sem o `ENV.md`, pois é ele que cria o arquivo.
21
+ - **Exceção**: O comando `/jarvis-init` é o único que pode ser executado sem o `ENV.md`, pois é ele que cria o arquivo.
22
22
  - **Validação obrigatória**: O arquivo deve conter as seguintes variáveis preenchidas (não vazias):
23
23
  - `RULES_FOLDER`
24
24
  - `PROD_FOLDER_NAME`
@@ -30,7 +30,7 @@ IMPORTANTE: Para que você funcione como o previsto e tenha todas as informaçõ
30
30
  - **Se o ENV.md não existir ou estiver incompleto**, o agente deve:
31
31
  1. Interromper a execução do comando solicitado
32
32
  2. Informar ao usuário que não podemos avançar sem o ENV.md. Mensagem abaixo.
33
- 3. Após confirmação, executar via Skill tool o `init-jarvis`. No caso de negativa, o agente poderá avançar apenas para criar especificações de produto. E sempre que precisar salvar arquivos das especificações, deverá confirmar com o usuário.
33
+ 3. Após confirmação, executar via Skill tool o `jarvis-init`. No caso de negativa, o agente poderá avançar apenas para criar especificações de produto. E sempre que precisar salvar arquivos das especificações, deverá confirmar com o usuário.
34
34
  ```
35
35
  ⚠️ O framework não foi inicializado.
36
36
 
@@ -42,7 +42,7 @@ Se o arquivo não existir ou no caso de recusa, crie o `$IDE/ENV.md` incluindo a
42
42
  RULES_FOLDER=.$IDE/rules
43
43
  PROD_FOLDER_NAME=product
44
44
  PROD_RULES=$RULES_FOLDER/$PROD_FOLDER_NAME
45
- PROD_FLOWS=.$IDE/$FLOWS_FOLDER/$PROD_FOLDER_NAME
45
+ PROD_FLOWS=.$IDE/$FLOWS_FOLDER
46
46
  PROD_TEMPLATES=.$IDE/$TEMPLATES_FOLDER/$PROD_FOLDER_NAME
47
47
  PROD_DOCS=$DOCS_FOLDER/$PROD_FOLDER_NAME
48
48
  CENTRAL_DOCS_REPO=[USER:LOCAL_CENTRAL_DOCS_REPO]
@@ -95,6 +95,7 @@ Abaixo, segue uma descrição de algumas das variáveis mais importantes para as
95
95
  Sempre siga as instruções de acordo com as relações abaixo.
96
96
  **Guia para humanos (desenvolvedores aprendendo produto):** `docs/produto/` — uma página por comando, termos por extenso.
97
97
 
98
+ - `$PROD_FLOWS/prod.spec.discovery.md` — Investigação inicial de uma ideia (rascunho estruturado; não define tarefas) → [docs/produto/prod.spec.discovery.md](../../docs/produto/prod.spec.discovery.md)
98
99
  - `$PROD_FLOWS/prod.spec.prd.md` — Documento de Requisitos de Produto (*Product Requirements Document*) → [docs/produto/prod.spec.prd.md](../../docs/produto/prod.spec.prd.md)
99
100
  - `$PROD_FLOWS/prod.spec.frd.md` — Documento de Requisitos Funcionais (*Functional Requirements Document*) → [docs/produto/prod.spec.frd.md](../../docs/produto/prod.spec.frd.md)
100
101
  - `$PROD_FLOWS/prod.spec.breakdown.md` — Quebra de especificação grande em fatias → [docs/produto/prod.spec.breakdown.md](../../docs/produto/prod.spec.breakdown.md)
@@ -129,6 +130,7 @@ Dentro das pastas do projeto, os caminhos de pastas e o nome dos arquivos finais
129
130
  - Documento de Requisitos Funcionais: `$PROD_DOCS/prd-{id}-{nome-do-pai}/frd-{id}-{nome}.md`
130
131
  - Épico: `$PROD_DOCS/prd-{id}-{nome-do-pai}/issues/epic-{id}-{nome}.md`
131
132
  - História / tarefa: `$PROD_DOCS/prd-{id}-{nome-do-pai}/issues/{story|task}-{id}-{nome}.md`
133
+ - Discovery (rascunho de uma ideia, anterior ao PRD): `$PROD_DOCS/discoveries/discovery-{id}-{nome}.md`. Usa `status` (`in_review` enquanto o rascunho existe; `cancelled` se o veredito for não seguir) e `verdict` (vazio durante a entrevista, `proceed`, `investigate_more` ou `do_not_proceed`). O veredito é uma recomendação; um PRD, FRD, épico ou issue criado depois prevalece como fonte da verdade.
132
134
 
133
135
  O ID deve ser iterado nos novos arquivos seguindo a sequência existente.
134
136
 
@@ -2,75 +2,39 @@
2
2
  trigger: always_on
3
3
  ---
4
4
 
5
- ## Principais Regras
6
- - O idioma padrão é o português do Brasil. Mas mude caso o usuário solicite outro idioma.
7
- - Sempre procure por arquivos de configuração e documentação do projeto antes de executar qualquer comando ou workflow.
8
- - Leia o `README.md` do projeto para saber contexto e detalhes importantes.
9
- - Nunca invente ou presuma dados ou informações. Se não souber, pergunte, valide e confirme com o usuário.
10
- - Entenda se o projeto é novo ou existente, para criar ou modificar especificações de produto ou técnicas.
11
- - Identifique se o produto é versionado com git e leia o histórico de commits para entender as últimas atualizações.
5
+ > **Applies to:** HUB: all | POSITION: all | AREA: PRODUCT | SQUAD: all
12
6
 
7
+ # Regras de Escrita de Especificação de Produto
13
8
 
14
- ## Diretórios e Variáveis dessa Skill
9
+ ## Objetivo
15
10
 
16
- Utilize essas variáveis para interpretar corretamente o contexto as instruções dessa skill. Os endereços são relativos ao diretório raiz desse plugin:
11
+ Definir os princípios que todo documento de especificação de produto (PRD, FRD, épico, história, tarefa e bug) deve seguir: o nível certo de critérios de aceitação em cada tipo de documento, contexto completo, terminologia consistente e o uso opcional de um discovery como insumo.
17
12
 
18
- **Diretório da skill:** `${CLAUDE_SKILL_DIR}`
13
+ ## Escopo
19
14
 
20
- - `$SKILL_TEMPLATE_FOLDER`: `${CLAUDE_SKILL_DIR}/templates/`
21
- - `$SKILL_REFERENCES_FOLDER`: `${CLAUDE_SKILL_DIR}/references/`
15
+ Aplica-se a todos os comandos `prod.spec.*` que escrevem ou alteram um documento. Complementa o `prod-rules.md` (variáveis de ambiente, comandos, nomes de arquivos, status e perguntas ao usuário), que continua sendo a regra geral de produto.
22
16
 
17
+ ## Regras
23
18
 
24
- ## Perguntas para guiar o usuário
19
+ ### Princípio: Critérios de aceitação e requisitos
25
20
 
26
- Para fazer perguntas ao usuário:
27
- 1. Tente usar o tool `AskUserQuestion` se ele estiver disponível no seu ambiente (ex: Claude Desktop, Claude Cowork, Claude Code CLI).
28
- 2. Se não estiver disponível, use **obrigatoriamente** (se possível) o formato de tabela abaixo. Caso não possível no formato de tabela, faça perguntas em texto corrido.
29
- 3. Nunca avance sem coletar as respostas necessárias.
21
+ #### Critérios de aceitação específicos do documento
30
22
 
31
- ```
32
- | | {Aqui fica a pergunta que você deve fazer para o usuário. Seja objetivo e direto ao ponto:} |
33
- | --- | ----------------------------------------------------------------------------------------- |
34
- | A | {Resposta 1} |
35
- | B | {Resposta 2} |
36
- | C | {Resposta 3} |
37
- | D | {Resposta 4} |
38
- ```
39
-
40
- **NUNCA** pergunte tudo de uma vez, sempre faça perguntas separadas e aguarde a resposta antes de prosseguir.
41
-
42
-
43
- ## Descrição dos Status
44
-
45
- Em itens e especificações, utilizamos status para identificar quais etapas do desenvolvimento cada item está. Isso é representado pela variável `$ITEM_STATUS`.
46
-
47
- - icebox: Lista de ideias, necessidades e desejos. Item que está aguardando priorização ou definição de escopo.
48
- - in_review: Item que está sendo estudado, descoberto, revisado ou analisado.
49
- - backlog: Item já foi estudado, sabemos o que fazer e está aguardando priorização de implementação.
50
- - in_progress: Item que está em desenvolvimento.
51
- - in_production: Item que está em produção.
52
- - cancelled: Item que foi descontinuado ou cancelado.
53
-
54
-
55
- ## Princípio: Critérios de aceitação e requisitos
56
-
57
- ### Critérios de aceitação específicos do documento
58
-
59
- #### Para PRDs (nível macro)
23
+ ##### Para PRDs (nível macro)
60
24
  Concentre-se no "o quê" e no "porquê":
61
25
  - Definir capacidades gerais do produto
62
26
  - Definir regras e restrições de negócios
63
27
  - Estabelecer métricas de sucesso
64
28
  - Descrições sempre levando em consideração as soluções macro do Projeto, baseando-se nas FRDs
65
29
 
66
- #### Para FRDs (nível médio)
30
+ ##### Para FRDs (nível médio)
67
31
  Retrata as soluções macro do produto. É ponte entre estratégia e implementação:
68
32
  - Definir requisitos de nível de recurso
69
33
  - Definir limites para histórias relacionadas
70
34
  - Incluir pontos de integração
71
35
  - Definir requisitos não funcionais
72
36
 
73
- ### Para histórias (detalhadas, funcionais)
37
+ #### Para histórias (detalhadas, funcionais)
74
38
 
75
39
  Concentre-se em comportamentos específicos e testáveis com base em designs:
76
40
 
@@ -104,7 +68,7 @@ Concentre-se em comportamentos específicos e testáveis com base em designs:
104
68
  - **Épico**: escopo em nível de recurso e abordagem técnica
105
69
  - **Issues (História/Tarefa)**: detalhes específicos de implementação e comportamento da UI
106
70
 
107
- ## Princípio: Contexto completo
71
+ ### Princípio: Contexto completo
108
72
 
109
73
  **Princípio**: Cada documento deve ser compreensível por si só, sem exigir conhecimento tribal.
110
74
 
@@ -147,7 +111,7 @@ As pessoas juntam-se em equipas, o contexto perde-se, as memórias desaparecem.
147
111
  - **Bugs rápidos**: ambiente do documento, etapas, comportamento esperado
148
112
  - **Tarefas rápidas**: explique por que esse trabalho é importante
149
113
 
150
- ## Princípio: Terminologia Consistente
114
+ ### Princípio: Terminologia Consistente
151
115
 
152
116
  **Princípio**: Use os mesmos termos para os mesmos conceitos em toda a documentação.
153
117
 
@@ -184,3 +148,44 @@ A terminologia inconsistente cria confusão. "Cliente" vs "Usuário" vs "Cliente
184
148
  - **Planos**: use os termos exatos do PRD
185
149
  - **Histórias**: Combine a terminologia do PRD e do Plano
186
150
  - **Questões rápidas**: use terminologia estabelecida ou defina novos termos
151
+
152
+ ### Princípio: Discovery como insumo
153
+
154
+ **Princípio**: O discovery (`$PROD_DOCS/discoveries/discovery-{id}-{nome}.md`) é um rascunho de suposições. Ele pode servir de contexto para um PRD, FRD, épico ou issue, mas nunca é obrigatório e nunca é tratado como verdade.
155
+
156
+ **O discovery é opcional**:
157
+ - Sem discovery apontado, siga o fluxo do comando normalmente, sem procurar na pasta `discoveries/` e sem perguntar nada sobre discovery. Ter arquivos nessa pasta não tem relação com o comando.
158
+ - Exemplos: `/prod.spec.prd já sei o que quero` segue o fluxo de sempre; `/prod.spec.prd discovery-002` carrega o discovery.
159
+
160
+ **Como apontar e achar o discovery**:
161
+ - O usuário aponta por caminho, nome ou id (como `discovery-002`); procure em `$PROD_DOCS/discoveries/`.
162
+ - Se o arquivo não existir: informe, liste os discoveries da pasta e pergunte qual usar, ou se o usuário prefere seguir sem discovery.
163
+ - Se a pasta `discoveries/` não existir: siga sem discovery e não crie a pasta.
164
+ - Se mais de um arquivo casar com o que o usuário apontou: pergunte qual usar, sem escolher sozinho.
165
+
166
+ **Como usar o discovery**:
167
+ - Leia o discovery como **contexto, não como resposta**: é um rascunho e pode estar defasado.
168
+ - **Questione e repasse tudo com o usuário**, seção por seção: mostre o que está registrado e pergunte se ainda vale ou se mudou.
169
+ - Hipóteses e perguntas em aberto do discovery são perguntadas como tais; o que o comando exige e o discovery não cobre é perguntado normalmente.
170
+ - Nada do discovery entra no documento novo como fato sem o usuário ter passado por aquilo. O que ficar sem validação continua marcado como suposição.
171
+
172
+ **Avisos conforme a situação do discovery**:
173
+ - `verdict: do_not_proceed` (ou `status: cancelled`): avise que a recomendação foi não seguir, mostre o motivo registrado e só continue com confirmação explícita do usuário.
174
+ - `verdict: investigate_more`, `verdict` vazio ou `status: in_review` (discovery ainda em entrevista): avise que há lacunas críticas, liste as perguntas em aberto e pergunte se o usuário quer retomar o discovery antes ou seguir assumindo o risco.
175
+ - `verdict: proceed`: siga normalmente.
176
+
177
+ **O documento novo é o oficial**:
178
+ - O PRD, FRD, épico ou issue é a fonte da verdade. O discovery **nunca é alterado** por estes comandos: ele permanece como o registro do momento da investigação.
179
+ - O documento novo referencia o discovery de origem no campo `related_discovery` do frontmatter.
180
+ - Quando a informação do documento novo divergir do discovery, **avise o usuário na conversa** e crie no documento novo a seção **"Divergências"** (somente quando houver), com o que mudou e por quê, em poucas linhas.
181
+
182
+ ## Exceções
183
+
184
+ Quando o usuário pedir explicitamente outro formato ou nível de detalhe para um documento, registre a decisão no próprio documento e siga o pedido.
185
+
186
+ ## Referências
187
+
188
+ - `prod-rules.md`: regras gerais de produto (ambiente, comandos, nomes de arquivos, status e perguntas ao usuário)
189
+ - `../../templates/product/`: templates dos documentos
190
+ - `../../workflows/product/`: os comandos `prod.spec.*`
191
+ - `prod.spec.discovery.md` (workflow) e `prod-discovery-template.md`: o comando e o formato do discovery, o rascunho que os comandos acima podem usar como insumo