spec-first-copilot 0.7.0-beta.1 → 0.7.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 (55) hide show
  1. package/README.md +252 -167
  2. package/bin/cli.js +70 -70
  3. package/lib/init.js +92 -92
  4. package/lib/update.js +132 -132
  5. package/package.json +1 -1
  6. package/templates/.ai/memory/napkin.md +68 -68
  7. package/templates/.github/CHANGELOG.md +560 -533
  8. package/templates/.github/adapters/SETUP.md +314 -314
  9. package/templates/.github/adapters/confluence.md +295 -295
  10. package/templates/.github/adapters/errors.md +234 -234
  11. package/templates/.github/adapters/filesystem.md +353 -353
  12. package/templates/.github/adapters/interface.md +301 -301
  13. package/templates/.github/adapters/naming.md +241 -241
  14. package/templates/.github/adapters/registry.md +244 -244
  15. package/templates/.github/agents/backend-coder.md +215 -215
  16. package/templates/.github/agents/db-coder.md +165 -165
  17. package/templates/.github/agents/doc-writer.md +66 -66
  18. package/templates/.github/agents/frontend-coder.md +222 -222
  19. package/templates/.github/agents/infra-coder.md +341 -341
  20. package/templates/.github/agents/reviewer.md +99 -99
  21. package/templates/.github/agents/security-reviewer.md +153 -153
  22. package/templates/.github/copilot-instructions.md +272 -272
  23. package/templates/.github/instructions/docs.instructions.md +147 -145
  24. package/templates/.github/instructions/sensitive-files.instructions.md +32 -32
  25. package/templates/.github/rules.md +229 -229
  26. package/templates/.github/scripts/bootstrap-confluence.js +289 -289
  27. package/templates/.github/skills/sf-design/SKILL.md +161 -161
  28. package/templates/.github/skills/sf-dev/SKILL.md +204 -204
  29. package/templates/.github/skills/sf-discovery/SKILL.md +415 -415
  30. package/templates/.github/skills/sf-extract/SKILL.md +225 -225
  31. package/templates/.github/skills/sf-load/SKILL.md +296 -296
  32. package/templates/.github/skills/sf-mcp/SKILL.md +386 -386
  33. package/templates/.github/skills/sf-merge-docs/SKILL.md +152 -152
  34. package/templates/.github/skills/sf-plan/SKILL.md +152 -152
  35. package/templates/.github/skills/sf-publish/SKILL.md +144 -144
  36. package/templates/.github/skills/sf-session-finish/SKILL.md +93 -93
  37. package/templates/.github/skills/sf-start/SKILL.md +192 -192
  38. package/templates/.github/templates/estrutura/apiContracts.template.md +160 -159
  39. package/templates/.github/templates/estrutura/architecture.template.md +169 -168
  40. package/templates/.github/templates/estrutura/conventions.template.md +214 -212
  41. package/templates/.github/templates/estrutura/decisions.template.md +107 -107
  42. package/templates/.github/templates/estrutura/domain.template.md +161 -160
  43. package/templates/.github/templates/feature/PRD.template.md +279 -279
  44. package/templates/.github/templates/feature/Progresso.template.md +141 -141
  45. package/templates/.github/templates/feature/TRD.template.md +358 -358
  46. package/templates/.github/templates/feature/context.template.md +89 -89
  47. package/templates/.github/templates/feature/extract-log.template.md +49 -49
  48. package/templates/.github/templates/feature/projetos.template.yaml +79 -79
  49. package/templates/.github/templates/global/progresso_global.template.md +59 -57
  50. package/templates/.github/templates/specs/brief.template.md +66 -66
  51. package/templates/.github/templates/specs/contracts.template.md +147 -147
  52. package/templates/.github/templates/specs/scenarios.template.md +125 -125
  53. package/templates/.github/templates/specs/tasks.template.md +65 -65
  54. package/templates/_gitignore +35 -35
  55. package/templates/sfw.config.yml.example +147 -147
