spec-first-copilot 0.7.0 → 0.8.0-beta.2
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 +45 -0
- package/bin/cli.js +1 -1
- package/package.json +1 -1
- package/templates/.github/CHANGELOG.md +61 -0
- package/templates/.github/copilot-instructions.md +4 -2
- package/templates/.github/skills/sf-design/SKILL.md +161 -161
- package/templates/.github/skills/sf-dev/SKILL.md +204 -204
- package/templates/.github/skills/sf-discovery/SKILL.md +415 -415
- package/templates/.github/skills/sf-extract/SKILL.md +225 -225
- package/templates/.github/skills/sf-load/SKILL.md +296 -296
- package/templates/.github/skills/sf-mcp/SKILL.md +386 -386
- package/templates/.github/skills/sf-merge-docs/SKILL.md +152 -152
- package/templates/.github/skills/sf-onboard/SKILL.md +437 -0
- package/templates/.github/skills/sf-plan/SKILL.md +152 -152
- package/templates/.github/skills/sf-publish/SKILL.md +144 -144
- package/templates/.github/skills/sf-session-finish/SKILL.md +93 -93
- package/templates/.github/skills/sf-start/SKILL.md +192 -192
- package/templates/.github/templates/estrutura/decisions.template.md +140 -107
- package/templates/.github/templates/feature/TRD.template.md +450 -358
- package/templates/.github/templates/feature/context.template.md +118 -89
|
@@ -1,89 +1,118 @@
|
|
|
1
|
-
---
|
|
2
|
-
nome: "{{NOME}}"
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
|
|
38
|
-
-
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
↓ /sf-
|
|
58
|
-
|
|
59
|
-
↓ /sf-
|
|
60
|
-
|
|
61
|
-
↓ /sf-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
1
|
+
---
|
|
2
|
+
nome: "{{NOME}}"
|
|
3
|
+
tipo: "{{scope|onboard}}"
|
|
4
|
+
first_run: {{true|false}}
|
|
5
|
+
prd_existe: {{true|false}}
|
|
6
|
+
trd_existe: {{true|false}}
|
|
7
|
+
prd_aprovado: {{true|false}}
|
|
8
|
+
trd_aprovado: {{true|false}}
|
|
9
|
+
areas_tocadas: []
|
|
10
|
+
input_path: "workspace/Input/{{NOME}}/"
|
|
11
|
+
repo_url: ""
|
|
12
|
+
repo_branch: ""
|
|
13
|
+
repo_path: ""
|
|
14
|
+
status: "not_started"
|
|
15
|
+
ultima_skill: ""
|
|
16
|
+
atualizado_em: ""
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
<!--
|
|
20
|
+
=============================================================================
|
|
21
|
+
INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
|
|
22
|
+
=============================================================================
|
|
23
|
+
|
|
24
|
+
SCHEMA v4 (mudou de v3):
|
|
25
|
+
- prd_empty REMOVIDO (conceito obsoleto)
|
|
26
|
+
- prd_existe/trd_existe: bool reais (SEM aspas) indicando se /sf-extract gerou cada doc
|
|
27
|
+
- prd_aprovado/trd_aprovado: bool reais (SEM aspas) controlando gate do /sf-design
|
|
28
|
+
- tipo: discrimina scopes do pipeline normal vs onboarding (brownfield)
|
|
29
|
+
- repo_*: preenchidos só em scopes tipo "onboard"
|
|
30
|
+
|
|
31
|
+
CAMPOS:
|
|
32
|
+
- nome: identificador livre do scope (ex: app_barbearia, feat_login, infra_k8s,
|
|
33
|
+
onboard_app_legado)
|
|
34
|
+
- tipo: "scope" (default — pipeline normal /sf-start) ou "onboard" (brownfield
|
|
35
|
+
via /sfw-onboard — código já existe, ler e documentar sem PRD)
|
|
36
|
+
- first_run: bool — true se docs/ não existia quando /sf-start foi chamado.
|
|
37
|
+
IMUTÁVEL após criação. Em onboard, sempre true.
|
|
38
|
+
- prd_existe: bool — true se /sf-extract gerou PRD.md (insumos tinham produto).
|
|
39
|
+
false em scopes puro-técnicos.
|
|
40
|
+
- trd_existe: bool — true se /sf-extract gerou TRD.md (insumos tinham técnica).
|
|
41
|
+
false em scopes puro-produto (raro).
|
|
42
|
+
- prd_aprovado: bool — true após PM aprovar o PRD. Se prd_existe=false, este
|
|
43
|
+
campo também fica false (não há nada a aprovar).
|
|
44
|
+
- trd_aprovado: bool — true após dev aprovar o TRD. Se trd_existe=false, fica false.
|
|
45
|
+
- areas_tocadas: lista de áreas do TRD que têm GATE=SIM. Preenchido pelo /sf-design.
|
|
46
|
+
Possíveis: BACK, FRONT, DB, INFRA. Derivado dos GATEs do TRD §2-§5.
|
|
47
|
+
- input_path: caminho relativo da pasta de insumos
|
|
48
|
+
- repo_url: (só onboard) URL git do repositório onboardeado
|
|
49
|
+
- repo_branch: (só onboard) branch/tag clonada
|
|
50
|
+
- repo_path: (só onboard) caminho relativo do clone em projetos/
|
|
51
|
+
- status: estado atual da pipeline (ver fluxo abaixo)
|
|
52
|
+
- ultima_skill: qual skill alterou este arquivo por último
|
|
53
|
+
- atualizado_em: data/hora ISO da última atualização
|
|
54
|
+
|
|
55
|
+
FLUXO DE STATUS (v4):
|
|
56
|
+
not_started
|
|
57
|
+
↓ /sf-start cria .context.md
|
|
58
|
+
discovery_done
|
|
59
|
+
↓ /sf-discovery roda (obrigatório no sfw-start)
|
|
60
|
+
extract_done
|
|
61
|
+
↓ /sf-extract gera PRD e/ou TRD
|
|
62
|
+
prd_approved ← apenas se prd_existe=true
|
|
63
|
+
↓ PM revisa e aprova PRD (skill atualiza prd_aprovado=true)
|
|
64
|
+
trd_approved ← apenas se trd_existe=true
|
|
65
|
+
↓ dev revisa e aprova TRD (skill atualiza trd_aprovado=true)
|
|
66
|
+
design_done
|
|
67
|
+
↓ /sf-design gera docs/ (first_run) + specs/ (sempre)
|
|
68
|
+
plan_done
|
|
69
|
+
↓ /sf-plan gera tasks
|
|
70
|
+
dev_in_progress
|
|
71
|
+
↓ /sf-dev executa tasks
|
|
72
|
+
dev_done
|
|
73
|
+
↓ /sf-dev finaliza (chama /sf-merge-docs automaticamente)
|
|
74
|
+
done
|
|
75
|
+
|
|
76
|
+
Se prd_existe=false: status pula direto de extract_done → trd_approved (sem passar
|
|
77
|
+
por prd_approved). Mesmo vice-versa. Ordem das aprovações dentro do par é irrelevante.
|
|
78
|
+
|
|
79
|
+
FLUXO ALTERNATIVO — tipo=onboard (brownfield):
|
|
80
|
+
not_started
|
|
81
|
+
↓ /sfw-onboard cria .context.md, clona repo em projetos/<repo_path>/
|
|
82
|
+
cloned
|
|
83
|
+
↓ snapshot gerado em workspace/Input/onboard_<repo>/
|
|
84
|
+
analyzing
|
|
85
|
+
↓ readers paralelos + analyzer consolidam TRD + docs/ + projetos.yaml
|
|
86
|
+
done
|
|
87
|
+
|
|
88
|
+
Em onboard:
|
|
89
|
+
- prd_existe = false (sempre — código é técnico, sem PRD)
|
|
90
|
+
- trd_existe = true (sempre)
|
|
91
|
+
- trd_aprovado = true (sempre — código é a verdade, sem ambiguidades, dev valida lendo)
|
|
92
|
+
- areas_tocadas preenchidas a partir dos GATEs do TRD
|
|
93
|
+
- Re-onboard reentra em "analyzing" e refaz merge aditivo
|
|
94
|
+
|
|
95
|
+
QUEM ATUALIZA:
|
|
96
|
+
- /sfw-onboard: cria arquivo com tipo=onboard, status=not_started → cloned → analyzing → done
|
|
97
|
+
- /sf-start: cria arquivo com tipo=scope, status=not_started, first_run derivado de docs/
|
|
98
|
+
- /sf-discovery: not_started → discovery_done
|
|
99
|
+
- /sf-extract: discovery_done → extract_done, preenche prd_existe + trd_existe
|
|
100
|
+
- PM aprova: extract_done → prd_approved (atualiza prd_aprovado=true)
|
|
101
|
+
- dev aprova: extract_done|prd_approved → trd_approved (atualiza trd_aprovado=true)
|
|
102
|
+
(skill futura /approve <doc> ou edição direta do campo + re-rodar /sf-design)
|
|
103
|
+
- /sf-design: (prd_approved + trd_approved) → design_done, preenche areas_tocadas
|
|
104
|
+
Nota: se só um dos docs existe, o outro aprovado não é exigido.
|
|
105
|
+
- /sf-plan: design_done → plan_done
|
|
106
|
+
- /sf-dev: plan_done → dev_in_progress → dev_done
|
|
107
|
+
- /sf-merge-docs: dev_done → done (aplica PRD+TRD em docs/)
|
|
108
|
+
|
|
109
|
+
REGRAS:
|
|
110
|
+
- Nunca pular etapas no fluxo de status
|
|
111
|
+
- Nunca editar manualmente — apenas skills atualizam este arquivo
|
|
112
|
+
- Se status não corresponde ao esperado, a skill deve parar e avisar
|
|
113
|
+
- first_run é IMUTÁVEL após criação (representa o estado no bootstrap do scope)
|
|
114
|
+
- prd_existe/trd_existe são IMUTÁVEIS após o /sf-extract (só mudam via re-extração
|
|
115
|
+
que detecta NOVO conteúdo na outra categoria)
|
|
116
|
+
|
|
117
|
+
=============================================================================
|
|
118
|
+
-->
|