spec-first-copilot 0.3.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.
- package/README.md +148 -148
- package/bin/cli.js +52 -52
- package/lib/init.js +89 -89
- package/package.json +24 -23
- package/templates/.ai/memory/napkin.md +68 -68
- package/templates/.github/agents/backend-coder.md +215 -215
- package/templates/.github/agents/db-coder.md +165 -165
- package/templates/.github/agents/doc-writer.md +51 -51
- package/templates/.github/agents/frontend-coder.md +222 -222
- package/templates/.github/agents/infra-coder.md +341 -341
- package/templates/.github/agents/reviewer.md +99 -99
- package/templates/.github/agents/security-reviewer.md +153 -153
- package/templates/.github/copilot-instructions.md +175 -176
- package/templates/.github/instructions/docs.instructions.md +123 -123
- package/templates/.github/instructions/sensitive-files.instructions.md +32 -32
- package/templates/.github/skills/sf-design/SKILL.md +181 -181
- package/templates/.github/skills/sf-dev/SKILL.md +349 -326
- package/templates/.github/skills/sf-extract/SKILL.md +284 -284
- package/templates/.github/skills/sf-feature/SKILL.md +130 -130
- package/templates/.github/skills/sf-merge-delta/SKILL.md +142 -142
- package/templates/.github/skills/sf-plan/SKILL.md +178 -178
- package/templates/.github/skills/{sf-pausar → sf-session-finish}/SKILL.md +120 -120
- package/templates/.github/skills/sf-setup-projeto/SKILL.md +123 -123
- package/templates/docs/Desenvolvimento/rules.md +229 -229
- package/templates/docs/_templates/estrutura/ADRs.template.md +91 -91
- package/templates/docs/_templates/estrutura/API.template.md +144 -144
- package/templates/docs/_templates/estrutura/Arquitetura.template.md +82 -82
- package/templates/docs/_templates/estrutura/Infraestrutura.template.md +104 -104
- package/templates/docs/_templates/estrutura/Modelo_Dados.template.md +99 -99
- package/templates/docs/_templates/estrutura/Seguranca.template.md +138 -138
- package/templates/docs/_templates/estrutura/Stack.template.md +78 -78
- package/templates/docs/_templates/estrutura/Visao.template.md +82 -82
- package/templates/docs/_templates/feature/Progresso.template.md +136 -136
- package/templates/docs/_templates/feature/backlog-extraido.template.md +154 -154
- package/templates/docs/_templates/feature/context.template.md +42 -42
- package/templates/docs/_templates/feature/extract-log.template.md +38 -38
- package/templates/docs/_templates/feature/projetos.template.yaml +73 -73
- package/templates/docs/_templates/global/progresso_global.template.md +57 -57
|
@@ -1,176 +1,175 @@
|
|
|
1
|
-
# Copilot Instructions — Projeto
|
|
2
|
-
|
|
3
|
-
> Regras globais que o agente deve seguir em TODAS as interações neste projeto.
|
|
4
|
-
> Este arquivo é lido automaticamente no início de cada sessão.
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## Inicialização (executar no início de cada sessão)
|
|
9
|
-
|
|
10
|
-
### 1. Verificar dependências do workflow
|
|
11
|
-
|
|
12
|
-
| Dependência | Caminho | Se não existir |
|
|
13
|
-
|-------------|---------|----------------|
|
|
14
|
-
| Napkin (memória) | `.ai/memory/napkin.md` | Criar com formato padrão: seções Decisões, Padrões, Armadilhas, Preferências (máx 10 itens/seção) |
|
|
15
|
-
| Templates | `docs/_templates/` | ERRO — projeto não está configurado |
|
|
16
|
-
| Skills | `.github/skills/` | ERRO — projeto não está configurado |
|
|
17
|
-
| Agents | `.github/agents/` | ERRO — projeto não está configurado |
|
|
18
|
-
| Rules | `docs/Desenvolvimento/rules.md` | ERRO — projeto não está configurado |
|
|
19
|
-
| Retomada | `docs/Desenvolvimento/retomada.md` | OK — primeira sessão |
|
|
20
|
-
|
|
21
|
-
### 2. Validar acesso a todas skills
|
|
22
|
-
|
|
23
|
-
Verificar que TODAS as 9 skills estão acessíveis:
|
|
24
|
-
|
|
25
|
-
| Skill | Caminho |
|
|
26
|
-
|-------|---------|
|
|
27
|
-
| `/sf-setup-projeto` | `.github/skills/sf-setup-projeto/SKILL.md` |
|
|
28
|
-
| `/sf-feature` | `.github/skills/sf-feature/SKILL.md` |
|
|
29
|
-
| `/sf-extract` | `.github/skills/sf-extract/SKILL.md` |
|
|
30
|
-
| `/sf-design` | `.github/skills/sf-design/SKILL.md` |
|
|
31
|
-
| `/sf-plan` | `.github/skills/sf-plan/SKILL.md` |
|
|
32
|
-
| `/sf-dev` | `.github/skills/sf-dev/SKILL.md` |
|
|
33
|
-
| `/sf-merge-delta` | `.github/skills/sf-merge-delta/SKILL.md` |
|
|
34
|
-
| `/sf-
|
|
35
|
-
| `/sf-discovery` | `.github/skills/sf-discovery/SKILL.md` |
|
|
36
|
-
|
|
37
|
-
Se alguma skill não for encontrada → avisar o usuário.
|
|
38
|
-
|
|
39
|
-
### 3. Carregar contexto
|
|
40
|
-
|
|
41
|
-
1. Ler `.ai/memory/napkin.md` — decisões e padrões acumulados
|
|
42
|
-
2. Ler `docs/Desenvolvimento/retomada.md` (se existir) — ponto de retomada da última sessão
|
|
43
|
-
3. Ler `docs/Estrutura/` (se existir) — contexto global do projeto
|
|
44
|
-
4. Ler `docs/Desenvolvimento/rules.md` — regras de desenvolvimento
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## Identidade do Projeto
|
|
49
|
-
|
|
50
|
-
Este é um projeto que utiliza desenvolvimento **spec-first** assistido por IA.
|
|
51
|
-
|
|
52
|
-
### Arquitetura: Projeto-base vs Repos de código
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
ESTE REPO (projeto-base) = ORQUESTRADOR
|
|
56
|
-
├── docs/ ← specs, PRDs, SDDs, tasks (fonte de verdade)
|
|
57
|
-
├── projetos.yaml ← manifesto de repos
|
|
58
|
-
└── projetos/ ← repos de código (gitignored, cada um com .git próprio)
|
|
59
|
-
├── api/ ← repo: org/projeto-api
|
|
60
|
-
├── web/ ← repo: org/projeto-web
|
|
61
|
-
└── worker/ ← repo: org/projeto-worker
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
**Regra clara**:
|
|
65
|
-
- **Specs, docs, tasks, progresso** → ficam NESTE repo (projeto-base)
|
|
66
|
-
- **Código, testes, Dockerfiles, CI** → ficam nos repos em `projetos/`
|
|
67
|
-
- **Commits de código** → nos repos do serviço, NUNCA no projeto-base
|
|
68
|
-
- **Git workflow (branches, PRs, merge)** → se aplica aos repos em `projetos/`
|
|
69
|
-
Nenhum código é escrito sem especificação aprovada (SDD).
|
|
70
|
-
|
|
71
|
-
## Pipeline do Workflow
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
docs/PM/ (qualquer arquivo)
|
|
75
|
-
↓ /sf-setup-projeto (uma vez) ou /sf-feature (por feature)
|
|
76
|
-
/sf-discovery → análise profunda dos insumos (RECOMENDADO, opcional)
|
|
77
|
-
↓
|
|
78
|
-
/sf-extract → PRD ou TRD (checkpoint — usuário revisa e aprova)
|
|
79
|
-
↓
|
|
80
|
-
/sf-design → SDD + projetos.yaml + docs/Estrutura/ (setup)
|
|
81
|
-
↓
|
|
82
|
-
/sf-plan → *_tasks.md + Progresso.md (tasks por fase × área)
|
|
83
|
-
↓
|
|
84
|
-
/sf-dev → código nos repos (Security Review pós-dev)
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
| `/sf-
|
|
94
|
-
| `/sf-
|
|
95
|
-
| `/sf-
|
|
96
|
-
| `/sf-
|
|
97
|
-
| `/sf-
|
|
98
|
-
| `/sf-
|
|
99
|
-
| `/sf-
|
|
100
|
-
| `/sf-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
|
108
|
-
|
|
|
109
|
-
|
|
|
110
|
-
|
|
|
111
|
-
|
|
|
112
|
-
| Reviewer | Todas | — | `.github/agents/reviewer.md` |
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
├──
|
|
141
|
-
│
|
|
142
|
-
|
|
143
|
-
├──
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
- **
|
|
153
|
-
- **
|
|
154
|
-
- **
|
|
155
|
-
- **
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
-
|
|
161
|
-
-
|
|
162
|
-
-
|
|
163
|
-
-
|
|
164
|
-
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
|
172
|
-
|
|
|
173
|
-
|
|
|
174
|
-
|
|
|
175
|
-
|
|
|
176
|
-
| Estrutura do sistema | `docs/Estrutura/*.md` (após setup) |
|
|
1
|
+
# Copilot Instructions — Projeto
|
|
2
|
+
|
|
3
|
+
> Regras globais que o agente deve seguir em TODAS as interações neste projeto.
|
|
4
|
+
> Este arquivo é lido automaticamente no início de cada sessão.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Inicialização (executar no início de cada sessão)
|
|
9
|
+
|
|
10
|
+
### 1. Verificar dependências do workflow
|
|
11
|
+
|
|
12
|
+
| Dependência | Caminho | Se não existir |
|
|
13
|
+
|-------------|---------|----------------|
|
|
14
|
+
| Napkin (memória) | `.ai/memory/napkin.md` | Criar com formato padrão: seções Decisões, Padrões, Armadilhas, Preferências (máx 10 itens/seção) |
|
|
15
|
+
| Templates | `docs/_templates/` | ERRO — projeto não está configurado |
|
|
16
|
+
| Skills | `.github/skills/` | ERRO — projeto não está configurado |
|
|
17
|
+
| Agents | `.github/agents/` | ERRO — projeto não está configurado |
|
|
18
|
+
| Rules | `docs/Desenvolvimento/rules.md` | ERRO — projeto não está configurado |
|
|
19
|
+
| Retomada | `docs/Desenvolvimento/retomada.md` | OK — primeira sessão |
|
|
20
|
+
|
|
21
|
+
### 2. Validar acesso a todas skills
|
|
22
|
+
|
|
23
|
+
Verificar que TODAS as 9 skills estão acessíveis:
|
|
24
|
+
|
|
25
|
+
| Skill | Caminho |
|
|
26
|
+
|-------|---------|
|
|
27
|
+
| `/sf-setup-projeto` | `.github/skills/sf-setup-projeto/SKILL.md` |
|
|
28
|
+
| `/sf-feature` | `.github/skills/sf-feature/SKILL.md` |
|
|
29
|
+
| `/sf-extract` | `.github/skills/sf-extract/SKILL.md` |
|
|
30
|
+
| `/sf-design` | `.github/skills/sf-design/SKILL.md` |
|
|
31
|
+
| `/sf-plan` | `.github/skills/sf-plan/SKILL.md` |
|
|
32
|
+
| `/sf-dev` | `.github/skills/sf-dev/SKILL.md` |
|
|
33
|
+
| `/sf-merge-delta` | `.github/skills/sf-merge-delta/SKILL.md` |
|
|
34
|
+
| `/sf-session-finish` | `.github/skills/sf-session-finish/SKILL.md` |
|
|
35
|
+
| `/sf-discovery` | `.github/skills/sf-discovery/SKILL.md` |
|
|
36
|
+
|
|
37
|
+
Se alguma skill não for encontrada → avisar o usuário.
|
|
38
|
+
|
|
39
|
+
### 3. Carregar contexto
|
|
40
|
+
|
|
41
|
+
1. Ler `.ai/memory/napkin.md` — decisões e padrões acumulados
|
|
42
|
+
2. Ler `docs/Desenvolvimento/retomada.md` (se existir) — ponto de retomada da última sessão
|
|
43
|
+
3. Ler `docs/Estrutura/` (se existir) — contexto global do projeto
|
|
44
|
+
4. Ler `docs/Desenvolvimento/rules.md` — regras de desenvolvimento
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Identidade do Projeto
|
|
49
|
+
|
|
50
|
+
Este é um projeto que utiliza desenvolvimento **spec-first** assistido por IA.
|
|
51
|
+
|
|
52
|
+
### Arquitetura: Projeto-base vs Repos de código
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
ESTE REPO (projeto-base) = ORQUESTRADOR
|
|
56
|
+
├── docs/ ← specs, PRDs, SDDs, tasks (fonte de verdade)
|
|
57
|
+
├── projetos.yaml ← manifesto de repos
|
|
58
|
+
└── projetos/ ← repos de código (gitignored, cada um com .git próprio)
|
|
59
|
+
├── api/ ← repo: org/projeto-api
|
|
60
|
+
├── web/ ← repo: org/projeto-web
|
|
61
|
+
└── worker/ ← repo: org/projeto-worker
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Regra clara**:
|
|
65
|
+
- **Specs, docs, tasks, progresso** → ficam NESTE repo (projeto-base)
|
|
66
|
+
- **Código, testes, Dockerfiles, CI** → ficam nos repos em `projetos/`
|
|
67
|
+
- **Commits de código** → nos repos do serviço, NUNCA no projeto-base
|
|
68
|
+
- **Git workflow (branches, PRs, merge)** → se aplica aos repos em `projetos/`
|
|
69
|
+
Nenhum código é escrito sem especificação aprovada (SDD).
|
|
70
|
+
|
|
71
|
+
## Pipeline do Workflow
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
docs/PM/ (qualquer arquivo)
|
|
75
|
+
↓ /sf-setup-projeto (uma vez) ou /sf-feature (por feature)
|
|
76
|
+
/sf-discovery → análise profunda dos insumos (RECOMENDADO, opcional)
|
|
77
|
+
↓
|
|
78
|
+
/sf-extract → PRD ou TRD (checkpoint — usuário revisa e aprova)
|
|
79
|
+
↓
|
|
80
|
+
/sf-design → SDD + projetos.yaml + docs/Estrutura/ (setup)
|
|
81
|
+
↓
|
|
82
|
+
/sf-plan → *_tasks.md + Progresso.md (tasks por fase × área)
|
|
83
|
+
↓
|
|
84
|
+
/sf-dev → código nos repos (Security Review pós-dev)
|
|
85
|
+
→ merge-delta automático em features (aplica SDD §11 em docs/Estrutura/)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Skills disponíveis
|
|
89
|
+
|
|
90
|
+
| Skill | Tipo | O que faz |
|
|
91
|
+
|-------|------|-----------|
|
|
92
|
+
| `/sf-setup-projeto` | Orquestrador | Bootstrap: cria .context.md, chama /sf-extract, para no checkpoint. Roda UMA vez |
|
|
93
|
+
| `/sf-feature <nome>` | Orquestrador | Feature: cria .context.md tipo PRD, chama /sf-extract, para no checkpoint |
|
|
94
|
+
| `/sf-extract <nome>` | Atômica | Lê docs/PM/{nome}/ → gera PRD ou TRD. Re-executável para novos insumos |
|
|
95
|
+
| `/sf-design <nome>` | Atômica | Pergunta aprovação → gera SDD a partir do PRD/TRD |
|
|
96
|
+
| `/sf-plan <nome>` | Atômica | Lê SDD → gera tasks por área + Progresso.md |
|
|
97
|
+
| `/sf-dev <nome>` | Atômica | Implementa tasks com loop (implement → test → review). Agents por área. Merge-delta automático em features |
|
|
98
|
+
| `/sf-merge-delta <nome>` | Atômica | Aplica SDD §11 Delta Specs em docs/Estrutura/ (chamado automaticamente pelo /sf-dev, re-executável manualmente) |
|
|
99
|
+
| `/sf-session-finish` | Utilitária | Encerra sessão: salva estado, atualiza napkin, gera retomada.md |
|
|
100
|
+
| `/sf-discovery` | Utilitária | Análise profunda de sistemas, arquiteturas e documentações |
|
|
101
|
+
|
|
102
|
+
## Agents especializados (usados pelo /dev)
|
|
103
|
+
|
|
104
|
+
| Agent | Área | Stack padrão | Perfil |
|
|
105
|
+
|-------|------|-------------|--------|
|
|
106
|
+
| Backend Coder | BACK | .NET 8 / C# | `.github/agents/backend-coder.md` |
|
|
107
|
+
| Frontend Coder | FRONT | React + Fusion | `.github/agents/frontend-coder.md` |
|
|
108
|
+
| DB Coder | BANCO | PostgreSQL 16 | `.github/agents/db-coder.md` |
|
|
109
|
+
| Infra Coder | INFRA | Docker | `.github/agents/infra-coder.md` |
|
|
110
|
+
| Doc Writer | DOC | — | `.github/agents/doc-writer.md` |
|
|
111
|
+
| Reviewer | Todas | — | `.github/agents/reviewer.md` |
|
|
112
|
+
| Security Reviewer | Todas | — | `.github/agents/security-reviewer.md` |
|
|
113
|
+
|
|
114
|
+
## Estado da pipeline (`.context.md`)
|
|
115
|
+
|
|
116
|
+
Cada feature/setup tem um `.context.md` em `docs/Desenvolvimento/{nome}/` que controla o fluxo:
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
not_started → extract_done → approved → design_done → plan_done → dev_in_progress → dev_done → done
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Antes de executar qualquer skill, verificar o status no `.context.md`. Cada skill só avança se o status anterior está correto.
|
|
123
|
+
|
|
124
|
+
## Regras Invioláveis
|
|
125
|
+
|
|
126
|
+
1. **Spec-first**: NUNCA gerar código sem SDD aprovado
|
|
127
|
+
2. **PM é sagrado**: NUNCA modificar arquivos em `docs/PM/`
|
|
128
|
+
3. **Extração rígida**: categorias fixas do template, sem texto narrativo, ambiguidades são BLOQUEANTES
|
|
129
|
+
4. **SDD é auto-contido**: coder lê APENAS SDD + task, NUNCA PRD/PM diretamente
|
|
130
|
+
5. **Memória ativa**: ler napkin.md no início, atualizar ao descobrir padrões/armadilhas
|
|
131
|
+
6. **Progresso atualizado**: atualizar Progresso.md ao concluir cada task
|
|
132
|
+
7. **Delta Specs**: todo SDD tem §11 ADDED/MODIFIED/REMOVED — obrigatório
|
|
133
|
+
8. **Testes junto com código**: implementar e testar na mesma task, não separar
|
|
134
|
+
|
|
135
|
+
## Estrutura de Documentação
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
docs/
|
|
139
|
+
├── PM/ ← Insumos brutos (QUALQUER formato — nunca modificar)
|
|
140
|
+
│ ├── setup_projeto/ ← Insumos de bootstrap
|
|
141
|
+
│ └── feat_*/ ← Insumos por feature
|
|
142
|
+
├── _templates/ ← 16 templates (feature/7 + estrutura/8 + global/1)
|
|
143
|
+
├── Estrutura/ ← Retrato global do projeto (gerado por /setup-projeto via tasks DOC)
|
|
144
|
+
└── Desenvolvimento/ ← Artefatos por feature
|
|
145
|
+
├── rules.md ← Regras de desenvolvimento
|
|
146
|
+
└── {nome}/ ← PRD/TRD, SDD, *_tasks.md, Progresso.md, .context.md, .extract-log.md
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Convenções
|
|
150
|
+
|
|
151
|
+
- **Pastas**: `feat_nome`, `bug_nome`, `task_nome` (snake_case com prefixo)
|
|
152
|
+
- **Task IDs**: `AREA-NNN` (BANCO-001, BACK-001, FRONT-001)
|
|
153
|
+
- **Regras de negócio**: `RN-NNN` (IDs estáveis, nunca renumerar)
|
|
154
|
+
- **Commits**: `tipo(TASK-ID): descrição` (feat, fix, refactor, test, docs, chore)
|
|
155
|
+
- **Branches**: `feature/feat_nome`, `bugfix/bug_nome`, `task/task_nome`
|
|
156
|
+
|
|
157
|
+
## Quando Parar e Perguntar
|
|
158
|
+
|
|
159
|
+
- `docs/PM/{nome}/` vazio ou inexistente → PARAR
|
|
160
|
+
- Ambiguidade na extração → listar como pergunta BLOQUEANTE, PARAR
|
|
161
|
+
- `.context.md` com status incompatível com a skill → PARAR, informar status atual
|
|
162
|
+
- Task com dependência não concluída → avisar, não pular
|
|
163
|
+
- Dúvida sobre regra de negócio → perguntar, NUNCA assumir
|
|
164
|
+
- Quality gate reprovado 3x → escalar pro usuário
|
|
165
|
+
|
|
166
|
+
## Referências
|
|
167
|
+
|
|
168
|
+
| Doc | Onde |
|
|
169
|
+
|-----|------|
|
|
170
|
+
| Rules de dev | `docs/Desenvolvimento/rules.md` |
|
|
171
|
+
| Memória | `.ai/memory/napkin.md` |
|
|
172
|
+
| Skills | `.github/skills/*.md` |
|
|
173
|
+
| Agents | `.github/agents/*.md` |
|
|
174
|
+
| Templates | `docs/_templates/` |
|
|
175
|
+
| Estrutura do sistema | `docs/Estrutura/*.md` (após setup) |
|
|
@@ -1,123 +1,123 @@
|
|
|
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
|
-
/setup-projeto → /extract → /design → /plan → /dev → /merge-delta
|
|
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 feature/setup 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
|
-
- **Aprovação** acontece no início do `/design` (skill pergunta ao usuário)
|
|
26
|
-
- Antes de executar qualquer skill, verificar status no `.context.md`
|
|
27
|
-
|
|
28
|
-
## Extração (/extract)
|
|
29
|
-
|
|
30
|
-
Cada tipo de projeto tem seu documento de extração:
|
|
31
|
-
|
|
32
|
-
| Comando | Documento | Template | Foco |
|
|
33
|
-
|---------|----------|---------|------|
|
|
34
|
-
| `/setup-projeto` | TRD.md | `_templates/feature/TRD.template.md` | Stack, arquitetura, infra, modelo base |
|
|
35
|
-
| `/feature` | PRD.md | `_templates/feature/PRD.template.md` | Regras de negócio, jornadas, telas |
|
|
36
|
-
|
|
37
|
-
### Multi-agent no /extract
|
|
38
|
-
|
|
39
|
-
| Agente | Modelo | Papel |
|
|
40
|
-
|--------|--------|-------|
|
|
41
|
-
| Reader (1 por arquivo) | Sonnet | Lê e cataloga 1 arquivo por vez, em paralelo |
|
|
42
|
-
| Analyzer | Opus | Cruza fontes, detecta gaps/contradições, gera documento final |
|
|
43
|
-
|
|
44
|
-
### Regras da extração
|
|
45
|
-
|
|
46
|
-
- Ler TODOS arquivos em `docs/PM/{nome}/` (qualquer formato: .md, .txt, .sql, .html, .xml, .csv, .png, .pdf)
|
|
47
|
-
- Categorias FIXAS do template — não inventar seções novas
|
|
48
|
-
- Regras de negócio com IDs únicos e estáveis (RN-001, RN-002 — nunca renumerar)
|
|
49
|
-
- Ambiguidades = BLOQUEANTES (workflow para até responder)
|
|
50
|
-
- Nunca INFERIR regra de negócio — se não está explícito, é ambiguidade
|
|
51
|
-
- Contradições entre arquivos → ambiguidade citando ambos
|
|
52
|
-
- Rastreabilidade obrigatória: cada informação aponta pro arquivo fonte
|
|
53
|
-
- Arquivo não identificável → registrar como NÃO IDENTIFICADO no extract-log, gerar ambiguidade
|
|
54
|
-
- Gerar `.extract-log.md` com hash SHA-256 (8 chars) por arquivo
|
|
55
|
-
|
|
56
|
-
### Re-extração
|
|
57
|
-
|
|
58
|
-
- Compara hashes com `.extract-log.md` existente → NOVO / MODIFICADO / INALTERADO
|
|
59
|
-
- Merge ADITIVO (nunca remove info de arquivos inalterados)
|
|
60
|
-
- Novas regras continuam sequência de IDs (se último era RN-005, próximo é RN-006)
|
|
61
|
-
|
|
62
|
-
## Design (/design)
|
|
63
|
-
|
|
64
|
-
1. Verificar aprovação do PRD/TRD (perguntar ao usuário)
|
|
65
|
-
2. Verificar ambiguidades — todas devem estar respondidas
|
|
66
|
-
3. Ler PRD/TRD + `docs/Estrutura/` + `rules.md`
|
|
67
|
-
4. Gerar SDD usando `_templates/feature/sdd.template.md`
|
|
68
|
-
5. SDD deve ser **auto-contido** — coder lê APENAS SDD + task, nada mais
|
|
69
|
-
6. Toda regra referencia seção do PRD/TRD (rastreabilidade)
|
|
70
|
-
7. §9 Estratégia de Testes: definir framework, estrutura, CAs mapeados a testes
|
|
71
|
-
8. §11 Delta Specs: obrigatório (ADDED/MODIFIED/REMOVED)
|
|
72
|
-
9. Seções N/A permitidas em setup (§4-§8 podem ser N/A)
|
|
73
|
-
|
|
74
|
-
## Planejamento (/plan)
|
|
75
|
-
|
|
76
|
-
1. Ler SDD completo + `docs/Estrutura/` + `rules.md`
|
|
77
|
-
2. Áreas são DINÂMICAS — determinadas pelo SDD, não pré-definidas
|
|
78
|
-
3. Para cada área → gerar `{area}_tasks.md` usando `_templates/feature/tasks.template.md`
|
|
79
|
-
4. Tasks em fases sequenciais com prioridade P1/P2/P3
|
|
80
|
-
5. Cada task: ID (AREA-NNN), título, tamanho (S/M/L), arquivos, ref SDD §N, depende, testes
|
|
81
|
-
6. Gerar `Progresso.md` com ordem de execução e paralelismos
|
|
82
|
-
7. Em setup: área DOC obrigatória (8 tasks, 1 por doc de Estrutura)
|
|
83
|
-
|
|
84
|
-
## Desenvolvimento (/dev)
|
|
85
|
-
|
|
86
|
-
### Agents por área (perfis em `.github/agents/`)
|
|
87
|
-
|
|
88
|
-
| Área | Agente | Stack padrão |
|
|
89
|
-
|------|--------|-------------|
|
|
90
|
-
| BANCO | DB Coder | PostgreSQL 16 |
|
|
91
|
-
| BACK | Backend Coder | .NET 8 / C# |
|
|
92
|
-
| FRONT | Frontend Coder | React + Fusion |
|
|
93
|
-
| INFRA | Infra Coder | Docker |
|
|
94
|
-
| DOC | Doc Writer | — |
|
|
95
|
-
| Todas | Reviewer | — |
|
|
96
|
-
|
|
97
|
-
### Loop de desenvolvimento
|
|
98
|
-
|
|
99
|
-
```
|
|
100
|
-
Por task: implement → test unit → fix → lint → commit → review → fix → review (max 3)
|
|
101
|
-
Por fase: integration tests → fix
|
|
102
|
-
Por feature: E2E tests (CAs) → fix → dev_done
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### Regras
|
|
106
|
-
|
|
107
|
-
- Implement + testes na mesma task (não separar)
|
|
108
|
-
- Agente selecionado pelo prefixo: BACK-* → Backend Coder
|
|
109
|
-
- Modelo por tamanho: S/M → Sonnet, L → Opus
|
|
110
|
-
- 1 commit por task: `tipo(TASK-ID): descrição`
|
|
111
|
-
- Quality gate validado pelo Reviewer após cada task
|
|
112
|
-
- Limite de retry: 3 reprovações → escalar pro usuário
|
|
113
|
-
|
|
114
|
-
## /setup-projeto vs /feature
|
|
115
|
-
|
|
116
|
-
| Aspecto | /setup-projeto | /feature |
|
|
117
|
-
|---------|---------------|----------|
|
|
118
|
-
| Input | `docs/PM/setup_projeto/` | `docs/PM/feat_nome/` |
|
|
119
|
-
| Extração | TRD.md (técnico) | PRD.md (produto) |
|
|
120
|
-
| SDD + Tasks | Sim (infra + DOC tasks) | Sim (feature tasks) |
|
|
121
|
-
| Gera docs/Estrutura/ | Via tasks DOC | Não — atualiza via /merge-delta |
|
|
122
|
-
| /merge-delta | Não se aplica | Obrigatório após /dev |
|
|
123
|
-
| Pré-requisito | Nenhum (primeiro comando) | docs/Estrutura/ deve existir |
|
|
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
|
+
/setup-projeto → /extract → /design → /plan → /dev → /merge-delta
|
|
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 feature/setup 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
|
+
- **Aprovação** acontece no início do `/design` (skill pergunta ao usuário)
|
|
26
|
+
- Antes de executar qualquer skill, verificar status no `.context.md`
|
|
27
|
+
|
|
28
|
+
## Extração (/extract)
|
|
29
|
+
|
|
30
|
+
Cada tipo de projeto tem seu documento de extração:
|
|
31
|
+
|
|
32
|
+
| Comando | Documento | Template | Foco |
|
|
33
|
+
|---------|----------|---------|------|
|
|
34
|
+
| `/setup-projeto` | TRD.md | `_templates/feature/TRD.template.md` | Stack, arquitetura, infra, modelo base |
|
|
35
|
+
| `/feature` | PRD.md | `_templates/feature/PRD.template.md` | Regras de negócio, jornadas, telas |
|
|
36
|
+
|
|
37
|
+
### Multi-agent no /extract
|
|
38
|
+
|
|
39
|
+
| Agente | Modelo | Papel |
|
|
40
|
+
|--------|--------|-------|
|
|
41
|
+
| Reader (1 por arquivo) | Sonnet | Lê e cataloga 1 arquivo por vez, em paralelo |
|
|
42
|
+
| Analyzer | Opus | Cruza fontes, detecta gaps/contradições, gera documento final |
|
|
43
|
+
|
|
44
|
+
### Regras da extração
|
|
45
|
+
|
|
46
|
+
- Ler TODOS arquivos em `docs/PM/{nome}/` (qualquer formato: .md, .txt, .sql, .html, .xml, .csv, .png, .pdf)
|
|
47
|
+
- Categorias FIXAS do template — não inventar seções novas
|
|
48
|
+
- Regras de negócio com IDs únicos e estáveis (RN-001, RN-002 — nunca renumerar)
|
|
49
|
+
- Ambiguidades = BLOQUEANTES (workflow para até responder)
|
|
50
|
+
- Nunca INFERIR regra de negócio — se não está explícito, é ambiguidade
|
|
51
|
+
- Contradições entre arquivos → ambiguidade citando ambos
|
|
52
|
+
- Rastreabilidade obrigatória: cada informação aponta pro arquivo fonte
|
|
53
|
+
- Arquivo não identificável → registrar como NÃO IDENTIFICADO no extract-log, gerar ambiguidade
|
|
54
|
+
- Gerar `.extract-log.md` com hash SHA-256 (8 chars) por arquivo
|
|
55
|
+
|
|
56
|
+
### Re-extração
|
|
57
|
+
|
|
58
|
+
- Compara hashes com `.extract-log.md` existente → NOVO / MODIFICADO / INALTERADO
|
|
59
|
+
- Merge ADITIVO (nunca remove info de arquivos inalterados)
|
|
60
|
+
- Novas regras continuam sequência de IDs (se último era RN-005, próximo é RN-006)
|
|
61
|
+
|
|
62
|
+
## Design (/design)
|
|
63
|
+
|
|
64
|
+
1. Verificar aprovação do PRD/TRD (perguntar ao usuário)
|
|
65
|
+
2. Verificar ambiguidades — todas devem estar respondidas
|
|
66
|
+
3. Ler PRD/TRD + `docs/Estrutura/` + `rules.md`
|
|
67
|
+
4. Gerar SDD usando `_templates/feature/sdd.template.md`
|
|
68
|
+
5. SDD deve ser **auto-contido** — coder lê APENAS SDD + task, nada mais
|
|
69
|
+
6. Toda regra referencia seção do PRD/TRD (rastreabilidade)
|
|
70
|
+
7. §9 Estratégia de Testes: definir framework, estrutura, CAs mapeados a testes
|
|
71
|
+
8. §11 Delta Specs: obrigatório (ADDED/MODIFIED/REMOVED)
|
|
72
|
+
9. Seções N/A permitidas em setup (§4-§8 podem ser N/A)
|
|
73
|
+
|
|
74
|
+
## Planejamento (/plan)
|
|
75
|
+
|
|
76
|
+
1. Ler SDD completo + `docs/Estrutura/` + `rules.md`
|
|
77
|
+
2. Áreas são DINÂMICAS — determinadas pelo SDD, não pré-definidas
|
|
78
|
+
3. Para cada área → gerar `{area}_tasks.md` usando `_templates/feature/tasks.template.md`
|
|
79
|
+
4. Tasks em fases sequenciais com prioridade P1/P2/P3
|
|
80
|
+
5. Cada task: ID (AREA-NNN), título, tamanho (S/M/L), arquivos, ref SDD §N, depende, testes
|
|
81
|
+
6. Gerar `Progresso.md` com ordem de execução e paralelismos
|
|
82
|
+
7. Em setup: área DOC obrigatória (8 tasks, 1 por doc de Estrutura)
|
|
83
|
+
|
|
84
|
+
## Desenvolvimento (/dev)
|
|
85
|
+
|
|
86
|
+
### Agents por área (perfis em `.github/agents/`)
|
|
87
|
+
|
|
88
|
+
| Área | Agente | Stack padrão |
|
|
89
|
+
|------|--------|-------------|
|
|
90
|
+
| BANCO | DB Coder | PostgreSQL 16 |
|
|
91
|
+
| BACK | Backend Coder | .NET 8 / C# |
|
|
92
|
+
| FRONT | Frontend Coder | React + Fusion |
|
|
93
|
+
| INFRA | Infra Coder | Docker |
|
|
94
|
+
| DOC | Doc Writer | — |
|
|
95
|
+
| Todas | Reviewer | — |
|
|
96
|
+
|
|
97
|
+
### Loop de desenvolvimento
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
Por task: implement → test unit → fix → lint → commit → review → fix → review (max 3)
|
|
101
|
+
Por fase: integration tests → fix
|
|
102
|
+
Por feature: E2E tests (CAs) → fix → dev_done
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Regras
|
|
106
|
+
|
|
107
|
+
- Implement + testes na mesma task (não separar)
|
|
108
|
+
- Agente selecionado pelo prefixo: BACK-* → Backend Coder
|
|
109
|
+
- Modelo por tamanho: S/M → Sonnet, L → Opus
|
|
110
|
+
- 1 commit por task: `tipo(TASK-ID): descrição`
|
|
111
|
+
- Quality gate validado pelo Reviewer após cada task
|
|
112
|
+
- Limite de retry: 3 reprovações → escalar pro usuário
|
|
113
|
+
|
|
114
|
+
## /setup-projeto vs /feature
|
|
115
|
+
|
|
116
|
+
| Aspecto | /setup-projeto | /feature |
|
|
117
|
+
|---------|---------------|----------|
|
|
118
|
+
| Input | `docs/PM/setup_projeto/` | `docs/PM/feat_nome/` |
|
|
119
|
+
| Extração | TRD.md (técnico) | PRD.md (produto) |
|
|
120
|
+
| SDD + Tasks | Sim (infra + DOC tasks) | Sim (feature tasks) |
|
|
121
|
+
| Gera docs/Estrutura/ | Via tasks DOC | Não — atualiza via /merge-delta |
|
|
122
|
+
| /merge-delta | Não se aplica | Obrigatório após /dev |
|
|
123
|
+
| Pré-requisito | Nenhum (primeiro comando) | docs/Estrutura/ deve existir |
|