spec-first-copilot 0.2.0 → 0.4.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 (38) hide show
  1. package/README.md +148 -148
  2. package/bin/cli.js +52 -52
  3. package/lib/init.js +89 -93
  4. package/package.json +24 -23
  5. package/templates/.ai/memory/napkin.md +68 -68
  6. package/templates/.github/agents/backend-coder.md +215 -215
  7. package/templates/.github/agents/db-coder.md +165 -165
  8. package/templates/.github/agents/doc-writer.md +51 -51
  9. package/templates/.github/agents/frontend-coder.md +222 -222
  10. package/templates/.github/agents/infra-coder.md +341 -341
  11. package/templates/.github/agents/reviewer.md +99 -99
  12. package/templates/.github/agents/security-reviewer.md +153 -153
  13. package/templates/.github/copilot-instructions.md +175 -176
  14. package/templates/.github/instructions/docs.instructions.md +123 -123
  15. package/templates/.github/instructions/sensitive-files.instructions.md +32 -32
  16. package/templates/.github/skills/sf-design/SKILL.md +181 -181
  17. package/templates/.github/skills/sf-dev/SKILL.md +349 -326
  18. package/templates/.github/skills/sf-extract/SKILL.md +284 -284
  19. package/templates/.github/skills/sf-feature/SKILL.md +130 -130
  20. package/templates/.github/skills/sf-merge-delta/SKILL.md +142 -142
  21. package/templates/.github/skills/sf-plan/SKILL.md +178 -178
  22. package/templates/.github/skills/{sf-pausar → sf-session-finish}/SKILL.md +120 -120
  23. package/templates/.github/skills/sf-setup-projeto/SKILL.md +123 -123
  24. package/templates/docs/Desenvolvimento/rules.md +229 -229
  25. package/templates/docs/_templates/estrutura/ADRs.template.md +91 -91
  26. package/templates/docs/_templates/estrutura/API.template.md +144 -144
  27. package/templates/docs/_templates/estrutura/Arquitetura.template.md +82 -82
  28. package/templates/docs/_templates/estrutura/Infraestrutura.template.md +104 -104
  29. package/templates/docs/_templates/estrutura/Modelo_Dados.template.md +99 -99
  30. package/templates/docs/_templates/estrutura/Seguranca.template.md +138 -138
  31. package/templates/docs/_templates/estrutura/Stack.template.md +78 -78
  32. package/templates/docs/_templates/estrutura/Visao.template.md +82 -82
  33. package/templates/docs/_templates/feature/Progresso.template.md +136 -136
  34. package/templates/docs/_templates/feature/backlog-extraido.template.md +154 -154
  35. package/templates/docs/_templates/feature/context.template.md +42 -42
  36. package/templates/docs/_templates/feature/extract-log.template.md +38 -38
  37. package/templates/docs/_templates/feature/projetos.template.yaml +73 -73
  38. package/templates/docs/_templates/global/progresso_global.template.md +57 -57
