spec-first-copilot 0.3.0 → 0.5.0-beta.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 (44) hide show
  1. package/README.md +38 -30
  2. package/lib/init.js +2 -2
  3. package/package.json +31 -23
  4. package/templates/.ai/memory/napkin.md +1 -1
  5. package/templates/.github/agents/db-coder.md +1 -1
  6. package/templates/.github/agents/doc-writer.md +12 -15
  7. package/templates/.github/agents/security-reviewer.md +1 -1
  8. package/templates/.github/copilot-instructions.md +61 -43
  9. package/templates/.github/instructions/docs.instructions.md +12 -12
  10. package/templates/.github/instructions/sensitive-files.instructions.md +10 -10
  11. package/templates/{docs/Desenvolvimento → .github}/rules.md +2 -2
  12. package/templates/.github/skills/sf-design/SKILL.md +26 -27
  13. package/templates/.github/skills/sf-dev/SKILL.md +30 -7
  14. package/templates/.github/skills/sf-discovery/SKILL.md +405 -405
  15. package/templates/.github/skills/sf-extract/SKILL.md +9 -9
  16. package/templates/.github/skills/sf-feature/SKILL.md +21 -21
  17. package/templates/.github/skills/sf-merge-delta/SKILL.md +21 -18
  18. package/templates/.github/skills/sf-plan/SKILL.md +8 -8
  19. package/templates/.github/skills/{sf-pausar → sf-session-finish}/SKILL.md +10 -10
  20. package/templates/.github/skills/sf-setup-projeto/SKILL.md +20 -20
  21. package/templates/{docs/_templates/estrutura/API.template.md → .github/templates/estrutura/apiContracts.template.md} +24 -17
  22. package/templates/.github/templates/estrutura/architecture.template.md +158 -0
  23. package/templates/{docs/_templates/estrutura/Seguranca.template.md → .github/templates/estrutura/conventions.template.md} +74 -10
  24. package/templates/{docs/_templates/estrutura/ADRs.template.md → .github/templates/estrutura/decisions.template.md} +21 -13
  25. package/templates/.github/templates/estrutura/domain.template.md +148 -0
  26. package/templates/{docs/_templates → .github/templates}/feature/PRD.template.md +256 -256
  27. package/templates/{docs/_templates → .github/templates}/feature/Progresso.template.md +2 -2
  28. package/templates/{docs/_templates → .github/templates}/feature/TRD.template.md +204 -200
  29. package/templates/{docs/_templates → .github/templates}/feature/context.template.md +1 -1
  30. package/templates/{docs/_templates → .github/templates}/feature/projetos.template.yaml +1 -1
  31. package/templates/{docs/_templates → .github/templates}/feature/sdd.template.md +372 -372
  32. package/templates/{docs/_templates → .github/templates}/feature/tasks.template.md +115 -115
  33. package/templates/docs/_templates/estrutura/Arquitetura.template.md +0 -82
  34. package/templates/docs/_templates/estrutura/Infraestrutura.template.md +0 -104
  35. package/templates/docs/_templates/estrutura/Modelo_Dados.template.md +0 -99
  36. package/templates/docs/_templates/estrutura/Stack.template.md +0 -78
  37. package/templates/docs/_templates/estrutura/Visao.template.md +0 -82
  38. /package/templates/{docs/_templates → .github/templates}/feature/backlog-extraido.template.md +0 -0
  39. /package/templates/{docs/_templates → .github/templates}/feature/extract-log.template.md +0 -0
  40. /package/templates/{docs/_templates → .github/templates}/global/progresso_global.template.md +0 -0
  41. /package/templates/docs/{Desenvolvimento/.gitkeep → .gitkeep} +0 -0
  42. /package/templates/{docs/Estrutura → workspace/Input}/.gitkeep +0 -0
  43. /package/templates/{docs/PM → workspace/Input/setup_projeto}/.gitkeep +0 -0
  44. /package/templates/{docs/PM/setup_projeto → workspace/Output}/.gitkeep +0 -0
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: sf-extract
3
3
  description: |
4
- Extração de insumos. Lê docs/PM/ e gera PRD ou TRD estruturado.
4
+ Extração de insumos. Lê workspace/Input/ e gera PRD ou TRD estruturado.
5
5
  Trigger: /sf-extract
6
6
  author: GustavoMaritan
7
7
  version: 1.0.0
@@ -35,7 +35,7 @@ Exemplo: `/sf-extract feat_cadastro_cliente`
35
35
  ```
36
36
  1. Ler .context.md e .extract-log.md (se existir)
37
37
  2. Ler discovery.md (se existir) — análise profunda prévia dos insumos
38
- 3. Inventariar arquivos em docs/PM/{nome}/ → filtrar NOVOS e MODIFICADOS
38
+ 3. Inventariar arquivos em workspace/Input/{nome}/ → filtrar NOVOS e MODIFICADOS
39
39
  4. Spawn 1 Reader por arquivo NOVO/MODIFICADO (paralelo)
40
40
  5. Aguardar todos os Readers
41
41
  6. Spawn Analyzer com:
@@ -43,7 +43,7 @@ Exemplo: `/sf-extract feat_cadastro_cliente`
43
43
  - discovery.md (se existir) — mapa do sistema pré-validado
44
44
  - PRD/TRD existente (se re-extração)
45
45
  - Template (PRD.template.md ou TRD.template.md)
46
- - docs/Estrutura/ (contexto do projeto)
46
+ - docs/ (contexto do projeto)
47
47
  7. Analyzer gera documento final + extract-log
48
48
  8. Atualizar .context.md → status: extract_done
49
49
  ```
