Periodic editorial archival of historical plans from docs/plans/ to docs/plans/archive/<YYYY-Qx>/, preview-first, non-destructive (git mv). Use when the maintainer wants to archive aged plans.
How this skill is triggered — by the user, by Claude, or both
Slash command
/pragmatic-dev-toolkit:archive-plansThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Archival editorial periódico de planos antigos do papel `plans_dir` (default `docs/plans/`). Move plano elegível para `docs/plans/archive/<YYYY-Qx>/<slug>.md` via `git mv` (preserva blame, `git log --follow` funcional). **Não-destrutivo, preview-first, sob demanda.**
Archival editorial periódico de planos antigos do papel plans_dir (default docs/plans/). Move plano elegível para docs/plans/archive/<YYYY-Qx>/<slug>.md via git mv (preserva blame, git log --follow funcional). Não-destrutivo, preview-first, sob demanda.
Mecânica per ADR-022.
--quarter <YYYY-Qx> (opcional) — filtra archival a um quarter específico (ex.: --quarter 2026-Q1). Default: todos os quarters elegíveis.git status --porcelain vazio). Archival mistura mal com mudança não-revisada; bloquear preserva isolamento./archive-plans em hotfix branch antes de mergeear; paralelo a /release que cutuca branch via enum mas não bloqueia.ls docs/plans/*.md (excluindo docs/plans/archive/**). Para cada plano <slug>.md, avaliar os 6 critérios cumulativos per ADR-022:
**Linha do backlog:** presente — grep -E "^\*\*Linha do backlog:\*\*" docs/plans/<slug>.md retorna não-vazio. Ausente → editorial (not eligible: <slug>.md — sem **Linha do backlog:**; archival manual).BACKLOG.md (qualquer seção) — extrair <texto> do campo, grep -F "<texto>" BACKLOG.md retorna não-vazio. Não localizada → editorial (not eligible: <slug>.md — **Linha do backlog:** não localizada; verificar matching).## Concluídos, não em ## Próximos. Varrer BACKLOG.md de ## Concluídos até EOF (ou próximo ##); verificar <texto> aparece. Em Próximos → silente (item não terminou; sem reporte).git log -S "<texto>" --diff-filter=A --reverse BACKLOG.md | head -1 → primeiro commit que adicionou o texto (pickaxe; robusto a reedições in-place). Comparar timestamp com date -d '2 weeks ago' +%s. Mais recente → silente.git worktree list --porcelain | grep -q "\.worktrees/<slug>$" E test -d .worktrees/<slug> ambos falsos. Worktree registrada OU órfã → aviso (not eligible: <slug>.md — worktree em .worktrees/<slug> (registrada/órfã); trabalho em curso).${CLAUDE_PLUGIN_ROOT}/docs/procedures/forge-auto-detect.md para detectar forge:
gh → gh pr list --search <slug> --state open --json number --jq 'length'.glab → glab mr list --search <slug>.no-detection ou unsupported-host → plano não-elegível nesta invocação (degraded: <slug>.md — forge não-mapeado ou CLI ausente; not eligible this run, retry após restaurar gh/glab). Não assume seguro — vetor do risco é arquivar plano com PR aberto durante trabalho em curso.not eligible: <slug>.md — PR/MR aberto referenciando <slug>; trabalho em curso).Filtrar candidatos por --quarter quando especificado: elegíveis cujo <YYYY-Qx> (derivado do critério 4) bate.
Para cada plano elegível: grep -rn "docs/plans/<slug>.md" docs/decisions/ — lista links em prosa de ADRs (incluindo ## Implementação e referências cruzadas).
Reportar ao operador:
<slug>.md → archive/<YYYY-Qx>/.ADR-NNN:<linha>: <trecho> (informação ao operador; não bloqueia).Editorial (ausência do campo / linha não localizada), Aviso (worktree ativa, PR aberto), Degraded (forge inacessível). Silentes (linha em Próximos, idade < 2 semanas) omitidos do reporte.N planos elegíveis; M cross-refs detectados; K não-elegíveis reportados; <Q> silentes.AskUserQuestionHeader Archive, opções:
Aplicar — description: executa N git mv + commit chore unificado; sem push.Cancelar — description: nada a aplicar; relatório fica como referência editorial.Sem Recommended — operador decide após ver preview; ambos os caminhos são legítimos.
Para cada elegível, em ordem:
mkdir -p docs/plans/archive/<YYYY-Qx>/ (idempotente).git mv docs/plans/<slug>.md docs/plans/archive/<YYYY-Qx>/<slug>.md.Commit unificado:
chore: archive <N> historical plans
archive/<YYYY-Qx>/<slug-1>.md
archive/<YYYY-Qx>/<slug-2>.md
...
Skill não pusha — operador decide quando publicar (paralelo a /release).
Abort silente; nada a reverter (nenhum git mv aconteceu).
Operador querendo retomar plano arquivado: git mv docs/plans/archive/<YYYY-Qx>/<slug>.md docs/plans/<slug>.md manualmente. Sem comando dedicado nesta skill (YAGNI per ADR-022 § Limitações).
git mv move; **Linha do backlog:** deve permanecer intacto para archeology cruzar com BACKLOG ## Concluídos.Aplicar. Skill nunca edita ADRs.npx claudepluginhub fppfurtado/pragmatic-dev-toolkit --plugin pragmatic-dev-toolkitGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.