--- name: sprint description: Sprints flexíveis que lêem tasks do Desk CRM, agrupam em sprints com checkpoints e reviews. disable-model-invocation: true --- # /sprint v1.0 - Sprints Flexiveis Sprints com duracao flexivel, Desk CRM como fonte de verdade, checkpoints obrigatorios. ## 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: "" }) ``` Integrar insights do NotebookLM nas recomendações e decisões. --- ## Comandos | Comando | Funcao | |---------|--------| | `/sprint` | Mostrar sprint activo | | `/sprint plan` | Criar sprint a partir de tasks Desk | | `/sprint check-in` | Checkpoint a meio do sprint | | `/sprint review` | Review final do sprint | | `/sprint close` | Fechar sprint e calcular metricas | | `/sprint add ` | Adicionar task ao sprint activo | | `/sprint remove ` | Remover task do sprint | --- ## SPRINT.md Template ```markdown --- sprint_id: YYYY-WNN-[projecto] project_id: null start_date: YYYY-MM-DD end_date: YYYY-MM-DD status: active checkpoint_done: false spec_refs: [] tasks_planned: 0 tasks_added_after: 0 --- # Sprint: [Goal em 1 frase] ## Tasks | Desk ID | Task | Prioridade | Estimativa | Status | Tempo Real | |---------|------|-----------|-----------|--------|-----------| ## Checkpoint (Meio do Sprint) _Data: [a preencher]_ - On track: [sim/nao] - Bloqueios: [lista] - Scope changes: [lista] - Accao: [continuar/ajustar] ## Review (Final do Sprint) _Data: [a preencher]_ - Tasks completadas: X/Y - Tasks adicionadas pos-planeamento: N - Tempo estimado: Xh - Tempo real: Yh - Scope changes: N - Licoes aprendidas: [lista] - Proximos passos: [lista] ``` --- ## Protocolos ### `/sprint` (sem argumentos) ``` 1. Procurar SPRINT.md no directorio actual (ou pais, max 3 niveis) 2. SE encontrado e status == active: a. Ler SPRINT.md b. Buscar estado actual das tasks no Desk CRM: Para cada task_id na tabela: mcp__desk-crm-v3__get_task({ id: task_id }) c. Mostrar: --- ## Sprint Activo: [goal] **Projecto:** [nome] (#id) **Periodo:** [start] -> [end] (dia X de Y) **Checkpoint:** [feito/pendente] | Task | Status Desk | Sprint | |------|------------|--------| **Progresso:** X/Y tasks (Z%) --- 3. SE nao encontrado: "Sem sprint activo. Usar /sprint plan para criar." ``` ### `/sprint plan` ``` 1. mcp__mcp-time__current_time -> data actual 2. Detectar contexto: a. Ler .desk-project se existe -> project_id b. Se nao: perguntar projecto 3. Buscar tasks abertas do Desk CRM: mcp__desk-crm-v3__get_tasks({ project_id: X, status: [1, 4] }) (status 1=Not Started, 4=In Progress) 4. Verificar SPEC.md: - Se existe e aprovado: incluir referencia no sprint - Se nao existe: WARN "Sem spec aprovado. Considere /spec create." - Nao bloquear por isto (gradual adoption) 5. Apresentar tasks ao Emanuel por prioridade: ## Tasks Disponiveis para Sprint ### Urgente / Alta - #1450: Implement API (4h estimado) - #1451: Fix login bug (1h estimado) ### Normal - #1448: Write docs (2h estimado) ### Baixa - #1452: Refactor CSS (3h estimado) 6. Perguntar: "Que tasks incluir neste sprint? E data limite?" (pode ser: "todas as urgentes", "#1450 e #1448", etc.) 7. Calcular estimativa total 8. GERAR SPRINT.md: - sprint_id: YYYY-WNN-[projecto] (semana ISO actual) - tasks_planned: contagem - Preencher tabela de tasks 9. CONFIRMAR: "Sprint com [N] tasks, ~[X]h, ate [data]. Criar?" 10. Gravar SPRINT.md 11. Guardar em memory-supabase: save_memory({ content: "Sprint [id] iniciado: [N] tasks, [X]h, ate [data]", tags: ["sprint", "project-[id]", sprint_id] }) 12. "Sprint criado. Check-in recomendado em [data_meio]." ``` ### `/sprint check-in` ``` 1. Ler SPRINT.md - Se nao existe ou status != active: "Sem sprint activo." 2. Se checkpoint_done == true: "Checkpoint ja realizado. Para novo check-in, usar /sprint review." 3. mcp__mcp-time__current_time -> calcular dia actual vs periodo 4. Para cada task do sprint: mcp__desk-crm-v3__get_task({ id: task_id }) - Comparar status actual vs planeado 5. Calcular: - % tempo decorrido - % tasks completadas - Tasks adicionadas apos planeamento (comparar com tasks_planned) 6. Detectar alertas: - >50% tempo decorrido mas <40% tasks feitas -> "ATRASADO" - Tasks novas adicionadas -> "SCOPE CREEP: [N] tasks nao planeadas" - Tasks bloqueadas -> "BLOQUEIO: [task]" 7. Apresentar: --- ## Checkpoint Sprint [id] **Progresso:** X/Y tasks (Z%) **Tempo:** dia M de N (W% decorrido) **Alerta:** [verde/amarelo/vermelho] ### Tasks | Task | Planeado | Actual | |------|----------|--------| ### Problemas Detectados - [lista ou "nenhum"] ### Recomendacao [Continuar como esta / Ajustar scope / Pedir ajuda] --- 8. Perguntar: "Algum ajuste? Notas?" 9. Actualizar SPRINT.md: - Preencher seccao Checkpoint - checkpoint_done: true ``` ### `/sprint review` ``` 1. Ler SPRINT.md - Se status != active: "Sprint nao activo." 2. mcp__mcp-time__current_time 3. Estado final de todas as tasks: Para cada task: mcp__desk-crm-v3__get_task({ id }) 4. Buscar tempo real: mcp__desk-crm-v3__get_task_time_logs({ task_id }) para cada task 5. Calcular metricas: - Completion rate: tasks_done / tasks_total - Scope creep: tasks_added_after (comparar lista actual vs original) - Tempo: soma estimativas vs soma real - Precisao: |estimado - real| / estimado * 100 6. Apresentar review: --- ## Sprint Review: [id] ### Resultado: [X/Y tasks completadas] | Task | Estimativa | Tempo Real | Status | |------|-----------|-----------|--------| ### Metricas - Completion rate: Z% - Scope changes: N tasks adicionadas/removidas - Tempo: Xh estimado vs Yh real (precisao: W%) ### Retrospectiva - O que correu bem? - O que pode melhorar? - Accoes para proximo sprint? --- 7. Perguntar retrospectiva ao Emanuel 8. Actualizar SPRINT.md seccao Review 9. Registar metricas: a. memory-supabase: save_memory({ content: "Sprint [id] review: [X/Y] tasks, [scope_changes] changes, [Yh] real vs [Xh] estimado", tags: ["sprint", "metrics", sprint_id, "project-[id]"] }) b. Se .desk-project existe: comentar na task Desk (formato HTML #27) 10. Perguntar: "Planear proximo sprint? /sprint plan" ### `/sprint close` ``` 1. Executar /sprint review se review nao feito 2. Actualizar SPRINT.md: status -> closed 3. "Sprint fechado. Metricas registadas." ``` ### `/sprint add ` ``` 1. Ler SPRINT.md activo 2. Verificar se task_id ja esta no sprint 3. Buscar task do Desk: mcp__desk-crm-v3__get_task({ id: task_id }) 4. Adicionar a tabela de tasks 5. Incrementar tasks_added_after no frontmatter 6. WARN: "Task adicionada apos planeamento. Isto conta como scope change." ``` --- ## Regras 1. **NUNCA** criar sprint sem consultar Desk CRM 2. **SEMPRE** perguntar ao Emanuel que tasks incluir (nao decidir sozinho) 3. Checkpoint e recomendado mas nao obrigatorio 4. Review e obrigatorio antes de fechar sprint 5. Metricas sao factuais - nao ajustar para "parecer bem" 6. Sprint nao tem cadencia fixa - dura o que o projecto precisa