spec-first-claude 0.2.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 +144 -147
- package/bin/cli.js +52 -52
- package/lib/init.js +89 -93
- package/package.json +24 -23
- package/templates/.ai/memory/napkin.md +68 -68
- package/templates/.claude/agents/backend-coder.md +215 -215
- package/templates/.claude/agents/db-coder.md +165 -165
- package/templates/.claude/agents/doc-writer.md +51 -51
- package/templates/.claude/agents/frontend-coder.md +222 -222
- package/templates/.claude/agents/infra-coder.md +341 -341
- package/templates/.claude/agents/reviewer.md +99 -99
- package/templates/.claude/agents/security-reviewer.md +153 -153
- package/templates/.claude/commands/design.md +107 -107
- package/templates/.claude/commands/dev.md +189 -167
- package/templates/.claude/commands/extract.md +137 -137
- package/templates/.claude/commands/feature.md +60 -60
- package/templates/.claude/commands/merge-delta.md +70 -70
- package/templates/.claude/commands/plan.md +86 -86
- package/templates/.claude/commands/{pausar.md → session-finish.md} +83 -83
- package/templates/.claude/commands/setup-projeto.md +68 -68
- package/templates/.claude/settings.local.json +6 -6
- package/templates/CLAUDE.md +198 -199
- 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,137 +1,137 @@
|
|
|
1
|
-
# /extract $ARGUMENTS
|
|
2
|
-
|
|
3
|
-
Skill atômica de extração. Lê insumos brutos do PM/ e gera PRD ou TRD.
|
|
4
|
-
$ARGUMENTS = nome (ex: setup_projeto, feat_cadastro_cliente)
|
|
5
|
-
|
|
6
|
-
## Multi-agent
|
|
7
|
-
|
|
8
|
-
| Agente | Modelo | Papel |
|
|
9
|
-
|--------|--------|-------|
|
|
10
|
-
| **Reader** (1 por arquivo) | Sonnet | Lê e cataloga 1 arquivo. Não interpreta, apenas cataloga |
|
|
11
|
-
| **Analyzer** | Opus | Cruza fontes, detecta gaps/contradições, gera documento final |
|
|
12
|
-
|
|
13
|
-
## Pré-condições
|
|
14
|
-
|
|
15
|
-
| # | Validação | Se falhar |
|
|
16
|
-
|---|-----------|-----------|
|
|
17
|
-
| 1 | $ARGUMENTS informado | Parar → "Informe o nome" |
|
|
18
|
-
| 2 | `docs/PM/$ARGUMENTS/` existe com arquivos | Parar → "Pasta vazia ou inexistente" |
|
|
19
|
-
| 3 | `.context.md` existe | Parar → "Execute /feature ou /setup-projeto primeiro" |
|
|
20
|
-
| 4 | Status é `not_started` ou `extract_done` | Se posterior → "Extração já aprovada" |
|
|
21
|
-
|
|
22
|
-
## Passos
|
|
23
|
-
|
|
24
|
-
### 1. Ler contexto
|
|
25
|
-
- `.context.md` → tipo (feature/setup) e documento (PRD/TRD)
|
|
26
|
-
- `discovery.md` (se existir) → análise profunda prévia dos insumos
|
|
27
|
-
- `docs/Estrutura/` se existir
|
|
28
|
-
- Template: tipo=feature → `PRD.template.md` | tipo=setup → `TRD.template.md`
|
|
29
|
-
|
|
30
|
-
> Se `discovery.md` existir: usar mapa do sistema e perguntas já respondidas como contexto
|
|
31
|
-
> enriquecido. Resultado: menos ambiguidades, melhor estruturação.
|
|
32
|
-
|
|
33
|
-
### 2. Inventariar insumos
|
|
34
|
-
Para cada arquivo em `docs/PM/$ARGUMENTS/` (ignorar .gitkeep):
|
|
35
|
-
- Calcular hash SHA-256 (primeiros 8 chars)
|
|
36
|
-
- Se `.extract-log.md` existe → classificar: NOVO / MODIFICADO / INALTERADO
|
|
37
|
-
- Se não existe → todos são NOVOS
|
|
38
|
-
|
|
39
|
-
### 3. Processar (simulando Reader por arquivo)
|
|
40
|
-
Para cada arquivo NOVO ou MODIFICADO:
|
|
41
|
-
|
|
42
|
-
| Formato | O que extrair |
|
|
43
|
-
|---------|---------------|
|
|
44
|
-
| .md, .txt | Requisitos, regras, contexto, restrições |
|
|
45
|
-
| .sql | Entidades, campos, tipos, constraints, índices |
|
|
46
|
-
| .html | Telas, campos, ações, validações, rotas, permissões |
|
|
47
|
-
| .xml, .json | Fluxos, decisões, configurações |
|
|
48
|
-
| .csv | Dados tabulares, mapeamentos |
|
|
49
|
-
| .png, .jpg, .pdf | Análise visual (wireframes, mockups) |
|
|
50
|
-
| Não identificado | Registrar como NÃO IDENTIFICADO, gerar ambiguidade |
|
|
51
|
-
|
|
52
|
-
### 4. Gerar documento (simulando Analyzer)
|
|
53
|
-
- Consolidar todas informações por seção do template
|
|
54
|
-
- Detectar contradições entre fontes → ambiguidade
|
|
55
|
-
- Detectar gaps (seções sem info) → ambiguidade
|
|
56
|
-
- **Validar Checklist de Temas Críticos** (ver abaixo) — temas ausentes viram ambiguidades obrigatórias
|
|
57
|
-
- Nunca inferir regra de negócio — se não explícito, é ambiguidade
|
|
58
|
-
- IDs estáveis: RN-001 nunca renumera, novos continuam sequência
|
|
59
|
-
- Rastreabilidade: cada info aponta pro arquivo fonte
|
|
60
|
-
|
|
61
|
-
#### Checklist de Temas Críticos
|
|
62
|
-
|
|
63
|
-
Após consolidar os Readers, verificar se os insumos cobrem os temas abaixo.
|
|
64
|
-
Se um tema **não foi mencionado em nenhum insumo**, gera **ambiguidade obrigatória**.
|
|
65
|
-
|
|
66
|
-
**Para TRD (setup):**
|
|
67
|
-
|
|
68
|
-
| # | Tema | Se ausente |
|
|
69
|
-
|---|------|------------|
|
|
70
|
-
| 1 | **Autenticação** (JWT, OAuth, API Key, Session?) | Ambiguidade: "Nenhum mecanismo de autenticação definido" |
|
|
71
|
-
| 2 | **Autorização / Roles** (perfis, RBAC, ABAC, quem acessa o quê) | Ambiguidade: "Perfis de acesso e regras de autorização não definidos" |
|
|
72
|
-
| 3 | **Separação de serviços** (monolito, microserviços, API vs Worker) | Ambiguidade: "Arquitetura de serviços não definida" |
|
|
73
|
-
| 4 | **Ambientes** (dev, staging, prod, Docker, CI/CD) | Ambiguidade: "Estratégia de ambientes e deploy não definida" |
|
|
74
|
-
| 5 | **Dados sensíveis** (PII, LGPD, criptografia, masking) | Ambiguidade: "Tratamento de dados sensíveis / LGPD não mencionado" |
|
|
75
|
-
|
|
76
|
-
**Para PRD (feature):**
|
|
77
|
-
|
|
78
|
-
| # | Tema | Se ausente |
|
|
79
|
-
|---|------|------------|
|
|
80
|
-
| 1 | **Autenticação requerida** (quais endpoints públicos vs autenticados?) | Ambiguidade: "Não definido quais operações exigem autenticação" |
|
|
81
|
-
| 2 | **Permissões / Roles** (quais perfis podem executar cada ação?) | Ambiguidade: "Não definido quais perfis têm acesso a cada operação" |
|
|
82
|
-
| 3 | **Validações de entrada** (regras, limites, formatos) | Ambiguidade: "Validações de entrada não detalhadas" |
|
|
83
|
-
| 4 | **Tratamento de erros** (cenários de falha, mensagens) | Ambiguidade: "Cenários de erro e mensagens ao usuário não definidos" |
|
|
84
|
-
| 5 | **Impacto em dados existentes** (migração necessária?) | Ambiguidade: "Impacto em dados existentes não avaliado" |
|
|
85
|
-
|
|
86
|
-
> O Analyzer NÃO inventa respostas — se não está nos insumos, PERGUNTA.
|
|
87
|
-
|
|
88
|
-
### 5. Gerar roadmap de produto faseado (APENAS no setup)
|
|
89
|
-
Quando tipo=setup, o Analyzer encontra informações que não são infraestrutura
|
|
90
|
-
(regras de negócio, jornadas, telas, fluxos). Em vez de descartar, organizar em
|
|
91
|
-
`backlog_extraido.md` como **roadmap faseado** com entregáveis incrementais.
|
|
92
|
-
|
|
93
|
-
O Analyzer deve:
|
|
94
|
-
1. Identificar funcionalidades, entidades, regras de negócio, jornadas, telas
|
|
95
|
-
2. Mapear dependências entre elas (ex: agendamento depende de cadastro de clientes)
|
|
96
|
-
3. Agrupar em **fases de entrega** por dependência + complexidade
|
|
97
|
-
4. Para cada fase: definir entregável + critério de done
|
|
98
|
-
5. Sugerir **1 feature única** com nome descritivo (ex: `feat_mvp`)
|
|
99
|
-
6. Usar template `backlog-extraido.template.md`
|
|
100
|
-
|
|
101
|
-
**Princípio**: Entregáveis contínuos — cada fase entrega valor e pode ir pra produção.
|
|
102
|
-
Máximo 4-5 fases. Fase 1 sempre = fundação/cadastros base.
|
|
103
|
-
|
|
104
|
-
Este arquivo:
|
|
105
|
-
- É gerado APENAS no setup (não em features)
|
|
106
|
-
- Serve como roadmap quando o usuário for criar `/feature`
|
|
107
|
-
- O /extract da feature usa as fases como referência para o PRD
|
|
108
|
-
|
|
109
|
-
### 6. Gerar `.extract-log.md`
|
|
110
|
-
```markdown
|
|
111
|
-
# Extract Log — $ARGUMENTS
|
|
112
|
-
|
|
113
|
-
## Extração N — {{ISO_DATETIME}}
|
|
114
|
-
| Arquivo | Hash | Classificação | Status | Seções alimentadas |
|
|
115
|
-
|---------|------|---------------|--------|--------------------|
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### 6. Atualizar `.context.md`
|
|
119
|
-
```yaml
|
|
120
|
-
status: "extract_done"
|
|
121
|
-
ultima_skill: "/extract"
|
|
122
|
-
atualizado_em: "{{ISO_DATETIME}}"
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
## Re-extração
|
|
126
|
-
- Merge ADITIVO com documento existente (nunca remove info de inalterados)
|
|
127
|
-
- Seções afetadas marcadas com `<!-- ATUALIZADO: re-extração -->`
|
|
128
|
-
- Novos IDs continuam sequência
|
|
129
|
-
|
|
130
|
-
## Erros
|
|
131
|
-
| Erro | Ação |
|
|
132
|
-
|------|------|
|
|
133
|
-
| Pasta vazia | Parar, listar formatos aceitos |
|
|
134
|
-
| .context.md não existe | Parar, sugerir /feature ou /setup-projeto |
|
|
135
|
-
| Nenhum arquivo novo/modificado | Informar "Nenhuma alteração detectada" |
|
|
136
|
-
| Arquivo não identificado | Registrar no log, gerar ambiguidade |
|
|
137
|
-
| Contradição entre arquivos | Gerar ambiguidade citando os dois |
|
|
1
|
+
# /extract $ARGUMENTS
|
|
2
|
+
|
|
3
|
+
Skill atômica de extração. Lê insumos brutos do PM/ e gera PRD ou TRD.
|
|
4
|
+
$ARGUMENTS = nome (ex: setup_projeto, feat_cadastro_cliente)
|
|
5
|
+
|
|
6
|
+
## Multi-agent
|
|
7
|
+
|
|
8
|
+
| Agente | Modelo | Papel |
|
|
9
|
+
|--------|--------|-------|
|
|
10
|
+
| **Reader** (1 por arquivo) | Sonnet | Lê e cataloga 1 arquivo. Não interpreta, apenas cataloga |
|
|
11
|
+
| **Analyzer** | Opus | Cruza fontes, detecta gaps/contradições, gera documento final |
|
|
12
|
+
|
|
13
|
+
## Pré-condições
|
|
14
|
+
|
|
15
|
+
| # | Validação | Se falhar |
|
|
16
|
+
|---|-----------|-----------|
|
|
17
|
+
| 1 | $ARGUMENTS informado | Parar → "Informe o nome" |
|
|
18
|
+
| 2 | `docs/PM/$ARGUMENTS/` existe com arquivos | Parar → "Pasta vazia ou inexistente" |
|
|
19
|
+
| 3 | `.context.md` existe | Parar → "Execute /feature ou /setup-projeto primeiro" |
|
|
20
|
+
| 4 | Status é `not_started` ou `extract_done` | Se posterior → "Extração já aprovada" |
|
|
21
|
+
|
|
22
|
+
## Passos
|
|
23
|
+
|
|
24
|
+
### 1. Ler contexto
|
|
25
|
+
- `.context.md` → tipo (feature/setup) e documento (PRD/TRD)
|
|
26
|
+
- `discovery.md` (se existir) → análise profunda prévia dos insumos
|
|
27
|
+
- `docs/Estrutura/` se existir
|
|
28
|
+
- Template: tipo=feature → `PRD.template.md` | tipo=setup → `TRD.template.md`
|
|
29
|
+
|
|
30
|
+
> Se `discovery.md` existir: usar mapa do sistema e perguntas já respondidas como contexto
|
|
31
|
+
> enriquecido. Resultado: menos ambiguidades, melhor estruturação.
|
|
32
|
+
|
|
33
|
+
### 2. Inventariar insumos
|
|
34
|
+
Para cada arquivo em `docs/PM/$ARGUMENTS/` (ignorar .gitkeep):
|
|
35
|
+
- Calcular hash SHA-256 (primeiros 8 chars)
|
|
36
|
+
- Se `.extract-log.md` existe → classificar: NOVO / MODIFICADO / INALTERADO
|
|
37
|
+
- Se não existe → todos são NOVOS
|
|
38
|
+
|
|
39
|
+
### 3. Processar (simulando Reader por arquivo)
|
|
40
|
+
Para cada arquivo NOVO ou MODIFICADO:
|
|
41
|
+
|
|
42
|
+
| Formato | O que extrair |
|
|
43
|
+
|---------|---------------|
|
|
44
|
+
| .md, .txt | Requisitos, regras, contexto, restrições |
|
|
45
|
+
| .sql | Entidades, campos, tipos, constraints, índices |
|
|
46
|
+
| .html | Telas, campos, ações, validações, rotas, permissões |
|
|
47
|
+
| .xml, .json | Fluxos, decisões, configurações |
|
|
48
|
+
| .csv | Dados tabulares, mapeamentos |
|
|
49
|
+
| .png, .jpg, .pdf | Análise visual (wireframes, mockups) |
|
|
50
|
+
| Não identificado | Registrar como NÃO IDENTIFICADO, gerar ambiguidade |
|
|
51
|
+
|
|
52
|
+
### 4. Gerar documento (simulando Analyzer)
|
|
53
|
+
- Consolidar todas informações por seção do template
|
|
54
|
+
- Detectar contradições entre fontes → ambiguidade
|
|
55
|
+
- Detectar gaps (seções sem info) → ambiguidade
|
|
56
|
+
- **Validar Checklist de Temas Críticos** (ver abaixo) — temas ausentes viram ambiguidades obrigatórias
|
|
57
|
+
- Nunca inferir regra de negócio — se não explícito, é ambiguidade
|
|
58
|
+
- IDs estáveis: RN-001 nunca renumera, novos continuam sequência
|
|
59
|
+
- Rastreabilidade: cada info aponta pro arquivo fonte
|
|
60
|
+
|
|
61
|
+
#### Checklist de Temas Críticos
|
|
62
|
+
|
|
63
|
+
Após consolidar os Readers, verificar se os insumos cobrem os temas abaixo.
|
|
64
|
+
Se um tema **não foi mencionado em nenhum insumo**, gera **ambiguidade obrigatória**.
|
|
65
|
+
|
|
66
|
+
**Para TRD (setup):**
|
|
67
|
+
|
|
68
|
+
| # | Tema | Se ausente |
|
|
69
|
+
|---|------|------------|
|
|
70
|
+
| 1 | **Autenticação** (JWT, OAuth, API Key, Session?) | Ambiguidade: "Nenhum mecanismo de autenticação definido" |
|
|
71
|
+
| 2 | **Autorização / Roles** (perfis, RBAC, ABAC, quem acessa o quê) | Ambiguidade: "Perfis de acesso e regras de autorização não definidos" |
|
|
72
|
+
| 3 | **Separação de serviços** (monolito, microserviços, API vs Worker) | Ambiguidade: "Arquitetura de serviços não definida" |
|
|
73
|
+
| 4 | **Ambientes** (dev, staging, prod, Docker, CI/CD) | Ambiguidade: "Estratégia de ambientes e deploy não definida" |
|
|
74
|
+
| 5 | **Dados sensíveis** (PII, LGPD, criptografia, masking) | Ambiguidade: "Tratamento de dados sensíveis / LGPD não mencionado" |
|
|
75
|
+
|
|
76
|
+
**Para PRD (feature):**
|
|
77
|
+
|
|
78
|
+
| # | Tema | Se ausente |
|
|
79
|
+
|---|------|------------|
|
|
80
|
+
| 1 | **Autenticação requerida** (quais endpoints públicos vs autenticados?) | Ambiguidade: "Não definido quais operações exigem autenticação" |
|
|
81
|
+
| 2 | **Permissões / Roles** (quais perfis podem executar cada ação?) | Ambiguidade: "Não definido quais perfis têm acesso a cada operação" |
|
|
82
|
+
| 3 | **Validações de entrada** (regras, limites, formatos) | Ambiguidade: "Validações de entrada não detalhadas" |
|
|
83
|
+
| 4 | **Tratamento de erros** (cenários de falha, mensagens) | Ambiguidade: "Cenários de erro e mensagens ao usuário não definidos" |
|
|
84
|
+
| 5 | **Impacto em dados existentes** (migração necessária?) | Ambiguidade: "Impacto em dados existentes não avaliado" |
|
|
85
|
+
|
|
86
|
+
> O Analyzer NÃO inventa respostas — se não está nos insumos, PERGUNTA.
|
|
87
|
+
|
|
88
|
+
### 5. Gerar roadmap de produto faseado (APENAS no setup)
|
|
89
|
+
Quando tipo=setup, o Analyzer encontra informações que não são infraestrutura
|
|
90
|
+
(regras de negócio, jornadas, telas, fluxos). Em vez de descartar, organizar em
|
|
91
|
+
`backlog_extraido.md` como **roadmap faseado** com entregáveis incrementais.
|
|
92
|
+
|
|
93
|
+
O Analyzer deve:
|
|
94
|
+
1. Identificar funcionalidades, entidades, regras de negócio, jornadas, telas
|
|
95
|
+
2. Mapear dependências entre elas (ex: agendamento depende de cadastro de clientes)
|
|
96
|
+
3. Agrupar em **fases de entrega** por dependência + complexidade
|
|
97
|
+
4. Para cada fase: definir entregável + critério de done
|
|
98
|
+
5. Sugerir **1 feature única** com nome descritivo (ex: `feat_mvp`)
|
|
99
|
+
6. Usar template `backlog-extraido.template.md`
|
|
100
|
+
|
|
101
|
+
**Princípio**: Entregáveis contínuos — cada fase entrega valor e pode ir pra produção.
|
|
102
|
+
Máximo 4-5 fases. Fase 1 sempre = fundação/cadastros base.
|
|
103
|
+
|
|
104
|
+
Este arquivo:
|
|
105
|
+
- É gerado APENAS no setup (não em features)
|
|
106
|
+
- Serve como roadmap quando o usuário for criar `/feature`
|
|
107
|
+
- O /extract da feature usa as fases como referência para o PRD
|
|
108
|
+
|
|
109
|
+
### 6. Gerar `.extract-log.md`
|
|
110
|
+
```markdown
|
|
111
|
+
# Extract Log — $ARGUMENTS
|
|
112
|
+
|
|
113
|
+
## Extração N — {{ISO_DATETIME}}
|
|
114
|
+
| Arquivo | Hash | Classificação | Status | Seções alimentadas |
|
|
115
|
+
|---------|------|---------------|--------|--------------------|
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### 6. Atualizar `.context.md`
|
|
119
|
+
```yaml
|
|
120
|
+
status: "extract_done"
|
|
121
|
+
ultima_skill: "/extract"
|
|
122
|
+
atualizado_em: "{{ISO_DATETIME}}"
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Re-extração
|
|
126
|
+
- Merge ADITIVO com documento existente (nunca remove info de inalterados)
|
|
127
|
+
- Seções afetadas marcadas com `<!-- ATUALIZADO: re-extração -->`
|
|
128
|
+
- Novos IDs continuam sequência
|
|
129
|
+
|
|
130
|
+
## Erros
|
|
131
|
+
| Erro | Ação |
|
|
132
|
+
|------|------|
|
|
133
|
+
| Pasta vazia | Parar, listar formatos aceitos |
|
|
134
|
+
| .context.md não existe | Parar, sugerir /feature ou /setup-projeto |
|
|
135
|
+
| Nenhum arquivo novo/modificado | Informar "Nenhuma alteração detectada" |
|
|
136
|
+
| Arquivo não identificado | Registrar no log, gerar ambiguidade |
|
|
137
|
+
| Contradição entre arquivos | Gerar ambiguidade citando os dois |
|
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
# /feature $ARGUMENTS
|
|
2
|
-
|
|
3
|
-
Orquestrador de feature. Cria contexto PRD, chama /extract e para no checkpoint.
|
|
4
|
-
$ARGUMENTS = nome da feature (ex: feat_cadastro_cliente)
|
|
5
|
-
|
|
6
|
-
## Execução
|
|
7
|
-
|
|
8
|
-
### Convenção de nomes
|
|
9
|
-
- Features: `feat_nome_descritivo`
|
|
10
|
-
- Bugs: `bug_nome_descritivo`
|
|
11
|
-
- Tasks técnicas: `task_nome_descritivo`
|
|
12
|
-
|
|
13
|
-
### Pré-condições
|
|
14
|
-
|
|
15
|
-
| # | Validação | Se falhar |
|
|
16
|
-
|---|-----------|-----------|
|
|
17
|
-
| 1 | $ARGUMENTS foi informado | Parar → "Informe o nome. Ex: /feature feat_cadastro_cliente" |
|
|
18
|
-
| 2 | `docs/PM/$ARGUMENTS/` existe e tem arquivos | Parar → "Crie a pasta e adicione insumos" |
|
|
19
|
-
| 3 | `docs/Estrutura/` está populado | Parar → "Execute /setup-projeto antes" |
|
|
20
|
-
| 4 | `.context.md` não existe ou status é `not_started` | Se avançado → "Feature já em andamento. Para re-extrair, use /extract $ARGUMENTS" |
|
|
21
|
-
|
|
22
|
-
### Passos
|
|
23
|
-
|
|
24
|
-
1. Carregar `docs/Estrutura/` para contexto do projeto
|
|
25
|
-
2. Criar `docs/Desenvolvimento/$ARGUMENTS/` se não existir
|
|
26
|
-
3. Criar `.context.md`:
|
|
27
|
-
```yaml
|
|
28
|
-
---
|
|
29
|
-
nome: "$ARGUMENTS"
|
|
30
|
-
tipo: "feature"
|
|
31
|
-
documento: "PRD"
|
|
32
|
-
pm_path: "docs/PM/$ARGUMENTS/"
|
|
33
|
-
status: "not_started"
|
|
34
|
-
ultima_skill: "/feature"
|
|
35
|
-
atualizado_em: "{{ISO_DATETIME}}"
|
|
36
|
-
---
|
|
37
|
-
```
|
|
38
|
-
4. Sugerir /sf-discovery (RECOMENDADO):
|
|
39
|
-
```
|
|
40
|
-
📋 Recomendo rodar /sf-discovery antes da extração para análise profunda dos insumos.
|
|
41
|
-
Quer rodar /sf-discovery docs/PM/$ARGUMENTS/ agora? (s/n)
|
|
42
|
-
```
|
|
43
|
-
Se SIM → rodar discovery, salvar discovery.md em docs/Desenvolvimento/$ARGUMENTS/
|
|
44
|
-
Se NÃO → pular direto para extract
|
|
45
|
-
|
|
46
|
-
5. Executar /extract $ARGUMENTS
|
|
47
|
-
6. CHECKPOINT — Parar e informar:
|
|
48
|
-
```
|
|
49
|
-
✅ PRD gerado em docs/Desenvolvimento/$ARGUMENTS/PRD.md
|
|
50
|
-
|
|
51
|
-
Revise o documento. Quando estiver satisfeito, execute:
|
|
52
|
-
/design $ARGUMENTS
|
|
53
|
-
|
|
54
|
-
Se precisar adicionar mais insumos:
|
|
55
|
-
/extract $ARGUMENTS
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
### Notas
|
|
59
|
-
- Pode ser executado múltiplas vezes (uma por feature)
|
|
60
|
-
- Pipeline inclui /merge-delta no final (diferente do setup)
|
|
1
|
+
# /feature $ARGUMENTS
|
|
2
|
+
|
|
3
|
+
Orquestrador de feature. Cria contexto PRD, chama /extract e para no checkpoint.
|
|
4
|
+
$ARGUMENTS = nome da feature (ex: feat_cadastro_cliente)
|
|
5
|
+
|
|
6
|
+
## Execução
|
|
7
|
+
|
|
8
|
+
### Convenção de nomes
|
|
9
|
+
- Features: `feat_nome_descritivo`
|
|
10
|
+
- Bugs: `bug_nome_descritivo`
|
|
11
|
+
- Tasks técnicas: `task_nome_descritivo`
|
|
12
|
+
|
|
13
|
+
### Pré-condições
|
|
14
|
+
|
|
15
|
+
| # | Validação | Se falhar |
|
|
16
|
+
|---|-----------|-----------|
|
|
17
|
+
| 1 | $ARGUMENTS foi informado | Parar → "Informe o nome. Ex: /feature feat_cadastro_cliente" |
|
|
18
|
+
| 2 | `docs/PM/$ARGUMENTS/` existe e tem arquivos | Parar → "Crie a pasta e adicione insumos" |
|
|
19
|
+
| 3 | `docs/Estrutura/` está populado | Parar → "Execute /setup-projeto antes" |
|
|
20
|
+
| 4 | `.context.md` não existe ou status é `not_started` | Se avançado → "Feature já em andamento. Para re-extrair, use /extract $ARGUMENTS" |
|
|
21
|
+
|
|
22
|
+
### Passos
|
|
23
|
+
|
|
24
|
+
1. Carregar `docs/Estrutura/` para contexto do projeto
|
|
25
|
+
2. Criar `docs/Desenvolvimento/$ARGUMENTS/` se não existir
|
|
26
|
+
3. Criar `.context.md`:
|
|
27
|
+
```yaml
|
|
28
|
+
---
|
|
29
|
+
nome: "$ARGUMENTS"
|
|
30
|
+
tipo: "feature"
|
|
31
|
+
documento: "PRD"
|
|
32
|
+
pm_path: "docs/PM/$ARGUMENTS/"
|
|
33
|
+
status: "not_started"
|
|
34
|
+
ultima_skill: "/feature"
|
|
35
|
+
atualizado_em: "{{ISO_DATETIME}}"
|
|
36
|
+
---
|
|
37
|
+
```
|
|
38
|
+
4. Sugerir /sf-discovery (RECOMENDADO):
|
|
39
|
+
```
|
|
40
|
+
📋 Recomendo rodar /sf-discovery antes da extração para análise profunda dos insumos.
|
|
41
|
+
Quer rodar /sf-discovery docs/PM/$ARGUMENTS/ agora? (s/n)
|
|
42
|
+
```
|
|
43
|
+
Se SIM → rodar discovery, salvar discovery.md em docs/Desenvolvimento/$ARGUMENTS/
|
|
44
|
+
Se NÃO → pular direto para extract
|
|
45
|
+
|
|
46
|
+
5. Executar /extract $ARGUMENTS
|
|
47
|
+
6. CHECKPOINT — Parar e informar:
|
|
48
|
+
```
|
|
49
|
+
✅ PRD gerado em docs/Desenvolvimento/$ARGUMENTS/PRD.md
|
|
50
|
+
|
|
51
|
+
Revise o documento. Quando estiver satisfeito, execute:
|
|
52
|
+
/design $ARGUMENTS
|
|
53
|
+
|
|
54
|
+
Se precisar adicionar mais insumos:
|
|
55
|
+
/extract $ARGUMENTS
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Notas
|
|
59
|
+
- Pode ser executado múltiplas vezes (uma por feature)
|
|
60
|
+
- Pipeline inclui /merge-delta no final (diferente do setup)
|
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
# /merge-delta $ARGUMENTS
|
|
2
|
-
|
|
3
|
-
Skill atômica pós-dev. Aplica Delta Specs do SDD em docs/Estrutura/.
|
|
4
|
-
$ARGUMENTS = nome (ex: feat_cadastro_cliente)
|
|
5
|
-
|
|
6
|
-
## Agente: Integrator (Sonnet)
|
|
7
|
-
Meticuloso com consistência. Aplica apenas o que Delta Specs diz.
|
|
8
|
-
|
|
9
|
-
## Pré-condições
|
|
10
|
-
|
|
11
|
-
| # | Validação | Se falhar |
|
|
12
|
-
|---|-----------|-----------|
|
|
13
|
-
| 1 | $ARGUMENTS informado | Parar |
|
|
14
|
-
| 2 | `.context.md` com status `dev_done` | Se anterior → "/dev primeiro" |
|
|
15
|
-
| 3 | `.context.md` tipo é `feature` | Se setup → "Setup não usa merge-delta" |
|
|
16
|
-
| 4 | `sdd.md` §11 Delta Specs preenchida | Parar |
|
|
17
|
-
| 5 | `docs/Estrutura/` populado | Parar |
|
|
18
|
-
|
|
19
|
-
## Passos
|
|
20
|
-
|
|
21
|
-
### 1. Ler SDD §11 Delta Specs
|
|
22
|
-
|
|
23
|
-
| Tipo | Significado |
|
|
24
|
-
|------|------------|
|
|
25
|
-
| ADDED | Elemento novo (tabela, endpoint, tela) |
|
|
26
|
-
| MODIFIED | Elemento existente alterado |
|
|
27
|
-
| REMOVED | Elemento removido |
|
|
28
|
-
|
|
29
|
-
### 2. Mapear para docs alvo
|
|
30
|
-
|
|
31
|
-
| Elemento | Doc |
|
|
32
|
-
|----------|-----|
|
|
33
|
-
| Tabelas, colunas, índices | Modelo_Dados.md |
|
|
34
|
-
| Endpoints, contratos | API.md |
|
|
35
|
-
| Decisões arquiteturais | Arquitetura.md + ADRs.md |
|
|
36
|
-
| Infra | Infraestrutura.md |
|
|
37
|
-
| Segurança | Seguranca.md |
|
|
38
|
-
| Stack | Stack.md |
|
|
39
|
-
| Visão/escopo | Visao.md |
|
|
40
|
-
|
|
41
|
-
### 3. Aplicar deltas
|
|
42
|
-
Para cada delta, no doc alvo:
|
|
43
|
-
- ADDED → adicionar conteúdo na seção apropriada
|
|
44
|
-
- MODIFIED → localizar e atualizar elemento
|
|
45
|
-
- REMOVED → remover ou marcar deprecated
|
|
46
|
-
|
|
47
|
-
### 4. Registrar changelog (em cada doc afetado)
|
|
48
|
-
```markdown
|
|
49
|
-
## Changelog
|
|
50
|
-
| Data | Feature | Tipo | Descrição |
|
|
51
|
-
|------|---------|------|-----------|
|
|
52
|
-
| {{data}} | $ARGUMENTS | ADDED | ... |
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### 5. Validar consistência
|
|
56
|
-
- Referências quebradas? Reportar.
|
|
57
|
-
- REMOVED deixou órfãos? Reportar.
|
|
58
|
-
|
|
59
|
-
### 6. Atualizar
|
|
60
|
-
- `.context.md` → status: `done`
|
|
61
|
-
- `progresso.md` global → feature concluída
|
|
62
|
-
- Informar ao usuário docs atualizados
|
|
63
|
-
|
|
64
|
-
## Erros
|
|
65
|
-
| Erro | Ação |
|
|
66
|
-
|------|------|
|
|
67
|
-
| Status não é dev_done | Parar |
|
|
68
|
-
| Tipo é setup | Parar — setup não usa merge-delta |
|
|
69
|
-
| Delta Specs vazia | Marcar done (legítimo em refactors) |
|
|
70
|
-
| Elemento não encontrado | Parar, pedir resolução |
|
|
1
|
+
# /merge-delta $ARGUMENTS
|
|
2
|
+
|
|
3
|
+
Skill atômica pós-dev. Aplica Delta Specs do SDD em docs/Estrutura/.
|
|
4
|
+
$ARGUMENTS = nome (ex: feat_cadastro_cliente)
|
|
5
|
+
|
|
6
|
+
## Agente: Integrator (Sonnet)
|
|
7
|
+
Meticuloso com consistência. Aplica apenas o que Delta Specs diz.
|
|
8
|
+
|
|
9
|
+
## Pré-condições
|
|
10
|
+
|
|
11
|
+
| # | Validação | Se falhar |
|
|
12
|
+
|---|-----------|-----------|
|
|
13
|
+
| 1 | $ARGUMENTS informado | Parar |
|
|
14
|
+
| 2 | `.context.md` com status `dev_done` | Se anterior → "/dev primeiro" |
|
|
15
|
+
| 3 | `.context.md` tipo é `feature` | Se setup → "Setup não usa merge-delta" |
|
|
16
|
+
| 4 | `sdd.md` §11 Delta Specs preenchida | Parar |
|
|
17
|
+
| 5 | `docs/Estrutura/` populado | Parar |
|
|
18
|
+
|
|
19
|
+
## Passos
|
|
20
|
+
|
|
21
|
+
### 1. Ler SDD §11 Delta Specs
|
|
22
|
+
|
|
23
|
+
| Tipo | Significado |
|
|
24
|
+
|------|------------|
|
|
25
|
+
| ADDED | Elemento novo (tabela, endpoint, tela) |
|
|
26
|
+
| MODIFIED | Elemento existente alterado |
|
|
27
|
+
| REMOVED | Elemento removido |
|
|
28
|
+
|
|
29
|
+
### 2. Mapear para docs alvo
|
|
30
|
+
|
|
31
|
+
| Elemento | Doc |
|
|
32
|
+
|----------|-----|
|
|
33
|
+
| Tabelas, colunas, índices | Modelo_Dados.md |
|
|
34
|
+
| Endpoints, contratos | API.md |
|
|
35
|
+
| Decisões arquiteturais | Arquitetura.md + ADRs.md |
|
|
36
|
+
| Infra | Infraestrutura.md |
|
|
37
|
+
| Segurança | Seguranca.md |
|
|
38
|
+
| Stack | Stack.md |
|
|
39
|
+
| Visão/escopo | Visao.md |
|
|
40
|
+
|
|
41
|
+
### 3. Aplicar deltas
|
|
42
|
+
Para cada delta, no doc alvo:
|
|
43
|
+
- ADDED → adicionar conteúdo na seção apropriada
|
|
44
|
+
- MODIFIED → localizar e atualizar elemento
|
|
45
|
+
- REMOVED → remover ou marcar deprecated
|
|
46
|
+
|
|
47
|
+
### 4. Registrar changelog (em cada doc afetado)
|
|
48
|
+
```markdown
|
|
49
|
+
## Changelog
|
|
50
|
+
| Data | Feature | Tipo | Descrição |
|
|
51
|
+
|------|---------|------|-----------|
|
|
52
|
+
| {{data}} | $ARGUMENTS | ADDED | ... |
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 5. Validar consistência
|
|
56
|
+
- Referências quebradas? Reportar.
|
|
57
|
+
- REMOVED deixou órfãos? Reportar.
|
|
58
|
+
|
|
59
|
+
### 6. Atualizar
|
|
60
|
+
- `.context.md` → status: `done`
|
|
61
|
+
- `progresso.md` global → feature concluída
|
|
62
|
+
- Informar ao usuário docs atualizados
|
|
63
|
+
|
|
64
|
+
## Erros
|
|
65
|
+
| Erro | Ação |
|
|
66
|
+
|------|------|
|
|
67
|
+
| Status não é dev_done | Parar |
|
|
68
|
+
| Tipo é setup | Parar — setup não usa merge-delta |
|
|
69
|
+
| Delta Specs vazia | Marcar done (legítimo em refactors) |
|
|
70
|
+
| Elemento não encontrado | Parar, pedir resolução |
|