gestao: sincroniza versão 1.6.2 do cache local para o repositório
Cache instalado (1.6.2) mais recente que o repo (1.4.0): today v12.0 (systemd user timers), worklog actualizado, novas skills qw e report-5w2h. Preservada a edição local de deep-research (remove refs a /research extinta), mais recente que o cache.
This commit is contained in:
@@ -1,28 +1,35 @@
|
|||||||
---
|
---
|
||||||
name: today
|
name: today
|
||||||
description: Checkup diário - dashboard agregador que lê resultados dos agentes cron locais (desktop) e recolhe dados frescos via skills interactivas. Usar quando "checkup", "hoje", "today", "rotina", início de dia.
|
description: Checkup diário - dashboard agregador que lê resultados dos agentes systemd locais (desktop/hp) e recolhe dados frescos via skills interactivas. Usar quando "checkup", "hoje", "today", "rotina", início de dia.
|
||||||
context: fork
|
context: fork
|
||||||
---
|
---
|
||||||
|
|
||||||
# /today v11.0 - Checkup Diario (Agregador)
|
# /today v12.0 - Checkup Diario (Agregador)
|
||||||
|
|
||||||
Le resultados dos agentes cron locais (desktop, crontab ealmeida) + invoca skills interactivas. Nao duplica trabalho automatizado.
|
Lê resultados dos agentes systemd locais (user timers, desktop/hp) + invoca skills interactivas. Não duplica trabalho automatizado.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Arquitectura
|
## Arquitectura
|
||||||
|
|
||||||
|
> Migração: crontab (`claude_automations_dev`, extinto 20-04-2026) → Hermes cronjobs (05-05-2026, Task #2080) → **systemd user timers `stack-observer`** (actual, desde ~11-06-2026). Repo agentes: `git.descomplicar.pt/ealmeida/stack-observer` (código) + `~/.config/systemd/user/*.timer` (agendamento).
|
||||||
|
|
||||||
```
|
```
|
||||||
CRON (desktop local, crontab ealmeida) /today (interactivo, sob pedido)
|
SYSTEMD USER TIMERS (desktop/hp) /today (interactivo, sob pedido)
|
||||||
├── imap-triage (4h) ├── Le logs locais do cron
|
├── collector-gate-events (*/5min) ├── Lê estado systemd (list-timers + list-units --failed)
|
||||||
├── auto-expense (4h +15min) ├── /daily-digest (dados frescos)
|
├── collector-hermes-jobs (*/5min) ├── /daily-digest (dados frescos CRM)
|
||||||
├── ticket-triage (4h +30min) ├── /tasks-overview (dados frescos)
|
├── observer-ticket-queue (*/5min) ├── /tasks-overview (dados frescos Desk)
|
||||||
├── aiktop-tasks (15min) ├── /cleanup-downloads (se necessario)
|
├── observer-tickets (diário 09:30) ├── /cleanup-downloads (se necessário)
|
||||||
├── infra-check (diario 7h) ├── Specs/Sprints scan
|
├── observer-desk-alert (diário 09:00) ├── Specs/Sprints scan
|
||||||
├── wp-update (segunda 23h) ├── Rotinas especiais por dia
|
├── update-omp / update-claude (periódico) ├── Rotinas especiais por dia
|
||||||
├── intelligence-* (researcher/scorer/ └── Dashboard + Obsidian + Supabase
|
├── okf-confianca (semanal seg) └── Dashboard + Obsidian + Mem0
|
||||||
│ selector/publisher)
|
├── verify-gates-registry (semanal seg)
|
||||||
└── weekly-digest-podcast (quinta 20h)
|
└── stk-drift-check (semanal dom)
|
||||||
|
|
||||||
|
Timers de backup (rclone-bisync, gdrive-sync) e OKF secundários
|
||||||
|
(okf-health, okf-lint, okf-detect, okf-moc-sync, okf-validate)
|
||||||
|
existem mas ficam `disabled`/`inactive` por omissão — confirmar
|
||||||
|
estado antes de assumir que correm.
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -40,60 +47,49 @@ CRON (desktop local, crontab ealmeida) /today (interactivo, sob pedido)
|
|||||||
|
|
||||||
```
|
```
|
||||||
1. mcp__mcp-time__current_time -> data, dia da semana
|
1. mcp__mcp-time__current_time -> data, dia da semana
|
||||||
2. mcp__memory-supabase__search_memories("today checkup YYYY-MM-DD")
|
2. mcp__mem0__search_memories("today checkup YYYY-MM-DD")
|
||||||
-> Se ja existe hoje: perguntar se quer re-executar
|
-> Se ja existe hoje: perguntar se quer re-executar
|
||||||
```
|
```
|
||||||
|
|
||||||
### Fase 1: Ler resultados dos agentes cron (silencioso)
|
### Fase 1: Ler estado dos agentes systemd (silencioso)
|
||||||
|
|
||||||
```
|
```
|
||||||
3. Ler logs LOCAIS (Bash tail — sem SSH, tudo corre no desktop):
|
3. Ler estado systemd (Bash — sem SSH, tudo corre no desktop/hp):
|
||||||
|
|
||||||
Base: /media/ealmeida/Dados/Dev/claude_automations_dev/
|
a) Próximas execuções + última corrida de cada timer activo:
|
||||||
|
systemctl --user list-timers --all --no-legend
|
||||||
|
|
||||||
a) IMAP (ultimo report):
|
b) Unidades falhadas (qualquer serviço, não só os do stack-observer):
|
||||||
tail -20 /media/ealmeida/Dados/Dev/claude_automations_dev/imap-triage/imap-triage.log
|
systemctl --user list-units --failed --no-legend --all
|
||||||
cat ~/.claude-work/today-imap-DD-MM-YYYY.json (se existir)
|
|
||||||
|
|
||||||
b) Ticket triage (ultimo log):
|
c) Para cada falha encontrada em (b), obter a causa:
|
||||||
tail -30 /media/ealmeida/Dados/Dev/claude_automations_dev/ticket-triage/ticket-triage.log
|
journalctl --user -u <service>.service -n 20 --no-pager
|
||||||
|
|
||||||
c) Auto-expense (ultimo log):
|
d) Confirmar se os timers de backup estão activos (regra 3-2-1):
|
||||||
tail -20 /media/ealmeida/Dados/Dev/claude_automations_dev/auto-expense/auto-expense.log
|
systemctl --user is-enabled rclone-bisync.timer gdrive-sync.timer
|
||||||
|
systemctl --user is-active rclone-bisync.timer gdrive-sync.timer
|
||||||
|
-> Se disabled/inactive: ALERTA "Requer Atencao Urgente" (backup offsite em risco)
|
||||||
|
|
||||||
d) Infra check (ultimo log):
|
e) HEARTBEAT WP — ultimo post em descomplicar.pt categoria 1188 (noticias):
|
||||||
tail -30 /media/ealmeida/Dados/Dev/claude_automations_dev/infra-check/infra-check.log
|
|
||||||
|
|
||||||
e) AikTop tasks (ultimo log):
|
|
||||||
tail -20 /media/ealmeida/Dados/Dev/claude_automations_dev/aiktop-tasks/aiktop-tasks.log
|
|
||||||
|
|
||||||
f) SE segunda — wp-update (ultimo log):
|
|
||||||
tail -50 /media/ealmeida/Dados/Dev/claude_automations_dev/wp-update/wp-update.log
|
|
||||||
|
|
||||||
g) Intelligence pipeline:
|
|
||||||
tail -30 /media/ealmeida/Dados/Dev/claude_automations_dev/daily-selector/daily-selector.log
|
|
||||||
tail -30 /media/ealmeida/Dados/Dev/claude_automations_dev/intelligence-publisher/intelligence-publisher.log
|
|
||||||
tail -20 /media/ealmeida/Dados/Dev/claude_automations_dev/intelligence-researcher/intelligence-researcher.log
|
|
||||||
tail -20 /media/ealmeida/Dados/Dev/claude_automations_dev/intelligence-scorer/intelligence-scorer.log
|
|
||||||
|
|
||||||
h) HEARTBEAT WP — ultimo post em descomplicar.pt categoria 1188 (noticias):
|
|
||||||
mcp__ssh-unified__ssh_execute(server="server", command="cd /home/ealmeida/public_html && wp post list --post_type=post --category=1188 --posts_per_page=1 --fields=ID,post_title,post_date --format=csv --allow-root 2>&1 | tail -2")
|
mcp__ssh-unified__ssh_execute(server="server", command="cd /home/ealmeida/public_html && wp post list --post_type=post --category=1188 --posts_per_page=1 --fields=ID,post_title,post_date --format=csv --allow-root 2>&1 | tail -2")
|
||||||
|
-> Se a ligação SSH falhar (auth/timeout), NÃO repetir a tentativa mais de uma vez
|
||||||
|
(risco de lockout CSF/LFD no servidor CWP) — reportar como alerta de acesso,
|
||||||
|
não como heartbeat em falta.
|
||||||
-> Calcular idade do ultimo post
|
-> Calcular idade do ultimo post
|
||||||
-> Se >26h sem post novo: ALERTA "Requer Atencao Urgente" + contexto:
|
-> Se >26h sem post novo: ALERTA "Requer Atencao Urgente" + contexto:
|
||||||
* Pipeline deveria publicar ate 5 noticias/dia (selector 06:30 + slots 09/11/13/15:30/17:30)
|
* Pipeline deveria publicar ate 5 noticias/dia
|
||||||
* Verificar logs daily-selector + publisher (passo g)
|
* Verificar journalctl dos timers relacionados (researcher/scorer/selector/publisher, se existirem)
|
||||||
* Stock Supabase: scored>=7 count via curl REST
|
* Verificar se desktop/hp tiveram downtime (uptime / journalctl -b)
|
||||||
* Verificar se desktop teve downtime (uptime / journalctl) — agentes correm no desktop local
|
|
||||||
|
|
||||||
4. DETECTAR PROBLEMAS nos logs:
|
4. DETECTAR PROBLEMAS:
|
||||||
- Cron nao correu (log desactualizado >8h)
|
- Timer com falha em list-units --failed
|
||||||
- Exit codes != 0
|
- Timer de backup/OKF crítico disabled/inactive quando deveria estar activo
|
||||||
- Erros ou falhas nos logs
|
- Exit codes != 0 nos journalctl consultados
|
||||||
- HEARTBEAT WP >26h sem post novo em cat 1188
|
- HEARTBEAT WP >26h sem post novo em cat 1188, ou SSH inacessível
|
||||||
-> Adicionar a seccao "Requer Atencao Urgente"
|
-> Adicionar a seccao "Requer Atencao Urgente"
|
||||||
|
|
||||||
4b. VERIFICAR FORNECEDORES AUTO-CRIADOS:
|
4b. VERIFICAR FORNECEDORES AUTO-CRIADOS:
|
||||||
Ler ~/.claude-work/fornecedores-iva.json
|
Ler ~/.claude-work/fornecedores-iva.json (se existir)
|
||||||
Filtrar entradas com "auto_proposto": true
|
Filtrar entradas com "auto_proposto": true
|
||||||
Para cada entrada extrair: nome, dominio (chave), politica, confianca, despesas_count
|
Para cada entrada extrair: nome, dominio (chave), politica, confianca, despesas_count
|
||||||
-> Se existirem: adicionar secção "Fornecedores Auto-Criados" no dashboard (ver formato abaixo)
|
-> Se existirem: adicionar secção "Fornecedores Auto-Criados" no dashboard (ver formato abaixo)
|
||||||
@@ -104,10 +100,14 @@ CRON (desktop local, crontab ealmeida) /today (interactivo, sob pedido)
|
|||||||
```
|
```
|
||||||
5. Invocar /daily-digest
|
5. Invocar /daily-digest
|
||||||
-> Timer, tickets, facturas, leads, propostas, agenda
|
-> Timer, tickets, facturas, leads, propostas, agenda
|
||||||
|
-> Requer MCP desk-crm-v3 (disabled por omissão, regra 57 CLAUDE.md) —
|
||||||
|
se desligado, reportar tickets/facturas/leads/propostas como indisponíveis
|
||||||
|
em vez de tentar contornar com desk-project-minimal (cobertura parcial: só tarefas).
|
||||||
-> Output: dashboard markdown
|
-> Output: dashboard markdown
|
||||||
|
|
||||||
6. Invocar /tasks-overview
|
6. Invocar /tasks-overview
|
||||||
-> Tarefas overdue, pendentes, em curso, workflows sugeridos
|
-> Tarefas overdue, pendentes, em curso, workflows sugeridos
|
||||||
|
-> desk-project-minimal cobre tarefas (get_overdue_tasks, get_tasks) sem depender do desk-crm-v3
|
||||||
-> Output: tarefas markdown
|
-> Output: tarefas markdown
|
||||||
|
|
||||||
7. SE >10 ficheiros em ~/Transferencias:
|
7. SE >10 ficheiros em ~/Transferencias:
|
||||||
@@ -118,9 +118,11 @@ CRON (desktop local, crontab ealmeida) /today (interactivo, sob pedido)
|
|||||||
|
|
||||||
```
|
```
|
||||||
8. Glob: /media/ealmeida/Dados/Dev/**/SPEC.md (profundidade max 3)
|
8. Glob: /media/ealmeida/Dados/Dev/**/SPEC.md (profundidade max 3)
|
||||||
-> Para cada encontrado: Ler frontmatter (15 linhas)
|
-> Excluir placeholders genéricos: title "Spec"/"SPEC — <repo>" com status: draft
|
||||||
-> Filtrar: status != "completed"
|
e sem secções de conteúdo além do frontmatter (gerados por template, docs/SPECS/SPEC.md)
|
||||||
-> Extrair: titulo (linha # SPEC:), status, weight, scope done/total
|
-> Para cada SPEC.md real (conteúdo substantivo): ler frontmatter (grep ^status: mais rápido que ler 15 linhas por ficheiro)
|
||||||
|
-> Filtrar: status not in [completed, shipped, abandoned, rejected]
|
||||||
|
-> Extrair: titulo, status, data approved/updated, projecto Desk associado
|
||||||
|
|
||||||
9. Glob: /media/ealmeida/Dados/Dev/**/SPRINT.md
|
9. Glob: /media/ealmeida/Dados/Dev/**/SPRINT.md
|
||||||
-> Para cada encontrado: Ler frontmatter
|
-> Para cada encontrado: Ler frontmatter
|
||||||
@@ -141,8 +143,8 @@ CRON (desktop local, crontab ealmeida) /today (interactivo, sob pedido)
|
|||||||
### Fase 3: Output Final
|
### Fase 3: Output Final
|
||||||
|
|
||||||
```
|
```
|
||||||
12. AGREGAR resultados de cron + skills:
|
12. AGREGAR resultados de systemd + skills:
|
||||||
- Logs do cron (Fase 1)
|
- Estado dos timers/serviços (Fase 1)
|
||||||
- Dados frescos do /daily-digest e /tasks-overview (Fase 2)
|
- Dados frescos do /daily-digest e /tasks-overview (Fase 2)
|
||||||
- Specs/Sprints (Fase 2b)
|
- Specs/Sprints (Fase 2b)
|
||||||
|
|
||||||
@@ -152,10 +154,10 @@ CRON (desktop local, crontab ealmeida) /today (interactivo, sob pedido)
|
|||||||
Path: /media/ealmeida/Dados/Hub/00-Inbox/DD-MM-YYYY-checkup.md
|
Path: /media/ealmeida/Dados/Hub/00-Inbox/DD-MM-YYYY-checkup.md
|
||||||
Conteudo: dashboard completo
|
Conteudo: dashboard completo
|
||||||
|
|
||||||
15. GUARDAR em Supabase:
|
15. GUARDAR em Mem0 (store canónico cross-agent, CLAUDE.md regra 28):
|
||||||
mcp__memory-supabase__save_memory({
|
mcp__mem0__save_memory({
|
||||||
content: "Checkup diario - X tickets, Y tarefas, Z urgentes, cron OK/FALHA",
|
text: "Checkup diario DD-MM-YYYY: X tarefas vencidas, Y em curso, Z urgentes, timers OK/FALHA",
|
||||||
tags: ["today", "checkup", "DD-MM-YYYY"]
|
metadata: {"type": "today-checkup", "date": "YYYY-MM-DD"}
|
||||||
})
|
})
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -169,7 +171,7 @@ CRON (desktop local, crontab ealmeida) /today (interactivo, sob pedido)
|
|||||||
---
|
---
|
||||||
|
|
||||||
## Requer Atencao Urgente
|
## Requer Atencao Urgente
|
||||||
[Alertas: cron falhado, erros infra, seguranca, notificacoes criticas]
|
[Alertas: timer/serviço falhado, backup offsite em risco, SSH inacessível, heartbeat WP em falta, notificacoes criticas]
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -203,25 +205,25 @@ Nota: Promovidos automaticamente após 3 despesas. Confiança "baixa" = fallback
|
|||||||
---
|
---
|
||||||
|
|
||||||
## Resumo do Dia
|
## Resumo do Dia
|
||||||
[Do /daily-digest: timer, tickets, facturas, tarefas, leads, agenda]
|
[Do /daily-digest: timer, tickets, facturas, tarefas, leads, agenda — ou "indisponível, desk-crm-v3 desligado" se aplicável]
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Agentes Cron (desktop local)
|
## Agentes Systemd (desktop/hp local)
|
||||||
|
|
||||||
| Agente | Ultima execucao | Status | Resumo |
|
| Timer | Ultima execucao | Status | Resumo |
|
||||||
|--------|----------------|--------|--------|
|
|-------|-----------------|--------|--------|
|
||||||
| imap-triage | HH:MM | OK/FALHA | X contas, Y emails |
|
| collector-gate-events | HH:MM | OK/FALHA | — |
|
||||||
| auto-expense | HH:MM | OK/SKIP | Z despesas criadas |
|
| collector-hermes-jobs | HH:MM | OK/FALHA | — |
|
||||||
| ticket-triage | HH:MM | OK/FALHA | W tickets processados |
|
| observer-ticket-queue | HH:MM | OK/FALHA | — |
|
||||||
| aiktop-tasks | HH:MM | OK/FALHA | N tarefas executadas |
|
| observer-tickets | HH:MM | OK/FALHA | — |
|
||||||
| infra-check | HH:MM | OK/FALHA | X/4 MCPs operacionais |
|
| observer-desk-alert | HH:MM | OK/FALHA | [journalctl summary se FALHA] |
|
||||||
| wp-update [se seg] | HH:MM | OK/FALHA | X/16 sites actualizados |
|
| rclone-bisync / gdrive-sync | — | ACTIVO/DISABLED | [alerta se desligado] |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Auto-Processamento (ultimas 24h)
|
## Auto-Processamento (ultimas 24h)
|
||||||
[Resumo agregado: despesas criadas, tickets fechados, emails limpos]
|
[Resumo agregado: divergências detectadas pelo stack-observer, tickets criados, despesas criadas]
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -243,12 +245,14 @@ Filename: `DD-MM-YYYY-checkup.md` (Regra #45: formato DD-MM-YYYY)
|
|||||||
|
|
||||||
## Anti-Patterns
|
## Anti-Patterns
|
||||||
|
|
||||||
- NUNCA invocar /ticket-triage, /imap-triage, /auto-expense, /infra-check, /wp-update (correm no cron)
|
- NUNCA invocar manualmente os componentes do stack-observer (correm por timer)
|
||||||
- NUNCA mostrar output antes de terminar Fase 1 e 2
|
- NUNCA mostrar output antes de terminar Fase 1 e 2
|
||||||
- NUNCA mostrar mais de 3 prioridades (PHDA)
|
- NUNCA mostrar mais de 3 prioridades (PHDA)
|
||||||
- NUNCA executar sem verificar data/hora primeiro
|
- NUNCA executar sem verificar data/hora primeiro
|
||||||
- SEMPRE ler logs do cron antes de mostrar dashboard
|
- SEMPRE correr `list-timers` + `list-units --failed` antes de mostrar dashboard
|
||||||
- SEMPRE alertar se algum agente cron nao correu nas ultimas 8h
|
- SEMPRE alertar se algum timer crítico (observer-desk-alert, observer-tickets, backup) falhou ou está inactivo
|
||||||
|
- NUNCA repetir uma tentativa SSH falhada ao host `server` mais de uma vez na mesma sessão (risco de lockout CSF/LFD)
|
||||||
|
- NUNCA contornar um MCP desligado (ex: desk-crm-v3) — reportar e remeter para `/mcp` (regra 57 CLAUDE.md)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -256,28 +260,20 @@ Filename: `DD-MM-YYYY-checkup.md` (Regra #45: formato DD-MM-YYYY)
|
|||||||
|
|
||||||
| Componente | Tipo | Responsabilidade |
|
| Componente | Tipo | Responsabilidade |
|
||||||
|-----------|------|-----------------|
|
|-----------|------|-----------------|
|
||||||
| `imap-triage` | Cron desktop (*/4h) | Triagem IMAP 13 contas + dedup Supabase |
|
| `collector-gate-events` | systemd timer (*/5min) | Recolhe gate_events do Espelho/observer |
|
||||||
| `auto-expense` | Cron desktop (15 */4h) | Criacao automatica de despesas |
|
| `collector-hermes-jobs` | systemd timer (*/5min) | Recolhe jobs Hermes |
|
||||||
| `ticket-triage` | Cron desktop (30 */4h) | Auto-process tickets (SPAM, facturas) |
|
| `observer-ticket-queue` | systemd timer (*/5min) | Processa fila de divergências (Node) |
|
||||||
| `aiktop-tasks` | Cron desktop (*/15min) | Executa tarefas AikTop do Desk CRM |
|
| `observer-tickets` | systemd timer (diário 09:30) | Processador de fila de tickets → Desk CRM |
|
||||||
| `infra-check` | Cron desktop (07h) | Health check gateway + MCPs |
|
| `observer-desk-alert` | systemd timer (diário 09:00) | Auto-ticket para divergências detectadas |
|
||||||
| `wp-update` | Cron desktop (seg 23h) | Actualizacoes WordPress 16 sites |
|
| `rclone-bisync` / `gdrive-sync` | systemd timer | Sync offsite (regra 3-2-1) — confirmar `enabled`/`active` |
|
||||||
| `weekly-digest-podcast` | Cron desktop (quinta 20h) | Digest semanal para podcast |
|
| `okf-confianca` / `verify-gates-registry` / `stk-drift-check` | systemd timer (semanal) | Relatórios de qualidade/confiança OKF |
|
||||||
| `improvement-evaluator` | Cron desktop (*/30min) | Avaliador de melhorias (HTTP @reboot) |
|
| `HEARTBEAT WP` | Check ao vivo | `wp post list cat=1188` via SSH → idade do ultimo post. Alerta se >26h ou SSH inacessível |
|
||||||
| `gitea-ci-cleaner` | Cron desktop (45 */4h) | Limpeza de runs CI Gitea |
|
| `/daily-digest` | Skill (interactivo) | Timer, tickets, facturas, leads, agenda (requer desk-crm-v3) |
|
||||||
| `daily-selector` | Cron desktop (06:30) | Selector ate 5 noticias/dia diversas → status=scheduled |
|
| `/tasks-overview` | Skill (interactivo) | Tarefas pendentes/overdue + workflows (desk-project-minimal) |
|
||||||
| `intelligence-publisher` | Cron desktop (5 slots 09/11/13/15:30/17:30) | Publica slots scheduled em descomplicar.pt |
|
|
||||||
| `intelligence-researcher` | Cron desktop (9/14/20) | Fetch 214 RSS → Supabase |
|
|
||||||
| `intelligence-scorer` | Cron desktop (0/30 min) | Score OpenRouter gpt-oss-20b |
|
|
||||||
| `HEARTBEAT WP` | Check ao vivo | `wp post list cat=1188` → idade do ultimo post. Alerta se >26h |
|
|
||||||
| `/daily-digest` | Skill (interactivo) | Timer, tickets, facturas, leads, agenda |
|
|
||||||
| `/tasks-overview` | Skill (interactivo) | Tarefas pendentes/overdue + workflows |
|
|
||||||
| `/cleanup-downloads` | Skill (interactivo) | Limpeza pasta Transferencias |
|
| `/cleanup-downloads` | Skill (interactivo) | Limpeza pasta Transferencias |
|
||||||
| `/spec` + `/sprint` | Scan local | Specs e sprints activos |
|
| `/spec` + `/sprint` | Scan local | Specs e sprints activos |
|
||||||
|
|
||||||
Repo agentes: `git.descomplicar.pt/ealmeida/claude_automations_dev`
|
Repo agentes: `git.descomplicar.pt/ealmeida/stack-observer` (código) — agendamento em `~/.config/systemd/user/*.timer`, não em crontab.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -293,8 +289,12 @@ Se encontrares um padrão relevante ao contexto actual, aplica o fix preventivam
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*Skill v11.0.0 | 20-04-2026 | Descomplicar® — CT 102 eliminado, cron 100% local desktop*
|
*Skill v12.0.0 | 06-07-2026 | Descomplicar® — arquitectura actualizada de crontab/claude_automations_dev (extinto) para systemd user timers `stack-observer`; memory-supabase substituído por mem0; alerta de lockout SSH ao host `server`*
|
||||||
|
|
||||||
|
|
||||||
## Healing Log
|
## Healing Log
|
||||||
<!-- Registo automático de erros e correcções nesta skill -->
|
<!-- Registo automático de erros e correcções nesta skill -->
|
||||||
|
|
||||||
|
```jsonl
|
||||||
|
{"date":"2026-07-06","issue":"Fase 1 apontava para claude_automations_dev/{imap-triage,auto-expense,ticket-triage,aiktop-tasks,infra-check,wp-update} — todos arquivados em z_arquivo/ desde a migração para Hermes cronjobs (05-05) e depois systemd stack-observer (~11-06). Logs nunca existiam, secção 'Agentes Cron' sempre vazia.","fix":"Ler estado via systemctl --user list-timers/list-units --failed + journalctl, não tail de logs em paths fixos que mudam a cada migração de arquitectura.","source":"user"}
|
||||||
|
{"date":"2026-07-06","issue":"skill referenciava mcp__memory-supabase (desactivado) para Fase 0/3.","fix":"Usar mem0 (mcp__mem0__search_memories / save_memory), store canónico actual por CLAUDE.md regra 28.","source":"user"}
|
||||||
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user