spec-first-copilot 0.4.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.
Files changed (49) hide show
  1. package/README.md +156 -148
  2. package/bin/cli.js +52 -52
  3. package/lib/init.js +89 -89
  4. package/package.json +11 -4
  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 +48 -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 +194 -175
  14. package/templates/.github/instructions/docs.instructions.md +123 -123
  15. package/templates/.github/instructions/sensitive-files.instructions.md +32 -32
  16. package/templates/{docs/Desenvolvimento → .github}/rules.md +229 -229
  17. package/templates/.github/skills/sf-design/SKILL.md +180 -181
  18. package/templates/.github/skills/sf-dev/SKILL.md +349 -349
  19. package/templates/.github/skills/sf-discovery/SKILL.md +405 -405
  20. package/templates/.github/skills/sf-extract/SKILL.md +284 -284
  21. package/templates/.github/skills/sf-feature/SKILL.md +130 -130
  22. package/templates/.github/skills/sf-merge-delta/SKILL.md +145 -142
  23. package/templates/.github/skills/sf-plan/SKILL.md +178 -178
  24. package/templates/.github/skills/sf-session-finish/SKILL.md +120 -120
  25. package/templates/.github/skills/sf-setup-projeto/SKILL.md +123 -123
  26. package/templates/{docs/_templates/estrutura/API.template.md → .github/templates/estrutura/apiContracts.template.md} +151 -144
  27. package/templates/.github/templates/estrutura/architecture.template.md +158 -0
  28. package/templates/{docs/_templates/estrutura/Seguranca.template.md → .github/templates/estrutura/conventions.template.md} +202 -138
  29. package/templates/{docs/_templates/estrutura/ADRs.template.md → .github/templates/estrutura/decisions.template.md} +99 -91
  30. package/templates/.github/templates/estrutura/domain.template.md +148 -0
  31. package/templates/{docs/_templates → .github/templates}/feature/PRD.template.md +256 -256
  32. package/templates/{docs/_templates → .github/templates}/feature/Progresso.template.md +136 -136
  33. package/templates/{docs/_templates → .github/templates}/feature/TRD.template.md +204 -200
  34. package/templates/{docs/_templates → .github/templates}/feature/backlog-extraido.template.md +154 -154
  35. package/templates/{docs/_templates → .github/templates}/feature/context.template.md +42 -42
  36. package/templates/{docs/_templates → .github/templates}/feature/extract-log.template.md +38 -38
  37. package/templates/{docs/_templates → .github/templates}/feature/projetos.template.yaml +73 -73
  38. package/templates/{docs/_templates → .github/templates}/feature/sdd.template.md +372 -372
  39. package/templates/{docs/_templates → .github/templates}/feature/tasks.template.md +115 -115
  40. package/templates/{docs/_templates → .github/templates}/global/progresso_global.template.md +57 -57
  41. package/templates/docs/_templates/estrutura/Arquitetura.template.md +0 -82
  42. package/templates/docs/_templates/estrutura/Infraestrutura.template.md +0 -104
  43. package/templates/docs/_templates/estrutura/Modelo_Dados.template.md +0 -99
  44. package/templates/docs/_templates/estrutura/Stack.template.md +0 -78
  45. package/templates/docs/_templates/estrutura/Visao.template.md +0 -82
  46. /package/templates/docs/{Desenvolvimento/.gitkeep → .gitkeep} +0 -0
  47. /package/templates/{docs/Estrutura → workspace/Input}/.gitkeep +0 -0
  48. /package/templates/{docs/PM → workspace/Input/setup_projeto}/.gitkeep +0 -0
  49. /package/templates/{docs/PM/setup_projeto → workspace/Output}/.gitkeep +0 -0
