Archive
A área Archive/ do vault: tudo que foi finalizado ou arquivado vai para cá, e
arquivar é sempre um movimento — nunca uma exclusão. Exclusão permanente é /remove. O
par de backend de um projeto é arquivado e restaurado junto com sua pasta.
Camada base
Leia antes de agir, cada um como ../../para/<arquivo>.md relativo ao diretório base desta skill — eles contêm as regras compartilhadas, não as repita de memória:
../../para/paths.md— sempre, incluindo «Idioma»: as strings abaixo vêm delang/<IDIOMA>.md../../para/find-target.md— para os subcomandos que recebem um alvo../../para/move.md— sempre../../para/confirm.md— sempre../../para/dod.md— quando o alvo é um projeto../../para/tasks.md— quando o alvo é um projeto: as operações, pareamento, projetos de área../../para/note-format.md— ao editar frontmatter; «Campos legados»
Subcomandos
A primeira palavra de $ARGUMENTS escolhe o subcomando. list e restore são as únicas
palavras-chave — qualquer outra coisa é o alvo de um arquivamento, então /archive project c arquiva
esse projeto. $ARGUMENTS vazio → mostra os três subcomandos e pergunta.
<alvo> — colocar no archive
-
Encontre o alvo conforme
find-target.md, operação "Archive". -
Se o alvo for um projeto:
- Abra as tarefas primeiro. Leia as tarefas do projeto pareado (
task.list, abertas, comproject_ref). Se houver tarefas abertas, liste-as e pergunte uma vez (Nível 1.5) o que fazer com elas: completá-las (task.completeem cada uma), movê-las para um projeto de área (task.movecomarea) ou deixá-las dentro do projeto arquivado. Onde o adaptador marcartask.completecomo «não suportado», a primeira escolha é a stringarchive.close_in_appem vez disso, e nada é chamado para ela. Execute a resposta antes de continuar. Sobpairing: separate, um projeto não pareado com uma pastaTasks/legada não tem lado de backend;dod.mddiz como suas tarefas são verificadas. Sobpairing: noneas tarefas são as próprias notasTasks/do projeto e se movem com a pasta. - Aplique
dod.mde nomeie toda condição que não se sustenta. Esse arquivo decide se o resultado é concluído ou abandonado; não reproduza seu raciocínio aqui e não o suavize. - Mova a pasta inteira, estrutura interna intacta, de
Projects/PROJ-xxxx <título>/paraArchive/PROJ-xxxx <título>/. O nome permanece exatamente como está: o id fica com o projeto para sempre, e a emissão de ids verificaArchive/para mantê-lo reservado (project-id.md). project.archivequando pareado (sempre, sobpairing: none; um no-op lá). Mantenhatasks_ref:na visão geral — o restore precisa dele.- Campos legados (
statuse o resto) são deixados exatamente como estão (note-format.md): um projeto arquivado mantém seu histórico.
- Abra as tarefas primeiro. Leia as tarefas do projeto pareado (
-
Se o alvo for uma nota avulsa (Area, Resource, ou uma solta de
Inbox/): mova o único.mdparaArchive/.- Áreas são contínuas por definição e normalmente não são arquivadas. Pergunte o que foi pretendido (Nível 1.5) — geralmente significa que a nota está obsoleta, não que a responsabilidade terminou.
- Uma nota de tarefa legada dentro de um projeto que não está sendo arquivado: movê-la não quebra nada útil e provavelmente não é o que foi pretendido — pergunte (Nível 1.5). As tarefas são fechadas no backend agora.
-
Verifique colisões de nome base antes de mover (
move.md,note-format.md). Uma duplicata torna todo link para esse nome ambíguo — Nível 1.5, pergunte em vez de mover. -
Feche o ciclo — apenas projetos. Antes de relatar, faça uma pergunta e aguarde a resposta: a string
archive.ask_changed. Não o que foi produzido — a condição 2 dedod.mdjá cobre o artefato — mas o que está diferente agora que acabou, e se valeu o que custou.Antes de perguntar, leia a seção
project.valueem voz alta — o benefício que o usuário escreveu quando o projeto começou (note-format.md, "Três seções sobre o resultado") — e pergunte se ele se concretizou com a stringarchive.expected({value}= o que eles escreveram, ex. «−5 horas de revisão por semana»). Se a seção estiver vazia ou ausente, pergunte a questão como está, sem inventar uma expectativa.Escreva a seção
project.what_changedno final do corpo da visão geral. Sua primeira linha é o resultado conformedod.md— a stringproject.outcome.completedouproject.outcome.abandoned({reason}nas palavras do usuário) — então a resposta do usuário em suas próprias palavras; não a resuma com as suas. Se a resposta nomear algo que sobrevive ao projeto, isso é a condição 4 dedod.mdfalando; roteie paraAreas/ouResources/em vez de deixá-lo no archive.Se o usuário não quiser responder, escreva apenas a linha de resultado e diga que o ciclo foi pulado. Nunca invente o resto.
-
Relatório: o que foi movido, seu novo caminho, a linha de resultado, o que aconteceu com as tarefas abertas, se o projeto de backend foi arquivado, qualquer aviso.
list — mostrar o que está no archive
Apenas leitura. Nunca abra as notas além do que está nomeado abaixo.
- Liste
Archive/— tanto pastas de projeto quanto arquivos.mdsoltos. - Para cada pasta de projeto, leia o frontmatter da visão geral (
id,deadline) e a primeira linha da seçãoproject.what_changed, se a seção existir. - Imprima duas seções em
LANG, cada uma em ordem alfabética, com uma contagem no cabeçalho (as stringsarchive.list.projectsearchive.list.notes). O resultado mostrado é a primeira linha sem seu ponto final para um projeto concluído, e apenas a palavra antes do dois-pontos para um abandonado (o motivo não é repetido); o prazo é a stringarchive.list.deadline; mostrado aqui com as strings em inglês:
**Projetos arquivados (N)**
1. PROJ-0005 Projeto D — Concluído, prazo 2026-09-30
2. PROJ-0007 Projeto F — Abandonado
3. PROJ-0003 Projeto C — nenhum resultado registrado
4. Projeto antigo — sem metadados
**Notas arquivadas (N)**
1. Alguma nota
O resultado é lido apenas quando a primeira linha não vazia da seção project.what_changed
for exatamente a string project.outcome.completed ou começar com a
string project.outcome.abandoned até seu dois-pontos. Caso contrário — a seção está faltando,
ou abre com as próprias palavras do usuário, como em projetos arquivados antes desta regra — imprima
a string archive.no_outcome; nunca infira um resultado de texto livre ou de um status
legado. A string common.no_metadata — nenhum frontmatter. Um archive vazio é uma
resposta válida: diga isso claramente.
restore <alvo> — trazer algo de volta
- Encontre o alvo conforme
find-target.md, operação "Restore from archive". - Descubra para onde ele volta. Um projeto retorna para
Projects/. Uma nota retorna para a pasta PARA que seu frontmatter implica —area/<slug>→Areas/,resource/<slug>→Resources/. Se as tags não disserem, ou a nota for anterior à convenção, pergunte onde ela pertence. Nada é restaurado paraInbox/— não é um destino (paths.md). - Verifique colisões de nome base como acima, depois mova.
- O lado das tarefas — apenas projetos.
project.restorecom oref. Sobpairing: separatesemtasks_ref:, ofereça criar o par (tasks.md«Pairing»); se sim,project.create, adicione uma chavetasks_ref:e preencha-a. Sobpairing: nonenão há par para oferecer. Deixe as caixas de seleção marcadas na seçãoproject.dode a seçãoproject.what_changedcomo estão — editá-las é Nível 2 e raramente desejado. - Relatório: o que voltou, para onde, e o estado de seu par de backend.
Notas
- Nunca delete nada aqui. Arquivar é sempre um movimento para
Archive/; se o usuário quiser que algo seja removido, isso é/remove. - Todo texto voltado ao usuário e todo valor de frontmatter em
LANG; strings fixas vêm delang/<IDIOMA>.md.