spec-first-copilot 0.3.0 → 0.5.0-beta.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 +38 -30
- package/lib/init.js +2 -2
- package/package.json +31 -23
- package/templates/.ai/memory/napkin.md +1 -1
- package/templates/.github/agents/db-coder.md +1 -1
- package/templates/.github/agents/doc-writer.md +12 -15
- package/templates/.github/agents/security-reviewer.md +1 -1
- package/templates/.github/copilot-instructions.md +61 -43
- package/templates/.github/instructions/docs.instructions.md +12 -12
- package/templates/.github/instructions/sensitive-files.instructions.md +10 -10
- package/templates/{docs/Desenvolvimento → .github}/rules.md +2 -2
- package/templates/.github/skills/sf-design/SKILL.md +26 -27
- package/templates/.github/skills/sf-dev/SKILL.md +30 -7
- package/templates/.github/skills/sf-discovery/SKILL.md +405 -405
- package/templates/.github/skills/sf-extract/SKILL.md +9 -9
- package/templates/.github/skills/sf-feature/SKILL.md +21 -21
- package/templates/.github/skills/sf-merge-delta/SKILL.md +21 -18
- package/templates/.github/skills/sf-plan/SKILL.md +8 -8
- package/templates/.github/skills/{sf-pausar → sf-session-finish}/SKILL.md +10 -10
- package/templates/.github/skills/sf-setup-projeto/SKILL.md +20 -20
- package/templates/{docs/_templates/estrutura/API.template.md → .github/templates/estrutura/apiContracts.template.md} +24 -17
- package/templates/.github/templates/estrutura/architecture.template.md +158 -0
- package/templates/{docs/_templates/estrutura/Seguranca.template.md → .github/templates/estrutura/conventions.template.md} +74 -10
- package/templates/{docs/_templates/estrutura/ADRs.template.md → .github/templates/estrutura/decisions.template.md} +21 -13
- package/templates/.github/templates/estrutura/domain.template.md +148 -0
- package/templates/{docs/_templates → .github/templates}/feature/PRD.template.md +256 -256
- package/templates/{docs/_templates → .github/templates}/feature/Progresso.template.md +2 -2
- package/templates/{docs/_templates → .github/templates}/feature/TRD.template.md +204 -200
- package/templates/{docs/_templates → .github/templates}/feature/context.template.md +1 -1
- package/templates/{docs/_templates → .github/templates}/feature/projetos.template.yaml +1 -1
- package/templates/{docs/_templates → .github/templates}/feature/sdd.template.md +372 -372
- package/templates/{docs/_templates → .github/templates}/feature/tasks.template.md +115 -115
- package/templates/docs/_templates/estrutura/Arquitetura.template.md +0 -82
- package/templates/docs/_templates/estrutura/Infraestrutura.template.md +0 -104
- package/templates/docs/_templates/estrutura/Modelo_Dados.template.md +0 -99
- package/templates/docs/_templates/estrutura/Stack.template.md +0 -78
- package/templates/docs/_templates/estrutura/Visao.template.md +0 -82
- /package/templates/{docs/_templates → .github/templates}/feature/backlog-extraido.template.md +0 -0
- /package/templates/{docs/_templates → .github/templates}/feature/extract-log.template.md +0 -0
- /package/templates/{docs/_templates → .github/templates}/global/progresso_global.template.md +0 -0
- /package/templates/docs/{Desenvolvimento/.gitkeep → .gitkeep} +0 -0
- /package/templates/{docs/Estrutura → workspace/Input}/.gitkeep +0 -0
- /package/templates/{docs/PM → workspace/Input/setup_projeto}/.gitkeep +0 -0
- /package/templates/{docs/PM/setup_projeto → workspace/Output}/.gitkeep +0 -0
package/README.md
CHANGED
|
@@ -46,34 +46,42 @@ Isso cria a pasta `MeuProjeto/` com toda a estrutura pronta:
|
|
|
46
46
|
```
|
|
47
47
|
MeuProjeto/
|
|
48
48
|
├── .ai/memory/napkin.md <- Memoria persistente do projeto
|
|
49
|
-
├── .github/
|
|
49
|
+
├── .github/ <- AI OPERATIONAL CONFIG
|
|
50
50
|
│ ├── copilot-instructions.md <- Regras globais pro agente
|
|
51
|
+
│ ├── rules.md <- Regras de desenvolvimento
|
|
51
52
|
│ ├── instructions/ <- Regras por contexto
|
|
53
|
+
│ ├── templates/ <- 15 templates do workflow
|
|
54
|
+
│ │ ├── feature/ <- PRD, TRD, SDD, tasks, etc.
|
|
55
|
+
│ │ ├── estrutura/ <- 5 templates de estado do sistema
|
|
56
|
+
│ │ └── global/ <- Progresso global
|
|
52
57
|
│ ├── skills/ <- 9 skills do workflow
|
|
53
|
-
│ │ ├── sf-setup-projeto/
|
|
54
|
-
│ │ ├── sf-feature/
|
|
55
|
-
│ │ ├── sf-discovery/
|
|
56
|
-
│ │ ├── sf-extract/
|
|
57
|
-
│ │ ├── sf-design/
|
|
58
|
-
│ │ ├── sf-plan/
|
|
59
|
-
│ │ ├── sf-dev/
|
|
60
|
-
│ │ ├── sf-merge-delta/
|
|
61
|
-
│ │ └── sf-
|
|
62
|
-
│ └── agents/
|
|
63
|
-
│ ├── backend-coder.md
|
|
64
|
-
│ ├── frontend-coder.md
|
|
65
|
-
│ ├── db-coder.md
|
|
66
|
-
│ ├── infra-coder.md
|
|
67
|
-
│ ├── doc-writer.md
|
|
68
|
-
│ ├── reviewer.md
|
|
69
|
-
│ └── security-reviewer.md
|
|
70
|
-
├── docs/
|
|
71
|
-
│ ├──
|
|
72
|
-
│
|
|
73
|
-
│ ├──
|
|
74
|
-
│ ├──
|
|
75
|
-
│ └──
|
|
76
|
-
|
|
58
|
+
│ │ ├── sf-setup-projeto/
|
|
59
|
+
│ │ ├── sf-feature/
|
|
60
|
+
│ │ ├── sf-discovery/
|
|
61
|
+
│ │ ├── sf-extract/
|
|
62
|
+
│ │ ├── sf-design/
|
|
63
|
+
│ │ ├── sf-plan/
|
|
64
|
+
│ │ ├── sf-dev/
|
|
65
|
+
│ │ ├── sf-merge-delta/
|
|
66
|
+
│ │ └── sf-session-finish/
|
|
67
|
+
│ └── agents/ <- 7 agentes especializados
|
|
68
|
+
│ ├── backend-coder.md <- .NET 8 / C#
|
|
69
|
+
│ ├── frontend-coder.md <- React
|
|
70
|
+
│ ├── db-coder.md <- PostgreSQL
|
|
71
|
+
│ ├── infra-coder.md <- Docker
|
|
72
|
+
│ ├── doc-writer.md <- Documentacao
|
|
73
|
+
│ ├── reviewer.md <- Code review
|
|
74
|
+
│ └── security-reviewer.md <- Auditoria de seguranca
|
|
75
|
+
├── docs/ <- SYSTEM KNOWLEDGE (gerado pelo /sf-design)
|
|
76
|
+
│ ├── architecture.md <- Containers, stack, ambientes, deploy
|
|
77
|
+
│ ├── domain.md <- Visao de negocio + modelo de dados
|
|
78
|
+
│ ├── conventions.md <- Auth, authz, LGPD, env vars, monitoramento
|
|
79
|
+
│ ├── apiContracts.md <- Rotas, paginacao, erros, catalogo de endpoints
|
|
80
|
+
│ └── decisions.md <- ADRs
|
|
81
|
+
├── workspace/ <- TEAM CONTENT (futuro wiki)
|
|
82
|
+
│ ├── Input/ <- Jogue seus insumos aqui
|
|
83
|
+
│ │ └── setup_projeto/ <- Insumos do bootstrap
|
|
84
|
+
│ └── Output/ <- Docs por feature (gerados)
|
|
77
85
|
└── .gitignore
|
|
78
86
|
```
|
|
79
87
|
|
|
@@ -85,7 +93,7 @@ MeuProjeto/
|
|
|
85
93
|
cd MeuProjeto
|
|
86
94
|
```
|
|
87
95
|
|
|
88
|
-
2. Jogue seus insumos em `
|
|
96
|
+
2. Jogue seus insumos em `workspace/Input/setup_projeto/` — qualquer formato:
|
|
89
97
|
- `.md`, `.txt` (descricoes, requisitos, decisoes)
|
|
90
98
|
- `.sql` (modelagem de banco)
|
|
91
99
|
- `.csv`, `.xml`, `.html` (dados, configs)
|
|
@@ -104,13 +112,13 @@ MeuProjeto/
|
|
|
104
112
|
## Pipeline completo
|
|
105
113
|
|
|
106
114
|
```
|
|
107
|
-
|
|
115
|
+
workspace/Input/ (seus arquivos)
|
|
108
116
|
|
|
|
109
117
|
v
|
|
110
118
|
/sf-setup-projeto --> /sf-extract --> TRD (voce revisa e aprova)
|
|
111
119
|
|
|
|
112
120
|
v
|
|
113
|
-
/sf-design --> SDD + docs/
|
|
121
|
+
/sf-design --> SDD + docs/ (5 arquivos)
|
|
114
122
|
|
|
|
115
123
|
v
|
|
116
124
|
/sf-plan --> tasks + Progresso.md
|
|
@@ -119,13 +127,13 @@ docs/PM/ (seus arquivos)
|
|
|
119
127
|
/sf-dev --> codigo nos repos
|
|
120
128
|
|
|
|
121
129
|
v
|
|
122
|
-
|
|
130
|
+
(merge-delta automatico)
|
|
123
131
|
```
|
|
124
132
|
|
|
125
133
|
Para features (apos o setup):
|
|
126
134
|
|
|
127
135
|
```
|
|
128
|
-
/sf-feature nome --> /sf-extract --> PRD --> /sf-design --> /sf-plan --> /sf-dev
|
|
136
|
+
/sf-feature nome --> /sf-extract --> PRD --> /sf-design --> /sf-plan --> /sf-dev (inclui merge-delta)
|
|
129
137
|
```
|
|
130
138
|
|
|
131
139
|
## Opcoes do CLI
|
package/lib/init.js
CHANGED
|
@@ -62,8 +62,8 @@ function init({ name, templatesDir, targetDir }) {
|
|
|
62
62
|
console.log(`\nDone! Project "${name}" is ready.`);
|
|
63
63
|
console.log('\nNext steps:');
|
|
64
64
|
console.log(` 1. cd ${name}`);
|
|
65
|
-
console.log(' 2. Add your input files to
|
|
66
|
-
console.log(' 3. Run /setup-projeto to start the pipeline');
|
|
65
|
+
console.log(' 2. Add your input files to workspace/Input/setup_projeto/');
|
|
66
|
+
console.log(' 3. Run /sf-setup-projeto to start the pipeline');
|
|
67
67
|
console.log('');
|
|
68
68
|
}
|
|
69
69
|
|
package/package.json
CHANGED
|
@@ -1,23 +1,31 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "spec-first-copilot",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Spec-first workflow kit for GitHub Copilot — AI-driven development with specs, not guesswork",
|
|
5
|
-
"bin": {
|
|
6
|
-
"spec-first-copilot": "
|
|
7
|
-
},
|
|
8
|
-
"files": [
|
|
9
|
-
"bin/",
|
|
10
|
-
"lib/",
|
|
11
|
-
"templates/"
|
|
12
|
-
],
|
|
13
|
-
"author": "gustavomaritan",
|
|
14
|
-
"keywords": [
|
|
15
|
-
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
"
|
|
23
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "spec-first-copilot",
|
|
3
|
+
"version": "0.5.0-beta.0",
|
|
4
|
+
"description": "Spec-first workflow kit for GitHub Copilot — AI-driven development with specs, not guesswork",
|
|
5
|
+
"bin": {
|
|
6
|
+
"spec-first-copilot": "bin/cli.js"
|
|
7
|
+
},
|
|
8
|
+
"files": [
|
|
9
|
+
"bin/",
|
|
10
|
+
"lib/",
|
|
11
|
+
"templates/"
|
|
12
|
+
],
|
|
13
|
+
"author": "gustavomaritan",
|
|
14
|
+
"keywords": [
|
|
15
|
+
"spec-first",
|
|
16
|
+
"workflow",
|
|
17
|
+
"ai",
|
|
18
|
+
"copilot",
|
|
19
|
+
"github",
|
|
20
|
+
"scaffolding"
|
|
21
|
+
],
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "git+https://github.com/gustavomaritan-labs/spec-first-workflow.git",
|
|
25
|
+
"directory": "packages/spec-first-copilot"
|
|
26
|
+
},
|
|
27
|
+
"scripts": {
|
|
28
|
+
"test": "echo \"No tests yet\""
|
|
29
|
+
},
|
|
30
|
+
"license": "MIT"
|
|
31
|
+
}
|
|
@@ -39,7 +39,7 @@ src/Infrastructure/Data/
|
|
|
39
39
|
└── DevSeedData.cs ← Seed para desenvolvimento
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
### Convenções SQL (alinhado com
|
|
42
|
+
### Convenções SQL (alinhado com domain.md)
|
|
43
43
|
|
|
44
44
|
| Elemento | Convenção | Exemplo |
|
|
45
45
|
|----------|-----------|---------|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Agent: Doc Writer
|
|
2
2
|
|
|
3
3
|
> Especialista em geração de documentação técnica.
|
|
4
|
-
> Usado pelo /design (setup) para gerar docs/
|
|
4
|
+
> Usado pelo /design (setup) para gerar docs/ e pelo /merge-delta para atualizá-los.
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -16,21 +16,18 @@
|
|
|
16
16
|
|
|
17
17
|
## Responsabilidades
|
|
18
18
|
|
|
19
|
-
1. **No setup (via /design passo 3)**: gerar os
|
|
20
|
-
2. **Em features (via /merge-delta)**: atualizar docs de
|
|
19
|
+
1. **No setup (via /design passo 3)**: gerar os 5 docs de `docs/` a partir do TRD aprovado (architecture, domain, conventions, apiContracts, decisions)
|
|
20
|
+
2. **Em features (via /merge-delta)**: atualizar os docs de `docs/` com Delta Specs do SDD §11
|
|
21
21
|
|
|
22
|
-
## Mapeamento TRD → docs/
|
|
22
|
+
## Mapeamento TRD/SDD → docs/
|
|
23
23
|
|
|
24
|
-
|
|
|
25
|
-
|
|
26
|
-
| §
|
|
27
|
-
| §
|
|
28
|
-
| §
|
|
29
|
-
| §
|
|
30
|
-
| §
|
|
31
|
-
| §6 Infra | Infraestrutura.md | `_templates/estrutura/Infraestrutura.template.md` |
|
|
32
|
-
| §7 Segurança | Seguranca.md | `_templates/estrutura/Seguranca.template.md` |
|
|
33
|
-
| SDD §2 Decisões | ADRs.md | `_templates/estrutura/ADRs.template.md` |
|
|
24
|
+
| Doc gerado | Fontes | Template |
|
|
25
|
+
|-----------|--------|---------|
|
|
26
|
+
| architecture.md | TRD §2 Stack + §3 Arquitetura + §6 Infra (ambientes/deploy/CI/rollback) | `.github/templates/estrutura/architecture.template.md` |
|
|
27
|
+
| domain.md | TRD §1 Visão + §4 Modelo de Dados (+ SDD §3 em features) | `.github/templates/estrutura/domain.template.md` |
|
|
28
|
+
| conventions.md | TRD §7 Segurança + §6 Infra (env vars/monitoramento) + §5 API (códigos de erro) + §2 Stack (alternativas/versionamento) | `.github/templates/estrutura/conventions.template.md` |
|
|
29
|
+
| apiContracts.md | TRD §5 API (padrão geral, rotas, paginação, filtros, erros, catálogo) | `.github/templates/estrutura/apiContracts.template.md` |
|
|
30
|
+
| decisions.md | SDD §2 Decisões + decisões iniciais de stack/arquitetura | `.github/templates/estrutura/decisions.template.md` |
|
|
34
31
|
|
|
35
32
|
## Regras
|
|
36
33
|
|
|
@@ -48,4 +45,4 @@
|
|
|
48
45
|
2. **Ler TRD/SDD** → extrair dados para cada seção
|
|
49
46
|
3. **Preencher** → seguindo formato do template exatamente
|
|
50
47
|
4. **Remover instruções** → bloco `<!-- INSTRUÇÕES -->` não vai pro doc final
|
|
51
|
-
5. **Commitar** → `docs(DOC-001): gerar
|
|
48
|
+
5. **Commitar** → `docs(DOC-001): gerar architecture.md a partir do TRD`
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|-------|-------|
|
|
12
12
|
| Área | Todas (cross-area) |
|
|
13
13
|
| Modelo padrão | Opus |
|
|
14
|
-
| Lê | Código produzido + SDD §5 (endpoints/auth) + SDD §9 (testes) + docs/
|
|
14
|
+
| Lê | Código produzido + SDD §5 (endpoints/auth) + SDD §9 (testes) + docs/conventions.md (auth, authz, LGPD, auditoria) |
|
|
15
15
|
| Nunca lê | PRD, PM |
|
|
16
16
|
|
|
17
17
|
## Quando é acionado
|
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
| Dependência | Caminho | Se não existir |
|
|
13
13
|
|-------------|---------|----------------|
|
|
14
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 |
|
|
15
|
+
| Templates | `.github/templates/` | ERRO — projeto não está configurado |
|
|
16
16
|
| Skills | `.github/skills/` | ERRO — projeto não está configurado |
|
|
17
17
|
| Agents | `.github/agents/` | ERRO — projeto não está configurado |
|
|
18
|
-
| Rules |
|
|
19
|
-
| Retomada | `
|
|
18
|
+
| Rules | `.github/rules.md` | ERRO — projeto não está configurado |
|
|
19
|
+
| Retomada | `workspace/Output/retomada.md` | OK — primeira sessão |
|
|
20
20
|
|
|
21
21
|
### 2. Validar acesso a todas skills
|
|
22
22
|
|
|
@@ -31,7 +31,7 @@ Verificar que TODAS as 9 skills estão acessíveis:
|
|
|
31
31
|
| `/sf-plan` | `.github/skills/sf-plan/SKILL.md` |
|
|
32
32
|
| `/sf-dev` | `.github/skills/sf-dev/SKILL.md` |
|
|
33
33
|
| `/sf-merge-delta` | `.github/skills/sf-merge-delta/SKILL.md` |
|
|
34
|
-
| `/sf-
|
|
34
|
+
| `/sf-session-finish` | `.github/skills/sf-session-finish/SKILL.md` |
|
|
35
35
|
| `/sf-discovery` | `.github/skills/sf-discovery/SKILL.md` |
|
|
36
36
|
|
|
37
37
|
Se alguma skill não for encontrada → avisar o usuário.
|
|
@@ -39,9 +39,9 @@ Se alguma skill não for encontrada → avisar o usuário.
|
|
|
39
39
|
### 3. Carregar contexto
|
|
40
40
|
|
|
41
41
|
1. Ler `.ai/memory/napkin.md` — decisões e padrões acumulados
|
|
42
|
-
2. Ler `
|
|
43
|
-
3. Ler `docs
|
|
44
|
-
4. Ler
|
|
42
|
+
2. Ler `workspace/Output/retomada.md` (se existir) — ponto de retomada da última sessão
|
|
43
|
+
3. Ler `docs/` (se existir) — contexto global do projeto (architecture, domain, conventions, apiContracts, decisions)
|
|
44
|
+
4. Ler `.github/rules.md` — regras de desenvolvimento
|
|
45
45
|
|
|
46
46
|
---
|
|
47
47
|
|
|
@@ -53,37 +53,41 @@ Este é um projeto que utiliza desenvolvimento **spec-first** assistido por IA.
|
|
|
53
53
|
|
|
54
54
|
```
|
|
55
55
|
ESTE REPO (projeto-base) = ORQUESTRADOR
|
|
56
|
-
├──
|
|
57
|
-
├──
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
56
|
+
├── .github/ ← AI operational config (rules, templates, skills, agents)
|
|
57
|
+
├── docs/ ← estado do sistema (architecture, domain, conventions, apiContracts, decisions)
|
|
58
|
+
├── workspace/ ← content compartilhável
|
|
59
|
+
│ ├── Input/ ← insumos brutos do time
|
|
60
|
+
│ └── Output/ ← outputs por feature (PRD, TRD, SDD, tasks, progresso)
|
|
61
|
+
├── projetos.yaml ← manifesto de repos
|
|
62
|
+
└── projetos/ ← repos de código (gitignored, cada um com .git próprio)
|
|
63
|
+
├── api/ ← repo: org/projeto-api
|
|
64
|
+
├── web/ ← repo: org/projeto-web
|
|
65
|
+
└── worker/ ← repo: org/projeto-worker
|
|
62
66
|
```
|
|
63
67
|
|
|
64
|
-
**
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
68
|
+
**Três zonas, zero ambiguidade:**
|
|
69
|
+
- **`.github/` + `.ai/`** → AI operational config (rules, templates, skills, agents, memória) — time edita raro
|
|
70
|
+
- **`docs/`** → estado do sistema (gerado pelo /sf-design e /sf-merge-delta)
|
|
71
|
+
- **`workspace/`** → content compartilhável (Input = time, Output = workflow)
|
|
72
|
+
- **`projetos/`** → código dos serviços (branches, PRs, commits acontecem aí)
|
|
73
|
+
|
|
69
74
|
Nenhum código é escrito sem especificação aprovada (SDD).
|
|
70
75
|
|
|
71
76
|
## Pipeline do Workflow
|
|
72
77
|
|
|
73
78
|
```
|
|
74
|
-
|
|
79
|
+
workspace/Input/ (qualquer arquivo)
|
|
75
80
|
↓ /sf-setup-projeto (uma vez) ou /sf-feature (por feature)
|
|
76
81
|
/sf-discovery → análise profunda dos insumos (RECOMENDADO, opcional)
|
|
77
82
|
↓
|
|
78
|
-
/sf-extract → PRD ou TRD (checkpoint — usuário revisa e aprova)
|
|
83
|
+
/sf-extract → PRD ou TRD em workspace/Output/{nome}/ (checkpoint — usuário revisa e aprova)
|
|
79
84
|
↓
|
|
80
|
-
/sf-design → SDD + projetos.yaml + docs/
|
|
85
|
+
/sf-design → SDD + projetos.yaml + docs/ (5 docs de sistema — só setup)
|
|
81
86
|
↓
|
|
82
|
-
/sf-plan → *_tasks.md + Progresso.md (tasks por fase × área)
|
|
87
|
+
/sf-plan → *_tasks.md + Progresso.md em workspace/Output/{nome}/ (tasks por fase × área)
|
|
83
88
|
↓
|
|
84
89
|
/sf-dev → código nos repos (Security Review pós-dev)
|
|
85
|
-
|
|
86
|
-
/sf-merge-delta → docs/Estrutura/ atualizado (apenas para features)
|
|
90
|
+
→ merge-delta automático em features (aplica SDD §11 em docs/)
|
|
87
91
|
```
|
|
88
92
|
|
|
89
93
|
## Skills disponíveis
|
|
@@ -92,12 +96,12 @@ docs/PM/ (qualquer arquivo)
|
|
|
92
96
|
|-------|------|-----------|
|
|
93
97
|
| `/sf-setup-projeto` | Orquestrador | Bootstrap: cria .context.md, chama /sf-extract, para no checkpoint. Roda UMA vez |
|
|
94
98
|
| `/sf-feature <nome>` | Orquestrador | Feature: cria .context.md tipo PRD, chama /sf-extract, para no checkpoint |
|
|
95
|
-
| `/sf-extract <nome>` | Atômica | Lê
|
|
99
|
+
| `/sf-extract <nome>` | Atômica | Lê workspace/Input/{nome}/ → gera PRD ou TRD. Re-executável para novos insumos |
|
|
96
100
|
| `/sf-design <nome>` | Atômica | Pergunta aprovação → gera SDD a partir do PRD/TRD |
|
|
97
101
|
| `/sf-plan <nome>` | Atômica | Lê SDD → gera tasks por área + Progresso.md |
|
|
98
|
-
| `/sf-dev <nome>` | Atômica | Implementa tasks com loop (implement → test → review). Agents por área |
|
|
99
|
-
| `/sf-merge-delta <nome>` | Atômica | Aplica SDD §11 Delta Specs em docs/
|
|
100
|
-
| `/sf-
|
|
102
|
+
| `/sf-dev <nome>` | Atômica | Implementa tasks com loop (implement → test → review). Agents por área. Merge-delta automático em features |
|
|
103
|
+
| `/sf-merge-delta <nome>` | Atômica | Aplica SDD §11 Delta Specs em docs/ (chamado automaticamente pelo /sf-dev, re-executável manualmente) |
|
|
104
|
+
| `/sf-session-finish` | Utilitária | Encerra sessão: salva estado, atualiza napkin, gera retomada.md |
|
|
101
105
|
| `/sf-discovery` | Utilitária | Análise profunda de sistemas, arquiteturas e documentações |
|
|
102
106
|
|
|
103
107
|
## Agents especializados (usados pelo /dev)
|
|
@@ -114,7 +118,7 @@ docs/PM/ (qualquer arquivo)
|
|
|
114
118
|
|
|
115
119
|
## Estado da pipeline (`.context.md`)
|
|
116
120
|
|
|
117
|
-
Cada feature/setup tem um `.context.md` em `
|
|
121
|
+
Cada feature/setup tem um `.context.md` em `workspace/Output/{nome}/` que controla o fluxo:
|
|
118
122
|
|
|
119
123
|
```
|
|
120
124
|
not_started → extract_done → approved → design_done → plan_done → dev_in_progress → dev_done → done
|
|
@@ -125,7 +129,7 @@ Antes de executar qualquer skill, verificar o status no `.context.md`. Cada skil
|
|
|
125
129
|
## Regras Invioláveis
|
|
126
130
|
|
|
127
131
|
1. **Spec-first**: NUNCA gerar código sem SDD aprovado
|
|
128
|
-
2. **
|
|
132
|
+
2. **Input é sagrado**: NUNCA modificar arquivos em `workspace/Input/`
|
|
129
133
|
3. **Extração rígida**: categorias fixas do template, sem texto narrativo, ambiguidades são BLOQUEANTES
|
|
130
134
|
4. **SDD é auto-contido**: coder lê APENAS SDD + task, NUNCA PRD/PM diretamente
|
|
131
135
|
5. **Memória ativa**: ler napkin.md no início, atualizar ao descobrir padrões/armadilhas
|
|
@@ -136,15 +140,27 @@ Antes de executar qualquer skill, verificar o status no `.context.md`. Cada skil
|
|
|
136
140
|
## Estrutura de Documentação
|
|
137
141
|
|
|
138
142
|
```
|
|
139
|
-
|
|
140
|
-
├──
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
├──
|
|
144
|
-
├──
|
|
145
|
-
└──
|
|
146
|
-
|
|
147
|
-
|
|
143
|
+
.github/
|
|
144
|
+
├── copilot-instructions.md ← Regras globais pro agente (este arquivo)
|
|
145
|
+
├── rules.md ← Regras de desenvolvimento (lidas pelos coders)
|
|
146
|
+
├── templates/ ← Templates do workflow (feature/estrutura/global)
|
|
147
|
+
├── skills/ ← 9 skills atômicas
|
|
148
|
+
├── agents/ ← 7 perfis de agents especializados
|
|
149
|
+
└── instructions/ ← Instruções por contexto
|
|
150
|
+
|
|
151
|
+
docs/ ← Estado global do sistema (gerado pelo /sf-design)
|
|
152
|
+
├── architecture.md ← C4 + stack + ambientes + deploy
|
|
153
|
+
├── domain.md ← Visão de negócio + modelo de dados
|
|
154
|
+
├── conventions.md ← Auth, authz, LGPD, env vars, monitoramento
|
|
155
|
+
├── apiContracts.md ← Rotas, paginação, catálogo de endpoints
|
|
156
|
+
└── decisions.md ← ADRs
|
|
157
|
+
|
|
158
|
+
workspace/ ← Content compartilhável (futuro wiki)
|
|
159
|
+
├── Input/ ← Insumos brutos (QUALQUER formato — nunca modificar)
|
|
160
|
+
│ ├── setup_projeto/ ← Insumos de bootstrap
|
|
161
|
+
│ └── feat_*/ ← Insumos por feature
|
|
162
|
+
└── Output/ ← Artefatos gerados pelo workflow
|
|
163
|
+
└── {nome}/ ← PRD/TRD, SDD, *_tasks.md, Progresso.md, .context.md, .extract-log.md
|
|
148
164
|
```
|
|
149
165
|
|
|
150
166
|
## Convenções
|
|
@@ -157,7 +173,7 @@ docs/
|
|
|
157
173
|
|
|
158
174
|
## Quando Parar e Perguntar
|
|
159
175
|
|
|
160
|
-
- `
|
|
176
|
+
- `workspace/Input/{nome}/` vazio ou inexistente → PARAR
|
|
161
177
|
- Ambiguidade na extração → listar como pergunta BLOQUEANTE, PARAR
|
|
162
178
|
- `.context.md` com status incompatível com a skill → PARAR, informar status atual
|
|
163
179
|
- Task com dependência não concluída → avisar, não pular
|
|
@@ -168,9 +184,11 @@ docs/
|
|
|
168
184
|
|
|
169
185
|
| Doc | Onde |
|
|
170
186
|
|-----|------|
|
|
171
|
-
| Rules de dev |
|
|
187
|
+
| Rules de dev | `.github/rules.md` |
|
|
172
188
|
| Memória | `.ai/memory/napkin.md` |
|
|
173
189
|
| Skills | `.github/skills/*.md` |
|
|
174
190
|
| Agents | `.github/agents/*.md` |
|
|
175
|
-
| Templates |
|
|
176
|
-
|
|
|
191
|
+
| Templates | `.github/templates/` |
|
|
192
|
+
| Estado do sistema | `docs/*.md` (após setup) |
|
|
193
|
+
| Insumos brutos | `workspace/Input/` |
|
|
194
|
+
| Outputs do workflow | `workspace/Output/` |
|
|
@@ -31,8 +31,8 @@ Cada tipo de projeto tem seu documento de extração:
|
|
|
31
31
|
|
|
32
32
|
| Comando | Documento | Template | Foco |
|
|
33
33
|
|---------|----------|---------|------|
|
|
34
|
-
| `/setup-projeto` | TRD.md |
|
|
35
|
-
| `/feature` | PRD.md |
|
|
34
|
+
| `/setup-projeto` | TRD.md | `.github/templates/feature/TRD.template.md` | Stack, arquitetura, infra, modelo base |
|
|
35
|
+
| `/feature` | PRD.md | `.github/templates/feature/PRD.template.md` | Regras de negócio, jornadas, telas |
|
|
36
36
|
|
|
37
37
|
### Multi-agent no /extract
|
|
38
38
|
|
|
@@ -43,7 +43,7 @@ Cada tipo de projeto tem seu documento de extração:
|
|
|
43
43
|
|
|
44
44
|
### Regras da extração
|
|
45
45
|
|
|
46
|
-
- Ler TODOS arquivos em `
|
|
46
|
+
- Ler TODOS arquivos em `workspace/Input/{nome}/` (qualquer formato: .md, .txt, .sql, .html, .xml, .csv, .png, .pdf)
|
|
47
47
|
- Categorias FIXAS do template — não inventar seções novas
|
|
48
48
|
- Regras de negócio com IDs únicos e estáveis (RN-001, RN-002 — nunca renumerar)
|
|
49
49
|
- Ambiguidades = BLOQUEANTES (workflow para até responder)
|
|
@@ -63,8 +63,8 @@ Cada tipo de projeto tem seu documento de extração:
|
|
|
63
63
|
|
|
64
64
|
1. Verificar aprovação do PRD/TRD (perguntar ao usuário)
|
|
65
65
|
2. Verificar ambiguidades — todas devem estar respondidas
|
|
66
|
-
3. Ler PRD/TRD + `docs
|
|
67
|
-
4. Gerar SDD usando
|
|
66
|
+
3. Ler PRD/TRD + `docs/` + `rules.md`
|
|
67
|
+
4. Gerar SDD usando `.github/templates/feature/sdd.template.md`
|
|
68
68
|
5. SDD deve ser **auto-contido** — coder lê APENAS SDD + task, nada mais
|
|
69
69
|
6. Toda regra referencia seção do PRD/TRD (rastreabilidade)
|
|
70
70
|
7. §9 Estratégia de Testes: definir framework, estrutura, CAs mapeados a testes
|
|
@@ -73,13 +73,13 @@ Cada tipo de projeto tem seu documento de extração:
|
|
|
73
73
|
|
|
74
74
|
## Planejamento (/plan)
|
|
75
75
|
|
|
76
|
-
1. Ler SDD completo + `docs
|
|
76
|
+
1. Ler SDD completo + `docs/` + `rules.md`
|
|
77
77
|
2. Áreas são DINÂMICAS — determinadas pelo SDD, não pré-definidas
|
|
78
|
-
3. Para cada área → gerar `{area}_tasks.md` usando
|
|
78
|
+
3. Para cada área → gerar `{area}_tasks.md` usando `.github/templates/feature/tasks.template.md`
|
|
79
79
|
4. Tasks em fases sequenciais com prioridade P1/P2/P3
|
|
80
80
|
5. Cada task: ID (AREA-NNN), título, tamanho (S/M/L), arquivos, ref SDD §N, depende, testes
|
|
81
81
|
6. Gerar `Progresso.md` com ordem de execução e paralelismos
|
|
82
|
-
7. Em setup: área DOC
|
|
82
|
+
7. Em setup: área DOC NÃO existe mais — `docs/` é gerado diretamente pelo /sf-design (passo 3) a partir do TRD
|
|
83
83
|
|
|
84
84
|
## Desenvolvimento (/dev)
|
|
85
85
|
|
|
@@ -115,9 +115,9 @@ Por feature: E2E tests (CAs) → fix → dev_done
|
|
|
115
115
|
|
|
116
116
|
| Aspecto | /setup-projeto | /feature |
|
|
117
117
|
|---------|---------------|----------|
|
|
118
|
-
| Input | `
|
|
118
|
+
| Input | `workspace/Input/setup_projeto/` | `workspace/Input/feat_nome/` |
|
|
119
119
|
| Extração | TRD.md (técnico) | PRD.md (produto) |
|
|
120
|
-
| SDD + Tasks | Sim (infra +
|
|
121
|
-
| Gera docs/
|
|
120
|
+
| SDD + Tasks | Sim (infra + banco + back + front) | Sim (feature tasks) |
|
|
121
|
+
| Gera docs/ | Sim — pelo /sf-design (passo 3) | Não — atualiza via /merge-delta |
|
|
122
122
|
| /merge-delta | Não se aplica | Obrigatório após /dev |
|
|
123
|
-
| Pré-requisito | Nenhum (primeiro comando) | docs/
|
|
123
|
+
| Pré-requisito | Nenhum (primeiro comando) | docs/ deve existir |
|
|
@@ -4,26 +4,26 @@
|
|
|
4
4
|
|
|
5
5
|
## Arquivos que NUNCA devem ser modificados pelo agente
|
|
6
6
|
|
|
7
|
-
- `
|
|
7
|
+
- `workspace/Input/**/*` — Insumos brutos do usuário. Somente leitura.
|
|
8
8
|
- `.env`, `.env.*` — Variáveis de ambiente com secrets.
|
|
9
|
-
- `docs/
|
|
9
|
+
- `docs/decisions.md` — decisões aceitas são imutáveis (apenas adicionar novas, com status "substituída por ADR-XXX" na original).
|
|
10
10
|
|
|
11
11
|
## Arquivos que requerem aprovação antes de modificar
|
|
12
12
|
|
|
13
|
-
- `docs
|
|
14
|
-
-
|
|
13
|
+
- `docs/*` — Documentação global. Só alterar via /merge-delta após /dev.
|
|
14
|
+
- `.github/rules.md` — Regras de desenvolvimento. Alteração deve ser explícita.
|
|
15
15
|
- `.github/copilot-instructions.md` — Meta-regras. Alteração requer aprovação.
|
|
16
16
|
- `.github/skills/*` — Skills do workflow. Alteração requer aprovação.
|
|
17
17
|
- `.github/agents/*` — Perfis de agentes. Alteração requer aprovação.
|
|
18
18
|
|
|
19
19
|
## Arquivos com formato rígido (gerados por skills)
|
|
20
20
|
|
|
21
|
-
- `
|
|
22
|
-
- `
|
|
23
|
-
- `
|
|
24
|
-
- `
|
|
25
|
-
- `
|
|
26
|
-
- `
|
|
21
|
+
- `workspace/Output/*/.context.md` — YAML frontmatter, apenas skills atualizam.
|
|
22
|
+
- `workspace/Output/*/.extract-log.md` — Append-only, hashes obrigatórios.
|
|
23
|
+
- `workspace/Output/*/PRD.md` ou `TRD.md` — Seguir template exato.
|
|
24
|
+
- `workspace/Output/*/sdd.md` — Seguir template, todas as 11 seções + rastreabilidade.
|
|
25
|
+
- `workspace/Output/*/*_tasks.md` — IDs sequenciais, campos obrigatórios.
|
|
26
|
+
- `workspace/Output/*/Progresso.md` — Tabelas com formato fixo.
|
|
27
27
|
|
|
28
28
|
## Arquivos que nunca devem conter secrets
|
|
29
29
|
|
|
@@ -36,7 +36,7 @@ As regras abaixo são o padrão do framework. O time pode:
|
|
|
36
36
|
## Convenções de Código
|
|
37
37
|
|
|
38
38
|
### Padrão geral
|
|
39
|
-
- Todo código segue
|
|
39
|
+
- Todo código segue a stack e convenções de `docs/architecture.md` + `docs/conventions.md`
|
|
40
40
|
- Nomes em inglês (código) — documentação em português
|
|
41
41
|
- Sem código morto (comentado) — se não usa, apaga
|
|
42
42
|
- Sem secrets hardcoded — sempre variáveis de ambiente
|
|
@@ -44,7 +44,7 @@ As regras abaixo são o padrão do framework. O time pode:
|
|
|
44
44
|
### Backend
|
|
45
45
|
- Testes obrigatórios: mínimo happy path + 1 cenário de erro
|
|
46
46
|
- Validação de input na borda (controller/handler) — não no service
|
|
47
|
-
- Erros de negócio: usar códigos definidos em `docs/
|
|
47
|
+
- Erros de negócio: usar códigos definidos em `docs/conventions.md` (seção Códigos de Erro do Domínio)
|
|
48
48
|
- Tipos explícitos (sem `any`, `object`, `dynamic` genéricos)
|
|
49
49
|
|
|
50
50
|
### Frontend
|