---
name: archive
description: Arquivamento inteligente de projectos e notas concluídos. Move itens finalizados para arquivo com organização adequada. Usar quando "archive", "arquivar", "mover para arquivo", "cleanup", "organizar concluídos".
disable-model-invocation: true
---

# /archive - Arquivamento Automatico

Skill para mover ficheiros concluidos para pastas de arquivo, mantendo o vault organizado.

---

## Comandos

| Comando | Descricao |
|---------|-----------|
| `/archive` | Arquiva ficheiros com `status: done` ou `status: concluido` |
| `/archive logs` | Arquiva logs >7 dias para 99-Arquivo |
| `/archive tests` | Arquiva testes concluidos em z_tests/arquivo/ |
| `/archive dry` | Mostra o que seria arquivado (sem mover) |

---

## Logica de Arquivamento

### Por Frontmatter Status

```javascript
// Detectar ficheiros com status concluido
const patterns = [
  "status: done",
  "status: concluido",
  "status: completed",
  "status: archived"
];

// Pastas locais Obsidian a verificar
const pastas_origem = [
  "z_logs/",      // Logs de trabalho
  "z_reflect/"    // Reflexões
];

for (pasta of pastas_origem) {
  const ficheiros = await Glob({ pattern: pasta });

  for (ficheiro of ficheiros) {
    const conteudo = await Read({ file_path: ficheiro });

    if (matchesAnyPattern(conteudo, patterns)) {
      // Determinar pasta arquivo
      const arquivo_path = getArchivePath(ficheiro);

      // Mover
      await Bash({
        command: `mv "${ficheiro}" "${arquivo_path}"`
      });

      // Registar
      arquivados.push(ficheiro);
    }
  }
}
```

### Por Idade (Logs)

```javascript
// /archive logs - ficheiros >7 dias na pasta z_logs/
const limite = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000);

// Listar ficheiros na pasta z_logs/
const logs = await Glob({ pattern: "z_logs/*.md" });

for (log of logs) {
  const data_ficheiro = extractDateFromFilename(log); // YYYY-MM-DD

  if (data_ficheiro < limite) {
    // Mover para pasta z_arquivo/
    await Bash({
      command: `mv "${log}" "z_arquivo/"`
    });
  }
}
```

---

## Estrutura de Pastas (Obsidian Vault)

```
Planeamento/
├── z_logs/                       # Logs de trabalho
│   ├── 2026-01-27-worklog.md     # Activo (<7 dias)
│   └── 2026-01-19-worklog.md     # Mover para z_arquivo (>7 dias)
│
├── z_reflect/                    # Reflexões
│   ├── 2026-01-27-review.md      # Activo
│   └── 2026-W04-weekly.md        # Mover para z_arquivo
│
└── z_arquivo/                    # Destino arquivamento
    ├── 2026-01-19-worklog.md
    └── 2026-W04-weekly.md
```

---

## Regras de Arquivamento

| Tipo | Criterio | Destino |
|------|----------|---------|
| Logs | >7 dias | z_arquivo/ |
| Reflexoes | >14 dias OU weekly | z_arquivo/ |
| Projectos | status: done | z_arquivo/ |

---

## Output

### /archive (normal)

```markdown
## Arquivamento - 2026-01-27

### Movidos (5 ficheiros)

| Ficheiro | Origem | Destino |
|----------|--------|---------|
| 2026-01-19-worklog.md | z_logs/ | z_arquivo/ |
| TEST-Skills.md | z_tests/ | z_tests/arquivo/ |
| ... | ... | ... |

### Ignorados (status activo)

- 2026-01-27-worklog.md (activo)
- TEST-Current.md (status: active)

---
*Arquivamento concluido via `/archive`*
```

### /archive dry

```markdown
## Dry Run - 2026-01-27

### Seria arquivado (5 ficheiros)

| Ficheiro | Motivo |
|----------|--------|
| 2026-01-19-worklog.md | >7 dias |
| TEST-Done.md | status: concluido |

> [!info] Nenhum ficheiro foi movido
> Executar `/archive` para arquivar
```

---

## Integracao

### Com /today (segunda-feira)

O `/today` chama automaticamente `/archive logs` as segundas antes da analise semanal.

### Com /reflect

Apos gerar weekly review, ficheiros de reflexao da semana anterior podem ser arquivados.

---

## Seguranca

- **NUNCA arquiva** ficheiros sem pasta arquivo/ existente
- **NUNCA arquiva** ficheiros em edicao (modificados <1h)
- **Cria ficheiro** com lista de movidos em z_logs/: `archive-log-YYYY-MM-DD.md`

---

## Changelog

### v1.0.0 (2026-01-27)
- Versao inicial
- Arquivamento por frontmatter status
- Arquivamento por idade (logs >7 dias)
- Modo dry run
- Integracao com /today

---

*Skill v1.0 | Descomplicar®*

---


## Quando NÃO Usar

- Para tarefas fora do domínio de especialização desta skill
- Quando outra skill mais específica está disponível
- Para operações que requerem confirmação manual do utilizador


## Protocolo

1. Analisar requisitos da tarefa
2. Verificar disponibilidade de ferramentas necessárias
3. Executar operações de forma incremental
4. Validar resultados antes de concluir
5. Reportar status e próximos passos


## Exemplos

### Exemplo 1: Uso Básico
```
Input: [descrição da tarefa]
Output: [resultado esperado]
```

### Exemplo 2: Uso Avançado
```
Input: [caso complexo]
Output: [resultado detalhado]
```

---

## Healing Log

Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.

```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```

*Adicionar nova linha após cada erro corrigido.*