@@ -151,19 +151,19 @@ Se um tema **não foi mencionado em nenhum insumo**, gera **ambiguidade obrigat
151
151
  | # | Validação | Se falhar |
152
152
  |---|-----------|-----------|
153
153
  | 1 | Argumento `nome` foi informado | Parar → "Informe o nome. Ex: /sf-extract feat_cadastro_cliente" |
154
- | 2 | `docs/PM/{nome}/` existe e contém pelo menos 1 arquivo (ignorar .gitkeep) | Parar → "Pasta de insumos vazia ou inexistente" |
155
- | 3 | `docs/Desenvolvimento/{nome}/.context.md` existe | Parar → "Execute /sf-feature {nome} ou /sf-setup-projeto primeiro" |
154
+ | 2 | `workspace/Input/{nome}/` existe e contém pelo menos 1 arquivo (ignorar .gitkeep) | Parar → "Pasta de insumos vazia ou inexistente" |
155
+ | 3 | `workspace/Output/{nome}/.context.md` existe | Parar → "Execute /sf-feature {nome} ou /sf-setup-projeto primeiro" |
156
156
  | 4 | Status em `.context.md` é `not_started` ou `extract_done` | Se `approved` ou posterior → "Extração já aprovada. Para re-extrair, o status será revertido para extract_done" |
157
157
 
158
158
  ## Passos detalhados
159
159
 
160
160
  ### 1. Ler contexto
161
161
  - Ler `.context.md` → identificar `tipo` (feature ou setup) e `documento` (PRD ou TRD)
162
- - Ler `docs/Estrutura/` se existir (contexto para extração coerente)
162
+ - Ler `docs/` se existir (contexto para extração coerente)
163
163
  - Selecionar template: `tipo=feature` → `PRD.template.md` | `tipo=setup` → `TRD.template.md`
164
164
 
165
165
  ### 2. Inventariar e classificar insumos
166
- Ler todos os arquivos em `docs/PM/{nome}/`. Para cada arquivo, calcular hash (SHA-256 truncado 8 chars).
166
+ Ler todos os arquivos em `workspace/Input/{nome}/`. Para cada arquivo, calcular hash (SHA-256 truncado 8 chars).
167
167
 
168
168
  Se `.extract-log.md` existir, classificar:
169
169
 
@@ -187,7 +187,7 @@ Após todos Readers concluírem, disparar Analyzer (Opus) com:
187
187
  - Todos os outputs dos Readers
188
188
  - PRD/TRD existente (se re-extração — para merge aditivo)
189
189
  - Template correspondente
190
- - `docs/Estrutura/` como contexto
190
+ - `docs/` como contexto
191
191
 
192
192
  ### 5. Gerar/atualizar documento
193
193
 
@@ -277,7 +277,7 @@ atualizado_em: "{{ISO_DATETIME}}"
277
277
  | Contradição entre arquivos | Analyzer gera ambiguidade citando os dois arquivos e a contradição |
278
278
 
279
279
  ## Notas
280
- - O `/extract` é a ÚNICA skill que lê `docs/PM/` — nenhuma outra skill acessa insumos brutos
280
+ - O `/extract` é a ÚNICA skill que lê `workspace/Input/` — nenhuma outra skill acessa insumos brutos
281
281
  - Na re-extração, o merge é ADITIVO — nunca remove informação de arquivos inalterados
282
282
  - Para recomeçar do zero: apagar PRD/TRD e .extract-log.md manualmente
283
283
  - Readers são stateless — não conhecem outros arquivos, apenas o seu
@@ -31,19 +31,19 @@ Exemplo: `/sf-feature feat_cadastro_cliente`
31
31
  | # | Validação | Se falhar |
32
32
  |---|-----------|-----------|
33
33
  | 1 | Argumento `nome` foi informado | Parar → "Informe o nome da feature. Ex: /sf-feature feat_cadastro_cliente" |
34
- | 2 | `docs/PM/{nome}/` existe | Parar → "Crie a pasta docs/PM/{nome}/ e adicione seus insumos" |
34
+ | 2 | `workspace/Input/{nome}/` existe | Parar → "Crie a pasta workspace/Input/{nome}/ e adicione seus insumos" |
35
35
  | 3 | Pasta contém pelo menos 1 arquivo (ignorar .gitkeep) | Parar → "Adicione insumos na pasta (aceitos: .md, .txt, .sql, .xml, .html, .json, .csv, .png, .jpg, .pdf — qualquer formato)" |
36
- | 4 | `docs/Estrutura/` está populado (setup já executado) | Parar → "Execute /sf-setup-projeto antes de criar features" |
36
+ | 4 | `docs/` está populado (setup já executado) | Parar → "Execute /sf-setup-projeto antes de criar features" |
37
37
  | 5 | `.context.md` não existe ou status é `not_started` | Se existe com status avançado → "Feature já em andamento (status: {status}). Para re-extrair, use /sf-extract {nome}" |
38
38
 
39
39
  ## Passos
40
40
 
41
41
  ### 1. Carregar contexto do projeto
42
- Ler `docs/Estrutura/` para entender a arquitetura, stack, modelo de dados e convenções existentes. Esse contexto será passado ao `/extract`.
42
+ Ler `docs/` para entender a arquitetura, stack, modelo de dados e convenções existentes. Esse contexto será passado ao `/extract`.
43
43
 
