Implementa tarefas de uma alteração no OpenSpec.
Seleção de armazenamento: Se o usuário nomear um armazenamento (um armazenamento é um repositório OpenSpec independente registrado nesta máquina) ou o trabalho estiver em um, execute openspec store list --json para descobrir os IDs de armazenamento registrados e, em seguida, passe --store <id> nos comandos que leem ou escrevem especificações e alterações (new change, status, instructions, list, show, validate, archive, doctor, context). Outros comandos não aceitam a flag. As dicas impressas pelos comandos já contêm a flag; mantenha-a nos acompanhamentos. Sem um armazenamento, os comandos atuam na raiz openspec/ local mais próxima.
Entrada: Opcionalmente, especifique um nome de alteração. Se omitido, verifique se pode ser inferido do contexto da conversa. Se for vago ou ambíguo, você DEVE perguntar quais alterações estão disponíveis.
Passos
-
Selecionar a alteração
Se um nome for fornecido, use-o. Caso contrário:
- Infira do contexto da conversa se o usuário mencionou uma alteração
- Selecione automaticamente se existir apenas uma alteração ativa
- Se ambíguo, execute
openspec list --jsonpara obter as alterações disponíveis e use a ferramenta AskUserQuestion para o usuário selecionar
Sempre anuncie: "Usando alteração: " e como substituir (ex.:
/opsx:apply <outro>). -
Verificar o status para entender o esquema
openspec status --change "<nome>" --jsonAnalise o JSON para entender:
schemaName: O workflow em uso (ex.: "spec-driven")planningHome,changeRooteactionContext: escopo de planejamento e restrições de edição- Qual artefato contém as tarefas (normalmente "tasks" para spec-driven, verifique o status para outros)
-
Obter instruções de apply
openspec instructions apply --change "<nome>" --jsonIsso retorna:
contextFiles: ID do artefato -> array de caminhos de arquivo concretos (varia por esquema – pode ser proposal/specs/design/tasks ou spec/tests/implementation/docs)- Progresso (total, concluído, restante)
- Lista de tarefas com status
- Instrução dinâmica baseada no estado atual
Tratar estados:
- Se
state: "blocked"(artefatos ausentes): mostre a mensagem, sugira usar openspec-continue-change - Se
state: "all_done": parabenize, sugira arquivar - Caso contrário: prossiga para a implementação
-
Ler arquivos de contexto
Leia todos os caminhos de arquivo listados em
contextFilesda saída de instruções de apply. Os arquivos dependem do esquema sendo usado:- spec-driven: proposal, specs, design, tasks
- Outros esquemas: siga os contextFiles da saída da CLI
-
Mostrar progresso atual
Exiba:
- Esquema sendo usado
- Progresso: "N/M tarefas concluídas"
- Visão geral das tarefas restantes
- Instrução dinâmica da CLI
-
Implementar tarefas (loop até concluir ou bloquear)
Para cada tarefa pendente:
- Mostre em qual tarefa está trabalhando
- Faça as alterações de código necessárias
- Mantenha as alterações mínimas e focadas
- Marque a tarefa como concluída no arquivo de tarefas:
- [ ]→- [x] - Continue para a próxima tarefa
Pausar se:
- Tarefa pouco clara → peça esclarecimento
- A implementação revela um problema de design → sugira atualizar artefatos
- Erro ou bloqueador encontrado → relate e aguarde orientação
- O usuário interromper
-
Ao concluir ou pausar, mostrar status
Exiba:
- Tarefas concluídas nesta sessão
- Progresso geral: "N/M tarefas concluídas"
- Se tudo concluído: sugira arquivar
- Se pausado: explique o motivo e aguarde orientação
Saída Durante a Implementação
## Implementando: <nome-alteração> (schema: <nome-esquema>)
Trabalhando na tarefa 3/7: <descrição da tarefa>
[...implementação acontecendo...]
✓ Tarefa concluída
Trabalhando na tarefa 4/7: <descrição da tarefa>
[...implementação acontecendo...]
✓ Tarefa concluída
Saída ao Concluir
## Implementação Concluída
**Alteração:** <nome-alteração>
**Schema:** <nome-esquema>
**Progresso:** 7/7 tarefas concluídas ✓
### Concluído Esta Sessão
- [x] Tarefa 1
- [x] Tarefa 2
...
Todas as tarefas concluídas! Pronto para arquivar esta alteração.
Saída ao Pausar (Problema Encontrado)
## Implementação Pausada
**Alteração:** <nome-alteração>
**Schema:** <nome-esquema>
**Progresso:** 4/7 tarefas concluídas
### Problema Encontrado
<descrição do problema>
**Opções:**
1. <opção 1>
2. <opção 2>
3. Outra abordagem
O que você gostaria de fazer?
Diretrizes
- Continue executando as tarefas até concluir ou bloquear
- Sempre leia os arquivos de contexto antes de começar (da saída das instruções de apply)
- Se a tarefa for ambígua, pause e pergunte antes de implementar
- Se a implementação revelar problemas, pause e sugira atualizações de artefatos
- Mantenha as alterações de código mínimas e escopadas para cada tarefa
- Atualize a caixa de seleção da tarefa imediatamente após concluir cada tarefa
- Pause em erros, bloqueadores ou requisitos pouco claros – não adivinhe
- Use o contextFiles da saída da CLI, não presuma nomes de arquivo específicos
Integração de Workflow Fluida
Este skill suporta o modelo "ações sobre uma alteração":
- Pode ser invocado a qualquer momento: Antes de todos os artefatos estarem concluídos (se houver tarefas), após implementação parcial, intercalado com outras ações
- Permite atualizações de artefatos: Se a implementação revelar problemas de design, sugira atualizar artefatos – não há bloqueio de fases, trabalhe de forma fluida