spec-first-copilot 0.6.0-beta.9 → 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 (57) 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 +121 -0
  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 +14 -14
  16. package/templates/.github/agents/db-coder.md +165 -165
  17. package/templates/.github/agents/doc-writer.md +66 -53
  18. package/templates/.github/agents/frontend-coder.md +5 -5
  19. package/templates/.github/agents/infra-coder.md +341 -341
  20. package/templates/.github/agents/reviewer.md +6 -6
  21. package/templates/.github/agents/security-reviewer.md +153 -153
  22. package/templates/.github/copilot-instructions.md +272 -262
  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 -223
  27. package/templates/.github/skills/sf-design/SKILL.md +161 -216
  28. package/templates/.github/skills/sf-dev/SKILL.md +204 -351
  29. package/templates/.github/skills/sf-discovery/SKILL.md +415 -414
  30. package/templates/.github/skills/sf-extract/SKILL.md +225 -249
  31. package/templates/.github/skills/sf-load/SKILL.md +296 -295
  32. package/templates/.github/skills/sf-mcp/SKILL.md +386 -385
  33. package/templates/.github/skills/sf-merge-docs/SKILL.md +152 -100
  34. package/templates/.github/skills/sf-plan/SKILL.md +152 -128
  35. package/templates/.github/skills/sf-publish/SKILL.md +144 -143
  36. package/templates/.github/skills/sf-session-finish/SKILL.md +93 -120
  37. package/templates/.github/skills/sf-start/SKILL.md +192 -145
  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 -286
  44. package/templates/.github/templates/feature/Progresso.template.md +141 -141
  45. package/templates/.github/templates/feature/TRD.template.md +358 -0
  46. package/templates/.github/templates/feature/context.template.md +89 -48
  47. package/templates/.github/templates/feature/extract-log.template.md +49 -39
  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 -59
  51. package/templates/.github/templates/specs/contracts.template.md +147 -141
  52. package/templates/.github/templates/specs/scenarios.template.md +125 -117
  53. package/templates/.github/templates/specs/tasks.template.md +65 -63
  54. package/templates/_gitignore +35 -35
  55. package/templates/sfw.config.yml.example +147 -147
  56. package/templates/.github/templates/feature/backlog-extraido.template.md +0 -156
  57. package/templates/.github/templates/feature/sdd.template.md +0 -559