@@ -1,91 +1,99 @@
1
- # ADRs — 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
- ORIGEM: Criado pelo /setup-projeto com ADRs iniciais (stack, arquitetura base).
14
- ATUALIZAÇÃO: Novas ADRs adicionadas quando:
15
- - /setup-projeto define stack e arquitetura (ADRs iniciais)
16
- - /design gera SDD §2 com decisões de design significativas
17
- - /merge-delta detecta mudança de stack ou padrão
18
- - Usuário toma decisão que impacta arquitetura
19
-
20
- COMO GERAR:
21
- 1. Para cada decisão significativa, criar ADR com TODOS os campos
22
- 2. Contexto: POR QUE essa decisão foi necessária (não apenas "precisávamos")
23
- 3. Alternativas: OBRIGATÓRIO listar ao menos 1 alternativa (com motivo da rejeição)
24
- 4. Consequências: o que MUDA por causa da decisão (positivo E negativo)
25
-
26
- REGRAS:
27
- - IDs sequenciais: ADR-001, ADR-002... nunca reutilizar
28
- - NUNCA editar ADR com status "aceita" — criar nova com "substituída por ADR-XXX"
29
- - Status "proposta" = ainda em discussão, não implementar até aceitar
30
- - Toda mudança de stack, banco, framework DEVE ter ADR
31
- - ADRs são APPEND-ONLY — histórico importa
32
-
33
- QUANDO CRIAR ADR:
34
- - Escolha de tecnologia/framework
35
- - Mudança de padrão de design
36
- - Decisão de infra (cloud provider, DB engine)
37
- - Trade-off significativo (performance vs simplicidade, etc.)
38
-
39
- QUANDO NÃO CRIAR ADR:
40
- - Escolha de nome de variável
41
- - Implementação seguindo padrão já definido
42
- - Bug fix
43
- - Refactor sem mudança de interface
44
-
45
- =============================================================================
46
- -->
47
-
48
- ## Índice
49
-
50
- | ADR | Título | Status | Data |
51
- |-----|--------|--------|------|
52
- | ADR-001 | {{Título}} | proposta / aceita / substituída / descartada | |
53
-
54
- ## Formato
55
-
56
- Cada ADR segue este modelo:
57
-
58
- ```markdown
59
- ### ADR-NNN: Título da Decisão
60
- - **Status**: proposta | aceita | substituída por ADR-XXX | descartada
61
- - **Data**: YYYY-MM-DD
62
- - **Contexto**: Por que essa decisão foi necessária?
63
- - **Decisão**: O que decidimos?
64
- - **Alternativas consideradas**:
65
- 1. Alternativa A — rejeitada porque...
66
- 2. Alternativa B — rejeitada porque...
67
- - **Consequências**:
68
- - Positivas: ...
69
- - Negativas: ...
70
- - Riscos: ...
71
- ```
72
-
73
- ---
74
-
75
- ## Decisões
76
-
77
- ### ADR-001: {{Título}}
78
- - **Status**: aceita
79
- - **Data**:
80
- - **Contexto**:
81
- - **Decisão**:
82
- - **Alternativas consideradas**:
83
- 1. —
84
- - **Consequências**:
85
- - Positivas:
86
- - Negativas:
87
- - Riscos:
88
-
89
- ---
90
-
91
- > **Regra**: ADRs aceitas são imutáveis. Para reverter uma decisão, crie nova ADR com status "substituída por ADR-XXX" na ADR original.
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
+ ORIGEM: Criado pelo /setup-projeto com decisões iniciais (stack, arquitetura base).
14
+ ATUALIZAÇÃO: Novas decisões adicionadas quando:
15
+ - /setup-projeto define stack e arquitetura (decisões iniciais)
16
+ - /design gera SDD §2 com decisões de design significativas
17
+ - /merge-delta detecta mudança de stack ou padrão arquitetural
18
+ - Usuário toma decisão que impacta arquitetura
19
+
20
+ COMO GERAR:
21
+ 1. Para cada decisão significativa, criar registro com TODOS os campos
22
+ 2. Contexto: POR QUE essa decisão foi necessária (não apenas "precisávamos")
23
+ 3. Alternativas: OBRIGATÓRIO listar ao menos 1 alternativa (com motivo da rejeição)
24
+ 4. Consequências: o que MUDA por causa da decisão (positivo E negativo)
25
+
26
+ REGRAS:
27
+ - IDs sequenciais: ADR-001, ADR-002... nunca reutilizar
28
+ - NUNCA editar decisão com status "aceita" — criar nova com "substituída por ADR-XXX"
29
+ - Status "proposta" = ainda em discussão, não implementar até aceitar
30
+ - Toda mudança de stack, banco, framework DEVE ter registro aqui
31
+ - Decisões são APPEND-ONLY — histórico importa
32
+
33
+ QUANDO CRIAR:
34
+ - Escolha de tecnologia/framework
35
+ - Mudança de padrão de design
36
+ - Decisão de infra (cloud provider, DB engine)
37
+ - Trade-off significativo (performance vs simplicidade, etc.)
38
+
39
+ QUANDO NÃO CRIAR:
40
+ - Escolha de nome de variável
41
+ - Implementação seguindo padrão já definido
42
+ - Bug fix
43
+ - Refactor sem mudança de interface
44
+
45
+ =============================================================================
46
+ -->
47
+
48
+ ## Índice
49
+
50
+ | ADR | Título | Status | Data |
51
+ |-----|--------|--------|------|
52
+ | ADR-001 | {{Título}} | proposta / aceita / substituída / descartada | |
53
+
54
+ ## Formato
55
+
56
+ Cada decisão segue este modelo:
57
+
58
+ ```markdown
59
+ ### ADR-NNN: Título da Decisão
60
+ - **Status**: proposta | aceita | substituída por ADR-XXX | descartada
61
+ - **Data**: YYYY-MM-DD
62
+ - **Contexto**: Por que essa decisão foi necessária?
63
+ - **Decisão**: O que decidimos?
64
+ - **Alternativas consideradas**:
65
+ 1. Alternativa A — rejeitada porque...
66
+ 2. Alternativa B — rejeitada porque...
67
+ - **Consequências**:
68
+ - Positivas: ...
69
+ - Negativas: ...
70
+ - Riscos: ...
71
+ ```
72
+
73
+ ---
74
+
75
+ ## Decisões
76
+
77
+ ### ADR-001: {{Título}}
78
+ - **Status**: aceita
79
+ - **Data**:
80
+ - **Contexto**:
81
+ - **Decisão**:
82
+ - **Alternativas consideradas**:
83
+ 1. —
84
+ - **Consequências**:
85
+ - Positivas:
86
+ - Negativas:
87
+ - Riscos:
88
+
89
+ ---
90
+
91
+ > **Regra**: Decisões aceitas são imutáveis. Para reverter, criar nova decisão com status "substituída por ADR-XXX" na original.
92
+
93
+ ---
94
+
95
+ ## Changelog
96
+
97
+ | Data | Feature | Tipo | Descrição |
98
+ |------|---------|------|-----------|
99
+ | | | | |
@@ -0,0 +1,148 @@
1
+ # Domínio
2
+
3
+ > Visão de negócio + modelo de dados.
4
+ > O que o sistema é, quem usa, com o que integra, quais entidades existem e como se relacionam.
5
+
6
+ ---
7
+
8
+ <!--
9
+ =============================================================================
10
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
11
+ =============================================================================
12
+
13
+ ORIGEM: Gerado pelo /setup-projeto a partir do TRD §1 (Visão) e §4 (Modelo de Dados Base).
14
+ ATUALIZAÇÃO: /merge-delta quando features adicionam/alteram tabelas, entidades,
15
+ atores, integrações externas ou termos de domínio.
16
+
17
+ COMO GERAR:
18
+ 1. Ler TRD §1 (Visão do Sistema) — contexto, atores, integrações
19
+ 2. Ler TRD §4 (Modelo de Dados Base) — tabelas iniciais, convenções
20
+ 3. Descrever o sistema em 2-3 frases objetivas (O QUE, PARA QUEM, QUAL PROBLEMA)
21
+ 4. Listar TODOS os atores com permissões gerais (o que PODE e o que NÃO pode)
22
+ 5. Listar TODAS as integrações externas com direção explícita
23
+ 6. Gerar diagrama ER textual com TODAS as relações
24
+ 7. Catálogo de tabelas com tipos EXATOS do banco (varchar(255), não "string")
25
+ 8. Glossário (DDD ubiquitous language) é obrigatório
26
+
27
+ O QUE NÃO VAI AQUI:
28
+ - Roadmap de módulos → vive no backlog faseado, não no Estrutura
29
+ - Containers, stack, deploy → architecture.md
30
+ - Autorização, LGPD, auditoria → conventions.md
31
+
32
+ REGRAS:
33
+ - Atores devem ter permissões gerais claras
34
+ - Integrações devem ter direção explícita (envia/recebe/ambos)
35
+ - Toda FK define ON DELETE/ON UPDATE
36
+ - Índices precisam de justificativa (query que justifica)
37
+ - Convenções de nomenclatura são LEI — SDDs seguem à risca
38
+ - Glossário não é opcional — termos ambíguos geram bugs
39
+
40
+ =============================================================================
41
+ -->
42
+
43
+ ## O que é este sistema?
44
+
45
+ <!-- Descrição em 2-3 frases. O que ele faz, para quem, qual problema resolve. -->
46
+
47
+
48
+ ## Usuários e Papéis
49
+
50
+ | Papel | O que faz | O que NÃO pode fazer | Nível de acesso |
51
+ |-------|-----------|----------------------|-----------------|
52
+ | | | | |
53
+
54
+ ## Integrações Externas
55
+
56
+ | Sistema/Serviço | Tipo (API/Webhook/Arquivo/Fila) | Direção (Envia/Recebe/Ambos) | Descrição | SLA/Disponibilidade |
57
+ |-----------------|--------------------------------|------------------------------|-----------|---------------------|
58
+ | | | | | |
59
+
60
+ ## Restrições e Premissas
61
+
62
+ ### Restrições técnicas
63
+ -
64
+
65
+ ### Restrições de negócio
66
+ -
67
+
68
+ ### Premissas
69
+ -
70
+
71
+ ## Glossário
72
+
73
+ > Termos do domínio usados em todo o projeto. Linguagem ubíqua (DDD).
74
+
75
+ | Termo | Definição | Exemplo de uso |
76
+ |-------|-----------|----------------|
77
+ | | | |
78
+
79
+ ## Modelo de Dados
80
+
81
+ ### Diagrama ER
82
+
83
+ ```
84
+ <!-- Representação textual do ER -->
85
+ <!-- Formato: [tabela_a] 1---N [tabela_b] (campo_fk) -->
86
+ ```
87
+
88
+ ### Convenções de Nomenclatura
89
+
90
+ | Elemento | Convenção | Exemplo |
91
+ |----------|-----------|---------|
92
+ | Tabelas | snake_case, plural | `clientes`, `pedidos` |
93
+ | Colunas | snake_case | `nome_completo`, `criado_em` |
94
+ | PKs | `id` (UUID ou SERIAL) | `id UUID PRIMARY KEY DEFAULT gen_random_uuid()` |
95
+ | FKs | `{tabela_singular}_id` | `cliente_id`, `cidade_id` |
96
+ | Índices | `idx_{tabela}_{colunas}` | `idx_clientes_cpf` |
97
+ | Unique | `uq_{tabela}_{colunas}` | `uq_clientes_email` |
98
+ | Timestamps | `criado_em`, `atualizado_em` | `TIMESTAMPTZ NOT NULL DEFAULT now()` |
99
+ | Soft delete | `ativo` (boolean) | `ativo BOOLEAN DEFAULT true` |
100
+ | Auditoria | `criado_por`, `atualizado_por` | `UUID REFERENCES usuarios(id)` |
101
+
102
+ ### Catálogo de Tabelas
103
+
104
+ <!-- Repetir bloco para cada tabela -->
105
+
106
+ #### {{tabela}}
107
+
108
+ > Descrição breve da tabela.
109
+
110
+ | Coluna | Tipo | Nullable | Default | Constraint | Descrição |
111
+ |--------|------|----------|---------|------------|-----------|
112
+ | | | | | | |
113
+
114
+ **Relações:**
115
+ - `campo_id` → `tabela_ref(id)` — ON DELETE CASCADE / SET NULL / RESTRICT
116
+
117
+ **Índices:**
118
+
119
+ | Nome | Colunas | Tipo | Justificativa |
120
+ |------|---------|------|---------------|
121
+ | | | btree / unique / gin | <!-- Qual query justifica este índice? --> |
122
+
123
+ ### Estratégia de Migrations
124
+
125
+ | Aspecto | Convenção |
126
+ |---------|-----------|
127
+ | Ferramenta | <!-- Ex: knex, prisma, flyway, alembic, EF Core --> |
128
+ | Nomenclatura | <!-- Ex: 001_create_tabela.sql, YYYYMMDD_descricao --> |
129
+ | Rollback | <!-- Toda migration TEM rollback? Testado como? --> |
130
+ | Execução | <!-- Sequencial? Transacional? --> |
131
+ | Dados existentes | <!-- Como lidar com migrations em tabelas com dados? --> |
132
+
133
+ ### Regras Globais de Dados
134
+
135
+ | Regra | Descrição |
136
+ |-------|-----------|
137
+ | Soft delete | <!-- Todas as tabelas usam? Quais exceções? --> |
138
+ | Auditoria | <!-- criado_por/atualizado_por em todas? --> |
139
+ | Timestamps | <!-- criado_em/atualizado_em obrigatórios? --> |
140
+ | Encoding | <!-- UTF-8? Collation? --> |
141
+
142
+ ---
143
+
144
+ ## Changelog
145
+
146
+ | Data | Feature | Tipo | Descrição |
147
+ |------|---------|------|-----------|
148
+ | | | | |