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,107 +1,140 @@
|
|
|
1
|
-
# Decisões — Architecture Decision Records
|
|
2
|
-
|
|
3
|
-
> Registro de decisões arquiteturais com contexto, alternativas e consequências.
|
|
4
|
-
> Cada decisão é imutável após aceita. Novas decisões podem substituir anteriores.
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
<!--
|
|
9
|
-
=============================================================================
|
|
10
|
-
INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
|
|
11
|
-
=============================================================================
|
|
12
|
-
|
|
13
|
-
PAPEL: Registro APPEND-ONLY de decisões arquiteturais do projeto.
|
|
14
|
-
Histórico de "por que fizemos assim?" — imutável uma vez aceita.
|
|
15
|
-
Consultado por features pra não refazer decisões; feature que queira contestar
|
|
16
|
-
cria nova ADR com status "substituída por ADR-NNN".
|
|
17
|
-
|
|
18
|
-
ORIGEM (first-run, via /sf-design):
|
|
19
|
-
- TRD §9 Decisões Técnicas (ADRs de bootstrap: escolha de stack, arquitetura,
|
|
20
|
-
auth scheme, estratégia de testes) → transcritas aqui como ADR-001, ADR-002...
|
|
21
|
-
|
|
22
|
-
ATUALIZAÇÃO (feature): /sf-merge-docs faz diff semântico TRD §9 ↔ docs/decisions.md
|
|
23
|
-
e aplica ADDED quando feature introduz ADR nova (raro mas acontece: mudança
|
|
24
|
-
de padrão, nova dependência crítica, trade-off significativo). REMOVED nunca
|
|
25
|
-
apaga ADR existente — muda status pra "substituída".
|
|
26
|
-
|
|
27
|
-
COMO GERAR:
|
|
28
|
-
1. Para cada decisão significativa, criar registro com TODOS os campos
|
|
29
|
-
2. Contexto: POR QUE essa decisão foi necessária (não apenas "precisávamos")
|
|
30
|
-
3. Alternativas: OBRIGATÓRIO listar ao menos 1 alternativa (com motivo da rejeição)
|
|
31
|
-
4. Consequências: o que MUDA por causa da decisão (positivo E negativo)
|
|
32
|
-
|
|
33
|
-
REGRAS:
|
|
34
|
-
- IDs sequenciais: ADR-001, ADR-002... nunca reutilizar
|
|
35
|
-
- NUNCA editar decisão com status "aceita" — criar nova com "substituída por ADR-XXX"
|
|
36
|
-
- Status "proposta" = ainda em discussão, não implementar até aceitar
|
|
37
|
-
- Toda mudança de stack, banco, framework DEVE ter registro aqui
|
|
38
|
-
- Decisões são APPEND-ONLY — histórico importa
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
1
|
+
# Decisões — Architecture Decision Records
|
|
2
|
+
|
|
3
|
+
> Registro de decisões arquiteturais com contexto, alternativas e consequências.
|
|
4
|
+
> Cada decisão é imutável após aceita. Novas decisões podem substituir anteriores.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!--
|
|
9
|
+
=============================================================================
|
|
10
|
+
INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
|
|
11
|
+
=============================================================================
|
|
12
|
+
|
|
13
|
+
PAPEL: Registro APPEND-ONLY de decisões arquiteturais do projeto.
|
|
14
|
+
Histórico de "por que fizemos assim?" — imutável uma vez aceita.
|
|
15
|
+
Consultado por features pra não refazer decisões; feature que queira contestar
|
|
16
|
+
cria nova ADR com status "substituída por ADR-NNN".
|
|
17
|
+
|
|
18
|
+
ORIGEM (first-run, via /sf-design):
|
|
19
|
+
- TRD §9 Decisões Técnicas (ADRs de bootstrap: escolha de stack, arquitetura,
|
|
20
|
+
auth scheme, estratégia de testes) → transcritas aqui como ADR-001, ADR-002...
|
|
21
|
+
|
|
22
|
+
ATUALIZAÇÃO (feature): /sf-merge-docs faz diff semântico TRD §9 ↔ docs/decisions.md
|
|
23
|
+
e aplica ADDED quando feature introduz ADR nova (raro mas acontece: mudança
|
|
24
|
+
de padrão, nova dependência crítica, trade-off significativo). REMOVED nunca
|
|
25
|
+
apaga ADR existente — muda status pra "substituída".
|
|
26
|
+
|
|
27
|
+
COMO GERAR:
|
|
28
|
+
1. Para cada decisão significativa, criar registro com TODOS os campos
|
|
29
|
+
2. Contexto: POR QUE essa decisão foi necessária (não apenas "precisávamos")
|
|
30
|
+
3. Alternativas: OBRIGATÓRIO listar ao menos 1 alternativa (com motivo da rejeição)
|
|
31
|
+
4. Consequências: o que MUDA por causa da decisão (positivo E negativo)
|
|
32
|
+
|
|
33
|
+
REGRAS:
|
|
34
|
+
- IDs sequenciais: ADR-001, ADR-002... nunca reutilizar
|
|
35
|
+
- NUNCA editar decisão com status "aceita" — criar nova com "substituída por ADR-XXX"
|
|
36
|
+
- Status "proposta" = ainda em discussão, não implementar até aceitar
|
|
37
|
+
- Toda mudança de stack, banco, framework DEVE ter registro aqui
|
|
38
|
+
- Decisões são APPEND-ONLY — histórico importa
|
|
39
|
+
|
|
40
|
+
ADRs INFERIDOS (origem /sfw-onboard de projeto brownfield):
|
|
41
|
+
- Quando o /sfw-onboard cria a documentação a partir de código existente, gera
|
|
42
|
+
ADRs descrevendo decisões OBSERVADAS no código (não tomadas em discussão).
|
|
43
|
+
- Cada ADR inferida tem flag `inferido: true` no início do bloco.
|
|
44
|
+
- Texto descritivo, NÃO prescritivo: "Projeto usa PostgreSQL com JSONB pra X"
|
|
45
|
+
(não "decidimos usar"). Cartógrafo, não arquiteto.
|
|
46
|
+
- Campo "Contexto" descreve o que o código revela. Campo "Alternativas" pode
|
|
47
|
+
ficar vazio ou listar "—" — não tem como saber o que foi descartado.
|
|
48
|
+
- Quando dev revisa e confirma/edita o ADR inferido, REMOVE a flag `inferido`.
|
|
49
|
+
- ADRs inferidos podem ser substituídos por novas ADRs (de features futuras)
|
|
50
|
+
como qualquer outro — flag não afeta imutabilidade.
|
|
51
|
+
|
|
52
|
+
=============================================================================
|
|
53
|
+
-->
|
|
54
|
+
|
|
55
|
+
## Formato — ADR normal
|
|
56
|
+
|
|
57
|
+
```markdown
|
|
58
|
+
### ADR-NNN: Título da Decisão
|
|
59
|
+
- **Status**: proposta | aceita | substituída por ADR-XXX | descartada
|
|
60
|
+
- **Data**: YYYY-MM-DD
|
|
61
|
+
- **Contexto**: Por que essa decisão foi necessária?
|
|
62
|
+
- **Decisão**: O que decidimos?
|
|
63
|
+
- **Alternativas consideradas**:
|
|
64
|
+
1. Alternativa A — rejeitada porque...
|
|
65
|
+
- **Consequências**:
|
|
66
|
+
- Positivas: ...
|
|
67
|
+
- Negativas: ...
|
|
68
|
+
- Riscos: ...
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Formato — ADR inferida (origem brownfield)
|
|
72
|
+
|
|
73
|
+
```markdown
|
|
74
|
+
### ADR-NNN: Título descritivo do padrão observado
|
|
75
|
+
- **Status**: aceita
|
|
76
|
+
- **Inferido**: true <!-- remover este campo após dev revisar e confirmar -->
|
|
77
|
+
- **Data**: YYYY-MM-DD (data do onboarding)
|
|
78
|
+
- **Contexto**: O que o código revela sobre o cenário (não "decidimos" — "projeto usa")
|
|
79
|
+
- **Decisão**: Padrão observado no código + onde ver (arquivo:linha)
|
|
80
|
+
- **Alternativas consideradas**:
|
|
81
|
+
1. — (não inferível a partir do código)
|
|
82
|
+
- **Consequências**:
|
|
83
|
+
- Observadas: efeitos visíveis do padrão no código atual
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
<!--
|
|
87
|
+
=============================================================================
|
|
88
|
+
INSTRUÇÕES PARA O AGENTE — continuação
|
|
89
|
+
=============================================================================
|
|
90
|
+
|
|
91
|
+
QUANDO CRIAR:
|
|
92
|
+
- Escolha de tecnologia/framework (em first-run, alimenta a seção inicial)
|
|
93
|
+
- Mudança de padrão de design (feature que introduz)
|
|
94
|
+
- Decisão de infra (cloud provider, DB engine)
|
|
95
|
+
- Trade-off significativo (performance vs simplicidade, etc.)
|
|
96
|
+
- /sf-merge-docs detecta §11 ADDED com impacto arquitetural
|
|
97
|
+
|
|
98
|
+
QUANDO NÃO CRIAR:
|
|
99
|
+
- Escolha de nome de variável
|
|
100
|
+
- Implementação seguindo padrão já definido
|
|
101
|
+
- Bug fix
|
|
102
|
+
- Refactor sem mudança de interface
|
|
103
|
+
|
|
104
|
+
=============================================================================
|
|
105
|
+
-->
|
|
106
|
+
|
|
107
|
+
## Índice
|
|
108
|
+
|
|
109
|
+
| ADR | Título | Status | Inferido | Data |
|
|
110
|
+
|-----|--------|--------|----------|------|
|
|
111
|
+
| ADR-001 | {{Título}} | proposta / aceita / substituída / descartada | sim/não | |
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Decisões
|
|
116
|
+
|
|
117
|
+
### ADR-001: {{Título}}
|
|
118
|
+
- **Status**: aceita
|
|
119
|
+
- **Inferido**: <!-- true se veio do /sfw-onboard; omitir após dev revisar -->
|
|
120
|
+
- **Data**:
|
|
121
|
+
- **Contexto**:
|
|
122
|
+
- **Decisão**:
|
|
123
|
+
- **Alternativas consideradas**:
|
|
124
|
+
1. —
|
|
125
|
+
- **Consequências**:
|
|
126
|
+
- Positivas:
|
|
127
|
+
- Negativas:
|
|
128
|
+
- Riscos:
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
> **Regra**: Decisões aceitas são imutáveis. Para reverter, criar nova decisão com status "substituída por ADR-XXX" na original.
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Changelog
|
|
137
|
+
|
|
138
|
+
| Data | Feature | Tipo | Descrição |
|
|
139
|
+
|------|---------|------|-----------|
|
|
140
|
+
| | | | |
|