44
44
  ### 2. Criar estrutura
45
45
  ```
46
- docs/Desenvolvimento/{nome}/
46
+ workspace/Output/{nome}/
47
47
  ├── .context.md ← criado agora
48
48
  └── (PRD.md será criado pelo /extract)
49
49
  ```
@@ -54,7 +54,7 @@ docs/Desenvolvimento/{nome}/
54
54
  nome: "{nome}"
55
55
  tipo: "feature"
56
56
  documento: "PRD"
57
- pm_path: "docs/PM/{nome}/"
57
+ pm_path: "workspace/Input/{nome}/"
58
58
  status: "not_started"
59
59
  ultima_skill: "/sf-feature"
60
60
  atualizado_em: "{{ISO_DATETIME}}"
@@ -65,21 +65,21 @@ atualizado_em: "{{ISO_DATETIME}}"
65
65
 
66
66
  Antes de extrair, perguntar ao usuário:
67
67
  ```
68
- 📋 Insumos encontrados em docs/PM/{nome}/.
68
+ 📋 Insumos encontrados em workspace/Input/{nome}/.
69
69
 
70
70
  Recomendo rodar /sf-discovery antes da extração para:
71
71
  - Análise profunda dos insumos
72
72
  - Identificar gaps e contradições
73
73
  - Validar entendimento com você
74
74
 
75
- Quer rodar /sf-discovery docs/PM/{nome}/ agora? (s/n)
75
+ Quer rodar /sf-discovery workspace/Input/{nome}/ agora? (s/n)
76
76
  Se SIM → rodar discovery, salvar discovery.md, depois continuar com extract
77
77
  Se NÃO → pular direto para /sf-extract
78
78
  ```
79
79
 
80
80
  Se o usuário aceitar:
81
- - Rodar `/sf-discovery docs/PM/{nome}/`
82
- - Aguardar conclusão — discovery.md salvo em `docs/Desenvolvimento/{nome}/`
81
+ - Rodar `/sf-discovery workspace/Input/{nome}/`
82
+ - Aguardar conclusão — discovery.md salvo em `workspace/Output/{nome}/`
83
83
  - Continuar para o passo 5
84
84
 
85
85
  ### 5. Chamar `/sf-extract {nome}`
@@ -88,12 +88,12 @@ O `/sf-extract` lê os insumos + discovery.md (se existir), gera o PRD e atualiz
88
88
  ### 6. CHECKPOINT — Parar e informar o usuário
89
89
  Mensagem ao usuário:
90
90
  ```
91
- ✅ PRD gerado em docs/Desenvolvimento/{nome}/PRD.md
91
+ ✅ PRD gerado em workspace/Output/{nome}/PRD.md
92
92
 
93
93
  Revise o documento. Quando estiver satisfeito, execute:
94
94
  /sf-design {nome}
95
95
 
96
- Se precisar adicionar mais insumos, coloque na pasta docs/PM/{nome}/
96
+ Se precisar adicionar mais insumos, coloque na pasta workspace/Input/{nome}/
97
97
  e execute:
98
98
  /sf-extract {nome}
99
99
  ```
@@ -102,29 +102,29 @@ e execute:
102
102
  1. `/sf-design {nome}` (pergunta aprovação → gera SDD)
103
103
  2. `/sf-plan {nome}` (gera tasks + Progresso)
104
104
  3. `/sf-dev {nome}` (executa tasks)
105
- 4. `/sf-merge-delta {nome}` (aplica Delta Specs em docs/Estrutura/)
105
+ 4. `/sf-merge-delta {nome}` (aplica Delta Specs em docs/)
106
106
 
107
107
  ## Saídas diretas desta skill
108
- - `docs/Desenvolvimento/{nome}/.context.md`
109
- - `docs/Desenvolvimento/{nome}/PRD.md` (via /extract)
110
- - `docs/Desenvolvimento/{nome}/.extract-log.md` (via /extract)
108
+ - `workspace/Output/{nome}/.context.md`
109
+ - `workspace/Output/{nome}/PRD.md` (via /extract)
110
+ - `workspace/Output/{nome}/.extract-log.md` (via /extract)
111
111
 
112
112
  ## Saídas indiretas (skills subsequentes)
113
113
  - `sdd.md` (via /design)
114
114
  - `*_tasks.md` + `Progresso.md` (via /plan)
115
- - `docs/Estrutura/` atualizado (via /sf-merge-delta após /dev)
115
+ - `docs/` atualizado (via /sf-merge-delta após /dev)
116
116
 
117
117
  ## Erros
118
118
 
119
119
  | Erro | Ação |
120
120
  |------|------|
121
121
  | Nome não informado | Parar, mostrar exemplo de uso |
122
- | PM/{nome}/ não existe | Parar, instruir criação |
123
- | PM/{nome}/ vazio | Parar, listar formatos aceitos |
124
- | Estrutura/ não populado | Parar, sugerir /sf-setup-projeto |
122
+ | workspace/Input/{nome}/ não existe | Parar, instruir criação |
123
+ | workspace/Input/{nome}/ vazio | Parar, listar formatos aceitos |
124
+ | docs/ não populado | Parar, sugerir /sf-setup-projeto |
125
125
  | Pipeline já iniciado | Mostrar status atual, sugerir /sf-extract para re-extração ou skill correspondente ao status |
