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,89 +1,89 @@
1
- ---
2
- nome: "{{NOME}}"
3
- first_run: {{true|false}}
4
- prd_existe: {{true|false}}
5
- trd_existe: {{true|false}}
6
- prd_aprovado: {{true|false}}
7
- trd_aprovado: {{true|false}}
8
- areas_tocadas: []
9
- input_path: "workspace/Input/{{NOME}}/"
10
- status: "not_started"
11
- ultima_skill: ""
12
- atualizado_em: ""
13
- ---
14
-
15
- <!--
16
- =============================================================================
17
- INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
18
- =============================================================================
19
-
20
- SCHEMA v4 (mudou de v3):
21
- - prd_empty REMOVIDO (conceito obsoleto)
22
- - prd_existe/trd_existe: bool reais (SEM aspas) indicando se /sf-extract gerou cada doc
23
- - prd_aprovado/trd_aprovado: bool reais (SEM aspas) controlando gate do /sf-design
24
-
25
- CAMPOS:
26
- - nome: identificador livre do scope (ex: app_barbearia, feat_login, infra_k8s)
27
- - first_run: bool — true se docs/ não existia quando /sf-start foi chamado.
28
- IMUTÁVEL após criação.
29
- - prd_existe: bool — true se /sf-extract gerou PRD.md (insumos tinham produto).
30
- false em scopes puro-técnicos.
31
- - trd_existe: bool — true se /sf-extract gerou TRD.md (insumos tinham técnica).
32
- false em scopes puro-produto (raro).
33
- - prd_aprovado: bool — true após PM aprovar o PRD. Se prd_existe=false, este
34
- campo também fica false (não há nada a aprovar).
35
- - trd_aprovado: bool — true após dev aprovar o TRD. Se trd_existe=false, fica false.
36
- - areas_tocadas: lista de áreas do TRD que têm GATE=SIM. Preenchido pelo /sf-design.
37
- Possíveis: BACK, FRONT, DB, INFRA. Derivado dos GATEs do TRD §2-§5.
38
- - input_path: caminho relativo da pasta de insumos
39
- - status: estado atual da pipeline (ver fluxo abaixo)
40
- - ultima_skill: qual skill alterou este arquivo por último
41
- - atualizado_em: data/hora ISO da última atualização
42
-
43
- FLUXO DE STATUS (v4):
44
- not_started
45
- ↓ /sf-start cria .context.md
46
- discovery_done
47
- ↓ /sf-discovery roda (obrigatório no sfw-start)
48
- extract_done
49
- ↓ /sf-extract gera PRD e/ou TRD
50
- prd_approved ← apenas se prd_existe=true
51
- ↓ PM revisa e aprova PRD (skill atualiza prd_aprovado=true)
52
- trd_approved ← apenas se trd_existe=true
53
- ↓ dev revisa e aprova TRD (skill atualiza trd_aprovado=true)
54
- design_done
55
- ↓ /sf-design gera docs/ (first_run) + specs/ (sempre)
56
- plan_done
57
- ↓ /sf-plan gera tasks
58
- dev_in_progress
59
- ↓ /sf-dev executa tasks
60
- dev_done
61
- ↓ /sf-dev finaliza (chama /sf-merge-docs automaticamente)
62
- done
63
-
64
- Se prd_existe=false: status pula direto de extract_done → trd_approved (sem passar
65
- por prd_approved). Mesmo vice-versa. Ordem das aprovações dentro do par é irrelevante.
66
-
67
- QUEM ATUALIZA:
68
- - /sf-start: cria arquivo com status=not_started, first_run derivado de docs/
69
- - /sf-discovery: not_started → discovery_done
70
- - /sf-extract: discovery_done → extract_done, preenche prd_existe + trd_existe
71
- - PM aprova: extract_done → prd_approved (atualiza prd_aprovado=true)
72
- - dev aprova: extract_done|prd_approved → trd_approved (atualiza trd_aprovado=true)
73
- (skill futura /approve <doc> ou edição direta do campo + re-rodar /sf-design)
74
- - /sf-design: (prd_approved + trd_approved) → design_done, preenche areas_tocadas
75
- Nota: se só um dos docs existe, o outro aprovado não é exigido.
76
- - /sf-plan: design_done → plan_done
77
- - /sf-dev: plan_done → dev_in_progress → dev_done
78
- - /sf-merge-docs: dev_done → done (aplica PRD+TRD em docs/)
79
-
80
- REGRAS:
81
- - Nunca pular etapas no fluxo de status
82
- - Nunca editar manualmente — apenas skills atualizam este arquivo
83
- - Se status não corresponde ao esperado, a skill deve parar e avisar
84
- - first_run é IMUTÁVEL após criação (representa o estado no bootstrap do scope)
85
- - prd_existe/trd_existe são IMUTÁVEIS após o /sf-extract (só mudam via re-extração
86
- que detecta NOVO conteúdo na outra categoria)
87
-
88
- =============================================================================
89
- -->
1
+ ---
2
+ nome: "{{NOME}}"
3
+ first_run: {{true|false}}
4
+ prd_existe: {{true|false}}
5
+ trd_existe: {{true|false}}
6
+ prd_aprovado: {{true|false}}
7
+ trd_aprovado: {{true|false}}
8
+ areas_tocadas: []
9
+ input_path: "workspace/Input/{{NOME}}/"
10
+ status: "not_started"
11
+ ultima_skill: ""
12
+ atualizado_em: ""
13
+ ---
14
+
15
+ <!--
16
+ =============================================================================
17
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
18
+ =============================================================================
19
+
20
+ SCHEMA v4 (mudou de v3):
21
+ - prd_empty REMOVIDO (conceito obsoleto)
22
+ - prd_existe/trd_existe: bool reais (SEM aspas) indicando se /sf-extract gerou cada doc
23
+ - prd_aprovado/trd_aprovado: bool reais (SEM aspas) controlando gate do /sf-design
24
+
25
+ CAMPOS:
26
+ - nome: identificador livre do scope (ex: app_barbearia, feat_login, infra_k8s)
27
+ - first_run: bool — true se docs/ não existia quando /sf-start foi chamado.
28
+ IMUTÁVEL após criação.
29
+ - prd_existe: bool — true se /sf-extract gerou PRD.md (insumos tinham produto).
30
+ false em scopes puro-técnicos.
31
+ - trd_existe: bool — true se /sf-extract gerou TRD.md (insumos tinham técnica).
32
+ false em scopes puro-produto (raro).
33
+ - prd_aprovado: bool — true após PM aprovar o PRD. Se prd_existe=false, este
34
+ campo também fica false (não há nada a aprovar).
35
+ - trd_aprovado: bool — true após dev aprovar o TRD. Se trd_existe=false, fica false.
36
+ - areas_tocadas: lista de áreas do TRD que têm GATE=SIM. Preenchido pelo /sf-design.
37
+ Possíveis: BACK, FRONT, DB, INFRA. Derivado dos GATEs do TRD §2-§5.
38
+ - input_path: caminho relativo da pasta de insumos
39
+ - status: estado atual da pipeline (ver fluxo abaixo)
40
+ - ultima_skill: qual skill alterou este arquivo por último
41
+ - atualizado_em: data/hora ISO da última atualização
42
+
43
+ FLUXO DE STATUS (v4):
44
+ not_started
45
+ ↓ /sf-start cria .context.md
46
+ discovery_done
47
+ ↓ /sf-discovery roda (obrigatório no sfw-start)
48
+ extract_done
49
+ ↓ /sf-extract gera PRD e/ou TRD
50
+ prd_approved ← apenas se prd_existe=true
51
+ ↓ PM revisa e aprova PRD (skill atualiza prd_aprovado=true)
52
+ trd_approved ← apenas se trd_existe=true
53
+ ↓ dev revisa e aprova TRD (skill atualiza trd_aprovado=true)
54
+ design_done
55
+ ↓ /sf-design gera docs/ (first_run) + specs/ (sempre)
56
+ plan_done
57
+ ↓ /sf-plan gera tasks
58
+ dev_in_progress
59
+ ↓ /sf-dev executa tasks
60
+ dev_done
61
+ ↓ /sf-dev finaliza (chama /sf-merge-docs automaticamente)
62
+ done
63
+
64
+ Se prd_existe=false: status pula direto de extract_done → trd_approved (sem passar
65
+ por prd_approved). Mesmo vice-versa. Ordem das aprovações dentro do par é irrelevante.
66
+
67
+ QUEM ATUALIZA:
68
+ - /sf-start: cria arquivo com status=not_started, first_run derivado de docs/
69
+ - /sf-discovery: not_started → discovery_done
70
+ - /sf-extract: discovery_done → extract_done, preenche prd_existe + trd_existe
71
+ - PM aprova: extract_done → prd_approved (atualiza prd_aprovado=true)
72
+ - dev aprova: extract_done|prd_approved → trd_approved (atualiza trd_aprovado=true)
73
+ (skill futura /approve <doc> ou edição direta do campo + re-rodar /sf-design)
74
+ - /sf-design: (prd_approved + trd_approved) → design_done, preenche areas_tocadas
75
+ Nota: se só um dos docs existe, o outro aprovado não é exigido.
76
+ - /sf-plan: design_done → plan_done
77
+ - /sf-dev: plan_done → dev_in_progress → dev_done
78
+ - /sf-merge-docs: dev_done → done (aplica PRD+TRD em docs/)
79
+
80
+ REGRAS:
81
+ - Nunca pular etapas no fluxo de status
82
+ - Nunca editar manualmente — apenas skills atualizam este arquivo
83
+ - Se status não corresponde ao esperado, a skill deve parar e avisar
84
+ - first_run é IMUTÁVEL após criação (representa o estado no bootstrap do scope)
85
+ - prd_existe/trd_existe são IMUTÁVEIS após o /sf-extract (só mudam via re-extração
86
+ que detecta NOVO conteúdo na outra categoria)
87
+
88
+ =============================================================================
89
+ -->
@@ -1,49 +1,49 @@
1
- # Extract Log — {{NOME}}
2
-
3
- <!--
4
- =============================================================================
5
- INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
6
- =============================================================================
7
-
8
- QUANDO USAR: Criado pelo /sf-extract na primeira extração. Atualizado em re-extrações.
9
- QUEM GERA: Tech-Analyzer + Produto-Analyzer (Opus) ao final da extração.
10
-
11
- COMO GERAR:
12
- 1. Cada extração gera uma nova seção com timestamp
13
- 2. Para cada arquivo processado registrar: nome, hash SHA-256 (8 chars),
14
- classificação, status, destino (PRD e/ou TRD + seções específicas)
15
- 3. Classificação: contexto de re-extração (NOVO, MODIFICADO, INALTERADO)
16
- 4. Status: resultado da leitura (extraído, parcial, não identificado)
17
- 5. Destino: onde a informação do arquivo foi para
18
- - Formato: `PRD §N` ou `TRD §N.M` (múltiplos separados por vírgula)
19
- - Se arquivo tem info de produto E técnica, aparece em ambos
20
- - Se arquivo foi puro-técnico: só TRD §N
21
- - Se arquivo foi puro-produto: só PRD §N
22
-
23
- REGRAS:
24
- - Hashes são SHA-256 truncados em 8 caracteres
25
- - Arquivo .gitkeep é sempre ignorado
26
- - Arquivos INALTERADOS aparecem no log mas com Destino "—"
27
- - Append-only: nunca remover extrações anteriores do log
28
-
29
- CLASSIFICAÇÕES POSSÍVEIS:
30
- - NOVO: arquivo não existia no log anterior
31
- - MODIFICADO: hash diferente do log anterior
32
- - INALTERADO: hash igual ao log anterior
33
- - NÃO IDENTIFICADO: Reader não conseguiu extrair conteúdo (binário, corrompido)
34
- - PARCIAL: Reader extraiu algo mas com limitações (imagem sem OCR, PDF escaneado)
35
-
36
- MUDANÇA v3 → v4:
37
- - v3 tinha coluna "Tech chunks" separada (produto/tech/both) pra /sf-design consumir
38
- - v4 elimina essa categorização — tudo técnico vai direto pro TRD (já
39
- estruturado), e /sf-design lê TRD + PRD em vez de chunks brutos.
40
- - Resultado: extract-log mais enxuto, zero lógica de categorização residual.
41
-
42
- =============================================================================
43
- -->
44
-
45
- ## Extração 1 — {{ISO_DATETIME}}
46
-
47
- | Arquivo | Hash | Classificação | Status | Destino |
48
- |---------|------|---------------|--------|---------|
49
- | `{{arquivo}}` | {{hash_8}} | NOVO | extraído | PRD §1, §5 + TRD §1.1, §2.1 |
1
+ # Extract Log — {{NOME}}
2
+
3
+ <!--
4
+ =============================================================================
5
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
6
+ =============================================================================
7
+
8
+ QUANDO USAR: Criado pelo /sf-extract na primeira extração. Atualizado em re-extrações.
9
+ QUEM GERA: Tech-Analyzer + Produto-Analyzer (Opus) ao final da extração.
10
+
11
+ COMO GERAR:
12
+ 1. Cada extração gera uma nova seção com timestamp
13
+ 2. Para cada arquivo processado registrar: nome, hash SHA-256 (8 chars),
14
+ classificação, status, destino (PRD e/ou TRD + seções específicas)
15
+ 3. Classificação: contexto de re-extração (NOVO, MODIFICADO, INALTERADO)
16
+ 4. Status: resultado da leitura (extraído, parcial, não identificado)
17
+ 5. Destino: onde a informação do arquivo foi para
18
+ - Formato: `PRD §N` ou `TRD §N.M` (múltiplos separados por vírgula)
19
+ - Se arquivo tem info de produto E técnica, aparece em ambos
20
+ - Se arquivo foi puro-técnico: só TRD §N
21
+ - Se arquivo foi puro-produto: só PRD §N
22
+
23
+ REGRAS:
24
+ - Hashes são SHA-256 truncados em 8 caracteres
25
+ - Arquivo .gitkeep é sempre ignorado
26
+ - Arquivos INALTERADOS aparecem no log mas com Destino "—"
27
+ - Append-only: nunca remover extrações anteriores do log
28
+
29
+ CLASSIFICAÇÕES POSSÍVEIS:
30
+ - NOVO: arquivo não existia no log anterior
31
+ - MODIFICADO: hash diferente do log anterior
32
+ - INALTERADO: hash igual ao log anterior
33
+ - NÃO IDENTIFICADO: Reader não conseguiu extrair conteúdo (binário, corrompido)
34
+ - PARCIAL: Reader extraiu algo mas com limitações (imagem sem OCR, PDF escaneado)
35
+
36
+ MUDANÇA v3 → v4:
37
+ - v3 tinha coluna "Tech chunks" separada (produto/tech/both) pra /sf-design consumir
38
+ - v4 elimina essa categorização — tudo técnico vai direto pro TRD (já
39
+ estruturado), e /sf-design lê TRD + PRD em vez de chunks brutos.
40
+ - Resultado: extract-log mais enxuto, zero lógica de categorização residual.
41
+
42
+ =============================================================================
43
+ -->
44
+
45
+ ## Extração 1 — {{ISO_DATETIME}}
46
+
47
+ | Arquivo | Hash | Classificação | Status | Destino |
48
+ |---------|------|---------------|--------|---------|
49
+ | `{{arquivo}}` | {{hash_8}} | NOVO | extraído | PRD §1, §5 + TRD §1.1, §2.1 |
@@ -1,79 +1,79 @@
1
- # projetos.yaml — Manifesto de Repositórios
2
- #
3
- # =============================================================================
4
- # INSTRUÇÕES PARA O AGENTE
5
- # =============================================================================
6
- #
7
- # QUANDO CRIAR: Gerado pelo /sf-design em first-run (quando docs/ ainda não existia).
8
- # QUEM GERA: Agent Architect (Opus), baseado no SDD §3.2 Arquitetura e §3.4 Infra.
9
- #
10
- # COMO GERAR:
11
- # 1. Ler SDD §3.2 Arquitetura → identificar quais serviços existem (api, worker, web, etc.)
12
- # 2. Para cada serviço, definir: nome do repo, path local, áreas de task, stack
13
- # 3. A stack DEVE vir do SDD §3.1 (Stack) — não inventar, não copiar exemplo
14
- # 4. Se o repo já existe no GitHub, marcar existing: true
15
- # 5. Se é novo, marcar existing: false (será criado pelo /sf-dev INFRA-001)
16
- #
17
- # REGRAS:
18
- # - Todo serviço identificado no SDD §3.2 DEVE ter uma entrada
19
- # - O campo `areas` define quais prefixos de task escrevem nesse repo
20
- # - Uma área NÃO pode pertencer a dois repos (mapeamento 1:1)
21
- # - DB pode ir junto com api (se usa ORM com migrations no mesmo repo) ou separado
22
- # - O campo `stack` DEVE ser consistente com SDD §3.1 + docs/architecture.md
23
- # - O `org` é a organização/user do GitHub
24
- #
25
- # EXEMPLOS DE STACK (apenas referência — usar a REAL do SDD):
26
- # - Backend: ".NET 8", "Node.js 20 + Express", "Python 3.12 + FastAPI", "Go 1.22"
27
- # - Frontend: "React 18 + Vite", "Next.js 15", "Vue 3 + Nuxt", "Angular 17"
28
- # - Mobile: "React Native", "Flutter", "Swift / Kotlin nativo"
29
- # =============================================================================
30
-
31
- # Organização/usuário no GitHub
32
- org: "{{GITHUB_ORG}}"
33
-
34
- # Nome base do projeto (usado como prefixo dos repos)
35
- project: "{{PROJECT_NAME}}"
36
-
37
- # Repositórios — preencher conforme serviços do SDD §3.2
38
- repos:
39
- # API backend (exemplo — adaptar stack ao SDD real do projeto)
40
- api:
41
- repo: "{{GITHUB_ORG}}/{{PROJECT_NAME}}-api"
42
- path: "projetos/api"
43
- existing: false # true = clonar existente; false = criar novo
44
- areas: [BACK, DB] # áreas de task que escrevem aqui (1:1 por área)
45
- stack: "{{STACK_BACKEND}}" # do SDD §3.1 (ex: "Node.js 20 + Express")
46
- branch_prefix: "feature/"
47
-
48
- # Worker / jobs assíncronos (descomentar se SDD §3.2 define)
49
- # worker:
50
- # repo: "{{GITHUB_ORG}}/{{PROJECT_NAME}}-worker"
51
- # path: "projetos/worker"
52
- # existing: false
53
- # areas: [BACK] # ou criar área WORKER dedicada se preferir
54
- # stack: "{{STACK_WORKER}}"
55
- # branch_prefix: "feature/"
56
-
57
- # Frontend web (descomentar se SDD §3.2 define)
58
- # web:
59
- # repo: "{{GITHUB_ORG}}/{{PROJECT_NAME}}-web"
60
- # path: "projetos/web"
61
- # existing: false
62
- # areas: [FRONT]
63
- # stack: "{{STACK_FRONTEND}}"
64
- # branch_prefix: "feature/"
65
-
66
- # App mobile (descomentar se SDD §3.2 define)
67
- # mobile:
68
- # repo: "{{GITHUB_ORG}}/{{PROJECT_NAME}}-mobile"
69
- # path: "projetos/mobile"
70
- # existing: false
71
- # areas: [MOBILE]
72
- # stack: "{{STACK_MOBILE}}"
73
- # branch_prefix: "feature/"
74
-
75
- # Notas:
76
- # - projetos/ está no .gitignore do projeto-base (contém repos independentes)
77
- # - Cada repo tem seu próprio .git, CI/CD, e deploy
78
- # - O projeto-base é o "cérebro" — specs, docs, pipeline
79
- # - Os repos em projetos/ são o "corpo" — código implementado
1
+ # projetos.yaml — Manifesto de Repositórios
2
+ #
3
+ # =============================================================================
4
+ # INSTRUÇÕES PARA O AGENTE
5
+ # =============================================================================
6
+ #
7
+ # QUANDO CRIAR: Gerado pelo /sf-design em first-run (quando docs/ ainda não existia).
8
+ # QUEM GERA: Agent Architect (Opus), baseado no TRD §1.2 Arquitetura e §5 §Área-Infra.
9
+ #
10
+ # COMO GERAR:
11
+ # 1. Ler TRD §1.2 Arquitetura → identificar quais serviços existem (api, worker, web, etc.)
12
+ # 2. Para cada serviço, definir: nome do repo, path local, áreas de task, stack
13
+ # 3. A stack DEVE vir do TRD §1.1 (Stack) — não inventar, não copiar exemplo
14
+ # 4. Se o repo já existe no GitHub, marcar existing: true
15
+ # 5. Se é novo, marcar existing: false (será criado pelo /sf-dev INFRA-001)
16
+ #
17
+ # REGRAS:
18
+ # - Todo serviço identificado no TRD §1.2 DEVE ter uma entrada
19
+ # - O campo `areas` define quais prefixos de task escrevem nesse repo
20
+ # - Uma área NÃO pode pertencer a dois repos (mapeamento 1:1)
21
+ # - DB pode ir junto com api (se usa ORM com migrations no mesmo repo) ou separado
22
+ # - O campo `stack` DEVE ser consistente com TRD §1.1 + docs/architecture.md
23
+ # - O `org` é a organização/user do GitHub
24
+ #
25
+ # EXEMPLOS DE STACK (apenas referência — usar a REAL do TRD):
26
+ # - Backend: ".NET 8", "Node.js 20 + Express", "Python 3.12 + FastAPI", "Go 1.22"
27
+ # - Frontend: "React 18 + Vite", "Next.js 15", "Vue 3 + Nuxt", "Angular 17"
28
+ # - Mobile: "React Native", "Flutter", "Swift / Kotlin nativo"
29
+ # =============================================================================
30
+
31
+ # Organização/usuário no GitHub
32
+ org: "{{GITHUB_ORG}}"
33
+
34
+ # Nome base do projeto (usado como prefixo dos repos)
35
+ project: "{{PROJECT_NAME}}"
36
+
37
+ # Repositórios — preencher conforme serviços do TRD §1.2
38
+ repos:
39
+ # API backend (exemplo — adaptar stack ao TRD real do projeto)
40
+ api:
41
+ repo: "{{GITHUB_ORG}}/{{PROJECT_NAME}}-api"
42
+ path: "projetos/api"
43
+ existing: false # true = clonar existente; false = criar novo
44
+ areas: [BACK, DB] # áreas de task que escrevem aqui (1:1 por área)
45
+ stack: "{{STACK_BACKEND}}" # do TRD §1.1 (ex: "Node.js 20 + Express")
46
+ branch_prefix: "feature/"
47
+
48
+ # Worker / jobs assíncronos (descomentar se TRD §1.2 define)
49
+ # worker:
50
+ # repo: "{{GITHUB_ORG}}/{{PROJECT_NAME}}-worker"
51
+ # path: "projetos/worker"
52
+ # existing: false
53
+ # areas: [BACK] # ou criar área WORKER dedicada se preferir
54
+ # stack: "{{STACK_WORKER}}"
55
+ # branch_prefix: "feature/"
56
+
57
+ # Frontend web (descomentar se TRD §1.2 define)
58
+ # web:
59
+ # repo: "{{GITHUB_ORG}}/{{PROJECT_NAME}}-web"
60
+ # path: "projetos/web"
61
+ # existing: false
62
+ # areas: [FRONT]
63
+ # stack: "{{STACK_FRONTEND}}"
64
+ # branch_prefix: "feature/"
65
+
66
+ # App mobile (descomentar se TRD §1.2 define)
67
+ # mobile:
68
+ # repo: "{{GITHUB_ORG}}/{{PROJECT_NAME}}-mobile"
69
+ # path: "projetos/mobile"
70
+ # existing: false
71
+ # areas: [MOBILE]
72
+ # stack: "{{STACK_MOBILE}}"
73
+ # branch_prefix: "feature/"
74
+
75
+ # Notas:
76
+ # - projetos/ está no .gitignore do projeto-base (contém repos independentes)
77
+ # - Cada repo tem seu próprio .git, CI/CD, e deploy
78
+ # - O projeto-base é o "cérebro" — specs, docs, pipeline
79
+ # - Os repos em projetos/ são o "corpo" — código implementado
@@ -1,57 +1,59 @@
1
- # Progresso Geral
2
-
3
- > Visão consolidada de todas as features, bugs e tarefas do projeto.
4
- > Atualizado automaticamente ao final de cada `/sf-plan` e `/sf-dev`.
5
-
6
- ---
7
-
8
- <!--
9
- =============================================================================
10
- INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado na primeira vez)
11
- =============================================================================
12
-
13
- QUANDO USAR: Criado pelo /sf-plan do primeiro setup ou feature. Atualizado por cada /sf-plan e /sf-dev.
14
-
15
- COMO ATUALIZAR:
16
- - Ao criar nova feature (/sf-plan) → adicionar linha na tabela com contadores zerados
17
- - Ao concluir tasks (/sf-dev) → atualizar contadores
18
- - Ao concluir feature (/sf-merge-docs) → status "concluído" ou "done"
19
-
20
- ÁREAS SÃO DINÂMICAS:
21
- - Colunas de área mudam conforme o projeto (DB, BACK, FRONT, DOC, INFRA, MOBILE...)
22
- - Cada feature pode ter áreas diferentes
23
- - Usar "—" quando uma feature não tem tasks naquela área
24
-
25
- STATUS USA O VALOR DO .context.md:
26
- - not_started, extract_done, approved, design_done, plan_done, dev_in_progress, dev_done, done
27
-
28
- =============================================================================
29
- -->
30
-
31
- ## Resumo
32
-
33
- | # | Feature | Status | {{AREA_1}} | {{AREA_2}} | {{AREA_N}} | Última atualização |
34
- |---|---------|--------|------------|------------|------------|-------------------|
35
- | 1 | {{NOME}} | {{status}} | 0/N | 0/N | 0/N | {{data}} |
36
-
37
- <!-- Exemplo preenchido:
38
- | 1 | setup_projeto | plan_done | DB: 0/7 | BACK: 0/10 | FRONT: 0/3 | DOC: 0/8 | 2026-04-08 |
39
- | 2 | feat_cadastro_cliente | extract_done | — | — | — | — | 2026-04-09 |
40
- -->
41
-
42
- ## Legenda de Status
43
-
44
- | Status | Significado |
45
- |--------|-------------|
46
- | `not_started` | Pipeline iniciado, aguardando extração |
47
- | `extract_done` | PRD gerado (pode ser empty), aguardando aprovação |
48
- | `approved` | Documento aprovado |
49
- | `design_done` | SDD gerado |
50
- | `plan_done` | Tasks geradas, pronto para /sf-dev |
51
- | `dev_in_progress` | /sf-dev em execução |
52
- | `dev_done` | Todas tasks concluídas |
53
- | `done` | Delta specs mergeadas (features) ou docs gerados (setup) |
54
-
55
- ---
56
-
57
- > **Atualização**: Cada skill atualiza este arquivo ao criar ou concluir features.
1
+ # Progresso Geral
2
+
3
+ > Visão consolidada de todas as features, bugs e tarefas do projeto.
4
+ > Atualizado automaticamente ao final de cada `/sf-plan` e `/sf-dev`.
5
+
6
+ ---
7
+
8
+ <!--
9
+ =============================================================================
10
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado na primeira vez)
11
+ =============================================================================
12
+
13
+ QUANDO USAR: Criado pelo /sf-plan do primeiro setup ou feature. Atualizado por cada /sf-plan e /sf-dev.
14
+
15
+ COMO ATUALIZAR:
16
+ - Ao criar nova feature (/sf-plan) → adicionar linha na tabela com contadores zerados
17
+ - Ao concluir tasks (/sf-dev) → atualizar contadores
18
+ - Ao concluir feature (/sf-merge-docs) → status "concluído" ou "done"
19
+
20
+ ÁREAS SÃO DINÂMICAS:
21
+ - Colunas de área mudam conforme o projeto (DB, BACK, FRONT, DOC, INFRA, MOBILE...)
22
+ - Cada feature pode ter áreas diferentes
23
+ - Usar "—" quando uma feature não tem tasks naquela área
24
+
25
+ STATUS USA O VALOR DO .context.md:
26
+ - not_started, extract_done, approved, design_done, plan_done, dev_in_progress, dev_done, done
27
+
28
+ =============================================================================
29
+ -->
30
+
31
+ ## Resumo
32
+
33
+ | # | Feature | Status | {{AREA_1}} | {{AREA_2}} | {{AREA_N}} | Última atualização |
34
+ |---|---------|--------|------------|------------|------------|-------------------|
35
+ | 1 | {{NOME}} | {{status}} | 0/N | 0/N | 0/N | {{data}} |
36
+
37
+ <!-- Exemplo preenchido:
38
+ | 1 | setup_projeto | plan_done | DB: 0/7 | BACK: 0/10 | FRONT: 0/3 | DOC: 0/8 | 2026-04-08 |
39
+ | 2 | feat_cadastro_cliente | extract_done | — | — | — | — | 2026-04-09 |
40
+ -->
41
+
42
+ ## Legenda de Status
43
+
44
+ | Status | Significado |
45
+ |--------|-------------|
46
+ | `not_started` | Pipeline iniciado, aguardando /sf-discovery |
47
+ | `discovery_done` | Análise dos insumos feita, aguardando /sf-extract |
48
+ | `extract_done` | PRD e/ou TRD gerado(s), aguardando aprovações |
49
+ | `prd_approved` | PM aprovou PRD |
50
+ | `trd_approved` | dev aprovou TRD (ambas aprovações = pode chamar /sf-design) |
51
+ | `design_done` | `specs/{nome}/` gerado (+ `docs/` em first-run) |
52
+ | `plan_done` | Tasks geradas, pronto para /sf-dev |
53
+ | `dev_in_progress` | /sf-dev em execução |
54
+ | `dev_done` | Todas tasks concluídas |
55
+ | `done` | docs/ atualizado via /sf-merge-docs |
56
+
57
+ ---
58
+
59
+ > **Atualização**: Cada skill atualiza este arquivo ao criar ou concluir features.