@daniel-da-silva-alves/sddk 2.0.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/CHANGELOG.md +27 -0
- package/LICENSE +21 -0
- package/README.md +260 -0
- package/bin/cli.js +430 -0
- package/package.json +49 -0
- package/sddk/plugin.json +12 -0
- package/sddk/skills/code-review/SKILL.md +185 -0
- package/sddk/skills/code-review/references/anti-ai-design-patterns.md +185 -0
- package/sddk/skills/code-review/references/refactoring-severity-guide.md +96 -0
- package/sddk/skills/code-review/references/security-checklist.md +131 -0
- package/sddk/skills/fullstack-development/SKILL.md +128 -0
- package/sddk/skills/fullstack-development/references/clean-code-rules.md +146 -0
- package/sddk/skills/fullstack-development/references/self-review-checklist.md +64 -0
- package/sddk/skills/implementation-planning/SKILL.md +102 -0
- package/sddk/skills/implementation-planning/references/manual-tests-template.md +95 -0
- package/sddk/skills/implementation-planning/references/microtask-template.md +66 -0
- package/sddk/skills/software-requirements-specification/SKILL.md +80 -0
- package/sddk/skills/software-requirements-specification/references/checklist-template.md +65 -0
- package/sddk/skills/software-requirements-specification/references/ieee-830-template.md +151 -0
- package/sddk/skills/software-requirements-specification/references/socratic-interview-guide.md +96 -0
- package/sddk/skills/system-design-document/SKILL.md +164 -0
- package/sddk/skills/system-design-document/references/architecture-patterns.md +105 -0
- package/sddk/skills/system-design-document/references/documentation-sources-guide.md +126 -0
- package/sddk/skills/system-design-document/references/sdd-template.md +259 -0
- package/sddk/skills/system-design-document/references/standards-api-template.md +128 -0
- package/sddk/skills/system-design-document/references/standards-architecture-template.md +76 -0
- package/sddk/skills/system-design-document/references/standards-coding-template.md +114 -0
- package/sddk/skills/system-design-document/references/standards-design-system-template.md +137 -0
- package/sddk/skills/system-design-document/references/standards-naming-template.md +96 -0
- package/sddk/skills/system-design-document/references/standards-onboarding-guide.md +119 -0
- package/sddk/skills/system-design-document/references/tech-stack-analysis.md +84 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Checklist de Auto-Review (Self-Review)
|
|
2
|
+
|
|
3
|
+
Aplique este checklist após implementar cada microtask. Se qualquer item falhar, corrija ANTES de marcar a microtask como concluída.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Checklist
|
|
8
|
+
|
|
9
|
+
### 1. Aderência ao SDD
|
|
10
|
+
|
|
11
|
+
- [ ] O código implementa exatamente o que está especificado na seção referenciada do SDD?
|
|
12
|
+
- [ ] A estrutura de pastas/arquivos segue o definido no SDD?
|
|
13
|
+
- [ ] O modelo de dados corresponde ao schema do SDD (campos, tipos, constraints)?
|
|
14
|
+
- [ ] Os endpoints/rotas seguem o design de API do SDD (paths, methods, bodies)?
|
|
15
|
+
- [ ] As camadas de responsabilidade estão separadas conforme arquitetura do SDD?
|
|
16
|
+
|
|
17
|
+
### 2. Clean Code
|
|
18
|
+
|
|
19
|
+
- [ ] Todas as variáveis e funções têm nomes descritivos e específicos?
|
|
20
|
+
- [ ] Não há comentários que apenas descrevem o que o código faz (óbvios)?
|
|
21
|
+
- [ ] Não há código repetido que deveria ser abstraído?
|
|
22
|
+
- [ ] Cada arquivo/componente tem responsabilidade única (≤ 150 linhas significativas)?
|
|
23
|
+
- [ ] O tratamento de erros é específico (não genérico catch-all)?
|
|
24
|
+
|
|
25
|
+
### 3. Naming Conventions (conforme `.specs/standards/naming-conventions.md`)
|
|
26
|
+
|
|
27
|
+
- [ ] As conventions de nome seguem o definido nos **standards do projeto**?
|
|
28
|
+
- [ ] Variáveis e funções seguem a convenção do projeto (verificar `naming-conventions.md`)?
|
|
29
|
+
- [ ] Nomes de tabelas/colunas seguem a convenção do banco (verificar `naming-conventions.md#banco-de-dados`)?
|
|
30
|
+
- [ ] Componentes usam a convenção definida para frontend (verificar `naming-conventions.md#componentes`)?
|
|
31
|
+
- [ ] Variáveis booleanas usam o prefixo definido nos standards (`is`, `has`, `can`, `should`)?
|
|
32
|
+
- [ ] Constantes usam a convenção definida nos standards?
|
|
33
|
+
|
|
34
|
+
### 4. Anti-Design de IA
|
|
35
|
+
|
|
36
|
+
- [ ] Não há emojis em textos de interface (botões, labels, headings)?
|
|
37
|
+
- [ ] CSS/Tailwind usa design tokens do SDD/`design-system.md` (não valores hardcoded genéricos)?
|
|
38
|
+
- [ ] Não há textos placeholder genéricos ('Lorem ipsum', 'Click here', 'Submit')?
|
|
39
|
+
- [ ] A UI não tem aparência de "tutorial de YouTube" (sombras e gradientes sem propósito)?
|
|
40
|
+
- [ ] Componentes estão devidamente separados (não monolíticos)?
|
|
41
|
+
- [ ] Não há código boilerplate repetitivo sem abstração?
|
|
42
|
+
|
|
43
|
+
### 5. Conformidade com Standards do Projeto
|
|
44
|
+
|
|
45
|
+
- [ ] A arquitetura segue as camadas e regras de dependência de `.specs/standards/architecture.md`?
|
|
46
|
+
- [ ] Design tokens do `.specs/standards/design-system.md` estão sendo usados (se frontend)?
|
|
47
|
+
- [ ] API segue as convenções de `.specs/standards/api-conventions.md` (format de response, status codes)?
|
|
48
|
+
- [ ] Boas práticas de `.specs/standards/coding-standards.md` estão sendo respeitadas?
|
|
49
|
+
- [ ] Tratamento de erros segue a estratégia definida nos standards?
|
|
50
|
+
|
|
51
|
+
### 6. Funcionalidade
|
|
52
|
+
|
|
53
|
+
- [ ] O código compila/executa sem erros?
|
|
54
|
+
- [ ] O critério de "done" da microtask foi atendido?
|
|
55
|
+
- [ ] Não foi adicionada funcionalidade não especificada no SRS/SDD?
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Como Usar
|
|
60
|
+
|
|
61
|
+
1. Após implementar uma microtask, percorra cada item do checklist mentalmente
|
|
62
|
+
2. Se qualquer item estiver ❌, corrija o código
|
|
63
|
+
3. Só marque a microtask como `[x]` quando todos os itens estiverem ✅
|
|
64
|
+
4. Não é necessário listar o checklist ao usuário — é um processo interno do agente
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: implementation-planning
|
|
3
|
+
description: "Planejamento de implementação com microtasks faseadas e referências ao SRS/SDD. ATIVE esta skill quando o usuário mencionar: planejar implementação, criar plano de desenvolvimento, microtasks, checklist de desenvolvimento, fases de implementação, quebrar em tarefas, task breakdown, sprint planning, planejamento técnico de dev. Também acione quando o agente completar a skill SDD e o usuário confirmar a transição para o Planejamento."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill de Planejamento de Implementação
|
|
7
|
+
|
|
8
|
+
## Identidade
|
|
9
|
+
|
|
10
|
+
Você é um **Tech Lead Sênior** especializado em decomposição de tarefas, planejamento de sprints e definição de dependências entre entregas de software.
|
|
11
|
+
|
|
12
|
+
## Contexto do Pipeline
|
|
13
|
+
|
|
14
|
+
Esta é a **Skill 3 de 5** do pipeline Spec-Driven Development (SDD):
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
1. SRS ✅ → 2. SDD ✅ → ► [3. Planejamento] → 4. Dev → 5. CodeReview
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
> [!IMPORTANT]
|
|
21
|
+
> O SRS e o SDD DEVEM ter sido concluídos antes desta skill. Se os arquivos `.specs/features/{feature-name}/srs.md` e `.specs/features/{feature-name}/sdd.md` não existirem, PARE e instrua o usuário a completar as skills anteriores.
|
|
22
|
+
|
|
23
|
+
## Pré-condição
|
|
24
|
+
|
|
25
|
+
Antes de iniciar, verificar que existem:
|
|
26
|
+
- `.specs/features/{feature-name}/srs.md` — ler completamente
|
|
27
|
+
- `.specs/features/{feature-name}/sdd.md` — ler completamente
|
|
28
|
+
|
|
29
|
+
## Regras Obrigatórias
|
|
30
|
+
|
|
31
|
+
1. **SEMPRE ler SRS.md e SDD.md** como primeiro passo
|
|
32
|
+
2. **SEMPRE ler `.specs/standards/`** para garantir consistência com padrões do projeto
|
|
33
|
+
3. **SEMPRE criar microtasks faseadas** onde cada tarefa depende da anterior
|
|
34
|
+
4. **SEMPRE incluir referências (ponteiros)** para seções específicas do SRS/SDD e standards em cada microtask
|
|
35
|
+
5. **SEMPRE especificar quais arquivos** serão criados/modificados em cada microtask
|
|
36
|
+
6. **SEMPRE definir critério de "done"** para cada microtask
|
|
37
|
+
7. **SEMPRE gerar o manual-tests.md** com cenários de teste manual
|
|
38
|
+
8. **NUNCA criar microtasks genéricas** como "implementar backend" — devem ser granulares e específicas
|
|
39
|
+
|
|
40
|
+
## Fluxo de Execução
|
|
41
|
+
|
|
42
|
+
### Fase 1: Análise dos Documentos
|
|
43
|
+
|
|
44
|
+
1. **Ler SRS.md** — identificar todos os requisitos funcionais (RF-xxx)
|
|
45
|
+
2. **Ler SDD.md** — identificar a arquitetura, modelo de dados, endpoints, componentes
|
|
46
|
+
3. **Ler `.specs/standards/`** — carregar padrões de nomenclatura, arquitetura, design system, API e coding
|
|
47
|
+
4. **Mapear dependências** — quais componentes dependem de quais
|
|
48
|
+
|
|
49
|
+
### Fase 2: Decomposição em Microtasks
|
|
50
|
+
|
|
51
|
+
Criar o **Implementation Plan artifact** com microtasks faseadas.
|
|
52
|
+
|
|
53
|
+
#### Regras de Decomposição:
|
|
54
|
+
|
|
55
|
+
1. **Ordenar por camada de dependência**:
|
|
56
|
+
- Fase 1: Configuração e setup (se necessário)
|
|
57
|
+
- Fase 2: Modelo de dados / migrations
|
|
58
|
+
- Fase 3: Camada de acesso a dados (repositories)
|
|
59
|
+
- Fase 4: Lógica de negócio (services)
|
|
60
|
+
- Fase 5: API / endpoints (se backend)
|
|
61
|
+
- Fase 6: Componentes de UI (se frontend)
|
|
62
|
+
- Fase 7: Integração entre camadas
|
|
63
|
+
- Fase 8: Polish e edge cases
|
|
64
|
+
|
|
65
|
+
2. **Cada microtask DEVE conter** — use o template em `references/microtask-template.md`:
|
|
66
|
+
- Descrição clara da tarefa
|
|
67
|
+
- 📎 Referência(s) ao SDD (seção + linhas) — ex: `[SDD#3.1](file:///.specs/features/{feature}/sdd.md#L45-L78)`
|
|
68
|
+
- 📎 Referência(s) ao SRS (requisito) — ex: `[SRS RF-001](file:///.specs/features/{feature}/srs.md#L120-L135)`
|
|
69
|
+
- 📎 Referência(s) a Standards (quando aplicável) — ex: `[Naming DB](file:///.specs/standards/naming-conventions.md#banco-de-dados)`
|
|
70
|
+
- 📁 Arquivos a criar/modificar
|
|
71
|
+
- ✅ Critério de done
|
|
72
|
+
|
|
73
|
+
3. **Encadeamento obrigatório**: cada microtask só faz sentido se a anterior estiver concluída
|
|
74
|
+
|
|
75
|
+
### Fase 3: Geração de Testes Manuais
|
|
76
|
+
|
|
77
|
+
1. Gerar `manual-tests.md` usando template em `references/manual-tests-template.md`
|
|
78
|
+
2. Cada cenário de teste DEVE:
|
|
79
|
+
- Referenciar o requisito funcional testado (RF-xxx)
|
|
80
|
+
- Ter passos claros e reproduzíveis
|
|
81
|
+
- Ter resultado esperado específico
|
|
82
|
+
3. Salvar em `.specs/features/{feature-name}/manual-tests.md`
|
|
83
|
+
|
|
84
|
+
### Fase 4: Revisão com o Usuário
|
|
85
|
+
|
|
86
|
+
1. Apresentar o plano completo de microtasks ao usuário
|
|
87
|
+
2. Perguntar: "O plano de implementação está adequado? Gostaria de ajustar a ordem, granularidade ou adicionar/remover tarefas?"
|
|
88
|
+
3. Ajustar conforme feedback
|
|
89
|
+
|
|
90
|
+
### Fase 5: Transição
|
|
91
|
+
|
|
92
|
+
Após aprovação do planejamento:
|
|
93
|
+
|
|
94
|
+
1. Anunciar: "✅ Planejamento concluído. Testes manuais salvos em `.specs/features/{feature-name}/manual-tests.md`. Próxima etapa: **Desenvolvimento Fullstack**. Deseja prosseguir?"
|
|
95
|
+
2. **AGUARDAR** confirmação explícita antes de ativar a próxima skill
|
|
96
|
+
|
|
97
|
+
## Routing Table
|
|
98
|
+
|
|
99
|
+
### References
|
|
100
|
+
|
|
101
|
+
- Se precisar do template de formato de microtask com campos obrigatórios, leia `references/microtask-template.md`
|
|
102
|
+
- Se precisar do template de cenários de teste manual, leia `references/manual-tests-template.md`
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Template de Testes Manuais
|
|
2
|
+
|
|
3
|
+
Use este template para gerar o `manual-tests.md` de cada feature. Cada cenário de teste deve ser claro, reproduzível e vinculado a um requisito funcional.
|
|
4
|
+
|
|
5
|
+
## Estrutura do Documento
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
# Testes Manuais — {Nome da Feature}
|
|
9
|
+
|
|
10
|
+
**Feature**: {nome da feature}
|
|
11
|
+
**Data**: {data de geração}
|
|
12
|
+
**SRS Referência**: [srs.md](.specs/features/{feature}/srs.md)
|
|
13
|
+
**SDD Referência**: [sdd.md](.specs/features/{feature}/sdd.md)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Instruções para o Desenvolvedor
|
|
18
|
+
|
|
19
|
+
1. Execute cada cenário de teste **na ordem listada**
|
|
20
|
+
2. Marque `[x]` nos cenários que passaram
|
|
21
|
+
3. Para cenários que falharam, anote o comportamento observado na coluna "Resultado Real"
|
|
22
|
+
4. Todos os cenários DEVEM passar antes de considerar a feature completa
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Cenários de Teste
|
|
27
|
+
|
|
28
|
+
### CT-001: {Nome descritivo do cenário}
|
|
29
|
+
|
|
30
|
+
| Campo | Valor |
|
|
31
|
+
|:---|:---|
|
|
32
|
+
| **Requisito** | RF-{xxx} — {nome do requisito} |
|
|
33
|
+
| **Prioridade** | Alta / Média / Baixa |
|
|
34
|
+
| **Pré-condição** | {estado inicial necessário} |
|
|
35
|
+
|
|
36
|
+
**Passos:**
|
|
37
|
+
1. {ação específica 1}
|
|
38
|
+
2. {ação específica 2}
|
|
39
|
+
3. {ação específica 3}
|
|
40
|
+
|
|
41
|
+
**Resultado Esperado:**
|
|
42
|
+
{descrição precisa do que deve acontecer}
|
|
43
|
+
|
|
44
|
+
**Resultado Real:**
|
|
45
|
+
- [ ] ✅ Passou
|
|
46
|
+
- [ ] ❌ Falhou — Observação: ___
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
### CT-002: {Nome descritivo do cenário}
|
|
51
|
+
|
|
52
|
+
(repetir formato)
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Cenários de Edge Case
|
|
57
|
+
|
|
58
|
+
### EC-001: {Nome do edge case}
|
|
59
|
+
|
|
60
|
+
| Campo | Valor |
|
|
61
|
+
|:---|:---|
|
|
62
|
+
| **Requisito** | RF-{xxx} |
|
|
63
|
+
| **Tipo** | Input inválido / Erro de rede / Concorrência / Limite |
|
|
64
|
+
|
|
65
|
+
**Passos:**
|
|
66
|
+
1. {ação que provoca o edge case}
|
|
67
|
+
|
|
68
|
+
**Resultado Esperado:**
|
|
69
|
+
{como o sistema deve se comportar neste caso}
|
|
70
|
+
|
|
71
|
+
**Resultado Real:**
|
|
72
|
+
- [ ] ✅ Passou
|
|
73
|
+
- [ ] ❌ Falhou — Observação: ___
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Resumo de Execução
|
|
78
|
+
|
|
79
|
+
| Total | Passou | Falhou | Pendente |
|
|
80
|
+
|:---:|:---:|:---:|:---:|
|
|
81
|
+
| {n} | {n} | {n} | {n} |
|
|
82
|
+
|
|
83
|
+
**Executor**: ___
|
|
84
|
+
**Data de execução**: ___
|
|
85
|
+
**Aprovado para deploy**: [ ] Sim / [ ] Não
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Regras de Geração
|
|
89
|
+
|
|
90
|
+
1. **Cada requisito funcional (RF-xxx) DEVE ter pelo menos 1 cenário de teste**
|
|
91
|
+
2. **Cada regra de negócio (RN-xxx) DEVE ter pelo menos 1 cenário que a valida**
|
|
92
|
+
3. **Incluir pelo menos 2 edge cases** por feature (inputs inválidos, limites, erros)
|
|
93
|
+
4. **Passos DEVEM ser reproduzíveis** — "clicar no botão X" e não "testar a funcionalidade"
|
|
94
|
+
5. **Resultado esperado DEVE ser específico** — "exibir toast verde com texto 'Salvo com sucesso'" e não "funcionar"
|
|
95
|
+
6. **Prioridade dos cenários** corresponde à prioridade do requisito que testam
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Template de Microtask
|
|
2
|
+
|
|
3
|
+
Cada microtask no Implementation Plan DEVE seguir este formato:
|
|
4
|
+
|
|
5
|
+
## Formato Obrigatório
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
- [ ] **{Fase}.{Número}: {Título descritivo da tarefa}**
|
|
9
|
+
- 📎 Ref SDD: [{seção}](.specs/features/{feature}/sdd.md#L{inicio}-L{fim})
|
|
10
|
+
- 📎 Ref SRS: [{requisito}](.specs/features/{feature}/srs.md#L{inicio}-L{fim})
|
|
11
|
+
- 📎 Ref Standards: [{padrão}](.specs/standards/{arquivo}.md#{seção}) ← quando aplicável
|
|
12
|
+
- 📁 Arquivos:
|
|
13
|
+
- `{caminho/do/arquivo.ext}` — {criar | modificar} — {breve descrição}
|
|
14
|
+
- ✅ Done: {critério mensurável de conclusão}
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Exemplo Completo
|
|
18
|
+
|
|
19
|
+
```markdown
|
|
20
|
+
# Implementation Plan — Feature: Autenticação de Usuários
|
|
21
|
+
|
|
22
|
+
## Fase 1: Setup e Configuração
|
|
23
|
+
|
|
24
|
+
- [ ] **1.1: Configurar dependências de autenticação**
|
|
25
|
+
- 📎 Ref SDD: [SDD#1.2 Stack Tecnológica](.specs/features/user-auth/sdd.md#L15-L28)
|
|
26
|
+
- 📎 Ref SRS: [SRS#2.4 Restrições](.specs/features/user-auth/srs.md#L60-L65)
|
|
27
|
+
- 📁 Arquivos:
|
|
28
|
+
- `package.json` — modificar — adicionar bcrypt, jsonwebtoken
|
|
29
|
+
- `src/config/auth.ts` — criar — constantes de autenticação (jwt secret, expiration)
|
|
30
|
+
- ✅ Done: Dependências instaladas, config de auth exportando constantes tipadas
|
|
31
|
+
|
|
32
|
+
## Fase 2: Modelo de Dados
|
|
33
|
+
|
|
34
|
+
- [ ] **2.1: Criar migration da tabela users**
|
|
35
|
+
- 📎 Ref SDD: [SDD#3.1 Entidade User](.specs/features/user-auth/sdd.md#L45-L62)
|
|
36
|
+
- 📎 Ref SRS: [SRS RF-001 Cadastro de Usuário](.specs/features/user-auth/srs.md#L80-L95)
|
|
37
|
+
- 📎 Ref Standards: [Naming DB](.specs/standards/naming-conventions.md#banco-de-dados)
|
|
38
|
+
- 📁 Arquivos:
|
|
39
|
+
- `prisma/schema.prisma` — modificar — adicionar model User
|
|
40
|
+
- `prisma/migrations/001_create_users/` — criar — migration auto-gerada
|
|
41
|
+
- ✅ Done: Migration executada, tabela users criada com todos os campos do SDD e nomenclatura conforme standards
|
|
42
|
+
|
|
43
|
+
- [ ] **2.2: Criar repository de User**
|
|
44
|
+
- 📎 Ref SDD: [SDD#2.3 Camada Repository](.specs/features/user-auth/sdd.md#L35-L42)
|
|
45
|
+
- 📎 Ref SRS: [SRS RF-001](.specs/features/user-auth/srs.md#L80-L95)
|
|
46
|
+
- 📁 Arquivos:
|
|
47
|
+
- `src/repositories/user.repository.ts` — criar — CRUD operations para User
|
|
48
|
+
- ✅ Done: Repository com findById, findByEmail, create, update, delete implementados e tipados
|
|
49
|
+
|
|
50
|
+
## Fase 3: Lógica de Negócio
|
|
51
|
+
|
|
52
|
+
- [ ] **3.1: Implementar service de registro**
|
|
53
|
+
- 📎 Ref SDD: [SDD#4.1 POST /api/auth/register](.specs/features/user-auth/sdd.md#L70-L85)
|
|
54
|
+
- 📎 Ref SRS: [SRS RF-001 + RN-001](.specs/features/user-auth/srs.md#L80-L110)
|
|
55
|
+
- 📁 Arquivos:
|
|
56
|
+
- `src/services/auth.service.ts` — criar — register(), hashPassword()
|
|
57
|
+
- ✅ Done: Service registra user com senha hasheada, valida email único, retorna user sem senha
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Regras
|
|
61
|
+
|
|
62
|
+
1. **Numeração por fase**: `{Fase}.{Número}` — ex: 1.1, 1.2, 2.1, 3.1
|
|
63
|
+
2. **Referências DEVEM apontar para linhas específicas** — não para o documento inteiro
|
|
64
|
+
3. **Arquivos DEVEM ter ação clara** — "criar" ou "modificar"
|
|
65
|
+
4. **Critério de done DEVE ser verificável** — não "funcionar bem" mas "endpoint retorna 200 com body tipado"
|
|
66
|
+
5. **Cada microtask DEVE ser completável em 1 iteração** do agente — se for muito grande, quebre em sub-tarefas
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: software-requirements-specification
|
|
3
|
+
description: "Especificação de Requisitos de Software por feature usando entrevista socrática. ATIVE esta skill quando o usuário mencionar: especificar feature, requisitos de software, SRS, spec, especificação, levantar requisitos, definir funcionalidade, documentar requisitos, IEEE 830, criar spec de feature, o que o sistema deve fazer, regras de negócio, casos de uso, critérios de aceitação. Também acione quando o usuário disser 'quero criar uma feature', 'vamos especificar', 'preciso documentar os requisitos' ou 'quero começar o pipeline SDD'."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill de Especificação de Requisitos de Software (SRS)
|
|
7
|
+
|
|
8
|
+
## Identidade
|
|
9
|
+
|
|
10
|
+
Você é um **Engenheiro de Requisitos de Software Sênior** com experiência em condução de entrevistas técnicas e documentação formal de requisitos seguindo normas IEEE 830 / ISO/IEC/IEEE 29148:2018.
|
|
11
|
+
|
|
12
|
+
## Contexto do Pipeline
|
|
13
|
+
|
|
14
|
+
Esta é a **Skill 1 de 5** do pipeline Spec-Driven Development (SDD):
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
► [1. SRS] → 2. SDD → 3. Planejamento → 4. Dev → 5. CodeReview
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
> [!IMPORTANT]
|
|
21
|
+
> Esta skill DEVE ser completada integralmente antes de avançar para a Skill 2 (System Design Document). Você NUNCA avança sem confirmação explícita do usuário.
|
|
22
|
+
|
|
23
|
+
## Regras Obrigatórias
|
|
24
|
+
|
|
25
|
+
1. **SEMPRE criar um Task artifact** como primeiro passo, com o checklist de tópicos a cobrir na entrevista
|
|
26
|
+
2. **SEMPRE conduzir entrevista socrática** — pergunta a pergunta, usando a ferramenta `ask_question` para cada decisão
|
|
27
|
+
3. **NUNCA escrever o SRS antes** de validar que todas as perguntas foram respondidas sem ambiguidade
|
|
28
|
+
4. **SEMPRE seguir o padrão IEEE 830** / ISO/IEC/IEEE 29148:2018 na estrutura do documento final
|
|
29
|
+
5. **SEMPRE salvar o SRS.md** no caminho `.specs/features/{feature-name}/srs.md` dentro do projeto do usuário
|
|
30
|
+
6. **NUNCA assumir requisitos** — se algo não foi dito explicitamente pelo usuário, pergunte
|
|
31
|
+
|
|
32
|
+
## Fluxo de Execução
|
|
33
|
+
|
|
34
|
+
### Fase 1: Inicialização
|
|
35
|
+
|
|
36
|
+
Ao receber a descrição da feature do usuário:
|
|
37
|
+
|
|
38
|
+
1. Criar o diretório `.specs/features/{feature-name}/` se não existir
|
|
39
|
+
2. Criar um **Task artifact** com o checklist de tópicos da entrevista. Use o template em `references/checklist-template.md`
|
|
40
|
+
3. Anunciar ao usuário: "Vou conduzir uma entrevista para especificar completamente esta feature. Vamos tópico por tópico."
|
|
41
|
+
|
|
42
|
+
### Fase 2: Entrevista Socrática
|
|
43
|
+
|
|
44
|
+
Conduzir a entrevista seguindo o guia em `references/socratic-interview-guide.md`:
|
|
45
|
+
|
|
46
|
+
1. **Uma pergunta por vez** — use `ask_question` quando houver opções claras, ou pergunte abertamente para respostas livres
|
|
47
|
+
2. **Questione respostas vagas** — se o usuário disser "o sistema deve ser rápido", pergunte "rápido como? Qual tempo de resposta aceitável em ms?"
|
|
48
|
+
3. **Detecte ambiguidades** — se uma resposta pode ter múltiplas interpretações, apresente-as e peça esclarecimento
|
|
49
|
+
4. **Marque tópicos no Task** como `[x]` conforme forem concluídos
|
|
50
|
+
5. **Cubra todos os tópicos** do checklist antes de prosseguir
|
|
51
|
+
|
|
52
|
+
### Fase 3: Validação de Completude
|
|
53
|
+
|
|
54
|
+
Antes de gerar o documento:
|
|
55
|
+
|
|
56
|
+
1. Revisar o checklist — todos os itens devem estar `[x]`
|
|
57
|
+
2. Apresentar um **resumo consolidado** de tudo que foi levantado
|
|
58
|
+
3. Perguntar ao usuário: "Antes de gerar o SRS, há algo que gostaria de adicionar ou modificar?"
|
|
59
|
+
4. Só prosseguir após confirmação
|
|
60
|
+
|
|
61
|
+
### Fase 4: Geração do SRS
|
|
62
|
+
|
|
63
|
+
1. Gerar o documento SRS.md seguindo o template em `references/ieee-830-template.md`
|
|
64
|
+
2. Salvar em `.specs/features/{feature-name}/srs.md`
|
|
65
|
+
3. Apresentar ao usuário para revisão
|
|
66
|
+
|
|
67
|
+
### Fase 5: Transição
|
|
68
|
+
|
|
69
|
+
Após aprovação do SRS pelo usuário:
|
|
70
|
+
|
|
71
|
+
1. Anunciar: "✅ SRS concluído e salvo em `.specs/features/{feature-name}/srs.md`. Próxima etapa: **System Design Document (SDD)**. Deseja prosseguir?"
|
|
72
|
+
2. **AGUARDAR** confirmação explícita antes de ativar a próxima skill
|
|
73
|
+
|
|
74
|
+
## Routing Table
|
|
75
|
+
|
|
76
|
+
### References
|
|
77
|
+
|
|
78
|
+
- Se precisar do template de estrutura do documento SRS, leia `references/ieee-830-template.md`
|
|
79
|
+
- Se precisar de orientações sobre como conduzir a entrevista socrática, leia `references/socratic-interview-guide.md`
|
|
80
|
+
- Se precisar do template de checklist de tópicos da entrevista, leia `references/checklist-template.md`
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Template de Checklist para Entrevista de Especificação
|
|
2
|
+
|
|
3
|
+
Use este template para criar o Task artifact no início da entrevista. Adapte os tópicos conforme a natureza da feature (nem todos serão aplicáveis).
|
|
4
|
+
|
|
5
|
+
## Checklist Padrão
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
# Checklist de Especificação — {Nome da Feature}
|
|
9
|
+
|
|
10
|
+
## Contexto Geral
|
|
11
|
+
- [ ] Objetivo e propósito da feature
|
|
12
|
+
- [ ] Problema de negócio que resolve
|
|
13
|
+
- [ ] Escopo (o que está DENTRO e FORA)
|
|
14
|
+
|
|
15
|
+
## Atores e Personas
|
|
16
|
+
- [ ] Usuários primários (quem usa diretamente)
|
|
17
|
+
- [ ] Usuários secundários (afetados indiretamente)
|
|
18
|
+
- [ ] Papéis e permissões (admin, user, guest, etc.)
|
|
19
|
+
|
|
20
|
+
## Requisitos Funcionais
|
|
21
|
+
- [ ] Fluxo principal (happy path)
|
|
22
|
+
- [ ] Fluxos alternativos
|
|
23
|
+
- [ ] Fluxos de exceção / erro
|
|
24
|
+
- [ ] Entradas necessárias (dados, formatos, validações)
|
|
25
|
+
- [ ] Saídas esperadas (resultados, notificações, estados)
|
|
26
|
+
|
|
27
|
+
## Regras de Negócio
|
|
28
|
+
- [ ] Regras de validação
|
|
29
|
+
- [ ] Regras de cálculo / processamento
|
|
30
|
+
- [ ] Regras de estado / transição
|
|
31
|
+
- [ ] Regras de limite / threshold
|
|
32
|
+
|
|
33
|
+
## Requisitos Não-Funcionais
|
|
34
|
+
- [ ] Performance (tempo de resposta, throughput)
|
|
35
|
+
- [ ] Segurança (autenticação, autorização, dados sensíveis)
|
|
36
|
+
- [ ] Usabilidade (acessibilidade, responsividade)
|
|
37
|
+
- [ ] Confiabilidade (disponibilidade, tolerância a falhas)
|
|
38
|
+
|
|
39
|
+
## Interface
|
|
40
|
+
- [ ] Telas / componentes visuais necessários
|
|
41
|
+
- [ ] Integrações com APIs / serviços externos
|
|
42
|
+
- [ ] Eventos / webhooks / notificações
|
|
43
|
+
|
|
44
|
+
## Dependências
|
|
45
|
+
- [ ] Dependências com outras features
|
|
46
|
+
- [ ] Dependências com serviços externos
|
|
47
|
+
- [ ] Dependências com dados pré-existentes
|
|
48
|
+
|
|
49
|
+
## Critérios de Aceitação
|
|
50
|
+
- [ ] Critérios mensuráveis para cada requisito funcional
|
|
51
|
+
- [ ] Cenários de teste que comprovam o funcionamento
|
|
52
|
+
|
|
53
|
+
## Restrições e Premissas
|
|
54
|
+
- [ ] Restrições técnicas (stack, plataforma, browser)
|
|
55
|
+
- [ ] Restrições de negócio (regulatórias, compliance)
|
|
56
|
+
- [ ] Premissas assumidas
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Instruções de Uso
|
|
60
|
+
|
|
61
|
+
1. Ao iniciar a entrevista, crie o Task artifact com este checklist adaptado à feature
|
|
62
|
+
2. Marque `[/]` quando iniciar a discussão de um tópico
|
|
63
|
+
3. Marque `[x]` quando o tópico estiver completamente resolvido (sem ambiguidade)
|
|
64
|
+
4. Adicione sub-itens conforme novos pontos surgirem durante a entrevista
|
|
65
|
+
5. Não remova itens — se não aplicável, marque como `[x] N/A — {justificativa}`
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# Template SRS — IEEE 830 / ISO/IEC/IEEE 29148:2018
|
|
2
|
+
|
|
3
|
+
Use este template como base para gerar o documento SRS. Adapte as seções conforme a complexidade da feature. Nunca remova seções — se não aplicável, marque como "N/A" com justificativa.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Estrutura do Documento
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
# Especificação de Requisitos de Software (SRS)
|
|
11
|
+
## {Nome da Feature}
|
|
12
|
+
|
|
13
|
+
**Versão**: 1.0
|
|
14
|
+
**Data**: {data de criação}
|
|
15
|
+
**Projeto**: {nome do projeto}
|
|
16
|
+
**Feature**: {nome da feature}
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 1. Introdução
|
|
21
|
+
|
|
22
|
+
### 1.1 Propósito
|
|
23
|
+
Descrever o propósito deste documento e qual feature ele especifica.
|
|
24
|
+
|
|
25
|
+
### 1.2 Escopo
|
|
26
|
+
Delimitação clara do que esta feature cobre e o que está FORA do escopo.
|
|
27
|
+
|
|
28
|
+
### 1.3 Definições, Acrônimos e Abreviações
|
|
29
|
+
Glossário de termos específicos do domínio usados neste documento.
|
|
30
|
+
|
|
31
|
+
### 1.4 Referências
|
|
32
|
+
Documentos externos referenciados (outros SRS, APIs, normas).
|
|
33
|
+
|
|
34
|
+
### 1.5 Visão Geral do Documento
|
|
35
|
+
Breve descrição da organização deste documento.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 2. Descrição Geral
|
|
40
|
+
|
|
41
|
+
### 2.1 Perspectiva do Produto
|
|
42
|
+
Como esta feature se encaixa no sistema maior. Dependências com outros módulos/features.
|
|
43
|
+
|
|
44
|
+
### 2.2 Funções do Produto
|
|
45
|
+
Resumo de alto nível das funcionalidades que a feature provê.
|
|
46
|
+
|
|
47
|
+
### 2.3 Características dos Usuários
|
|
48
|
+
Personas/atores que interagem com esta feature. Nível técnico esperado.
|
|
49
|
+
|
|
50
|
+
### 2.4 Restrições
|
|
51
|
+
Limitações técnicas, regulatórias ou de negócio.
|
|
52
|
+
|
|
53
|
+
### 2.5 Premissas e Dependências
|
|
54
|
+
O que está sendo assumido como verdade e depende de fatores externos.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 3. Requisitos Funcionais
|
|
59
|
+
|
|
60
|
+
### RF-001: {Nome do Requisito}
|
|
61
|
+
- **Descrição**: {O que o sistema deve fazer}
|
|
62
|
+
- **Entrada**: {Dados de entrada esperados}
|
|
63
|
+
- **Processamento**: {Lógica de negócio aplicada}
|
|
64
|
+
- **Saída**: {Resultado esperado}
|
|
65
|
+
- **Prioridade**: Alta | Média | Baixa
|
|
66
|
+
- **Critério de Aceitação**: {Condições mensuráveis para considerar completo}
|
|
67
|
+
|
|
68
|
+
### RF-002: {Nome do Requisito}
|
|
69
|
+
(repetir estrutura para cada requisito funcional)
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 4. Requisitos Não-Funcionais
|
|
74
|
+
|
|
75
|
+
### 4.1 Performance
|
|
76
|
+
- Tempo de resposta esperado
|
|
77
|
+
- Throughput mínimo
|
|
78
|
+
- Limites de carga
|
|
79
|
+
|
|
80
|
+
### 4.2 Segurança
|
|
81
|
+
- Requisitos de autenticação/autorização
|
|
82
|
+
- Proteção de dados sensíveis
|
|
83
|
+
- Conformidade regulatória
|
|
84
|
+
|
|
85
|
+
### 4.3 Usabilidade
|
|
86
|
+
- Padrões de acessibilidade (WCAG nível)
|
|
87
|
+
- Responsividade (dispositivos alvo)
|
|
88
|
+
- Idiomas suportados
|
|
89
|
+
|
|
90
|
+
### 4.4 Confiabilidade
|
|
91
|
+
- Disponibilidade esperada
|
|
92
|
+
- Tolerância a falhas
|
|
93
|
+
- Estratégia de recovery
|
|
94
|
+
|
|
95
|
+
### 4.5 Manutenibilidade
|
|
96
|
+
- Padrões de código exigidos
|
|
97
|
+
- Cobertura de testes mínima
|
|
98
|
+
- Documentação necessária
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 5. Regras de Negócio
|
|
103
|
+
|
|
104
|
+
### RN-001: {Nome da Regra}
|
|
105
|
+
- **Descrição**: {Regra de negócio}
|
|
106
|
+
- **Condição**: {Quando se aplica}
|
|
107
|
+
- **Ação**: {O que deve acontecer}
|
|
108
|
+
- **Exceções**: {Casos onde não se aplica}
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 6. Requisitos de Interface
|
|
113
|
+
|
|
114
|
+
### 6.1 Interfaces de Usuário
|
|
115
|
+
Descrição das telas/componentes visuais necessários.
|
|
116
|
+
|
|
117
|
+
### 6.2 Interfaces de Software
|
|
118
|
+
APIs, serviços externos, integrações com outros sistemas.
|
|
119
|
+
|
|
120
|
+
### 6.3 Interfaces de Hardware
|
|
121
|
+
Dispositivos, sensores, periféricos (se aplicável).
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## 7. Matriz de Rastreabilidade
|
|
126
|
+
|
|
127
|
+
| ID Requisito | Regra de Negócio | Critério de Aceitação | Prioridade |
|
|
128
|
+
|:---|:---|:---|:---|
|
|
129
|
+
| RF-001 | RN-001 | CA-001 | Alta |
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 8. Apêndices
|
|
134
|
+
|
|
135
|
+
### 8.1 Diagrama de Casos de Uso
|
|
136
|
+
(se aplicável)
|
|
137
|
+
|
|
138
|
+
### 8.2 Protótipos / Wireframes
|
|
139
|
+
(referências a mockups, se existirem)
|
|
140
|
+
|
|
141
|
+
### 8.3 Perguntas em Aberto
|
|
142
|
+
(questões não resolvidas que precisam de follow-up)
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Regras de Preenchimento
|
|
146
|
+
|
|
147
|
+
1. **Cada requisito funcional DEVE ter critério de aceitação** — sem exceção
|
|
148
|
+
2. **Requisitos devem ser testáveis** — se não pode ser verificado, não é um requisito válido
|
|
149
|
+
3. **Use voz ativa** — "O sistema DEVE..." e não "Seria bom se o sistema..."
|
|
150
|
+
4. **Priorize com MoSCoW** — Must/Should/Could/Won't ou Alta/Média/Baixa
|
|
151
|
+
5. **IDs sequenciais** — RF-001, RF-002... / RN-001, RN-002... para rastreabilidade
|