@@ -1,286 +1,279 @@
1
- # PRD — {{NOME}}
2
- ## Product Requirements Document
3
-
4
- > **Artefato gerado pela IA** a partir do processamento de todos os insumos em `workspace/Input/{{NOME}}/`.
5
- > Este é o checkpoint de extração o usuário DEVE revisar e aprovar antes de prosseguir.
6
- > Todos os documentos subsequentes (SDD, tasks) são gerados a partir DESTE arquivo + chunks tech do `.extract-log.md`.
7
-
8
- ---
9
-
10
- ## Meta
11
-
12
- | Campo | Valor |
13
- |-------|-------|
14
- | Scope | `{{NOME}}` |
15
- | Empty | `{{true\|false}}` — `true` quando insumos não têm conteúdo de produto (scope puro-técnico) |
16
- | Status | `em extração` → `aguardando revisão` → `aprovado` |
17
- | Insumos processados | {{LISTA_INSUMOS}} |
18
- | Gerado em | |
19
- | Aprovado em | |
20
-
21
- > **Se `empty: true`**: Meta é o único bloco preenchido. As 15 seções abaixo ficam
22
- > inalteradas (não apagar). Adicionar nota no rodapé: "PRD marcado como empty —
23
- > insumos não contêm conteúdo de produto (jornadas, RNs, UX). O SDD carregará
24
- > diretamente os chunks tech categorizados no `.extract-log.md`."
25
-
26
- ---
27
-
28
- <!--
29
- =============================================================================
30
- INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
31
- =============================================================================
32
-
33
- QUANDO USAR: Gerado pelo /sf-extract (chamado via /sf-start).
34
- QUEM GERA: Agent Analyzer (Opus) a partir dos outputs dos Readers (Sonnet).
35
-
36
- CASO "PRD EMPTY":
37
- Se os insumos em `workspace/Input/{{NOME}}/` não contêm conteúdo de produto
38
- (nada de jornadas, atores, regras de negócio, UX stack/schema/infra),
39
- o Analyzer marca `empty: true` na Meta e NÃO preenche as 15 seções. É um
40
- outcome válido scope puro-técnico (bootstrap de infra, mudança de stack).
41
- Chunks tech vão pro `.extract-log.md` pro /sf-design consumir.
42
-
43
- Critério: se após ler TODOS os insumos, o Analyzer consegue listar pelo menos
44
- 1 regra de negócio OU 1 jornada OU 1 tela OU 1 ator → PRD NÃO é empty.
45
- Caso contrário → empty: true.
46
-
47
- COMO GERAR (quando empty: false):
48
- 1. Readers (Sonnet) leem cada arquivo do Input/ individualmente e catalogam por seção
49
- 2. Analyzer (Opus) recebe todos os outputs e:
50
- a. Consolida em visão unificada
51
- b. Cruza informações entre fontes — detecta contradições
52
- c. Identifica gaps seções sem informação viram ambiguidades
53
- d. Gera este documento seguindo as 15 seções fixas
54
- 3. **Consultar `docs/` (se existir) ANTES de marcar ambiguidade**: se a
55
- resposta está em `docs/` (ex: auth em `conventions.md §Autenticação`),
56
- marcar "resolvido em docs/X §Y" em §14 em vez de perguntar ao user.
57
- Ambiguidade real surge se (a) docs/ ausente, (b) assunto novo,
58
- (c) insumo contradiz docs/.
59
- 4. Para cada informação, registrar DE QUAL insumo veio (rastreabilidade §15)
60
- 5. Se faltam dados para preencher uma seção relevante → pergunta BLOQUEANTE em §14
61
-
62
- FORMATOS DE INSUMO (o que extrair de cada):
63
- - .txt, .md → requisitos, regras, contexto, restrições
64
- - .sqlentidades, campos, tipos, constraints, índices, relações
65
- - .html → telas, campos (data-field), ações (data-action),
66
- validações (data-validation), rotas (data-route),
67
- permissões (data-permission), estados (data-state)
68
- - .xml (drawio)fluxos, decisões, atores, sequências
69
- - .csv → dados tabulares, mapeamentos
70
- - .png, .jpg, .pdf → wireframes, mockups (análise visual)
71
- - Outros extrair o que for relevante — nunca ignorar
72
-
73
- REGRAS DA EXTRAÇÃO:
74
- - Categorias FIXAS (as 15 seções abaixo) — não inventar novas
75
- - §11 Fases de Entrega é OBRIGATÓRIO quando não-empty — organizar funcionalidades
76
- em fases incrementais. Se existe `workspace/Output/{{NOME}}/backlog_extraido.md`,
77
- usar como referência pra fases.
78
- Princípio: entregáveis contínuos, cada fase entrega valor e pode ir pra produção
79
- - Regras de negócio com IDs únicos e ESTÁVEIS (RN-001, RN-002...)
80
- IDs nunca renumeram após criação. Em re-extração, novos continuam sequência
81
- - Ambiguidades como perguntas diretas BLOQUEANTES
82
- - SEM texto narrativo apenas informação estruturada em tabelas e listas
83
- - Rastreabilidade: de qual arquivo veio cada informação
84
- - Nunca INFERIR regra de negócio — se não está explícito, é ambiguidade
85
- - Contradição entre fontes → gerar ambiguidade citando os dois arquivos
86
-
87
- RE-EXTRAÇÃO:
88
- - Merge ADITIVO com PRD existente (não sobrescrever)
89
- - Seções afetadas marcadas com <!-- ATUALIZADO: re-extração ISO_DATE -->
90
- - IDs de regras continuam sequência existente
91
- - Se PRD era empty: true e re-extração encontra produto → flip para empty: false
92
- e preencher seções normalmente
93
-
94
- =============================================================================
95
- -->
96
-
97
- ## 1. Contexto e Motivação
98
-
99
- ### Qual problema resolve?
100
- <!-- POR QUÊ essa feature existe — extraído dos insumos -->
101
-
102
- ### Como funciona hoje?
103
- <!-- Estado ATUAL — o que existe, como é feito, quais os problemas -->
104
-
105
- ### Estado desejado
106
- <!-- O que muda com essa feature o delta é o escopo real -->
107
-
108
- ---
109
-
110
- ## 2. Atores e Permissões
111
-
112
- | Ator | O que pode fazer | O que NÃO pode fazer |
113
- |------|------------------|----------------------|
114
- | | | |
115
-
116
- ---
117
-
118
- ## 3. Entidades e Modelo de Dados
119
-
120
- > Extraído de: arquivos `.sql`, protótipos, texto livre.
121
-
122
- | Entidade | Campos principais | Tipo dos campos | Relações |
123
- |----------|-------------------|-----------------|----------|
124
- | | | | |
125
-
126
- ### Índices e constraints identificados
127
- -
128
-
129
- ### Histórico / Auditoria
130
- -
131
-
132
- ---
133
-
134
- ## 4. Jornadas do Usuário
135
-
136
- > Extraído de: protótipos HTML, textos, fluxos.
137
-
138
- ### Jornada 1: {{NOME}}
139
- | Passo | Ator | Ação | Resultado esperado |
140
- |-------|------|------|--------------------|
141
- | 1 | | | |
142
-
143
- ---
144
-
145
- ## 5. Regras de Negócio
146
-
147
- > Extraídas de TODOS os insumos. Cada regra deve ser clara, testável e ter ID único.
148
-
149
- | ID | Regra | Fonte | Testável? |
150
- |----|-------|-------|-----------|
151
- | RN-001 | | {{arquivo_fonte}} | Sim/Não |
152
-
153
- ---
154
-
155
- ## 6. Validações
156
-
157
- > Extraídas de: protótipos (`data-validation`), `.sql` (constraints), texto.
158
-
159
- | Campo | Validações | Obrigatório? | Máscara | Fonte |
160
- |-------|-----------|--------------|---------|-------|
161
- | | | | | |
162
-
163
- ---
164
-
165
- ## 7. Telas e Componentes UI
166
-
167
- > Extraídos de: protótipos HTML (`data-field`, `data-action`, `data-route`, `data-state`).
168
-
169
- ### Tela 1: {{NOME}}
170
- - **Rota**:
171
- - **Campos**: (extraídos dos `data-field`)
172
- - **Ações**: (extraídas dos `data-action`)
173
- - **Navegação**: (extraída dos `data-route`)
174
- - **Estados**: (extraídos dos `data-state`)
175
- - **Permissões por elemento**: (extraídos dos `data-permission`)
176
-
177
- ---
178
-
179
- ## 8. Integrações Externas
180
-
181
- | Serviço | Método | Quando é chamado | O que envia | O que recebe | Fallback |
182
- |---------|--------|------------------|-------------|--------------|----------|
183
- | | | | | | |
184
-
185
- ---
186
-
187
- ## 9. Cenários de Erro
188
-
189
- | # | Cenário | Causa | Comportamento esperado | Fonte |
190
- |---|---------|-------|----------------------|-------|
191
- | 1 | | | | |
192
-
193
- ---
194
-
195
- ## 10. Requisitos Não-Funcionais
196
-
197
- | Aspecto | Requisito | Fonte |
198
- |---------|-----------|-------|
199
- | Volume esperado | | |
200
- | Performance | | |
201
- | Disponibilidade | | |
202
- | Acessibilidade | | |
203
-
204
- ---
205
-
206
- ## 11. Fases de Entrega
207
-
208
- > Princípio: **entregáveis contínuos** — cada fase entrega valor e pode ir pra produção.
209
- > Fases são sequenciais por dependência. Cada uma tem entregável testável.
210
- > Se o `/sf-extract` foi precedido por um roadmap (backlog_extraido.md), usar as fases como base.
211
-
212
- ### Fase 1 {{Nome}} [P1]
213
-
214
- > **Entregável**: {{O que o usuário pode usar ao final}}
215
- > **Critério de done**: {{Como validar — testes E2E que devem passar}}
216
-
217
- | # | Funcionalidade | Entidades | Regras | Jornadas |
218
- |---|---------------|-----------|--------|----------|
219
- | 1 | | | RN-NNN | Jornada N |
220
-
221
- ### Fase 2 {{Nome}} [P1]
222
-
223
- > **Entregável**: {{...}}
224
- > **Critério de done**: {{...}}
225
- > **Depende de**: Fase 1
226
-
227
- | # | Funcionalidade | Entidades | Regras | Jornadas |
228
- |---|---------------|-----------|--------|----------|
229
- | 1 | | | | |
230
-
231
- <!-- Repetir fases conforme necessário. Máximo 4-5 fases. -->
232
-
233
- ### Visão geral
234
-
235
- | Fase | Nome | Prioridade | Entregável | Depende de |
236
- |------|------|-----------|------------|------------|
237
- | 1 | | P1 | | — |
238
- | 2 | | P1 | | Fase 1 |
239
-
240
- ---
241
-
242
- ## 12. Dependências
243
-
244
- | Dependência | Tipo | Status | Impacto se indisponível |
245
- |-------------|------|--------|------------------------|
246
- | | feature / serviço / tabela | pronto / pendente | |
247
-
248
- ---
249
-
250
- ## 13. Fora de Escopo
251
-
252
- > Explicitamente listado — o que NÃO será feito nesta feature.
253
-
254
- | # | Item | Motivo |
255
- |---|------|--------|
256
- | 1 | | futuro / outra feature / decisão do usuário |
257
-
258
- ---
259
-
260
- ## 14. Ambiguidades e Perguntas
261
-
262
- > ⚠️ **BLOQUEANTE** — o `/sf-design` NÃO avança enquanto houver linha com `Resposta` vazia E `Resolvido em docs/` vazio.
263
- >
264
- > **Como responder** (ver `.github/skills/sf-extract/SKILL.md` → "Como responder ambiguidades"):
265
- > preencher a coluna `Resposta` direto nesta tabela e rodar `/sf-design` de novo.
266
- >
267
- > **Coluna `Resolvido em docs/`**: preenchida pelo Analyzer quando a resposta já
268
- > existe em `docs/` — formato `docs/{arquivo}.md §{seção}`. NÃO preencher manualmente.
269
-
270
- | ID | Pergunta | Contexto | Fonte | Resposta | Resolvido em docs/ |
271
- |----|----------|----------|-------|----------|--------------------|
272
- | AMB-001 | ⚠️ | | | (aguardando) | — |
273
-
274
- ---
275
-
276
- ## 15. Rastreabilidade — De onde veio cada informação
277
-
278
- > Mapa de qual insumo originou qual seção. Permite auditoria da extração.
279
-
280
- | Insumo | Tipo | O que foi extraído |
281
- |--------|------|--------------------|
282
- | `{{arquivo}}` | {{tipo}} | {{seções alimentadas}} |
283
-
284
- ---
285
-
286
- > **Próximo passo**: Após aprovação do usuário, este PRD alimenta a geração do `sdd.md` e das tasks (`specs/{nome}/tasks.md`).
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 um dos dois:
34
+ - Scope puro-produto (raro): 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.