245 lines
4.9 KiB
Markdown
245 lines
4.9 KiB
Markdown
---
|
|
name: spec
|
|
description: Spec-driven development — cria e gere SPEC.md como contrato entre utilizador e Claude. Suporta 3 pesos (light/medium/heavy).
|
|
disable-model-invocation: true
|
|
layer: wiki
|
|
---
|
|
|
|
# /spec v1.0 - Spec-Driven Development
|
|
|
|
Contrato bilateral: forca o Emanuel a definir o que quer e forca o Claude a provar que entendeu.
|
|
|
|
**Sem spec aprovado, sem codigo.**
|
|
|
|
## Contexto NotebookLM
|
|
|
|
ANTES de executar, consultar notebooks para contexto especializado:
|
|
|
|
| Notebook | ID | Consultar quando |
|
|
|----------|-----|-----------------|
|
|
| Gestão de Projectos e Agile | 0c9c079c-a426-486c-99eb-1564d42d37ad | Sempre |
|
|
|
|
```
|
|
mcp__notebooklm__notebook_query({
|
|
notebook_id: "0c9c079c-a426-486c-99eb-1564d42d37ad",
|
|
query: "<adaptar ao contexto do pedido do utilizador>"
|
|
})
|
|
```
|
|
|
|
Integrar insights do NotebookLM nas recomendações e decisões.
|
|
|
|
---
|
|
|
|
## Comandos
|
|
|
|
| Comando | Funcao |
|
|
|---------|--------|
|
|
| `/spec` | Mostrar spec actual ou guiar criacao |
|
|
| `/spec create` | Criar SPEC.md a partir de conversa |
|
|
| `/spec create light` | Spec minimo (<2h) |
|
|
| `/spec create heavy` | Spec completo com milestones e riscos |
|
|
| `/spec approve` | Marcar como aprovado (so Emanuel) |
|
|
| `/spec update` | Alterar spec (track amendments se aprovado) |
|
|
| `/spec check` | Validar trabalho actual vs spec |
|
|
| `/spec review` | Mover draft -> review |
|
|
| `/spec bypass` | Criar bypass temporario (30min) para quick fixes |
|
|
|
|
---
|
|
|
|
## Pesos
|
|
|
|
| Peso | Quando | Seccoes |
|
|
|------|--------|---------|
|
|
| **light** | Quick fix, tarefa simples, <2h | Problema, Solucao, Scope |
|
|
| **medium** | Feature, modulo, 2-8h | + Criterios de Aceitacao, Decisoes |
|
|
| **heavy** | Projecto novo, >8h | + Milestones, Riscos, Dependencias |
|
|
|
|
**Auto-deteccao de peso:**
|
|
- Conversa com <3 frases de requisitos -> light
|
|
- Feature especifica com decisoes tecnicas -> medium
|
|
- Projecto novo / multiplos componentes -> heavy
|
|
- O utilizador pode sempre forcar o peso
|
|
|
|
---
|
|
|
|
## Template SPEC.md
|
|
|
|
### Light
|
|
|
|
```markdown
|
|
---
|
|
spec_version: 1.0
|
|
weight: light
|
|
status: draft
|
|
created: YYYY-MM-DD
|
|
updated: YYYY-MM-DD
|
|
approved: null
|
|
desk_project: null
|
|
desk_task: null
|
|
---
|
|
|
|
# SPEC: [Titulo]
|
|
|
|
## Problema
|
|
[O que esta mal ou falta]
|
|
|
|
## Solucao
|
|
[O que se vai fazer]
|
|
|
|
## Scope
|
|
### Faz
|
|
- [ ] Item 1
|
|
- [ ] Item 2
|
|
|
|
### Nao Faz
|
|
- [Item excluido]
|
|
```
|
|
|
|
### Medium (default)
|
|
|
|
```markdown
|
|
---
|
|
spec_version: 1.0
|
|
weight: medium
|
|
status: draft
|
|
created: YYYY-MM-DD
|
|
updated: YYYY-MM-DD
|
|
approved: null
|
|
desk_project: null
|
|
desk_task: null
|
|
sprint: null
|
|
scope_changes: 0
|
|
---
|
|
|
|
# SPEC: [Titulo]
|
|
|
|
## Problema
|
|
[O que esta mal ou falta. Nas palavras do utilizador.]
|
|
|
|
## Solucao
|
|
[O que se vai fazer. Abordagem escolhida e porque.]
|
|
|
|
## Scope
|
|
|
|
### Faz
|
|
- [ ] Item 1
|
|
- [ ] Item 2
|
|
|
|
### Nao Faz
|
|
- Item excluido 1
|
|
|
|
## Criterios de Aceitacao
|
|
1. DADO [contexto] QUANDO [accao] ENTAO [resultado]
|
|
2. ...
|
|
|
|
## Decisoes Tecnicas
|
|
|
|
| Decisao | Razao |
|
|
|---------|-------|
|
|
| [Escolha] | [Porque] |
|
|
|
|
<!-- APPROVED: YYYY-MM-DD by [nome] -->
|
|
```
|
|
|
|
### Heavy
|
|
|
|
```markdown
|
|
---
|
|
spec_version: 1.0
|
|
weight: heavy
|
|
status: draft
|
|
created: YYYY-MM-DD
|
|
updated: YYYY-MM-DD
|
|
approved: null
|
|
desk_project: null
|
|
desk_task: null
|
|
sprint: null
|
|
scope_changes: 0
|
|
---
|
|
|
|
# SPEC: [Titulo]
|
|
|
|
## Problema
|
|
[Contexto completo do problema]
|
|
|
|
## Solucao
|
|
[Abordagem detalhada]
|
|
|
|
## Scope
|
|
|
|
### Faz
|
|
- [ ] Item 1
|
|
- [ ] Item 2
|
|
|
|
### Nao Faz
|
|
- Item excluido 1
|
|
|
|
## Criterios de Aceitacao
|
|
1. DADO [contexto] QUANDO [accao] ENTAO [resultado]
|
|
2. ...
|
|
|
|
## Decisoes Tecnicas
|
|
|
|
| Decisao | Razao |
|
|
|---------|-------|
|
|
| [Escolha] | [Porque] |
|
|
|
|
## Milestones
|
|
|
|
| # | Milestone | Data | Criterio |
|
|
|---|-----------|------|----------|
|
|
| M1 | [Nome] | [Data] | [Como saber que esta feito] |
|
|
|
|
## Riscos
|
|
|
|
| Risco | Probabilidade | Impacto | Mitigacao |
|
|
|-------|--------------|---------|-----------|
|
|
| [Risco] | Alta/Media/Baixa | Alto/Medio/Baixo | [Plano] |
|
|
|
|
## Dependencias
|
|
- [Dependencia externa 1]
|
|
- [Componente que precisa estar pronto primeiro]
|
|
|
|
## Alteracoes (pos-aprovacao)
|
|
### [DATA] - [Descricao]
|
|
- Adicionado: X
|
|
- Removido: Y
|
|
- Razao: Z
|
|
|
|
<!-- APPROVED: YYYY-MM-DD by [nome] -->
|
|
```
|
|
|
|
---
|
|
|
|
## Protocolos
|
|
|
|
### `/spec` (sem argumentos)
|
|
|
|
```
|
|
1. Procurar SPEC.md no directorio actual (ou pais, max 3 niveis)
|
|
2. SE encontrado:
|
|
a. Ler e mostrar resumo:
|
|
- Titulo, peso, status
|
|
- Scope: X/Y items feitos
|
|
- Aprovacao: sim/nao (data)
|
|
b. Sugerir accoes: approve, check, update
|
|
3. SE nao encontrado:
|
|
a. "Nenhum spec encontrado nesta pasta."
|
|
b. "Quer criar um? Descreva o que precisa ou use /spec create."
|
|
```
|
|
|
|
### `/spec create` [weight]
|
|
|
|
```
|
|
1. mcp__mcp-time__current_time -> data actual
|
|
2. Verificar se SPEC.md ja existe
|
|
- Se existe e status != completed:
|
|
"Ja existe um spec activo. Usar /spec update ou apagar o existente?"
|
|
PARAR e esperar resposta.
|
|
3. Detectar contexto do projecto:
|
|
a. Ler .desk-project se existe -> project_id, project_name, desk_task
|
|
b. Se nao existe: "Em que projecto estamos? (ou 'novo')"
|
|
4. Determinar peso:
|
|
a. Se argumento dado (light/medium/heavy): usar esse
|
|
b. Se nao: analisar conversa anterior
|
|
|