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.
- package/README.md +252 -167
- package/bin/cli.js +70 -70
- package/lib/init.js +92 -92
- package/lib/update.js +132 -132
- package/package.json +1 -1
- package/templates/.ai/memory/napkin.md +68 -68
- package/templates/.github/CHANGELOG.md +560 -533
- package/templates/.github/adapters/SETUP.md +314 -314
- package/templates/.github/adapters/confluence.md +295 -295
- package/templates/.github/adapters/errors.md +234 -234
- package/templates/.github/adapters/filesystem.md +353 -353
- package/templates/.github/adapters/interface.md +301 -301
- package/templates/.github/adapters/naming.md +241 -241
- package/templates/.github/adapters/registry.md +244 -244
- package/templates/.github/agents/backend-coder.md +215 -215
- package/templates/.github/agents/db-coder.md +165 -165
- package/templates/.github/agents/doc-writer.md +66 -66
- package/templates/.github/agents/frontend-coder.md +222 -222
- package/templates/.github/agents/infra-coder.md +341 -341
- package/templates/.github/agents/reviewer.md +99 -99
- package/templates/.github/agents/security-reviewer.md +153 -153
- package/templates/.github/copilot-instructions.md +272 -272
- package/templates/.github/instructions/docs.instructions.md +147 -145
- package/templates/.github/instructions/sensitive-files.instructions.md +32 -32
- package/templates/.github/rules.md +229 -229
- package/templates/.github/scripts/bootstrap-confluence.js +289 -289
- package/templates/.github/skills/sf-design/SKILL.md +161 -161
- package/templates/.github/skills/sf-dev/SKILL.md +204 -204
- package/templates/.github/skills/sf-discovery/SKILL.md +415 -415
- package/templates/.github/skills/sf-extract/SKILL.md +225 -225
- package/templates/.github/skills/sf-load/SKILL.md +296 -296
- package/templates/.github/skills/sf-mcp/SKILL.md +386 -386
- package/templates/.github/skills/sf-merge-docs/SKILL.md +152 -152
- package/templates/.github/skills/sf-plan/SKILL.md +152 -152
- package/templates/.github/skills/sf-publish/SKILL.md +144 -144
- package/templates/.github/skills/sf-session-finish/SKILL.md +93 -93
- package/templates/.github/skills/sf-start/SKILL.md +192 -192
- package/templates/.github/templates/estrutura/apiContracts.template.md +160 -159
- package/templates/.github/templates/estrutura/architecture.template.md +169 -168
- package/templates/.github/templates/estrutura/conventions.template.md +214 -212
- package/templates/.github/templates/estrutura/decisions.template.md +107 -107
- package/templates/.github/templates/estrutura/domain.template.md +161 -160
- package/templates/.github/templates/feature/PRD.template.md +279 -279
- package/templates/.github/templates/feature/Progresso.template.md +141 -141
- package/templates/.github/templates/feature/TRD.template.md +358 -358
- package/templates/.github/templates/feature/context.template.md +89 -89
- package/templates/.github/templates/feature/extract-log.template.md +49 -49
- package/templates/.github/templates/feature/projetos.template.yaml +79 -79
- package/templates/.github/templates/global/progresso_global.template.md +59 -57
- package/templates/.github/templates/specs/brief.template.md +66 -66
- package/templates/.github/templates/specs/contracts.template.md +147 -147
- package/templates/.github/templates/specs/scenarios.template.md +125 -125
- package/templates/.github/templates/specs/tasks.template.md +65 -65
- package/templates/_gitignore +35 -35
- 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.
|