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,145 +1,147 @@
1
- # Instruções — Documentação e Specs
2
-
3
- > Regras para o agente ao trabalhar com a camada de documentação.
4
- > Complementa `copilot-instructions.md` com detalhes operacionais.
5
-
6
- ## Skills e fluxo
7
-
8
- O pipeline é executado por skills atômicas, cada uma com seu arquivo em `.github/skills/`:
9
-
10
- ```
11
- /sf-start → /sf-extract → /sf-design → /sf-plan → /sf-dev → /sf-merge-docs
12
- ```
13
-
14
- Cada skill tem pré-condições, passos e saídas documentados. **Sempre ler a skill antes de executar.**
15
-
16
- ## Estado da pipeline (`.context.md`)
17
-
18
- Cada scope tem um `.context.md` (YAML frontmatter) que controla o fluxo:
19
-
20
- ```
21
- not_started → extract_done → approved → design_done → plan_done → dev_in_progress → dev_done → done
22
- ```
23
-
24
- - **Apenas skills atualizam** `.context.md` — o usuário nunca edita manualmente
25
- - **first_run é imutável** após criação (derivado da ausência de `docs/` no momento do `/sf-start`)
26
- - **Aprovação** acontece no início do `/sf-design` (skill pergunta ao usuário)
27
- - Antes de executar qualquer skill, verificar status no `.context.md`
28
-
29
- ## Extração (/sf-extract)
30
-
31
- Gera PRD único com bypass automático pra scopes puro-técnicos:
32
-
33
- | Flag no PRD | Significado | Fluxo |
34
- |-------------|-------------|-------|
35
- | `empty: false` | Insumos têm conteúdo de produto (≥1 RN OU jornada OU tela OU ator) | PRD preenchido normalmente (15 seções) |
36
- | `empty: true` | Insumos 100% técnicos (stack, schema, infra) | PRD com Meta + rodapé. SDD consome chunks tech do extract-log direto |
37
-
38
- Template: `.github/templates/feature/PRD.template.md`.
39
-
40
- ### Multi-agent no /sf-extract
41
-
42
- | Agente | Modelo | Papel |
43
- |--------|--------|-------|
44
- | Reader (1 por arquivo) | Sonnet | Lê e cataloga 1 arquivo por vez, em paralelo |
45
- | Analyzer | Opus | Categoriza chunks (produto/tech/both), consulta `docs/`, cruza fontes, gera PRD |
46
-
47
- ### Regras da extração
48
-
49
- - Ler TODOS os arquivos em `workspace/Input/{nome}/` (qualquer formato)
50
- - Chunks categorizados como `produto`, `tech` ou `both` no extract-log
51
- - Categorias FIXAS do template não inventar seções novas
52
- - Regras de negócio com IDs únicos e estáveis (RN-001, RN-002 — nunca renumerar)
53
- - **Analyzer consulta `docs/` ANTES de marcar ambiguidade** se resposta existe em `docs/conventions.md` etc, marca "resolvido em docs/X §Y" e não pergunta
54
- - Ambiguidades REAIS (não cobertas por docs/) = BLOQUEANTES
55
- - Nunca INFERIR regra de negócio — se não está explícito, é ambiguidade
56
- - Contradições entre arquivos ambiguidade citando ambos
57
- - Rastreabilidade obrigatória: cada informação aponta pro arquivo fonte
58
- - Arquivo não identificávelregistrar como NÃO IDENTIFICADO no extract-log, gerar ambiguidade
59
- - Gerar `.extract-log.md` com hash SHA-256 (8 chars) + categorização tech chunks
60
-
61
- ### Checklist de temas críticos FIXO
62
-
63
- 8 temas verificados sempre (post-consulta docs/): Autenticação, Autorização/Roles,
64
- Separação de serviços, Ambientes & deploy, Dados sensíveis/LGPD, Validações de entrada,
65
- Tratamento de erros, Impacto em dados existentes. Temas não cobertos por insumos nem
66
- docs/ viram ambiguidades bloqueantes.
67
-
68
- ### Re-extração
69
-
70
- - Compara hashes com `.extract-log.md` existente → NOVO / MODIFICADO / INALTERADO
71
- - Merge ADITIVO (nunca remove info de arquivos inalterados)
72
- - Novas regras continuam sequência de IDs (se último era RN-005, próximo é RN-006)
73
- - Se PRD era `empty: true` e re-extração encontra produto flip pra `empty: false`
74
-
75
- ## Design (/sf-design)
76
-
77
- 1. Verificar aprovação do PRD (perguntar ao usuário)
78
- 2. Verificar ambiguidades — todas com resposta OU marcadas "resolvido em docs/..."
79
- 3. Ler PRD + extract-log (tech chunks) + `docs/` (se existir) + `.github/rules.md`
80
- 4. Detectar `first_run` do `.context.md`
81
- 5. Gerar SDD usando `.github/templates/feature/sdd.template.md`:
82
- - **first_run=true**: §Sistema completo + todas as §Área-X aplicáveis + §11 tudo em ADDED
83
- - **first_run=false**: §Sistema onde muda + §Área-X tocadas com GATE=SIM + §11 refletindo impacto
84
- 6. SDD é auto-contido — coder lê APENAS `specs/{nome}/` + task, nada mais
85
- 7. Toda regra referencia seção do PRD (rastreabilidade)
86
- 8. §9 Estratégia de Testes: framework, estrutura, CAs mapeados a testes
87
- 9. §11 Delta Specs obrigatório (mesmo vazio)
88
- 10. Em first_run: `/sf-design` também gera `docs/` (5 arquivos) + `projetos.yaml` a partir do SDD §Sistema
89
- 11. Sempre: gera projeções em `specs/{nome}/` (brief/contracts/scenarios)
90
-
91
- ## Planejamento (/sf-plan)
92
-
93
- 1. Ler SDD completo + `docs/` + `.github/rules.md`
94
- 2. Áreas são DINÂMICAS derivadas dos GATEs do SDD (`areas_tocadas` no `.context.md`)
95
- 3. Gerar `specs/{nome}/tasks.md` usando template de tasks
96
- 4. Tasks em fases sequenciais com prioridade P1/P2/P3 (do PRD §11 Fases de Entrega)
97
- 5. Cada task: ID (AREA-NNN), título, tamanho (S/M/L), arquivos, ref SDD §N, depende, testes
98
- 6. Gerar `Progresso.md` com ordem de execução e paralelismos
99
-
100
- ## Desenvolvimento (/sf-dev)
101
-
102
- ### Agents por área (perfis em `.github/agents/`)
103
-
104
- | Área | Agente | Stack padrão |
105
- |------|--------|-------------|
106
- | DB | DB Coder | PostgreSQL 16 |
107
- | BACK | Backend Coder | .NET 8 / C# |
108
- | FRONT | Frontend Coder | React + Fusion |
109
- | INFRA | Infra Coder | Docker |
110
- | DOC | Doc Writer | — |
111
- | Todas | Reviewer | — |
112
- | Todas | Security Reviewer | — (gate pós-dev) |
113
-
114
- ### Loop de desenvolvimento
115
-
116
- ```
117
- Por task: implement test unit → fix → lint → commit → review → fix → review (max 3)
118
- Por fase: integration tests → fix
119
- Por scope: E2E tests (CAs) → fix → Security Review → /sf-merge-docs automático → dev_done
120
- ```
121
-
122
- ### Regras
123
-
124
- - Implement + testes na mesma task (não separar)
125
- - Agente selecionado pelo prefixo: BACK-*Backend Coder
126
- - Modelo por tamanho: S/M → Sonnet, L → Opus
127
- - 1 commit por task: `tipo(TASK-ID): descrição`
128
- - Quality gate validado pelo Reviewer após cada task
129
- - Limite de retry: 3 reprovações escalar pro usuário
130
- - `/sf-merge-docs` automático no final (aplica SDD §11 em `docs/`)
131
-
132
- ## /sf-start é único
133
-
134
- | Aspecto | v3 (atual) |
135
- |---------|-----------|
136
- | Comando de entrada | `/sf-start <nome>` (único pra bootstrap E features) |
137
- | Input | `workspace/Input/<nome>/` (nome livre) |
138
- | Extração | `PRD.md` (pode ser empty em scopes puro-técnicos) |
139
- | SDD | Sempre gerado; seções populadas conforme first_run + áreas tocadas |
140
- | Gera `docs/` | em first_run (detectado via ausência de docs/) |
141
- | `/sf-merge-docs` | Obrigatório após `/sf-dev` (chamado automaticamente) |
142
- | Pré-requisito | Insumos em `workspace/Input/<nome>/` |
143
-
144
- > No v2 existiam `/sf-new-project` (TRD/setup) e `/sf-feature` (PRD/feature) separados.
145
- > No v3, `/sf-start` detecta automaticamente via presença de `docs/` mesma entrada, comportamento adaptativo.
1
+ # Instruções — Documentação e Specs
2
+
3
+ > Regras para o agente ao trabalhar com a camada de documentação.
4
+ > Complementa `copilot-instructions.md` com detalhes operacionais.
5
+
6
+ ## Skills e fluxo
7
+
8
+ O pipeline é executado por skills atômicas, cada uma com seu arquivo em `.github/skills/`:
9
+
10
+ ```
11
+ /sf-start → /sf-load → /sf-discovery → /sf-extract → /sf-design → /sf-plan → /sf-dev → /sf-merge-docs
12
+ ```
13
+
14
+ Cada skill tem pré-condições, passos e saídas documentados. **Sempre ler a skill antes de executar.**
15
+
16
+ ## Estado da pipeline (`.context.md`)
17
+
18
+ Cada scope tem um `.context.md` (YAML frontmatter) que controla o fluxo:
19
+
20
+ ```
21
+ not_started → discovery_done → extract_done → prd_approvedtrd_approved → design_done → plan_done → dev_in_progress → dev_done → done
22
+ ```
23
+
24
+ - **Apenas skills atualizam** `.context.md` — o usuário nunca edita manualmente
25
+ - **first_run é imutável** após criação (derivado da ausência de `docs/` no momento do `/sf-start`)
26
+ - **Aprovação DUPLA**: PM marca `prd_aprovado=true`, dev marca `trd_aprovado=true` (ambas = pode chamar `/sf-design`)
27
+ - Antes de executar qualquer skill, verificar status no `.context.md`
28
+
29
+ ## Extração (/sf-extract)
30
+
31
+ Gera **PRD e/ou TRD** conforme o conteúdo dos insumos:
32
+
33
+ | Cenário | PRD | TRD |
34
+ |---------|-----|-----|
35
+ | first-run de projeto novo (produto + tech) | gerado | gerado |
36
+ | bootstrap de infra ( técnico) | não gerado (`prd_existe=false`) | gerado |
37
+ | feature de UX pura (só produto) | gerado | não gerado (`trd_existe=false`) |
38
+
39
+ Templates: `.github/templates/feature/PRD.template.md` e `.github/templates/feature/TRD.template.md`.
40
+
41
+ ### Multi-agent no /sf-extract
42
+
43
+ | Agente | Modelo | Papel |
44
+ |--------|--------|-------|
45
+ | Reader (1 por arquivo) | Sonnet | e cataloga 1 arquivo por vez, em paralelo |
46
+ | Produto-Analyzer | Opus | Consolida conteúdo de produto → gera PRD |
47
+ | Tech-Analyzer | Opus | Consolida conteúdo técnico → gera TRD |
48
+
49
+ ### Regras da extração
50
+
51
+ - Ler TODOS os arquivos em `workspace/Input/{nome}/` (qualquer formato)
52
+ - Cada Analyzer decide se conteúdo suficiente pra gerar seu doc
53
+ - Categorias FIXAS dos templatesnão inventar seções novas
54
+ - IDs estáveis: RN-NNN (PRD), ADR-NNN (TRD). Nunca renumerar.
55
+ - **Analyzer consulta `docs/` ANTES de marcar ambiguidade** — se resposta existe em `docs/conventions.md` etc, marca "resolvido em docs/X §Y" e não pergunta
56
+ - Ambiguidades REAIS (não cobertas por docs/) = BLOQUEANTES (§12 no PRD, §10 no TRD)
57
+ - Nunca INFERIR regra de negócio ou decisão técnica — se não está explícito, é ambiguidade
58
+ - Contradições entre arquivosambiguidade citando ambos
59
+ - Rastreabilidade obrigatória: cada informação aponta pro arquivo fonte
60
+ - Arquivo não identificável → registrar como NÃO IDENTIFICADO no extract-log, gerar ambiguidade
61
+ - Gerar `.extract-log.md` com hash SHA-256 (8 chars) + destino (qual doc/seção recebeu)
62
+
63
+ ### Checklist de temas críticos FIXO
64
+
65
+ 9 temas verificados sempre (após consulta a docs/): Autenticação, Autorização/Roles,
66
+ Separação de serviços, Ambientes & deploy, Dados sensíveis/LGPD, Validações de entrada,
67
+ Cenários de erro de produto, Impacto em dados existentes, Métricas de sucesso. Temas
68
+ não cobertos por insumos nem docs/ viram ambiguidades bloqueantes — em PRD se é de
69
+ produto, em TRD se é técnico.
70
+
71
+ ### Re-extração
72
+
73
+ - Compara hashes com `.extract-log.md` existente NOVO / MODIFICADO / INALTERADO
74
+ - Merge ADITIVO (nunca remove info de arquivos inalterados)
75
+ - Novas regras continuam sequência de IDs (se último era RN-005, próximo é RN-006)
76
+ - Se PRD era inexistente e re-extração encontra produto → cria PRD agora (`prd_existe=true`, `prd_aprovado=false`)
77
+ - Idem para TRD
78
+
79
+ ## Design (/sf-design)
80
+
81
+ 1. Verificar aprovações duplas: `prd_aprovado` (se `prd_existe`) E `trd_aprovado` (se `trd_existe`)
82
+ 2. Verificar ambiguidades todas com resposta OU marcadas "resolvido em docs/..."
83
+ 3. Ler PRD + TRD aprovados + `docs/` (se existir) + `.github/rules.md`
84
+ 4. Detectar `first_run` do `.context.md`
85
+ 5. **first_run=true**: gerar `docs/` (5 arquivos) + `projetos.yaml` a partir do TRD §Sistema
86
+ 6. **Sempre**: gerar projeções em `specs/{nome}/` (brief/contracts/scenarios) lendo PRD+TRD
87
+ 7. Coder APENAS `specs/{nome}/` + task — nunca PRD/TRD direto
88
+ 8. `areas_tocadas` preenchido no `.context.md` (dos GATEs do TRD §Área-X)
89
+
90
+ ## Planejamento (/sf-plan)
91
+
92
+ 1. Ler PRD + TRD + `specs/{nome}/` + `docs/` + `.github/rules.md`
93
+ 2. Áreas são DINÂMICAS derivadas dos GATEs do TRD (`areas_tocadas` no `.context.md`)
94
+ 3. Gerar `specs/{nome}/tasks.md` usando template de tasks
95
+ 4. Tasks em fases sequenciais com prioridade P1/P2/P3 (do PRD §11 Fases de Entrega)
96
+ 5. Cada task: ID (AREA-NNN), título, tamanho (S/M/L), arquivos, ref TRD §N, depende, testes
97
+ 6. Gerar `Progresso.md` com ordem de execução e paralelismos
98
+
99
+ ## Desenvolvimento (/sf-dev)
100
+
101
+ ### Agents por área (perfis em `.github/agents/`)
102
+
103
+ | Área | Agente | Stack padrão |
104
+ |------|--------|-------------|
105
+ | DB | DB Coder | PostgreSQL 16 |
106
+ | BACK | Backend Coder | .NET 8 / C# |
107
+ | FRONT | Frontend Coder | React + Fusion |
108
+ | INFRA | Infra Coder | Docker |
109
+ | DOC | Doc Writer | |
110
+ | Todas | Reviewer | — |
111
+ | Todas | Security Reviewer | — (gate pós-dev) |
112
+
113
+ ### Loop de desenvolvimento
114
+
115
+ ```
116
+ Por task: implement → test unit → fix → lint → commit → review → fix → review (max 3)
117
+ Por fase: integration tests → fix
118
+ Por scope: E2E tests (CAs) → fix → Security Review → /sf-merge-docs automático → dev_done
119
+ ```
120
+
121
+ ### Regras
122
+
123
+ - Implement + testes na mesma task (não separar)
124
+ - Agente selecionado pelo prefixo: BACK-* Backend Coder
125
+ - Modelo por tamanho: S/MSonnet, L → Opus
126
+ - 1 commit por task: `tipo(TASK-ID): descrição`
127
+ - Quality gate validado pelo Reviewer após cada task
128
+ - Limite de retry: 3 reprovações escalar pro usuário
129
+ - `/sf-merge-docs` automático no final (diff semântico PRD+TRD docs/)
130
+
131
+ ## /sf-start é único
132
+
133
+ | Aspecto | v4 (atual) |
134
+ |---------|-----------|
135
+ | Comando de entrada | `/sf-start <nome>` (único pra bootstrap E features) |
136
+ | Input | `workspace/Input/<nome>/` (nome livre) |
137
+ | Discovery | OBRIGATÓRIO — passo do `/sf-start` antes do `/sf-extract` |
138
+ | Extração | `PRD.md` e/ou `TRD.md` (condicional ao conteúdo) |
139
+ | Aprovações | DUPLAS: PM aprova PRD, dev aprova TRD |
140
+ | Design | Gera `specs/{nome}/` sempre; `docs/` + `projetos.yaml` em first-run |
141
+ | Gera `docs/` | em first_run (detectado via ausência de docs/) |
142
+ | `/sf-merge-docs` | Obrigatório após `/sf-dev` (chamado automaticamente) |
143
+ | Pré-requisito | Insumos em `workspace/Input/<nome>/` |
144
+
145
+ > No v3 existia SDD como doc intermediário entre PRD e specs/. No v4, SDD foi
146
+ > eliminado — `specs/` deriva direto de PRD+TRD aprovados. TRD foi ressuscitado
147
+ > como peer do PRD, aprovado pelo dev.
@@ -1,32 +1,32 @@
1
- # Instruções para Arquivos Sensíveis
2
-
3
- > Regras especiais para arquivos que requerem cuidado extra.
4
-
5
- ## Arquivos que NUNCA devem ser modificados pelo agente
6
-
7
- - `workspace/Input/**/*` — Insumos brutos do usuário. Somente leitura.
8
- - `.env`, `.env.*` — Variáveis de ambiente com secrets.
9
- - `docs/decisions.md` — decisões aceitas são imutáveis (apenas adicionar novas, com status "substituída por ADR-XXX" na original).
10
-
11
- ## Arquivos que requerem aprovação antes de modificar
12
-
13
- - `docs/*` — Documentação global. Só alterar via /merge-docs após /dev.
14
- - `.github/rules.md` — Regras de desenvolvimento. Alteração deve ser explícita.
15
- - `.github/copilot-instructions.md` — Meta-regras. Alteração requer aprovação.
16
- - `.github/skills/*` — Skills do workflow. Alteração requer aprovação.
17
- - `.github/agents/*` — Perfis de agentes. Alteração requer aprovação.
18
-
19
- ## Arquivos com formato rígido (gerados por skills)
20
-
21
- - `workspace/Output/*/.context.md` — YAML frontmatter, apenas skills atualizam.
22
- - `workspace/Output/*/.extract-log.md` — Append-only, hashes obrigatórios.
23
- - `workspace/Output/*/PRD.md` — Seguir template exato (pode ter empty: true em scopes puro-técnicos).
24
- - `workspace/Output/*/sdd.md` — Seguir template v3, §Sistema + §Área-X gateáveis + §11 Delta Specs obrigatório.
25
- - `specs/{nome}/tasks.md` — IDs sequenciais, campos obrigatórios (gerado pelo /sf-plan).
26
- - `workspace/Output/*/Progresso.md` — Tabelas com formato fixo.
27
-
28
- ## Arquivos que nunca devem conter secrets
29
-
30
- - Qualquer arquivo `.md` em docs/
31
- - `docker-compose.yml` — usar variáveis de ambiente, não valores diretos
32
- - Código fonte — usar `appsettings.json` + environment variables, não hardcoded
1
+ # Instruções para Arquivos Sensíveis
2
+
3
+ > Regras especiais para arquivos que requerem cuidado extra.
4
+
5
+ ## Arquivos que NUNCA devem ser modificados pelo agente
6
+
7
+ - `workspace/Input/**/*` — Insumos brutos do usuário. Somente leitura.
8
+ - `.env`, `.env.*` — Variáveis de ambiente com secrets.
9
+ - `docs/decisions.md` — decisões aceitas são imutáveis (apenas adicionar novas, com status "substituída por ADR-XXX" na original).
10
+
11
+ ## Arquivos que requerem aprovação antes de modificar
12
+
13
+ - `docs/*` — Documentação global. Só alterar via /merge-docs após /dev.
14
+ - `.github/rules.md` — Regras de desenvolvimento. Alteração deve ser explícita.
15
+ - `.github/copilot-instructions.md` — Meta-regras. Alteração requer aprovação.
16
+ - `.github/skills/*` — Skills do workflow. Alteração requer aprovação.
17
+ - `.github/agents/*` — Perfis de agentes. Alteração requer aprovação.
18
+
19
+ ## Arquivos com formato rígido (gerados por skills)
20
+
21
+ - `workspace/Output/*/.context.md` — YAML frontmatter, apenas skills atualizam.
22
+ - `workspace/Output/*/.extract-log.md` — Append-only, hashes obrigatórios.
23
+ - `workspace/Output/*/PRD.md` — Seguir template exato (condicional se insumos têm produto).
24
+ - `workspace/Output/*/TRD.md` — Seguir template exato, §Sistema + §Área-X gateáveis por área.
25
+ - `specs/{nome}/tasks.md` — IDs sequenciais, campos obrigatórios (gerado pelo /sf-plan).
26
+ - `workspace/Output/*/Progresso.md` — Tabelas com formato fixo.
27
+
28
+ ## Arquivos que nunca devem conter secrets
29
+
30
+ - Qualquer arquivo `.md` em docs/
31
+ - `docker-compose.yml` — usar variáveis de ambiente, não valores diretos
32
+ - Código fonte — usar `appsettings.json` + environment variables, não hardcoded