126
126
 
127
127
  ## Notas
128
128
  - Diferente do `/sf-setup-projeto`, pode ser executado **múltiplas vezes** (uma por feature)
129
- - O contexto de `docs/Estrutura/` é carregado para que o `/extract` gere um PRD coerente com a arquitetura existente
130
- - Após `/dev`, o `/merge-delta` atualiza `docs/Estrutura/` com as mudanças da feature
129
+ - O contexto de `docs/` é carregado para que o `/extract` gere um PRD coerente com a arquitetura existente
130
+ - Após `/dev`, o `/merge-delta` atualiza `docs/` com as mudanças da feature
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: sf-merge-delta
3
3
  description: |
4
- Delta Specs. Aplica mudanças do SDD em docs/Estrutura/.
4
+ Delta Specs. Aplica mudanças do SDD em docs/.
5
5
  Trigger: /sf-merge-delta
6
6
  author: GustavoMaritan
7
7
  version: 1.0.0
@@ -10,7 +10,7 @@ date: 2026-04-08
10
10
 
11
11
  # Skill: /sf-merge-delta
12
12
 
13
- > Skill atômica pós-dev. Aplica Delta Specs do SDD em docs/Estrutura/.
13
+ > Skill atômica pós-dev. Aplica Delta Specs do SDD em docs/.
14
14
  > Última etapa do pipeline de feature — não se aplica a setup.
15
15
 
16
16
  ## Tipo
@@ -40,9 +40,9 @@ Exemplo: `/sf-merge-delta feat_cadastro_cliente`
40
40
  |---|-----------|-----------|
41
41
  | 1 | Argumento `nome` foi informado | Parar → "Informe o nome. Ex: /sf-merge-delta feat_cadastro_cliente" |
42
42
  | 2 | `.context.md` existe com status `dev_done` | Se anterior → "Execute /sf-dev {nome} primeiro" |
43
- | 3 | `.context.md` tipo é `feature` (não `setup`) | Parar → "Setup não usa merge-delta — docs/Estrutura/ foi criado diretamente pelo /sf-dev" |
43
+ | 3 | `.context.md` tipo é `feature` (não `setup`) | Parar → "Setup não usa merge-delta — docs/ foi criado diretamente pelo /sf-dev" |
44
44
  | 4 | `sdd.md` existe com §11 Delta Specs preenchida | Parar → "Delta Specs não encontrada no SDD" |
45
- | 5 | `docs/Estrutura/` está populado | Parar → "docs/Estrutura/ vazio — execute /sf-setup-projeto primeiro" |
45
+ | 5 | `docs/` está populado | Parar → "docs/ vazio — execute /sf-setup-projeto primeiro" |
46
46
 
47
47
  ## Passos
48
48
 
@@ -56,17 +56,20 @@ Ler `sdd.md` §11 e classificar cada delta:
56
56
  | **REMOVED** | Elemento removido do sistema | Endpoint DELETE /api/v1/legacy removido |
57
57
 
58
58
  ### 2. Mapear deltas para docs alvo
59
- Cada delta afeta um ou mais docs em `docs/Estrutura/`:
59
+ Cada delta afeta um ou mais docs em `docs/`:
60
60
 
61
61
  | Elemento | Doc alvo |
62
62
  |----------|----------|
63
- | Tabelas, colunas, índices | `Modelo_Dados.md` |
64
- | Endpoints, contratos | `API.md` |
65
- | Decisões de arquitetura | `Arquitetura.md` + `ADRs.md` |
66
- | Mudanças de infra | `Infraestrutura.md` |
67
- | Mudanças de segurança | `Seguranca.md` |
68
- | Mudanças de stack | `Stack.md` |
69
- | Mudanças de visão/escopo | `Visao.md` |
63
+ | Tabelas, colunas, índices, entidades | `domain.md` |
64
+ | Visão/escopo, atores, integrações externas, glossário | `domain.md` |
65
+ | Endpoints, rotas, contratos, paginação, filtros | `apiContracts.md` |
66
+ | Containers, componentes, ambientes, deploy, stack | `architecture.md` |
67
+ | Decisões arquiteturais | `decisions.md` (+ padrão aplicado em `architecture.md` se couber) |
68
+ | Autenticação, autorização, roles, permissões | `conventions.md` |
69
+ | CORS, rate limiting, LGPD, auditoria | `conventions.md` |
70
+ | Variáveis de ambiente, domínios, monitoramento | `conventions.md` |
71
+ | Códigos de erro do domínio | `conventions.md` |
72
+ | Alternativas tecnológicas descartadas | `conventions.md` |
70
73
 
71
74
  ### 3. Aplicar cada delta
72
75
  Para cada delta, no doc alvo:
@@ -103,14 +106,14 @@ Após todas alterações:
103
106
 
104
107
  ### 5. Atualizar status
105
108
  - `.context.md` → status: `done`
106
- - `docs/Desenvolvimento/progresso.md` → feature marcada como concluída
109
+ - `workspace/Output/progresso.md` → feature marcada como concluída
107
110
  - Informar ao usuário:
108
111
  ```
109
- ✅ Delta Specs aplicadas em docs/Estrutura/
112
+ ✅ Delta Specs aplicadas em docs/
110
113
 
111
114
  Docs atualizados:
112
- - Modelo_Dados.md — ADDED: tabelas clientes, clientes_enderecos
113
- - API.md — ADDED: endpoints POST/GET /api/v1/clientes
115
+ - domain.md — ADDED: tabelas clientes, clientes_enderecos
116
+ - apiContracts.md — ADDED: endpoints POST/GET /api/v1/clientes
114
117
 
115
118
  Feature {nome} concluída.
116
119
  ```
@@ -121,12 +124,12 @@ Após todas alterações:
121
124
 
122
125
  | Arquivo | Descrição |
123
126
  |---------|-----------|
124
- | `docs/Estrutura/*.md` | Docs globais atualizados com deltas da feature |
127
+ | `docs/*.md` | Docs globais atualizados com deltas da feature |
125
128
  | `progresso.md` (global) | Feature marcada como concluída |
126
129
  | `.context.md` | Status: `done` |
127
130
 
128
131
  ## Pós-condições
129
- - `docs/Estrutura/` reflete o estado real do sistema
132
+ - `docs/` reflete o estado real do sistema
130
133
  - Cada mudança rastreável: changelog → feature → SDD → PRD → insumo
131
134
  - Feature completamente concluída
132
135
 
@@ -38,7 +38,7 @@ Exemplo: `/sf-plan feat_cadastro_cliente`
38
38
  | # | Validação | Se falhar |
39
39
  |---|-----------|-----------|
40
40
  | 1 | Argumento `nome` foi informado | Parar → "Informe o nome. Ex: /sf-plan feat_cadastro_cliente" |
41
- | 2 | `docs/Desenvolvimento/{nome}/.context.md` existe com status `design_done` | Se anterior → "Execute /sf-design {nome} primeiro". Se posterior → "Tasks já foram geradas (status: {status})" |
41
+ | 2 | `workspace/Output/{nome}/.context.md` existe com status `design_done` | Se anterior → "Execute /sf-design {nome} primeiro". Se posterior → "Tasks já foram geradas (status: {status})" |
42
42
  | 3 | `sdd.md` existe na pasta | Parar → "SDD não encontrado. Execute /sf-design {nome}" |
43
43
 
44
44
  ## Passos
@@ -47,9 +47,9 @@ Exemplo: `/sf-plan feat_cadastro_cliente`
47
47
  - Ler `.context.md` → validar status
48
48
  - Ler `sdd.md` completo
49
49
  - Ler `projetos.yaml` (manifesto de repos — mapeamento área → repo)
50
- - Ler `docs/Estrutura/` (Stack, Arquitetura — para convenções por área)
51
- - Ler `docs/Desenvolvimento/rules.md` (padrões de código, commit, branch)
52
- - Carregar template `docs/_templates/feature/tasks.template.md`
50
+ - Ler `docs/` (Stack, Arquitetura — para convenções por área)
51
+ - Ler `.github/rules.md` (padrões de código, commit, branch)
52
+ - Carregar template `.github/templates/feature/tasks.template.md`
53
53
 
54
54
  ### 2. Identificar fases de entrega
55
55
  Ler PRD §11 (Fases de Entrega) — cada fase vira um agrupamento de tasks:
@@ -68,7 +68,7 @@ Para cada fase de entrega, mapear seções do SDD para áreas de tasks:
68
68
  | §8 Integrações externas | INFRA | Se há infra/serviços externos |
69
69
  | Outras | MOBILE, DEVOPS, etc. | Conforme necessidade do SDD |
70
70
 
71
- > **Nota**: Área DOC NÃO existe mais no setup. docs/Estrutura/ é gerado pelo /sf-design (passo 3).
71
+ > **Nota**: Área DOC NÃO existe mais no setup. docs/ é gerado pelo /sf-design (passo 3).
72
72
  > DOC só aparece em features se houver necessidade explícita de documentação adicional.
73
73
 
74
74
  Áreas são **dinâmicas** — só cria o que o SDD exige. Não criar área vazia.
@@ -118,10 +118,10 @@ Tasks são agrupadas por **fase de entrega** (do PRD §11), não só por fase t
118
118
  | BACK | Setup/Config → DTOs/Validações → Repository/Service → Controller → Testes |
119
119
  | FRONT | Setup/Rotas → Componentes base → Telas → Integração API → Polish/UX |
120
120
  | INFRA | Provisioning → Config → Deploy → Monitoramento |
121
- | DOC | Gerar docs/Estrutura/ a partir do TRD |
121
+ | DOC | Gerar docs/ a partir do TRD |
122
122
 
123
123
  ### 5. Gerar `Progresso.md`
124
- Usando template `docs/_templates/feature/Progresso.template.md`:
124
+ Usando template `.github/templates/feature/Progresso.template.md`:
125
125
 
126
126
  - Resumo por Área × Fase com contagem de tasks
127
127
  - Status por fase: ⬜ pendente | 🔄 em andamento | ✅ concluída
@@ -137,7 +137,7 @@ Usando template `docs/_templates/feature/Progresso.template.md`:
137
137
  - Checklist pós-conclusão (merge delta, atualizar progresso global, napkin)
138
138
 
139
139
  ### 6. Atualizar progresso global
140
- Adicionar entrada em `docs/Desenvolvimento/progresso.md`:
140
+ Adicionar entrada em `workspace/Output/progresso.md`:
141
141
 