@@ -1,279 +1,279 @@
1
- # PRD — {{NOME}}
2
- ## Product Requirements Document
3
-
4
- > **Artefato gerado pela IA** a partir do processamento de insumos de produto em `workspace/Input/{{NOME}}/`.
5
- > Este é um dos dois docs source do pipeline SFW (peer do TRD).
6
- > O PRD é aprovado pelo **PM / product owner** — contém o "o quê" e "por quê" do produto.
7
- > Depois de aprovado, alimenta `/sf-merge-docs` (docs/ cross-feature) e `/sf-design` (specs/).
8
-
9
- ---
10
-
11
- ## Meta
12
-
13
- | Campo | Valor |
14
- |-------|-------|
15
- | Scope | `{{NOME}}` |
16
- | Status | `em extração` → `aguardando aprovação (PM)` → `aprovado` |
17
- | Insumos processados | {{LISTA_INSUMOS}} |
18
- | Gerado em | |
19
- | Aprovado em | |
20
- | Aprovado por | {{nome do PM}} |
21
-
22
- ---
23
-
24
- <!--
25
- =============================================================================
26
- INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
27
- =============================================================================
28
-
29
- QUANDO USAR: Gerado pelo /sf-extract (chamado via /sf-start).
30
- QUEM GERA: Agent Produto-Analyzer (Opus) a partir dos outputs dos Readers (Sonnet).
31
-
32
- PAR COM TRD: o PRD é peer do TRD. Ambos podem coexistir (caso mais comum),
33
- ou o scope pode ter só um dos dois:
34
- - Scope puro-produto (raro): só PRD, sem TRD
35
- - Scope puro-técnico (bootstrap, mudança de stack): só TRD, sem PRD — NÃO GERAR ESTE ARQUIVO
36
- - Scope misto (maioria): ambos
37
-
38
- REGRA DE OURO: o Produto-Analyzer decide SE gera PRD baseado nos insumos.
39
- Se insumos não trazem conteúdo de produto (jornadas, RNs, UX, atores, telas),
40
- simplesmente NÃO gera. Não existe "PRD empty" — se é vazio, não existe.
41
-
42
- ZERO OVERLAP COM TRD:
43
- - Stack, schema, endpoints, validações de schema, deploy, ADRs → TRD
44
- - Jornadas, atores, RNs de negócio, UI, cenários de erro de produto → PRD
45
- - Integrações externas: PRD descreve POR QUÊ e O QUÊ; TRD descreve COMO
46
- - Validações: PRD descreve regras de DOMÍNIO (ex: "CPF válido", "idade >= 18");
47
- TRD descreve validações de FORMATO (ex: "string, 11 chars, regex X")
48
- - NFRs: PRD descreve expectativa do usuário (ex: "resposta em < 1s");
49
- TRD traduz em requisito técnico (ex: "P95 < 200ms no handler")
50
-
51
- COMO GERAR:
52
- 1. Readers (Sonnet) leem cada arquivo do Input/ e catalogam por seção
53
- 2. Produto-Analyzer (Opus) recebe outputs e:
54
- a. Consolida conteúdo de produto em visão unificada
55
- b. Cruza fontes — detecta contradições
56
- c. Identifica gaps — seções sem info viram ambiguidades
57
- d. Gera as 13 seções abaixo
58
- 3. Consultar `docs/` ANTES de marcar ambiguidade — se `docs/domain.md` já
59
- define ator ou jornada genérica, usar. Marcar "resolvido em docs/X §Y"
60
- 4. Registrar DE QUAL insumo veio cada informação (rastreabilidade §13)
61
- 5. Se faltam dados pra preencher seção relevante → pergunta BLOQUEANTE em §12
62
-
63
- FORMATOS DE INSUMO:
64
- - .txt, .md → requisitos, regras, contexto, restrições
65
- - .html → telas, fluxos, permissões (dados técnicos vão pro TRD)
66
- - .xml (drawio) → fluxos, decisões, atores
67
- - .csv → dados tabulares de produto
68
- - .png, .jpg, .pdf → wireframes, mockups
69
-
70
- REGRAS DA EXTRAÇÃO:
71
- - Categorias FIXAS (13 seções) — não inventar novas
72
- - §10 Fases de Entrega é OBRIGATÓRIO quando PRD existe
73
- - RNs com IDs ESTÁVEIS (RN-001...) — nunca renumerar
74
- - Ambiguidades são BLOQUEANTES
75
- - SEM texto narrativo — estruturado em tabelas e listas
76
- - Nunca INFERIR regra de negócio — se não explícito, é ambiguidade
77
- - Contradição entre fontes → ambiguidade citando os dois
78
-
79
- RE-EXTRAÇÃO:
80
- - Merge ADITIVO com PRD existente (não sobrescrever)
81
- - Seções afetadas marcadas com <!-- ATUALIZADO: re-extração ISO_DATE -->
82
- - IDs de RN continuam sequência existente
83
-
84
- =============================================================================
85
- -->
86
-
87
- ## 1. Contexto e Motivação
88
-
89
- ### Qual problema resolve?
90
- <!-- POR QUÊ essa feature existe — extraído dos insumos -->
91
-
92
- ### Como funciona hoje?
93
- <!-- Estado ATUAL — o que existe, como é feito, quais os problemas -->
94
-
95
- ### Estado desejado
96
- <!-- O que muda com essa feature — o delta é o escopo real -->
97
-
98
- ---
99
-
100
- ## 2. Atores / Personas
101
-
102
- | Ator | O que pode fazer | O que NÃO pode fazer |
103
- |------|------------------|----------------------|
104
- | | | |
105
-
106
- > Detalhes de autenticação, autorização, hierarquia de papéis: ver TRD §7.2 Autorização.
107
-
108
- ---
109
-
110
- ## 3. Jornadas do Usuário
111
-
112
- > Sequências de ações do usuário pra atingir um objetivo. Alto nível — detalhes
113
- > de endpoint/estado ficam no TRD §2 e specs/scenarios.md.
114
-
115
- ### Jornada 1: {{NOME}}
116
-
117
- | Passo | Ator | Ação | Resultado esperado |
118
- |-------|------|------|--------------------|
119
- | 1 | | | |
120
-
121
- ---
122
-
123
- ## 4. Funcionalidades
124
-
125
- > Lista de alto nível. Detalhe de implementação (endpoints, componentes) vai pro TRD.
126
-
127
- | # | Funcionalidade | Descrição | Ator principal | Fonte |
128
- |---|---------------|-----------|----------------|-------|
129
- | 1 | | | | |
130
-
131
- ---
132
-
133
- ## 5. Regras de Negócio
134
-
135
- > Invariantes do domínio. IDs estáveis. Cada regra deve ser testável.
136
-
137
- | ID | Regra | Fonte | Testável? |
138
- |----|-------|-------|-----------|
139
- | RN-001 | | {{arquivo_fonte}} | Sim/Não |
140
-
141
- ---
142
-
143
- ## 6. Validações de Domínio
144
-
145
- > Regras sobre VALOR dos dados no domínio (ex: "CPF válido", "idade >= 18",
146
- > "data de agendamento futura"). NÃO são validações de schema/formato
147
- > (ex: "string 11 chars"), que ficam no TRD §2.3.
148
-
149
- | Campo | Regra de domínio | Ator que aciona | Fonte |
150
- |-------|------------------|-----------------|-------|
151
- | | | | |
152
-
153
- ---
154
-
155
- ## 7. Telas / Fluxos UI (high-level)
156
-
157
- > Descrição do que o usuário vê e faz. Detalhes de componente, props, estado:
158
- > TRD §3 Área-Frontend + specs/scenarios.md.
159
-
160
- ### Tela 1: {{NOME}}
161
-
162
- - **Propósito**: <!-- O que o usuário faz nesta tela -->
163
- - **Quem acessa**: <!-- papel(éis) -->
164
- - **Ações principais**:
165
- -
166
- - **Campos principais**:
167
- -
168
- - **Navegação**:
169
- -
170
-
171
- ---
172
-
173
- ## 8. Cenários de Sucesso e Erro
174
-
175
- ### Sucesso
176
-
177
- | # | Cenário | Quando acontece | Feedback ao usuário |
178
- |---|---------|-----------------|---------------------|
179
- | 1 | | | |
180
-
181
- ### Erro
182
-
183
- | # | Cenário | Causa | Comportamento esperado (UX) | Fonte |
184
- |---|---------|-------|------------------------------|-------|
185
- | 1 | | | <!-- mensagem, recovery path --> | |
186
-
187
- > Códigos HTTP e códigos de erro de domínio: TRD §2.1 e docs/conventions.md.
188
-
189
- ---
190
-
191
- ## 9. Métricas de Sucesso
192
-
193
- > Como saber que essa feature está funcionando? KPIs de produto.
194
-
195
- | # | Métrica | Meta | Como medir |
196
- |---|---------|------|------------|
197
- | 1 | | | |
198
-
199
- ---
200
-
201
- ## 10. Fases de Entrega
202
-
203
- > Princípio: **entregáveis contínuos** — cada fase entrega valor e pode ir pra produção.
204
- > Fases são sequenciais por dependência. Cada uma tem entregável testável pelo PM.
205
- >
206
- > **Cada fase do PRD pode ter tasks técnicas correspondentes no TRD** — o `/sf-plan`
207
- > cruza as duas visões pra gerar tasks por área × fase.
208
-
209
- ### Fase 1 — {{Nome}} [P1]
210
-
211
- > **Entregável**: {{O que o usuário pode usar ao final}}
212
- > **Critério de done** (PM valida): {{Como validar — jornada E2E executável}}
213
-
214
- | # | Funcionalidade | Regras (RN-NNN) | Jornadas |
215
- |---|---------------|------------------|----------|
216
- | 1 | | | Jornada N |
217
-
218
- ### Fase 2 — {{Nome}} [P1]
219
-
220
- > **Entregável**: {{...}}
221
- > **Critério de done**: {{...}}
222
- > **Depende de**: Fase 1
223
-
224
- | # | Funcionalidade | Regras | Jornadas |
225
- |---|---------------|--------|----------|
226
- | 1 | | | |
227
-
228
- <!-- Máximo 4-5 fases -->
229
-
230
- ### Visão geral
231
-
232
- | Fase | Nome | Prioridade | Entregável | Depende de |
233
- |------|------|-----------|------------|------------|
234
- | 1 | | P1 | | — |
235
- | 2 | | P1 | | Fase 1 |
236
-
237
- ---
238
-
239
- ## 11. Fora de Escopo
240
-
241
- > Explicitamente listado — o que NÃO será feito nesta feature.
242
- > Itens marcados com `/sf-start sugerido` viram features futuras.
243
-
244
- | # | Item | Motivo | `/sf-start` sugerido |
245
- |---|------|--------|------------------------|
246
- | 1 | | futuro / outra feature / decisão do PM | `feat_X` (opcional) |
247
-
248
- > Nota: se o item vira feature futura, rodar `/sf-start feat_X` em execução separada.
249
- > Este PRD não carrega roadmap de features futuras — elas têm seu próprio ciclo.
250
-
251
- ---
252
-
253
- ## 12. Ambiguidades e Perguntas
254
-
255
- > ⚠️ **BLOQUEANTE** — `/sf-design` NÃO avança enquanto houver linha com `Resposta`
256
- > vazia E `Resolvido em docs/` vazio.
257
- >
258
- > **Como responder** (ver `.github/skills/sf-extract/SKILL.md` → "Como responder ambiguidades"):
259
- > preencher a coluna `Resposta` direto nesta tabela e rodar `/sf-design` de novo.
260
-
261
- | ID | Pergunta | Contexto | Fonte | Resposta | Resolvido em docs/ |
262
- |----|----------|----------|-------|----------|--------------------|
263
- | AMB-PRD-001 | ⚠️ | | | (aguardando) | — |
264
-
265
- ---
266
-
267
- ## 13. Rastreabilidade
268
-
269
- > Mapa de qual insumo originou qual seção. Permite auditoria da extração.
270
-
271
- | Insumo | Tipo | Seções alimentadas |
272
- |--------|------|--------------------|
273
- | `{{arquivo}}` | {{tipo}} | §1, §2, §3 (Jornada 1), §5 (RN-001, RN-002) |
274
-
275
- ---
276
-
277
- > **Próximo passo**: Após aprovação do PM (campo `prd_aprovado: true` no
278
- > `.context.md`), o PRD alimenta `/sf-design` (specs/) + `/sf-merge-docs` (docs/).
279
- > Se também existe TRD, ele passa pelo mesmo fluxo (aprovação do dev) em paralelo.
1
+ # PRD — {{NOME}}
2
+ ## Product Requirements Document
3
+
4
+ > **Artefato gerado pela IA** a partir do processamento de insumos de produto em `workspace/Input/{{NOME}}/`.
5
+ > Este é um dos dois docs source do pipeline SFW (peer do TRD).
6
+ > O PRD é aprovado pelo **PM / product owner** — contém o "o quê" e "por quê" do produto.
7
+ > Depois de aprovado, alimenta `/sf-merge-docs` (docs/ cross-feature) e `/sf-design` (specs/).
8
+
9
+ ---
10
+
11
+ ## Meta
12
+
13
+ | Campo | Valor |
14
+ |-------|-------|
15
+ | Scope | `{{NOME}}` |
16
+ | Status | `em extração` → `aguardando aprovação (PM)` → `aprovado` |
17
+ | Insumos processados | {{LISTA_INSUMOS}} |
18
+ | Gerado em | |
19
+ | Aprovado em | |
20
+ | Aprovado por | {{nome do PM}} |
21
+
22
+ ---
23
+
24
+ <!--
25
+ =============================================================================
26
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
27
+ =============================================================================
28
+
29
+ QUANDO USAR: Gerado pelo /sf-extract (chamado via /sf-start).
30
+ QUEM GERA: Agent Produto-Analyzer (Opus) a partir dos outputs dos Readers (Sonnet).
31
+
32
+ PAR COM TRD: o PRD é peer do TRD. Ambos podem coexistir (caso mais comum),
33
+ ou o scope pode ter só um dos dois:
34
+ - Scope puro-produto (raro): só PRD, sem TRD
35
+ - Scope puro-técnico (bootstrap, mudança de stack): só TRD, sem PRD — NÃO GERAR ESTE ARQUIVO
36
+ - Scope misto (maioria): ambos
37
+
38
+ REGRA DE OURO: o Produto-Analyzer decide SE gera PRD baseado nos insumos.
39
+ Se insumos não trazem conteúdo de produto (jornadas, RNs, UX, atores, telas),
40
+ simplesmente NÃO gera. Não existe "PRD empty" — se é vazio, não existe.
41
+
42
+ ZERO OVERLAP COM TRD:
43
+ - Stack, schema, endpoints, validações de schema, deploy, ADRs → TRD
44
+ - Jornadas, atores, RNs de negócio, UI, cenários de erro de produto → PRD
45
+ - Integrações externas: PRD descreve POR QUÊ e O QUÊ; TRD descreve COMO
46
+ - Validações: PRD descreve regras de DOMÍNIO (ex: "CPF válido", "idade >= 18");
47
+ TRD descreve validações de FORMATO (ex: "string, 11 chars, regex X")
48
+ - NFRs: PRD descreve expectativa do usuário (ex: "resposta em < 1s");
49
+ TRD traduz em requisito técnico (ex: "P95 < 200ms no handler")
50
+
51
+ COMO GERAR:
52
+ 1. Readers (Sonnet) leem cada arquivo do Input/ e catalogam por seção
53
+ 2. Produto-Analyzer (Opus) recebe outputs e:
54
+ a. Consolida conteúdo de produto em visão unificada
55
+ b. Cruza fontes — detecta contradições
56
+ c. Identifica gaps — seções sem info viram ambiguidades
57
+ d. Gera as 13 seções abaixo
58
+ 3. Consultar `docs/` ANTES de marcar ambiguidade — se `docs/domain.md` já
59
+ define ator ou jornada genérica, usar. Marcar "resolvido em docs/X §Y"
60
+ 4. Registrar DE QUAL insumo veio cada informação (rastreabilidade §13)
61
+ 5. Se faltam dados pra preencher seção relevante → pergunta BLOQUEANTE em §12
62
+
63
+ FORMATOS DE INSUMO:
64
+ - .txt, .md → requisitos, regras, contexto, restrições
65
+ - .html → telas, fluxos, permissões (dados técnicos vão pro TRD)
66
+ - .xml (drawio) → fluxos, decisões, atores
67
+ - .csv → dados tabulares de produto
68
+ - .png, .jpg, .pdf → wireframes, mockups
69
+
70
+ REGRAS DA EXTRAÇÃO:
71
+ - Categorias FIXAS (13 seções) — não inventar novas
72
+ - §10 Fases de Entrega é OBRIGATÓRIO quando PRD existe
73
+ - RNs com IDs ESTÁVEIS (RN-001...) — nunca renumerar
74
+ - Ambiguidades são BLOQUEANTES
75
+ - SEM texto narrativo — estruturado em tabelas e listas
76
+ - Nunca INFERIR regra de negócio — se não explícito, é ambiguidade
77
+ - Contradição entre fontes → ambiguidade citando os dois
78
+
79
+ RE-EXTRAÇÃO:
80
+ - Merge ADITIVO com PRD existente (não sobrescrever)
81
+ - Seções afetadas marcadas com <!-- ATUALIZADO: re-extração ISO_DATE -->
82
+ - IDs de RN continuam sequência existente
83
+
84
+ =============================================================================
85
+ -->
86
+
87
+ ## 1. Contexto e Motivação
88
+
89
+ ### Qual problema resolve?
90
+ <!-- POR QUÊ essa feature existe — extraído dos insumos -->
91
+
92
+ ### Como funciona hoje?
93
+ <!-- Estado ATUAL — o que existe, como é feito, quais os problemas -->
94
+
95
+ ### Estado desejado
96
+ <!-- O que muda com essa feature — o delta é o escopo real -->
97
+
98
+ ---
99
+
100
+ ## 2. Atores / Personas
101
+
102
+ | Ator | O que pode fazer | O que NÃO pode fazer |
103
+ |------|------------------|----------------------|
104
+ | | | |
105
+
106
+ > Detalhes de autenticação, autorização, hierarquia de papéis: ver TRD §7.2 Autorização.
107
+
108
+ ---
109
+
110
+ ## 3. Jornadas do Usuário
111
+
112
+ > Sequências de ações do usuário pra atingir um objetivo. Alto nível — detalhes
113
+ > de endpoint/estado ficam no TRD §2 e specs/scenarios.md.
114
+
115
+ ### Jornada 1: {{NOME}}
116
+
117
+ | Passo | Ator | Ação | Resultado esperado |
118
+ |-------|------|------|--------------------|
119
+ | 1 | | | |
120
+
121
+ ---
122
+
123
+ ## 4. Funcionalidades
124
+
125
+ > Lista de alto nível. Detalhe de implementação (endpoints, componentes) vai pro TRD.
126
+
127
+ | # | Funcionalidade | Descrição | Ator principal | Fonte |
128
+ |---|---------------|-----------|----------------|-------|
129
+ | 1 | | | | |
130
+
131
+ ---
132
+
133
+ ## 5. Regras de Negócio
134
+
135
+ > Invariantes do domínio. IDs estáveis. Cada regra deve ser testável.
136
+
137
+ | ID | Regra | Fonte | Testável? |
138
+ |----|-------|-------|-----------|
139
+ | RN-001 | | {{arquivo_fonte}} | Sim/Não |
140
+
141
+ ---
142
+
143
+ ## 6. Validações de Domínio
144
+
145
+ > Regras sobre VALOR dos dados no domínio (ex: "CPF válido", "idade >= 18",
146
+ > "data de agendamento futura"). NÃO são validações de schema/formato
147
+ > (ex: "string 11 chars"), que ficam no TRD §2.3.
148
+
149
+ | Campo | Regra de domínio | Ator que aciona | Fonte |
150
+ |-------|------------------|-----------------|-------|
151
+ | | | | |
152
+
153
+ ---
154
+
155
+ ## 7. Telas / Fluxos UI (high-level)
156
+
157
+ > Descrição do que o usuário vê e faz. Detalhes de componente, props, estado:
158
+ > TRD §3 Área-Frontend + specs/scenarios.md.
159
+
160
+ ### Tela 1: {{NOME}}
161
+
162
+ - **Propósito**: <!-- O que o usuário faz nesta tela -->
163
+ - **Quem acessa**: <!-- papel(éis) -->
164
+ - **Ações principais**:
165
+ -
166
+ - **Campos principais**:
167
+ -
168
+ - **Navegação**:
169
+ -
170
+
171
+ ---
172
+
173
+ ## 8. Cenários de Sucesso e Erro
174
+
175
+ ### Sucesso
176
+
177
+ | # | Cenário | Quando acontece | Feedback ao usuário |
178
+ |---|---------|-----------------|---------------------|
179
+ | 1 | | | |
180
+
181
+ ### Erro
182
+
183
+ | # | Cenário | Causa | Comportamento esperado (UX) | Fonte |
184
+ |---|---------|-------|------------------------------|-------|
185
+ | 1 | | | <!-- mensagem, recovery path --> | |
186
+
187
+ > Códigos HTTP e códigos de erro de domínio: TRD §2.1 e docs/conventions.md.
188
+
189
+ ---
190
+
191
+ ## 9. Métricas de Sucesso
192
+
193
+ > Como saber que essa feature está funcionando? KPIs de produto.
194
+
195
+ | # | Métrica | Meta | Como medir |
196
+ |---|---------|------|------------|
197
+ | 1 | | | |
198
+
199
+ ---
200
+
201
+ ## 10. Fases de Entrega
202
+
203
+ > Princípio: **entregáveis contínuos** — cada fase entrega valor e pode ir pra produção.
204
+ > Fases são sequenciais por dependência. Cada uma tem entregável testável pelo PM.
205
+ >
206
+ > **Cada fase do PRD pode ter tasks técnicas correspondentes no TRD** — o `/sf-plan`
207
+ > cruza as duas visões pra gerar tasks por área × fase.
208
+
209
+ ### Fase 1 — {{Nome}} [P1]
210
+
211
+ > **Entregável**: {{O que o usuário pode usar ao final}}
212
+ > **Critério de done** (PM valida): {{Como validar — jornada E2E executável}}
213
+
214
+ | # | Funcionalidade | Regras (RN-NNN) | Jornadas |
215
+ |---|---------------|------------------|----------|
216
+ | 1 | | | Jornada N |
217
+
218
+ ### Fase 2 — {{Nome}} [P1]
219
+
220
+ > **Entregável**: {{...}}
221
+ > **Critério de done**: {{...}}
222
+ > **Depende de**: Fase 1
223
+
224
+ | # | Funcionalidade | Regras | Jornadas |
225
+ |---|---------------|--------|----------|
226
+ | 1 | | | |
227
+
228
+ <!-- Máximo 4-5 fases -->
229
+
230
+ ### Visão geral
231
+
232
+ | Fase | Nome | Prioridade | Entregável | Depende de |
233
+ |------|------|-----------|------------|------------|
234
+ | 1 | | P1 | | — |
235
+ | 2 | | P1 | | Fase 1 |
236
+
237
+ ---
238
+
239
+ ## 11. Fora de Escopo
240
+
241
+ > Explicitamente listado — o que NÃO será feito nesta feature.
242
+ > Itens marcados com `/sf-start sugerido` viram features futuras.
243
+
244
+ | # | Item | Motivo | `/sf-start` sugerido |
245
+ |---|------|--------|------------------------|
246
+ | 1 | | futuro / outra feature / decisão do PM | `feat_X` (opcional) |
247
+
248
+ > Nota: se o item vira feature futura, rodar `/sf-start feat_X` em execução separada.
249
+ > Este PRD não carrega roadmap de features futuras — elas têm seu próprio ciclo.
250
+
251
+ ---
252
+
253
+ ## 12. Ambiguidades e Perguntas
254
+
255
+ > ⚠️ **BLOQUEANTE** — `/sf-design` NÃO avança enquanto houver linha com `Resposta`
256
+ > vazia E `Resolvido em docs/` vazio.
257
+ >
258
+ > **Como responder** (ver `.github/skills/sf-extract/SKILL.md` → "Como responder ambiguidades"):
259
+ > preencher a coluna `Resposta` direto nesta tabela e rodar `/sf-design` de novo.
260
+
261
+ | ID | Pergunta | Contexto | Fonte | Resposta | Resolvido em docs/ |
262
+ |----|----------|----------|-------|----------|--------------------|
263
+ | AMB-PRD-001 | ⚠️ | | | (aguardando) | — |
264
+
265
+ ---
266
+
267
+ ## 13. Rastreabilidade
268
+
269
+ > Mapa de qual insumo originou qual seção. Permite auditoria da extração.
270
+
271
+ | Insumo | Tipo | Seções alimentadas |
272
+ |--------|------|--------------------|
273
+ | `{{arquivo}}` | {{tipo}} | §1, §2, §3 (Jornada 1), §5 (RN-001, RN-002) |
274
+
275
+ ---
276
+
277
+ > **Próximo passo**: Após aprovação do PM (campo `prd_aprovado: true` no
278
+ > `.context.md`), o PRD alimenta `/sf-design` (specs/) + `/sf-merge-docs` (docs/).
279
+ > Se também existe TRD, ele passa pelo mesmo fluxo (aprovação do dev) em paralelo.