Skip to main content

Visão Geral das Rotinas

Rotinas são workflows automatizados (ADWs — AI Developer Workflows) que rodam em uma agenda. Existem dois tipos:
  • Rotinas de IA — invocam o Claude Code CLI com um agente para tarefas de raciocínio (relatórios, análise, decisões). Custam tokens por execução.
  • Rotinas sistemáticas — scripts Python puros que executam operações determinísticas (chamadas de API, operações em arquivo, transformações de dados). Sem IA, sem tokens, sem custo, rodam em segundos.

Core vs Custom

Rotinas core vêm com o repo e cobrem o loop diário essencial: good_morning, end_of_day, memory_sync, memory_lint e weekly_review. Suas agendas estão hardcoded em scheduler.py — elas NÃO vêm de config/routines.yaml. Veja Rotinas Core para uma explicação detalhada de cada uma.
Descoberta dinâmica: as rotinas são descobertas dinamicamente varrendo os arquivos de script. O agente é extraído do docstring de cada script (padrão via AgentName). Sem mapeamentos hardcoded — adicione um script novo e ele fica automaticamente disponível no dashboard, na API e no make run.
Nota: a manutenção de memória segue o padrão LLM Wiki. A rotina memory_sync (diária) cuida do ingest com propagação de referências cruzadas (atualizando arquivos de memória relacionados quando um deles muda). A rotina memory_lint (semanal) faz health checks: detecta contradições, dados desatualizados, arquivos órfãos e gaps de cobertura. As duas rotinas atualizam memory/index.md (catálogo) e memory/log.md (log de operações).
Rotinas de exemplo ficam em ADWs/routines/examples/ e são versionadas com o repo. São implementações de referência para integrações comuns (Discord, Stripe, YouTube, etc). Rotinas custom ficam em ADWs/routines/custom/ e são gitignored. Copie dos exemplos ou crie as suas. Apenas rotinas custom vão em config/routines.yaml. A skill create-routine ajuda a gerá-las.

ADW Runner

Todas as rotinas usam ADWs/runner.py, que oferece:
  • run_skill(skill, log_name, timeout, agent) — executa uma skill via Claude Code CLI (rotina de IA)
  • run_claude(prompt, log_name, timeout, agent) — executa um prompt cru (rotina de IA)
  • run_script(func, log_name, timeout) — executa uma função Python pura (rotina sistemática, sem IA)
  • banner(title, subtitle) — imprime um header estilizado
  • summary(results, title) — imprime resumo de execução com stats de custo/tokens
O runner cuida de:
  • Invocar claude --print --dangerously-skip-permissions --output-format json (rotinas de IA)
  • Executar funções Python diretamente com proteção de timeout (rotinas sistemáticas)
  • Logar em arquivos JSONL (ADWs/logs/YYYY-MM-DD.jsonl)
  • Salvar logs detalhados (ADWs/logs/detail/)
  • Acumular métricas por rotina (ADWs/logs/metrics.json)
  • Output rico no terminal com indicadores de progresso

Como um Script de Rotina Funciona

Toda rotina segue o mesmo padrão:
Elementos-chave:
  1. Importe o runner de ADWs/runner.py
  2. Imprima um banner com o nome da rotina
  3. Chame run_skill() com nome da skill, log name, timeout e agente
  4. Imprima um resumo
Para rotinas multi-passo, anexe vários resultados na lista.

config/routines.yaml

Este arquivo define a agenda das rotinas custom apenas. Rotinas core (good_morning, end_of_day, memory_sync, weekly_review) estão hardcoded em scheduler.py e não precisam de entrada aqui.
Campos:
  • name: nome de exibição
  • script: arquivo Python em ADWs/routines/custom/ (ou ADWs/routines/examples/)
  • time: horário de execução (formato 24h, fuso local)
  • interval: roda a cada N minutos (em vez de horário fixo)
  • day: dia da semana (weekly) ou dia do mês (monthly)
  • days: array para agendas semanais multi-dia
  • enabled: ativa/desativa sem deletar

Scheduler

Inicie o scheduler com:
Isso roda scheduler.py, que tem rotinas core hardcoded e também lê config/routines.yaml para rotinas custom. O scheduler roda em primeiro plano e mostra progresso em tempo real. O dashboard também inicia/para o scheduler pela página Services.

Criando Rotinas Custom

Usando a skill

A skill create-routine conduz por:
  1. O que a rotina faz
  2. Qual agente roda
  3. Qual skill invoca
  4. A agenda (daily/weekly/monthly)
Ela gera o script Python e atualiza config/routines.yaml. Sem mudanças no Makefile — rotinas são descobertas dinamicamente.

Manualmente

  1. Crie ADWs/routines/custom/my_routine.py seguindo o padrão acima
  2. Adicione uma entrada em config/routines.yaml

Execução Manual

Rotinas core têm targets dedicados no make. Todas as rotinas (core e custom) podem ser executadas pelo runner dinâmico:
Ou execute o script Python diretamente:

Scheduled Tasks (Pontuais)

Para ações que devem rodar uma vez em horário específico (não recorrentes), use Scheduled Tasks em vez de rotinas. Veja Scheduled Tasks para detalhes.

Agent Teams (Experimental, Opt-in)

Versões multi-agente paralelas de rotinas de consolidação. Em vez de um agente coletando dados sequencialmente, Agent Teams spawnam teammates específicos de domínio que trabalham em paralelo — cada um na sua janela de contexto. Trade-off: ~3-5x mais tokens, mas execução mais rápida e cada agente usa expertise do próprio domínio. Scripts ficam em ADWs/routines/teams/. Estes nunca são agendados — execute manualmente quando quiser velocidade ou análise cruzada de domínios mais rica. Requer a flag experimental (já habilitada em .claude/settings.json):
Como funciona:
  1. O agente líder (ex., @sage) cria um time de agentes
  2. Cada teammate é spawnado usando o tipo de agente correspondente (ex., atlas-project)
  3. Teammates coletam dados de domínio em paralelo
  4. O líder espera todos os teammates e depois sintetiza os achados na saída final
Métricas de execuções de team aparecem como team-strategy-digest, team-dashboard, etc. em metrics.json, separadas das execuções normais — facilitando comparação de custo e velocidade.

Logs e Métricas

Arquivos de log

Visualizando logs

Formato de métricas

metrics.json acompanha por rotina:
  • Total de execuções, sucessos, falhas, taxa de sucesso
  • Duração média
  • Custo total e médio (USD)
  • Tokens de entrada/saída totais
  • Timestamp da última execução