142
142
  ```markdown
143
143
  | {nome} | plan_done | BANCO: 0/N | BACK: 0/N | FRONT: 0/N |
@@ -1,14 +1,14 @@
1
1
  ---
2
- name: sf-pausar
2
+ name: sf-session-finish
3
3
  description: |
4
4
  Encerrar sessão. Salva estado, atualiza napkin, gera retomada.md.
5
- Trigger: /sf-pausar
5
+ Trigger: /sf-session-finish
6
6
  author: GustavoMaritan
7
7
  version: 1.0.0
8
8
  date: 2026-04-08
9
9
  ---
10
10
 
11
- # Skill: /sf-pausar
11
+ # Skill: /sf-session-finish
12
12
 
13
13
  > Encerra a sessão de trabalho de forma organizada.
14
14
  > Consolida estado, atualiza memória, gera ponto de retomada para a próxima sessão.
@@ -18,7 +18,7 @@ Utilitária — roda a qualquer momento
18
18
 
19
19
  ## Uso
20
20
  ```
21
- /sf-pausar
21
+ /sf-session-finish
22
22
  ```
23
23
 
24
24
  ---
@@ -27,7 +27,7 @@ Utilitária — roda a qualquer momento
27
27
 
28
28
  ### 1. Levantar estado atual de cada feature/setup
29
29
 
30
- Para cada `.context.md` em `docs/Desenvolvimento/*/`:
30
+ Para cada `.context.md` em `workspace/Output/*/`:
31
31
  - Ler status atual
32
32
  - Ler Progresso.md (se existir) → % concluído, fase atual
33
33
  - Identificar tasks em andamento (`- [ ]` com dependências resolvidas)
@@ -55,12 +55,12 @@ Adicionar/atualizar seção `## Sessão Atual` com:
55
55
 
56
56
  ### 4. Gerar resumo de retomada
57
57
 
58
- Criar/atualizar `docs/Desenvolvimento/retomada.md`:
58
+ Criar/atualizar `workspace/Output/retomada.md`:
59
59
 
60
60
  ```markdown
61
61
  # Ponto de Retomada — {{DATA}}
62
62
 
63
- > Gerado pelo /sf-pausar. Leia este arquivo ao iniciar a próxima sessão.
63
+ > Gerado pelo /sf-session-finish. Leia este arquivo ao iniciar a próxima sessão.
64
64
 
65
65
  ## Estado geral
66
66
 
@@ -96,7 +96,7 @@ Criar/atualizar `docs/Desenvolvimento/retomada.md`:
96
96
  ```
97
97
  ✅ Sessão encerrada. Estado salvo em:
98
98
  - `.ai/memory/napkin.md` — memória atualizada
99
- - `docs/Desenvolvimento/retomada.md` — ponto de retomada
99
+ - `workspace/Output/retomada.md` — ponto de retomada
100
100
 
101
101
  Para retomar na próxima sessão:
102
102
  1. Ler retomada.md
@@ -110,11 +110,11 @@ Para retomar na próxima sessão:
110
110
  | Arquivo | Descrição |
111
111
  |---------|-----------|
112
112
  | `.ai/memory/napkin.md` | Sessão atual atualizada |
113
- | `docs/Desenvolvimento/retomada.md` | Ponto de retomada com estado completo |
113
+ | `workspace/Output/retomada.md` | Ponto de retomada com estado completo |
114
114
 
115
115
  ## Notas
116
116
 
117
117
  - Não modifica .context.md (o status da pipeline não muda ao pausar)
118
118
  - Não faz commit automático — se tem working tree sujo, avisa mas não força
119
119
  - Pode ser chamada a qualquer momento, não só no final do dia
120
- - O arquivo `retomada.md` é sobrescrito a cada /sf-pausar (é ponto atual, não histórico)
120
+ - O arquivo `retomada.md` é sobrescrito a cada /sf-session-finish (é ponto atual, não histórico)
@@ -25,16 +25,16 @@ Orquestrador (primeira etapa do pipeline)
25
25
 
26
26
  | # | Validação | Se falhar |
27
27
  |---|-----------|-----------|
28
- | 1 | `docs/PM/setup_projeto/` existe | Parar → "Crie a pasta docs/PM/setup_projeto/ e adicione seus insumos" |
28
+ | 1 | `workspace/Input/setup_projeto/` existe | Parar → "Crie a pasta workspace/Input/setup_projeto/ e adicione seus insumos" |
29
29
  | 2 | Pasta contém pelo menos 1 arquivo (ignorar .gitkeep) | Parar → "Adicione insumos na pasta (aceitos: .md, .txt, .sql, .xml, .html, .json, .csv, .png, .jpg, .pdf — qualquer formato)" |
30
- | 3 | `docs/Estrutura/` está vazio ou contém apenas templates vazios | Parar → "Setup já foi executado. Use /sf-feature para novas funcionalidades" |
31
- | 4 | `docs/Desenvolvimento/setup_projeto/.context.md` não existe ou status é `not_started` | Parar → "Setup já está em andamento. Verifique o status em .context.md" |
30
+ | 3 | `docs/` está vazio ou contém apenas templates vazios | Parar → "Setup já foi executado. Use /sf-feature para novas funcionalidades" |
31
+ | 4 | `workspace/Output/setup_projeto/.context.md` não existe ou status é `not_started` | Parar → "Setup já está em andamento. Verifique o status em .context.md" |
32
32
 
33
33
  ## Passos
34
34
 
35
35
  ### 1. Criar estrutura