@@ -1,154 +1,154 @@
1
- # Roadmap de Produto — {{NOME}}
2
-
3
- <!--
4
- =============================================================================
5
- INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
6
- =============================================================================
7
-
8
- QUANDO USAR: Gerado APENAS pelo /extract durante /setup-projeto.
9
- Nunca gerado em /feature.
10
-
11
- COMO GERAR:
12
- 1. Durante a extração do TRD, o Analyzer encontra informações que não são infra
13
- (regras de negócio, jornadas, telas, fluxos, entidades de domínio)
14
- 2. Em vez de listar features soltas, ORGANIZAR em fases de entrega:
15
- a. Identificar entidades/funcionalidades nos insumos
16
- b. Mapear dependências entre elas (ex: agendamento depende de cadastro)
17
- c. Agrupar em fases por dependência + complexidade
18
- d. Definir entregável por fase (o que o usuário pode usar ao final)
19
- e. Priorizar: P1 (base/core), P2 (operacional), P3 (crescimento)
20
- 3. Para cada item, rastrear o arquivo fonte
21
- 4. Sugerir UMA feature única com nome descritivo (ex: feat_mvp, feat_produto)
22
-
23
- PRINCÍPIO: Entregáveis contínuos — cada fase entrega valor e pode ir pra produção.
24
- Nunca "tudo ou nada". Pequeno e constante.
25
-
26
- CRITÉRIOS DE FASEAMENTO:
27
- - Fase 1 sempre = cadastros base / fundação (sem isso nada funciona)
28
- - Cada fase depende das anteriores (sequencial)
29
- - Cada fase tem entregável testável pelo usuário
30
- - Máximo 4-5 fases (se precisa de mais, agrupar melhor)
31
-
32
- USO POSTERIOR:
33
- - O usuário cria UMA feature (ex: /feature feat_mvp)
34
- - O /extract dessa feature gera PRD com as fases já sugeridas aqui
35
- - O /plan organiza tasks por fase de entrega × área
36
-
37
- =============================================================================
38
- -->
39
-
40
- > Roadmap faseado de produto extraído dos insumos do setup.
41
- > Organizado por fases de entrega incrementais — cada fase entrega valor e pode ir pra produção.
42
- > Fonte de verdade para criação de features via `/feature`.
43
-
44
- ---
45
-
46
- ## Feature sugerida: `{{FEATURE_NAME}}`
47
-
48
- > {{Descrição em 1-2 frases do produto completo}}
49
-
50
- ---
51
-
52
- ## Fase 1 — {{Nome}} [P1 — Fundação]
53
-
54
- > **Entregável**: {{O que o usuário pode fazer/ver ao final desta fase}}
55
- > **Critério de done**: {{Como validar que a fase está pronta}}
56
-
57
- ### Funcionalidades
58
-
59
- | # | Funcionalidade | Tipo | Descrição | Fonte |
60
- |---|---------------|------|-----------|-------|
61
- | 1 | | CRUD / Feature / Config | | {{arquivo}} |
62
-
63
- ### Entidades envolvidas
64
-
65
- | Entidade | Campos principais | Fonte |
66
- |----------|-------------------|-------|
67
- | | | |
68
-
69
- ### Regras de negócio
70
-
71
- | ID | Regra | Fonte |
72
- |----|-------|-------|
73
- | RN-001 | | {{arquivo}} |
74
-
75
- ### Jornadas de usuário
76
-
77
- | # | Jornada | Atores | Fonte |
78
- |---|---------|--------|-------|
79
- | 1 | | | |
80
-
81
- ---
82
-
83
- ## Fase 2 — {{Nome}} [P1 — Core Business]
84
-
85
- > **Entregável**: {{O que o usuário pode fazer/ver ao final desta fase}}
86
- > **Critério de done**: {{Como validar}}
87
- > **Depende de**: Fase 1
88
-
89
- ### Funcionalidades
90
-
91
- | # | Funcionalidade | Tipo | Descrição | Fonte |
92
- |---|---------------|------|-----------|-------|
93
- | 1 | | | | |
94
-
95
- ### Entidades envolvidas
96
-
97
- | Entidade | Campos principais | Fonte |
98
- |----------|-------------------|-------|
99
- | | | |
100
-
101
- ### Regras de negócio
102
-
103
- | ID | Regra | Fonte |
104
- |----|-------|-------|
105
- | RN-NNN | | |
106
-
107
- ### Jornadas de usuário
108
-
109
- | # | Jornada | Atores | Fonte |
110
- |---|---------|--------|-------|
111
- | 1 | | | |
112
-
113
- ---
114
-
115
- ## Fase 3 — {{Nome}} [P2 — Operacional]
116
-
117
- > **Entregável**: {{...}}
118
- > **Critério de done**: {{...}}
119
- > **Depende de**: Fase 2
120
-
121
- <!-- Repetir estrutura -->
122
-
123
- ---
124
-
125
- ## Fase 4 — {{Nome}} [P3 — Crescimento]
126
-
127
- > **Entregável**: {{...}}
128
- > **Critério de done**: {{...}}
129
- > **Depende de**: Fase 3
130
-
131
- <!-- Repetir estrutura -->
132
-
133
- ---
134
-
135
- ## Visão geral das fases
136
-
137
- | Fase | Nome | Prioridade | Entregável | Depende de |
138
- |------|------|-----------|------------|------------|
139
- | 1 | | P1 | | — |
140
- | 2 | | P1 | | Fase 1 |
141
- | 3 | | P2 | | Fase 2 |
142
- | 4 | | P3 | | Fase 3 |
143
-
144
- ## Telas/fluxos identificados (por fase)
145
-
146
- | # | Tela/Fluxo | Fase | Fonte |
147
- |---|-----------|------|-------|
148
- | 1 | | | |
149
-
150
- ---
151
-
152
- > **Próximo passo**: Criar a feature com `/feature {{FEATURE_NAME}}`
153
- > O /extract vai gerar o PRD usando este roadmap como referência.
154
- > O /plan vai organizar tasks por fase de entrega × área.
1
+ # Roadmap de Produto — {{NOME}}
2
+
3
+ <!--
4
+ =============================================================================
5
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
6
+ =============================================================================
7
+
8
+ QUANDO USAR: Gerado APENAS pelo /extract durante /setup-projeto.
9
+ Nunca gerado em /feature.
10
+
11
+ COMO GERAR:
12
+ 1. Durante a extração do TRD, o Analyzer encontra informações que não são infra
13
+ (regras de negócio, jornadas, telas, fluxos, entidades de domínio)
14
+ 2. Em vez de listar features soltas, ORGANIZAR em fases de entrega:
15
+ a. Identificar entidades/funcionalidades nos insumos
16
+ b. Mapear dependências entre elas (ex: agendamento depende de cadastro)
17
+ c. Agrupar em fases por dependência + complexidade
18
+ d. Definir entregável por fase (o que o usuário pode usar ao final)
19
+ e. Priorizar: P1 (base/core), P2 (operacional), P3 (crescimento)
20
+ 3. Para cada item, rastrear o arquivo fonte
21
+ 4. Sugerir UMA feature única com nome descritivo (ex: feat_mvp, feat_produto)
22
+
23
+ PRINCÍPIO: Entregáveis contínuos — cada fase entrega valor e pode ir pra produção.
24
+ Nunca "tudo ou nada". Pequeno e constante.
25
+
26
+ CRITÉRIOS DE FASEAMENTO:
27
+ - Fase 1 sempre = cadastros base / fundação (sem isso nada funciona)
28
+ - Cada fase depende das anteriores (sequencial)
29
+ - Cada fase tem entregável testável pelo usuário
30
+ - Máximo 4-5 fases (se precisa de mais, agrupar melhor)
31
+
32
+ USO POSTERIOR:
33
+ - O usuário cria UMA feature (ex: /feature feat_mvp)
34
+ - O /extract dessa feature gera PRD com as fases já sugeridas aqui
35
+ - O /plan organiza tasks por fase de entrega × área
36
+
37
+ =============================================================================
38
+ -->
39
+
40
+ > Roadmap faseado de produto extraído dos insumos do setup.
41
+ > Organizado por fases de entrega incrementais — cada fase entrega valor e pode ir pra produção.
42
+ > Fonte de verdade para criação de features via `/feature`.
43
+
44
+ ---
45
+
46
+ ## Feature sugerida: `{{FEATURE_NAME}}`
47
+
48
+ > {{Descrição em 1-2 frases do produto completo}}
49
+
50
+ ---
51
+
52
+ ## Fase 1 — {{Nome}} [P1 — Fundação]
53
+
54
+ > **Entregável**: {{O que o usuário pode fazer/ver ao final desta fase}}
55
+ > **Critério de done**: {{Como validar que a fase está pronta}}
56
+
57
+ ### Funcionalidades
58
+
59
+ | # | Funcionalidade | Tipo | Descrição | Fonte |
60
+ |---|---------------|------|-----------|-------|
61
+ | 1 | | CRUD / Feature / Config | | {{arquivo}} |
62
+
63
+ ### Entidades envolvidas
64
+
65
+ | Entidade | Campos principais | Fonte |
66
+ |----------|-------------------|-------|
67
+ | | | |
68
+
69
+ ### Regras de negócio
70
+
71
+ | ID | Regra | Fonte |
72
+ |----|-------|-------|
73
+ | RN-001 | | {{arquivo}} |
74
+
75
+ ### Jornadas de usuário
76
+
77
+ | # | Jornada | Atores | Fonte |
78
+ |---|---------|--------|-------|
79
+ | 1 | | | |
80
+
81
+ ---
82
+
83
+ ## Fase 2 — {{Nome}} [P1 — Core Business]
84
+
85
+ > **Entregável**: {{O que o usuário pode fazer/ver ao final desta fase}}
86
+ > **Critério de done**: {{Como validar}}
87
+ > **Depende de**: Fase 1
88
+
89
+ ### Funcionalidades
90
+
91
+ | # | Funcionalidade | Tipo | Descrição | Fonte |
92
+ |---|---------------|------|-----------|-------|
93
+ | 1 | | | | |
94
+
95
+ ### Entidades envolvidas
96
+
97
+ | Entidade | Campos principais | Fonte |
98
+ |----------|-------------------|-------|
99
+ | | | |
100
+
101
+ ### Regras de negócio
102
+
103
+ | ID | Regra | Fonte |
104
+ |----|-------|-------|
105
+ | RN-NNN | | |
106
+
107
+ ### Jornadas de usuário
108
+
109
+ | # | Jornada | Atores | Fonte |
110
+ |---|---------|--------|-------|
111
+ | 1 | | | |
112
+
113
+ ---
114
+
115
+ ## Fase 3 — {{Nome}} [P2 — Operacional]
116
+
117
+ > **Entregável**: {{...}}
118
+ > **Critério de done**: {{...}}
119
+ > **Depende de**: Fase 2
120
+
121
+ <!-- Repetir estrutura -->
122
+
123
+ ---
124
+
125
+ ## Fase 4 — {{Nome}} [P3 — Crescimento]
126
+
127
+ > **Entregável**: {{...}}
128
+ > **Critério de done**: {{...}}
129
+ > **Depende de**: Fase 3
130
+
131
+ <!-- Repetir estrutura -->
132
+
133
+ ---
134
+
135
+ ## Visão geral das fases
136
+
137
+ | Fase | Nome | Prioridade | Entregável | Depende de |
138
+ |------|------|-----------|------------|------------|
139
+ | 1 | | P1 | | — |
140
+ | 2 | | P1 | | Fase 1 |
141
+ | 3 | | P2 | | Fase 2 |
142
+ | 4 | | P3 | | Fase 3 |
143
+
144
+ ## Telas/fluxos identificados (por fase)
145
+
146
+ | # | Tela/Fluxo | Fase | Fonte |
147
+ |---|-----------|------|-------|
148
+ | 1 | | | |
149
+
150
+ ---
151
+
152
+ > **Próximo passo**: Criar a feature com `/feature {{FEATURE_NAME}}`
153
+ > O /extract vai gerar o PRD usando este roadmap como referência.
154
+ > O /plan vai organizar tasks por fase de entrega × área.
@@ -1,42 +1,42 @@
1
- ---
2
- nome: "{{NOME}}"
3
- tipo: "{{feature|setup}}"
4
- documento: "{{PRD|TRD}}"
5
- pm_path: "docs/PM/{{NOME}}/"
6
- status: "not_started"
7
- ultima_skill: ""
8
- atualizado_em: ""
9
- ---
10
-
11
- <!--
12
- =============================================================================
13
- INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
14
- =============================================================================
15
-
16
- CAMPOS:
17
- - nome: identificador da feature/setup (ex: feat_cadastro_cliente, setup_projeto)
18
- - tipo: "feature" para /feature, "setup" para /setup-projeto
19
- - documento: "PRD" para features, "TRD" para setup
20
- - pm_path: caminho relativo para a pasta de insumos no PM/
21
- - status: estado atual da pipeline (ver fluxo abaixo)
22
- - ultima_skill: qual skill alterou este arquivo por último
23
- - atualizado_em: data/hora ISO da última atualização
24
-
25
- FLUXO DE STATUS:
26
- not_started → extract_done → approved → design_done → plan_done → dev_in_progress → dev_done → done
27
-
28
- QUEM ATUALIZA:
29
- - /setup-projeto ou /feature: cria o arquivo com status not_started
30
- - /extract: not_started → extract_done
31
- - /design: extract_done → approved → design_done (aprovação via pergunta ao usuário)
32
- - /plan: design_done → plan_done
33
- - /dev: plan_done → dev_in_progress → dev_done
34
- - /merge-delta: dev_done → done (apenas para features, não para setup)
35
-
36
- REGRAS:
37
- - Nunca pular etapas no fluxo de status
38
- - Nunca editar manualmente — apenas skills atualizam este arquivo
39
- - Se status não corresponde ao esperado, a skill deve parar e avisar
40
-
41
- =============================================================================
42
- -->
1
+ ---
2
+ nome: "{{NOME}}"
3
+ tipo: "{{feature|setup}}"
4
+ documento: "{{PRD|TRD}}"
5
+ pm_path: "docs/PM/{{NOME}}/"
6
+ status: "not_started"
7
+ ultima_skill: ""
8
+ atualizado_em: ""
9
+ ---
10
+
11
+ <!--
12
+ =============================================================================
13
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
14
+ =============================================================================
15
+
16
+ CAMPOS:
17
+ - nome: identificador da feature/setup (ex: feat_cadastro_cliente, setup_projeto)
18
+ - tipo: "feature" para /feature, "setup" para /setup-projeto
19
+ - documento: "PRD" para features, "TRD" para setup
20
+ - pm_path: caminho relativo para a pasta de insumos no PM/
21
+ - status: estado atual da pipeline (ver fluxo abaixo)
22
+ - ultima_skill: qual skill alterou este arquivo por último
23
+ - atualizado_em: data/hora ISO da última atualização
24
+
25
+ FLUXO DE STATUS:
26
+ not_started → extract_done → approved → design_done → plan_done → dev_in_progress → dev_done → done
27
+
28
+ QUEM ATUALIZA:
29
+ - /setup-projeto ou /feature: cria o arquivo com status not_started
30
+ - /extract: not_started → extract_done
31
+ - /design: extract_done → approved → design_done (aprovação via pergunta ao usuário)
32
+ - /plan: design_done → plan_done
33
+ - /dev: plan_done → dev_in_progress → dev_done
34
+ - /merge-delta: dev_done → done (apenas para features, não para setup)
35
+
36
+ REGRAS:
37
+ - Nunca pular etapas no fluxo de status
38
+ - Nunca editar manualmente — apenas skills atualizam este arquivo
39
+ - Se status não corresponde ao esperado, a skill deve parar e avisar
40
+
41
+ =============================================================================
42
+ -->
@@ -1,38 +1,38 @@
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 /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/TRD foram preenchidas a partir deste arquivo
17
-
18
- REGRAS:
19
- - Hashes são SHA-256 truncados em 8 caracteres
20
- - Arquivo .gitkeep é sempre ignorado
21
- - Arquivos INALTERADOS aparecem no log mas com seções "—"
22
- - Append-only: nunca remover extrações anteriores do log
23
-
24
- CLASSIFICAÇÕES POSSÍVEIS:
25
- - NOVO: arquivo não existia no log anterior
26
- - MODIFICADO: hash diferente do log anterior
27
- - INALTERADO: hash igual ao log anterior
28
- - NÃO IDENTIFICADO: Reader não conseguiu extrair conteúdo (binário, corrompido, formato desconhecido)
29
- - PARCIAL: Reader extraiu algo mas com limitações (imagem sem OCR, PDF escaneado)
30
-
31
- =============================================================================
32
- -->
33
-
34
- ## Extração 1 — {{ISO_DATETIME}}
35
-
36
- | Arquivo | Hash | Classificação | Status | Seções alimentadas |
37
- |---------|------|---------------|--------|--------------------|
38
- | `{{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 /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/TRD foram preenchidas a partir deste arquivo
17
+
18
+ REGRAS:
19
+ - Hashes são SHA-256 truncados em 8 caracteres
20
+ - Arquivo .gitkeep é sempre ignorado
21
+ - Arquivos INALTERADOS aparecem no log mas com seções "—"
22
+ - Append-only: nunca remover extrações anteriores do log
23
+
24
+ CLASSIFICAÇÕES POSSÍVEIS:
25
+ - NOVO: arquivo não existia no log anterior
26
+ - MODIFICADO: hash diferente do log anterior
27
+ - INALTERADO: hash igual ao log anterior
28
+ - NÃO IDENTIFICADO: Reader não conseguiu extrair conteúdo (binário, corrompido, formato desconhecido)
29
+ - PARCIAL: Reader extraiu algo mas com limitações (imagem sem OCR, PDF escaneado)
30
+
31
+ =============================================================================
32
+ -->
33
+
34
+ ## Extração 1 — {{ISO_DATETIME}}
35
+
36
+ | Arquivo | Hash | Classificação | Status | Seções alimentadas |
37
+ |---------|------|---------------|--------|--------------------|
38
+ | `{{arquivo}}` | {{hash_8}} | NOVO | extraído | §N, §N |
@@ -1,73 +1,73 @@
1
- # projetos.yaml — Manifesto de Repositórios
2
- #
3
- # =============================================================================
4
- # INSTRUÇÕES PARA O AGENTE
5
- # =============================================================================
6
- #
7
- # QUANDO CRIAR: Gerado pelo /design (passo 3, setup) após definir a arquitetura.
8
- # QUEM GERA: Agent Architect (Opus), baseado no TRD §3 (Arquitetura) e §6 (Infra).
9
- #
10
- # COMO GERAR:
11
- # 1. Ler TRD §3 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. Se o repo já existe no GitHub, marcar existing: true
14
- # 4. Se é novo, marcar existing: false (será criado pelo /dev INFRA-001)
15
- #
16
- # REGRAS:
17
- # - Todo serviço identificado no TRD §3 DEVE ter uma entrada
18
- # - O campo `areas` define quais prefixos de task escrevem nesse repo
19
- # - Uma área NÃO pode pertencer a dois repos (mapeamento 1:1)
20
- # - BANCO pode ir junto com api (se usa EF migrations) ou separado (se repo de migrations)
21
- # - O campo `stack` deve ser consistente com docs/Estrutura/Stack.md
22
- # - O `org` é a organização/user do GitHub
23
- # =============================================================================
24
-
25
- # Organização/usuário no GitHub
26
- org: "{{GITHUB_ORG}}"
27
-
28
- # Nome base do projeto (usado como prefixo dos repos)
29
- project: "{{PROJECT_NAME}}"
30
-
31
- # Repositórios
32
- repos:
33
- # Exemplo: API backend
34
- api:
35
- repo: "{{GITHUB_ORG}}/{{PROJECT_NAME}}-api" # nome completo do repo
36
- path: "projetos/api" # path local (relativo à raiz)
37
- existing: false # true = clonar, false = criar
38
- areas: [BACK, BANCO] # áreas de task que escrevem aqui
39
- stack: ".NET 8" # stack principal
40
- branch_prefix: "feature/" # prefixo de branches de feature
41
-
42
- # Exemplo: Worker/background jobs
43
- # worker:
44
- # repo: "{{GITHUB_ORG}}/{{PROJECT_NAME}}-worker"
45
- # path: "projetos/worker"
46
- # existing: false
47
- # areas: [BACK] # worker tem tasks BACK separadas
48
- # stack: ".NET 8"
49
- # branch_prefix: "feature/"
50
-
51
- # Exemplo: Frontend web
52
- # web:
53
- # repo: "{{GITHUB_ORG}}/{{PROJECT_NAME}}-web"
54
- # path: "projetos/web"
55
- # existing: false
56
- # areas: [FRONT]
57
- # stack: "React"
58
- # branch_prefix: "feature/"
59
-
60
- # Exemplo: App mobile
61
- # mobile:
62
- # repo: "{{GITHUB_ORG}}/{{PROJECT_NAME}}-mobile"
63
- # path: "projetos/mobile"
64
- # existing: false
65
- # areas: [MOBILE]
66
- # stack: "React Native"
67
- # branch_prefix: "feature/"
68
-
69
- # Notas:
70
- # - projetos/ está no .gitignore do projeto-base (contém repos independentes)
71
- # - Cada repo tem seu próprio .git, CI/CD, e deploy
72
- # - O projeto-base é o "cérebro" — specs, docs, pipeline
73
- # - 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 /design (passo 3, setup) após definir a arquitetura.
8
+ # QUEM GERA: Agent Architect (Opus), baseado no TRD §3 (Arquitetura) e §6 (Infra).
9
+ #
10
+ # COMO GERAR:
11
+ # 1. Ler TRD §3 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. Se o repo já existe no GitHub, marcar existing: true
14
+ # 4. Se é novo, marcar existing: false (será criado pelo /dev INFRA-001)
15
+ #
16
+ # REGRAS:
17
+ # - Todo serviço identificado no TRD §3 DEVE ter uma entrada
18
+ # - O campo `areas` define quais prefixos de task escrevem nesse repo
19
+ # - Uma área NÃO pode pertencer a dois repos (mapeamento 1:1)
20
+ # - BANCO pode ir junto com api (se usa EF migrations) ou separado (se repo de migrations)
21
+ # - O campo `stack` deve ser consistente com docs/Estrutura/Stack.md
22
+ # - O `org` é a organização/user do GitHub
23
+ # =============================================================================
24
+
25
+ # Organização/usuário no GitHub
26
+ org: "{{GITHUB_ORG}}"
27
+
28
+ # Nome base do projeto (usado como prefixo dos repos)
29
+ project: "{{PROJECT_NAME}}"
30
+
31
+ # Repositórios
32
+ repos:
33
+ # Exemplo: API backend
34
+ api:
35
+ repo: "{{GITHUB_ORG}}/{{PROJECT_NAME}}-api" # nome completo do repo
36
+ path: "projetos/api" # path local (relativo à raiz)
37
+ existing: false # true = clonar, false = criar
38
+ areas: [BACK, BANCO] # áreas de task que escrevem aqui
39
+ stack: ".NET 8" # stack principal
40
+ branch_prefix: "feature/" # prefixo de branches de feature
41
+
42
+ # Exemplo: Worker/background jobs
43
+ # worker:
44
+ # repo: "{{GITHUB_ORG}}/{{PROJECT_NAME}}-worker"
45
+ # path: "projetos/worker"
46
+ # existing: false
47
+ # areas: [BACK] # worker tem tasks BACK separadas
48
+ # stack: ".NET 8"
49
+ # branch_prefix: "feature/"
50
+
51
+ # Exemplo: Frontend web
52
+ # web:
53
+ # repo: "{{GITHUB_ORG}}/{{PROJECT_NAME}}-web"
54
+ # path: "projetos/web"
55
+ # existing: false
56
+ # areas: [FRONT]
57
+ # stack: "React"
58
+ # branch_prefix: "feature/"
59
+
60
+ # Exemplo: App mobile
61
+ # mobile:
62
+ # repo: "{{GITHUB_ORG}}/{{PROJECT_NAME}}-mobile"
63
+ # path: "projetos/mobile"
64
+ # existing: false
65
+ # areas: [MOBILE]
66
+ # stack: "React Native"
67
+ # branch_prefix: "feature/"
68
+
69
+ # Notas:
70
+ # - projetos/ está no .gitignore do projeto-base (contém repos independentes)
71
+ # - Cada repo tem seu próprio .git, CI/CD, e deploy
72
+ # - O projeto-base é o "cérebro" — specs, docs, pipeline
73
+ # - Os repos em projetos/ são o "corpo" — código implementado