spec-first-copilot 0.6.0-beta.9 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +252 -167
  2. package/bin/cli.js +70 -70
  3. package/lib/init.js +92 -92
  4. package/lib/update.js +132 -132
  5. package/package.json +1 -1
  6. package/templates/.ai/memory/napkin.md +68 -68
  7. package/templates/.github/CHANGELOG.md +121 -0
  8. package/templates/.github/adapters/SETUP.md +314 -314
  9. package/templates/.github/adapters/confluence.md +295 -295
  10. package/templates/.github/adapters/errors.md +234 -234
  11. package/templates/.github/adapters/filesystem.md +353 -353
  12. package/templates/.github/adapters/interface.md +301 -301
  13. package/templates/.github/adapters/naming.md +241 -241
  14. package/templates/.github/adapters/registry.md +244 -244
  15. package/templates/.github/agents/backend-coder.md +14 -14
  16. package/templates/.github/agents/db-coder.md +165 -165
  17. package/templates/.github/agents/doc-writer.md +66 -53
  18. package/templates/.github/agents/frontend-coder.md +5 -5
  19. package/templates/.github/agents/infra-coder.md +341 -341
  20. package/templates/.github/agents/reviewer.md +6 -6
  21. package/templates/.github/agents/security-reviewer.md +153 -153
  22. package/templates/.github/copilot-instructions.md +272 -262
  23. package/templates/.github/instructions/docs.instructions.md +147 -145
  24. package/templates/.github/instructions/sensitive-files.instructions.md +32 -32
  25. package/templates/.github/rules.md +229 -229
  26. package/templates/.github/scripts/bootstrap-confluence.js +289 -223
  27. package/templates/.github/skills/sf-design/SKILL.md +161 -216
  28. package/templates/.github/skills/sf-dev/SKILL.md +204 -351
  29. package/templates/.github/skills/sf-discovery/SKILL.md +415 -414
  30. package/templates/.github/skills/sf-extract/SKILL.md +225 -249
  31. package/templates/.github/skills/sf-load/SKILL.md +296 -295
  32. package/templates/.github/skills/sf-mcp/SKILL.md +386 -385
  33. package/templates/.github/skills/sf-merge-docs/SKILL.md +152 -100
  34. package/templates/.github/skills/sf-plan/SKILL.md +152 -128
  35. package/templates/.github/skills/sf-publish/SKILL.md +144 -143
  36. package/templates/.github/skills/sf-session-finish/SKILL.md +93 -120
  37. package/templates/.github/skills/sf-start/SKILL.md +192 -145
  38. package/templates/.github/templates/estrutura/apiContracts.template.md +160 -159
  39. package/templates/.github/templates/estrutura/architecture.template.md +169 -168
  40. package/templates/.github/templates/estrutura/conventions.template.md +214 -212
  41. package/templates/.github/templates/estrutura/decisions.template.md +107 -107
  42. package/templates/.github/templates/estrutura/domain.template.md +161 -160
  43. package/templates/.github/templates/feature/PRD.template.md +279 -286
  44. package/templates/.github/templates/feature/Progresso.template.md +141 -141
  45. package/templates/.github/templates/feature/TRD.template.md +358 -0
  46. package/templates/.github/templates/feature/context.template.md +89 -48
  47. package/templates/.github/templates/feature/extract-log.template.md +49 -39
  48. package/templates/.github/templates/feature/projetos.template.yaml +79 -79
  49. package/templates/.github/templates/global/progresso_global.template.md +59 -57
  50. package/templates/.github/templates/specs/brief.template.md +66 -59
  51. package/templates/.github/templates/specs/contracts.template.md +147 -141
  52. package/templates/.github/templates/specs/scenarios.template.md +125 -117
  53. package/templates/.github/templates/specs/tasks.template.md +65 -63
  54. package/templates/_gitignore +35 -35
  55. package/templates/sfw.config.yml.example +147 -147
  56. package/templates/.github/templates/feature/backlog-extraido.template.md +0 -156
  57. package/templates/.github/templates/feature/sdd.template.md +0 -559