36
36
  ```
37
- docs/Desenvolvimento/setup_projeto/
37
+ workspace/Output/setup_projeto/
38
38
  ├── .context.md ← criado agora
39
39
  └── (TRD.md será criado pelo /extract)
40
40
  ```
@@ -45,7 +45,7 @@ docs/Desenvolvimento/setup_projeto/
45
45
  nome: "setup_projeto"
46
46
  tipo: "setup"
47
47
  documento: "TRD"
48
- pm_path: "docs/PM/setup_projeto/"
48
+ pm_path: "workspace/Input/setup_projeto/"
49
49
  status: "not_started"
50
50
  ultima_skill: "/sf-setup-projeto"
51
51
  atualizado_em: "{{ISO_DATETIME}}"
@@ -56,21 +56,21 @@ atualizado_em: "{{ISO_DATETIME}}"
56
56
 
57
57
  Antes de extrair, perguntar ao usuário:
58
58
  ```
59
- 📋 Insumos encontrados em docs/PM/setup_projeto/.
59
+ 📋 Insumos encontrados em workspace/Input/setup_projeto/.
60
60
 
61
61
  Recomendo rodar /sf-discovery antes da extração para:
62
62
  - Análise profunda dos insumos (parseia drawio, XML, SQL completo)
63
63
  - Identificar gaps e contradições antes de estruturar
64
64
  - Validar entendimento com você (mapa do sistema)
65
65
 
66
- Quer rodar /sf-discovery docs/PM/setup_projeto/ agora? (s/n)
66
+ Quer rodar /sf-discovery workspace/Input/setup_projeto/ agora? (s/n)
67
67
  Se SIM → rodar discovery, salvar discovery.md, depois continuar com extract
68
68
  Se NÃO → pular direto para /sf-extract (ok para insumos simples)
69
69
  ```
70
70
 
71
71
  Se o usuário aceitar:
72
- - Rodar `/sf-discovery docs/PM/setup_projeto/`
73
- - Aguardar conclusão — discovery.md salvo em `docs/Desenvolvimento/setup_projeto/`
72
+ - Rodar `/sf-discovery workspace/Input/setup_projeto/`
73
+ - Aguardar conclusão — discovery.md salvo em `workspace/Output/setup_projeto/`
74
74
  - Continuar para o passo 4
75
75
 
76
76
  ### 4. Chamar `/sf-extract setup_projeto`
@@ -79,30 +79,30 @@ O `/sf-extract` lê os insumos + discovery.md (se existir), gera o TRD e atualiz
79
79
  ### 5. CHECKPOINT — Parar e informar o usuário
80
80
  Mensagem ao usuário:
81
81
  ```
82
- ✅ TRD gerado em docs/Desenvolvimento/setup_projeto/TRD.md
82
+ ✅ TRD gerado em workspace/Output/setup_projeto/TRD.md
83
83
 
84
84
  Revise o documento. Quando estiver satisfeito, execute:
85
85
  /sf-design setup_projeto
86
86
 
87
- Se precisar adicionar mais insumos, coloque na pasta docs/PM/setup_projeto/
87
+ Se precisar adicionar mais insumos, coloque na pasta workspace/Input/setup_projeto/
88
88
  e execute:
89
89
  /sf-extract setup_projeto
90
90
  ```
91
91
 
92
92
  **O orquestrador encerra aqui.** O restante do pipeline é responsabilidade do usuário chamar as skills atômicas na ordem:
93
- 1. `/sf-design setup_projeto` (pergunta aprovação → gera SDD + docs/Estrutura/ + projetos.yaml)
93
+ 1. `/sf-design setup_projeto` (pergunta aprovação → gera SDD + docs/ + projetos.yaml)
94
94
  2. `/sf-plan setup_projeto` (gera tasks com campo Repo por task)
95
95
  3. `/sf-dev setup_projeto` (INFRA-001 cria/clona repos em projetos/, executa tasks nos repos corretos)
96
96
 
97
97
  ## Saídas diretas desta skill
98
- - `docs/Desenvolvimento/setup_projeto/.context.md`
99
- - `docs/Desenvolvimento/setup_projeto/TRD.md` (via /extract)
100
- - `docs/Desenvolvimento/setup_projeto/.extract-log.md` (via /extract)
98
+ - `workspace/Output/setup_projeto/.context.md`
99
+ - `workspace/Output/setup_projeto/TRD.md` (via /extract)
100
+ - `workspace/Output/setup_projeto/.extract-log.md` (via /extract)
101
101
 
102
102
  ## Saídas indiretas (skills subsequentes)
103
103
  - `sdd.md` (via /design)
104
104
  - `projetos.yaml` (via /sf-design — manifesto de repos)
105
- - `docs/Estrutura/` populado (via /design)
105
+ - `docs/` populado (via /design)
106
106
  - `*_tasks.md` + `Progresso.md` (via /plan)
107
107
  - `projetos/` com repos criados/clonados (via /sf-dev INFRA-001)
108
108
 
@@ -110,14 +110,14 @@ e execute:
110
110
 
111
111
  | Erro | Ação |
112
112
  |------|------|
113
- | PM/setup_projeto/ não existe | Parar, instruir criação |
114
- | PM/setup_projeto/ vazio | Parar, listar formatos aceitos |
115
- | Estrutura/ já populado | Parar, sugerir /sf-feature |
113
+ | workspace/Input/setup_projeto/ não existe | Parar, instruir criação |
114
+ | workspace/Input/setup_projeto/ vazio | Parar, listar formatos aceitos |
115
+ | docs/ já populado | Parar, sugerir /sf-feature |
116
116
  | Pipeline já iniciado | Parar, mostrar status atual do .context.md |
