Arquive uma alteração concluída no fluxo de trabalho experimental.
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á carregam a flag; mantenha-a nas ações de acompanhamento. Sem um armazenamento, os comandos agem na raiz local openspec/ mais próxima.
Entrada: Opcionalmente, especifique um nome de alteração. Se omitido, verifique se pode ser inferido a partir do contexto da conversa. Se vago ou ambíguo, você DEVE perguntar sobre as alterações disponíveis.
Passos
-
Se nenhum nome de alteração for fornecido, solicite a seleção
Execute
openspec list --jsonpara obter as alterações disponíveis. Use a ferramenta AskUserQuestion para deixar o usuário selecionar.Mostre apenas alterações ativas (ainda não arquivadas). Inclua o schema usado para cada alteração, se disponível.
IMPORTANTE: Não adivinhe ou selecione automaticamente uma alteração. Sempre deixe o usuário escolher.
-
Verificar status de conclusão dos artefatos
Execute
openspec status --change "<nome>" --jsonpara verificar a conclusão dos artefatos.Analise o JSON para entender:
schemaName: O fluxo de trabalho sendo usadoplanningHome,changeRoot,artifactPathseactionContext: contexto de caminho e escopoartifacts: Lista de artefatos com seu status (doneou outro)
Se algum artefato não estiver
done:- Exiba um aviso listando os artefatos incompletos
- Use a ferramenta AskUserQuestion para confirmar se o usuário deseja prosseguir
- Prossiga se o usuário confirmar
-
Verificar status de conclusão das tarefas
Leia o arquivo de tarefas (tipicamente
tasks.md) para verificar tarefas incompletas.Conte tarefas marcadas com
- [ ](incompletas) vs- [x](completas).Se houver tarefas incompletas:
- Exiba um aviso mostrando a contagem de tarefas incompletas
- Use a ferramenta AskUserQuestion para confirmar se o usuário deseja prosseguir
- Prossiga se o usuário confirmar
Se nenhum arquivo de tarefas existir: Prossiga sem aviso relacionado a tarefas.
-
Avaliar estado de sincronização de especificações delta
Use
artifactPaths.specs.existingOutputPathsdo JSON de status para verificar especificações delta. Se nenhuma existir, prossiga sem solicitação de sincronização.Se especificações delta existirem:
- Compare cada especificação delta com sua especificação principal correspondente em
openspec/specs/<capacidade>/spec.md - Determine quais alterações seriam aplicadas (adições, modificações, remoções, renomeações)
- Mostre um resumo combinado antes de solicitar
Opções de solicitação:
- Se alterações necessárias: "Sincronizar agora (recomendado)", "Arquivar sem sincronizar"
- Se já sincronizado: "Arquivar agora", "Sincronizar mesmo assim", "Cancelar"
Se o usuário escolher sincronizar, use a ferramenta Task (subagent_type: "general-purpose", prompt: "Use a ferramenta Skill para invocar openspec-sync-specs para a alteração ''. Análise de especificações delta: <inclua o resumo da análise das especificações delta>"). Prossiga para arquivar independentemente da escolha.
- Compare cada especificação delta com sua especificação principal correspondente em
-
Realizar o arquivamento
Crie um diretório
archivesobplanningHome.changesDirse ele não existir:mkdir -p "<planningHome.changesDir>/archive"Gere o nome de destino usando a data atual:
YYYY-MM-DD-<nome-da-alteracao>Verifique se o destino já existe:
- Se sim: Falhe com erro, sugira renomear o arquivo existente ou usar uma data diferente
- Se não: Mova
changeRootpara o diretório de arquivo
mv "<changeRoot>" "<planningHome.changesDir>/archive/YYYY-MM-DD-<nome>" -
Exibir resumo
Mostre o resumo de conclusão do arquivamento incluindo:
- Nome da alteração
- Schema que foi usado
- Local do arquivo
- Se as especificações foram sincronizadas (se aplicável)
- Nota sobre quaisquer avisos (artefatos/tarefas incompletas)
Saída em caso de sucesso
## Arquivamento Concluído
**Alteração:** <nome-da-alteracao>
**Schema:** <nome-do-schema>
**Arquivado em:** o caminho de arquivo derivado de `planningHome.changesDir`/YYYY-MM-DD-<nome>/
**Especificações:** ✓ Sincronizado com as especificações principais (ou "Nenhuma especificação delta" ou "Sincronização ignorada")
Todos os artefatos completos. Todas as tarefas completas.
Diretrizes
- Sempre solicite a seleção da alteração se ela não for fornecida
- Use o grafo de artefatos (openspec status --json) para verificação de conclusão
- Não bloqueie o arquivamento com avisos – apenas informe e confirme
- Preserve o arquivo .openspec.yaml ao mover para o arquivo (ele se move com o diretório)
- Mostre um resumo claro do que aconteceu
- Se a sincronização for solicitada, use a abordagem openspec-sync-specs (orientada por agente)
- Se especificações delta existirem, sempre execute a avaliação de sincronização e mostre o resumo combinado antes de solicitar