@@ -1,48 +1,89 @@
1
- ---
2
- nome: "{{NOME}}"
3
- first_run: {{true|false}}
4
- prd_empty: {{true|false}}
5
- areas_tocadas: []
6
- input_path: "workspace/Input/{{NOME}}/"
7
- status: "not_started"
8
- ultima_skill: ""
9
- atualizado_em: ""
10
- ---
11
-
12
- <!--
13
- =============================================================================
14
- INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
15
- =============================================================================
16
-
17
- CAMPOS:
18
- - nome: identificador livre do scope (ex: app_barbearia, feat_login, infra_k8s)
19
- - first_run: bool (true/false, SEM aspas) — true se docs/ não existia quando /sf-start foi chamado
20
- IMUTÁVEL após criação
21
- - prd_empty: bool (true/false, SEM aspas) — true se /sf-extract marcou PRD como empty (scope puro-técnico)
22
- Pode mudar em re-extração (empty non-empty se novo insumo trouxer produto)
23
- - areas_tocadas: lista de áreas que o scope toca (ex: [BACK, DB]). Preenchido pelo /sf-design.
24
- Possíveis: BACK, FRONT, DB, INFRA. Usado pelos GATEs do SDD §Área-X.
25
- - input_path: caminho relativo da pasta de insumos
26
- - status: estado atual da pipeline (ver fluxo abaixo)
27
- - ultima_skill: qual skill alterou este arquivo por último
28
- - atualizado_em: data/hora ISO da última atualização
29
-
30
- FLUXO DE STATUS:
31
- not_started extract_done approved design_done plan_done dev_in_progress → dev_done → done
32
-
33
- QUEM ATUALIZA:
34
- - /sf-start: cria o arquivo com status not_started + first_run derivado de docs/
35
- - /sf-extract: not_started extract_done, preenche prd_empty
36
- - /sf-design: extract_done approved design_done (aprovação via pergunta ao user), preenche areas_tocadas
37
- - /sf-plan: design_done plan_done
38
- - /sf-dev: plan_done dev_in_progress dev_done
39
- - /sf-merge-docs: dev_done done (aplica SDD §11 em docs/)
40
-
41
- REGRAS:
42
- - Nunca pular etapas no fluxo de status
43
- - Nunca editar manualmente — apenas skills atualizam este arquivo
44
- - Se status não corresponde ao esperado, a skill deve parar e avisar
45
- - first_run é IMUTÁVEL após criação (representa o estado no bootstrap do scope)
46
-
47
- =============================================================================
48
- -->
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 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,39 +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: Agent 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: nome, hash SHA-256 (8 chars), classificação, status, seções alimentadas
14
- 3. Classificação: contexto de re-extração (NOVO, MODIFICADO, INALTERADO)
15
- 4. Status: resultado da leitura (extraído, parcial, não identificado)
16
- 5. Seções alimentadas: quais §N do PRD foram preenchidos a partir deste arquivo
17
- + categorização tech (stack, arquitetura, infra, segurança) pra alimentar /sf-design
18
-
19
- REGRAS:
20
- - Hashes são SHA-256 truncados em 8 caracteres
21
- - Arquivo .gitkeep é sempre ignorado
22
- - Arquivos INALTERADOS aparecem no log mas com seções "—"
23
- - Append-only: nunca remover extrações anteriores do log
24
-
25
- CLASSIFICAÇÕES POSSÍVEIS:
26
- - NOVO: arquivo não existia no log anterior
27
- - MODIFICADO: hash diferente do log anterior
28
- - INALTERADO: hash igual ao log anterior
29
- - NÃO IDENTIFICADO: Reader não conseguiu extrair conteúdo (binário, corrompido, formato desconhecido)
30
- - PARCIAL: Reader extraiu algo mas com limitações (imagem sem OCR, PDF escaneado)
31
-
32
- =============================================================================
33
- -->
34
-
35
- ## Extração 1 — {{ISO_DATETIME}}
36
-
37
- | Arquivo | Hash | Classificação | Status | Seções alimentadas |
38
- |---------|------|---------------|--------|--------------------|
39
- | `{{arquivo}}` | {{hash_8}} | NOVO | extraído | §N, §N |
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: 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 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.
@@ -1,59 +1,66 @@
1
- # Brief — {{NOME}}
2
-
3
- > Contexto da feature para o coder: por quê, o quê e onde.
4
- > Gerado pelo /sf-design a partir do SDD. NUNCA editado manualmente.
5
-
6
- ---
7
-
8
- <!--
9
- =============================================================================
10
- INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
11
- =============================================================================
12
-
13
- ORIGEM: /sf-design — projeção do SDD §1 Visão geral + §2 Decisões + §10 Fora do escopo.
14
- ATUALIZAÇÃO: Sempre regenerado junto com o SDD. NUNCA editado manualmente.
15
-
16
- REGRA DE OURO: Se algo aqui diverge do SDD, o SDD vence. Re-rode /sf-design.
17
-
18
- O brief é o "por quê + o quê + onde" destilado. O coder lê ANTES de abrir contracts.md.
19
- Sem narrativa longa — bullets objetivos. Código NÃO é derivado daqui.
20
-
21
- SOBRE "Serviços tocados":
22
- - Listar os repos de projetos.yaml que esta feature modifica
23
- - Incluir a área (BACK/FRONT/DB/INFRA) por serviço
24
- - Se first-run (setup), listar todos os repos que serão CRIADOS
25
-
26
- =============================================================================
27
- -->
28
-
29
- ## Problema
30
-
31
- <!-- 2-3 frases. O que está faltando ou quebrado que esta feature resolve. -->
32
-
33
- ## Solução
34
-
35
- <!-- High level: como estamos resolvendo. Sem design técnico — isso está em contracts.md. -->
36
-
37
- ## Serviços tocados
38
-
39
- <!-- Quais repos (de projetos.yaml) esta feature toca e em quais áreas. -->
40
-
41
- | Repo | Áreas | Tipo de mudança |
42
- |------|-------|-----------------|
43
- | | | nova funcionalidade / alteração / infra |
44
-
45
- ## Escopo
46
-
47
- ### Dentro
48
- -
49
-
50
- ### Fora
51
- -
52
-
53
- ## Decisões principais
54
-
55
- <!-- Mini-ADRs inline — só decisões específicas desta feature, não as globais de docs/decisions.md. -->
56
-
57
- | # | Decisão | Justificativa |
58
- |---|---------|---------------|
59
- | 1 | | |
1
+ # Brief — {{NOME}}
2
+
3
+ > Contexto da feature para o coder: por quê, o quê e onde.
4
+ > Gerado pelo /sf-design a partir de PRD + TRD. NUNCA editado manualmente.
5
+
6
+ ---
7
+
8
+ <!--
9
+ =============================================================================
10
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
11
+ =============================================================================
12
+
13
+ ORIGEM: /sf-design — projeção de:
14
+ - PRD §1 Contexto e Motivação Problema / Solução
15
+ - PRD §10 Fora de Escopo → Escopo (seção Fora)
16
+ - PRD §11 Fases de Entrega (visão geral) Escopo (seção Dentro)
17
+ - TRD §1.1 Stack + §1.2 Arquitetura → Serviços tocados + Decisões principais
18
+ - TRD §9 ADRs (resumo) Decisões principais
19
+
20
+ ATUALIZAÇÃO: Sempre regenerado junto com os specs. NUNCA editado manualmente.
21
+
22
+ REGRA DE OURO: Se algo aqui diverge de PRD ou TRD, os docs source vencem.
23
+ Re-rode /sf-design.
24
+
25
+ O brief é o "por quê + o quê + onde" destilado. O coder lê ANTES de abrir contracts.md.
26
+ Sem narrativa longa — bullets objetivos. Código NÃO é derivado daqui.
27
+
28
+ SOBRE "Serviços tocados":
29
+ - Listar os repos de projetos.yaml que esta feature modifica
30
+ - Incluir a área (BACK/FRONT/DB/INFRA) por serviço
31
+ - Se first-run (setup), listar todos os repos que serão CRIADOS
32
+
33
+ =============================================================================
34
+ -->
35
+
36
+ ## Problema
37
+
38
+ <!-- 2-3 frases. O que está faltando ou quebrado que esta feature resolve. -->
39
+
40
+ ## Solução
41
+
42
+ <!-- High level: como estamos resolvendo. Sem design técnico — isso está em contracts.md. -->
43
+
44
+ ## Serviços tocados
45
+
46
+ <!-- Quais repos (de projetos.yaml) esta feature toca e em quais áreas. -->
47
+
48
+ | Repo | Áreas | Tipo de mudança |
49
+ |------|-------|-----------------|
50
+ | | | nova funcionalidade / alteração / infra |
51
+
52
+ ## Escopo
53
+
54
+ ### Dentro
55
+ -
56
+
57
+ ### Fora
58
+ -
59
+
60
+ ## Decisões principais
61
+
62
+ <!-- Mini-ADRs inline — só decisões específicas desta feature, não as globais de docs/decisions.md. -->
63
+
64
+ | # | Decisão | Justificativa |
65
+ |---|---------|---------------|
66
+ | 1 | | |