117
117
 
118
118
  ## Notas
119
119
  - Esta skill roda **uma única vez** por projeto
120
- - docs/Estrutura/ é gerado pelo /sf-design (passo 3), não por tasks DOC
120
+ - docs/ é gerado pelo /sf-design (passo 3), não por tasks DOC
121
121
  - `projetos.yaml` é gerado pelo /sf-design (passo 3b) — mapeia serviços para repos
122
122
  - Repos são criados/clonados pelo /sf-dev (INFRA-001) dentro de `projetos/`
123
123
  - O `/merge-delta` NÃO se aplica ao setup (é criação, não atualização)
@@ -1,6 +1,8 @@
1
- # Convenções de API
1
+ # Contratos de API
2
2
 
3
- > Padrões globais para todas as APIs do sistema: versionamento, autenticação, paginação, erros.
3
+ > Padrões de endpoint, convenções de rotas, paginação, filtros, respostas de erro
4
+ > e catálogo global. Contratos HTTP do sistema.
5
+ > Autenticação detalhada e códigos de erro do domínio vivem em conventions.md.
4
6
 
5
7
  ---
6
8
 
@@ -9,20 +11,27 @@
9
11
  INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
10
12
  =============================================================================
11
13
 
12
- ORIGEM: Gerado pelo /setup-projeto a partir do TRD §5.
13
- ATUALIZAÇÃO: /merge-delta quando features adicionam endpoints (Delta Specs do SDD §5 e §11).
14
+ ORIGEM: Gerado pelo /setup-projeto a partir do TRD §5 (API).
15
+ ATUALIZAÇÃO: /merge-delta quando features adicionam endpoints
16
+ (Delta Specs do SDD §5 e §11).
14
17
 
15
18
  COMO GERAR:
16
- 1. Ler TRD §5 (Convenções de API) — padrão geral, versionamento, autenticação
19
+ 1. Ler TRD §5 (Convenções de API) — padrão geral, versionamento
17
20
  2. Padrão geral e convenções são FIXOS após setup — definidos uma vez
18
- 3. Catálogo de endpoints é DINÂMICO — cresce a cada feature
19
- 4. Formatos de paginação, filtro e erro são FIXOS — toda API segue
21
+ 3. Catálogo de endpoints é DINÂMICO — cresce a cada feature via merge-delta
22
+ 4. Formatos de paginação, filtro e resposta de erro são FIXOS
23
+
24
+ O QUE NÃO VAI AQUI:
25
+ - Autenticação detalhada (hash, refresh, fluxo) → conventions.md
26
+ - Autorização, roles, matriz de permissões → conventions.md
27
+ - Códigos de erro do domínio → conventions.md
28
+ - Rate limiting → conventions.md
29
+ - CORS → conventions.md
20
30
 
21
31
  REGRAS:
22
- - Convenções são LEI — todo SDD §5 (endpoints) deve seguir estes padrões
23
- - Catálogo de endpoints atualizado a cada merge-delta
24
- - Mudanças em convenções (raro) devem gerar ADR
25
- - Rate limiting definido por categoria de endpoint, não individual
32
+ - Convenções são LEI — todo SDD §5 (endpoints) deve seguir
33
+ - Catálogo atualizado a cada merge-delta
34
+ - Mudanças em convenções (raro) devem gerar registro em decisions.md
26
35
 
27
36
  =============================================================================
28
37
  -->
@@ -34,10 +43,11 @@ REGRAS:
34
43
  | Estilo | <!-- REST / GraphQL / gRPC --> |
35
44
  | Formato | <!-- JSON / Protobuf --> |
36
45
  | Versionamento | <!-- /api/v1/ no path? Header? --> |
37
- | Autenticação | <!-- Bearer JWT? API Key? --> |
38
46
  | Content-Type | <!-- application/json --> |
39
47
  | Encoding | <!-- UTF-8 --> |
40
48
 
49
+ > **Autenticação**: definida em [conventions.md → Autenticação](./conventions.md#autenticação).
50
+
41
51
  ## Convenções de Rotas
42
52
 
43
53
  | Operação | Método | Rota | Exemplo |
@@ -50,6 +60,7 @@ REGRAS:
50
60
  | Remover/Inativar | DELETE | `/api/v1/{recurso}/:id` | |
51
61
 
52
62
  ### Convenções de nomenclatura
63
+
53
64
  | Regra | Exemplo |
54
65
  |-------|---------|
55
66
  | Recursos no plural, kebab-case | `/api/v1/order-items` |
@@ -121,11 +132,7 @@ Query params: `?busca=termo&campo=valor`
121
132
  | 429 | Rate limit excedido | Muitas requisições |
122
133
  | 500 | Erro interno | Bug não tratado |
123
134
 
124
- ### Códigos de erro do domínio
125
-
126
- | Código | Descrição | HTTP |
127
- |--------|-----------|------|
128
- | <!-- Ex: DUPLICATE_EMAIL --> | <!-- Email já cadastrado --> | <!-- 409 --> |
135
+ > **Códigos de erro do domínio**: definidos em [conventions.md → Códigos de Erro do Domínio](./conventions.md#códigos-de-erro-do-domínio).
129
136
 
130
137
  ## Catálogo de Endpoints
131
138