feat(gestao): adicionar skill /hub-compile v1.0

Skill de compilação do 00-Inbox do Hub Obsidian. Classifica ficheiros
.md, gera resumos e backlinks, sugere destino e move com aprovação
explícita do utilizador. Implementa padrão Karpathy Raw→Compiler→Wiki.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-07 01:16:13 +01:00
parent 8bf46bcaf0
commit 19da1bed48
+229
View File
@@ -0,0 +1,229 @@
---
name: hub-compile
description: Compilador do 00-Inbox do Hub Obsidian. Classifica ficheiros .md, gera resumos, sugere destino e backlinks, move com aprovação explícita do utilizador. Usar quando "hub-compile", "compilar inbox", "triagem inbox", "processar inbox", "classificar notas".
context: fork
---
# /hub-compile v1.0 — Compilador do Hub Inbox
Processa automaticamente os ficheiros `.md` em `00-Inbox/` do Hub Obsidian: classifica, resume, sugere destino e backlinks, e move apenas com aprovação explícita.
---
## Filosofia
Padrão Karpathy (Raw → Compiler → Wiki): o LLM actua como compilador — lê ficheiros em bruto, extrai estrutura e significado, e propõe organização. O utilizador aprova antes de qualquer movimento.
**Princípio cardinal: NUNCA mover sem aprovação.**
---
## Protocolo de Execução
```
1. LER ficheiros do Inbox
2. CLASSIFICAR cada ficheiro
3. APRESENTAR tabela ao utilizador
4. AGUARDAR aprovação
5. MOVER os aprovados
6. ACTUALIZAR INDEX.md de origem e destino
```
---
## Passo 1 — Ler Inbox
```
- Listar TODOS os .md em /media/ealmeida/Dados/Hub/00-Inbox/
- EXCLUIR INDEX.md
- Para cada ficheiro: ler conteúdo completo
```
---
## Passo 2 — Classificar
Para cada ficheiro, determinar:
### Tipo
| Tipo | Indicadores |
|------|-------------|
| `worklog` | "Worklog", datas de sessão, tool calls, MCPs usados |
| `prompt` | "Prompt", instruções para Claude, specs de módulo |
| `nota-tecnica` | Configurações, comandos, troubleshooting, fixes |
| `planeamento` | "Plano", "migração", "roadmap", decisões activas |
| `facturacao` | Facturas, recibos, datas limite, valores |
| `migracao` | "Migração", "setup", hardware novo, configurações pendentes |
| `stress-test` | Resultados de testes, benchmarks, métricas |
| `outro` | Não se encaixa nas categorias acima |
### Destino Sugerido
| Tipo | Destino |
|------|---------|
| `worklog` | `99-Arquivo/Worklogs/YYYY/MM/` |
| `prompt` | `99-Arquivo/Documentacao-Pontuais/` |
| `nota-tecnica` com valor permanente | `06-Operacoes/Knowledge-Base/MDs/` |
| `nota-tecnica` pontual/resolvida | `99-Arquivo/Documentacao-Pontuais/` |
| `planeamento` activo | **MANTER** (fica no Inbox) |
| `facturacao` | `99-Arquivo/Documentacao-Pontuais/` |
| `migracao` activa | **MANTER** (fica no Inbox) |
| `stress-test` | `99-Arquivo/Documentacao-Pontuais/` |
| `outro` | Consultar utilizador |
### Acção
| Acção | Significado |
|-------|-------------|
| `mover` | Pronto para mover para o destino sugerido |
| `arquivar` | Mover para `99-Arquivo/` |
| `manter` | Deixar no Inbox — activo ou precisa mais trabalho |
| `eliminar` | Duplicado, vazio, ou sem valor — confirmar antes |
### Gerar por ficheiro
- **Resumo:** 2-3 linhas descrevendo o conteúdo essencial
- **Conceitos-chave:** 3-5 termos ou tópicos principais
- **Backlinks sugeridos:** docs existentes no Hub que devem referenciar este ficheiro ou ser referenciados por ele (usar conhecimento do vault — QR-*, PROC-*, etc.)
---
## Passo 3 — Apresentar Tabela
Mostrar ao utilizador antes de qualquer acção:
```markdown
## Hub Compile — Inbox Analysis
**N ficheiros encontrados** | Data: YYYY-MM-DD HH:MM
| # | Ficheiro | Tipo | Acção | Destino | Resumo |
|---|----------|------|-------|---------|--------|
| 1 | `nome.md` | worklog | mover | 99-Arquivo/Worklogs/2026/03/ | Sessão de 31 Mar: implementação X, Y, Z. Duração ~2h. |
| 2 | `nome.md` | planeamento | manter | — (Inbox) | Migração Alurin em curso. Pendentes: configurar Syncthing. |
| 3 | `nome.md` | prompt | mover | 99-Arquivo/Documentacao-Pontuais/ | Prompt para módulo Moloni-Perfex sync. Concluído. |
### Backlinks Sugeridos
| Ficheiro | Backlink para |
|----------|--------------|
| `stress-tests-alurin.md` | `QR-Servidores.md`, `infra.md` (memory) |
| `worklog-2026-03-31.md` | Discussão Logs #31 Desk CRM |
---
**Aprovação necessária.**
Para aprovar todos os movimentos sugeridos: escrever `aprovar tudo`
Para aprovar individualmente: escrever `aprovar 1,3,5` (números da tabela)
Para ajustar uma acção: escrever `1=arquivar` ou `2=eliminar`
Para cancelar: escrever `cancelar`
```
---
## Passo 4 — Aguardar Aprovação
**PARAR aqui. Não executar nada antes da resposta do utilizador.**
Interpretar respostas:
- `aprovar tudo` → processar todos os `mover` e `arquivar` (nunca os `manter`)
- `aprovar 1,3` → processar apenas linhas 1 e 3
- `1=arquivar` → alterar acção da linha 1 para arquivar
- `cancelar` → terminar sem mover nada
---
## Passo 5 — Mover Ficheiros Aprovados
Para cada ficheiro aprovado com acção `mover` ou `arquivar`:
```
1. Verificar se directório de destino existe
- SE não existe: criar com mcp__filesystem__create_directory
2. Mover ficheiro: mcp__filesystem__move_file
3. Confirmar que ficheiro chegou ao destino
4. Registar movimento para actualização de INDEX.md
```
**Formato do path de destino:**
- Worklogs: `/media/ealmeida/Dados/Hub/99-Arquivo/Worklogs/YYYY/MM/nome.md`
- Documentação pontual: `/media/ealmeida/Dados/Hub/99-Arquivo/Documentacao-Pontuais/nome.md`
- Knowledge-Base: `/media/ealmeida/Dados/Hub/06-Operacoes/Knowledge-Base/MDs/nome.md`
---
## Passo 6 — Actualizar INDEX.md
### INDEX.md do Inbox (00-Inbox/INDEX.md)
Remover entradas dos ficheiros movidos. Se INDEX.md não tiver lista estruturada, adicionar nota de actualização no topo.
### INDEX.md do Destino
Para cada destino com movimentos:
1. Ler INDEX.md existente (se existir)
2. Adicionar entradas dos ficheiros movidos
3. Se INDEX.md não existir e destino tem >3 ficheiros → criar
**Formato de entrada no INDEX.md:**
```markdown
| `nome-ficheiro.md` | Tipo | YYYY-MM-DD | Descrição breve |
```
---
## Output Final
```markdown
## Hub Compile — Concluído
**Movidos:** N ficheiros
**Mantidos no Inbox:** M ficheiros
**Eliminados:** 0 (requer confirmação separada)
### Movimentos Realizados
- `worklog-2026-03-31.md` → 99-Arquivo/Worklogs/2026/03/
- `prompt-modulo-moloni.md` → 99-Arquivo/Documentacao-Pontuais/
### Mantidos
- `migracao-alurin-mini-pc.md` — migração activa
- `NovoPC.md` — planeamento em curso
### INDEX.md Actualizados
- 00-Inbox/INDEX.md ✓
- 99-Arquivo/Worklogs/2026/03/INDEX.md ✓
- 99-Arquivo/Documentacao-Pontuais/INDEX.md ✓
```
---
## Regras Obrigatórias
1. **NUNCA mover sem aprovação explícita** do utilizador
2. **Worklogs** vão sempre para `99-Arquivo/Worklogs/YYYY/MM/`
3. **Planeamento activo** e **migração em curso** ficam sempre no Inbox (`manter`)
4. **Prompts concluídos** vão para `99-Arquivo/Documentacao-Pontuais/`
5. **Notas técnicas com valor permanente** vão para `06-Operacoes/Knowledge-Base/MDs/`
6. **Eliminar** requer confirmação separada — nunca eliminar na aprovação em massa
7. **INDEX.md** deve ser actualizado em origem e destino após cada movimento
8. **Usar mcp__filesystem__*** para todas as operações de ficheiros
---
## Anti-Patterns
- **NUNCA** mover com `aprovar tudo` sem excluir os `manter`
- **NUNCA** criar destinos sem verificar se já existem
- **NUNCA** omitir actualização dos INDEX.md
- **NUNCA** classificar como `eliminar` sem justificação clara
- **NUNCA** confundir planeamento activo com documentação pontual
---
*Skill v1.0 | 2026-04-07 | Descomplicar®*