Pular para o conteúdo
Skillpedia
Testes48 mil · #2671

cron-doctor

Ajuda seu agente a verificar se agendamentos de tarefas (cron expressions) estão corretos. Evita erros comuns que fazem as tarefas falharem ou rodarem de forma inesperada.

O que ela faz

Verifica se um código de agendamento (chamado 'cron expression') está correto e não causará problemas inesperados. Ele evita erros comuns que fazem com que tarefas nunca rodem ou rodem mais vezes do que o esperado.

Quando usar

  • ✓Ao escrever ou revisar um código que agenda tarefas.
  • ✓Quando uma tarefa agendada não funciona como deveria.
  • ✓Para entender quando uma tarefa agendada vai rodar.

Exemplo do que pedir para a IA

“Verifique esta expressão cron: 0 0 30 2 *”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/cron-doctor/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/cron-doctor/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ele analisa o código de agendamento, verifica se as datas são possíveis (ex: fevereiro não tem dia 30) e se a lógica de 'ou' pode fazer a tarefa rodar mais vezes. Depois, ele mostra quando a tarefa vai rodar.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add sickn33/agentic-awesome-skills --skill cron-doctor

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/cron-doctor/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

cron-doctor

Visão Geral

Cron é enganosamente propenso a erros. O modo de falha é silencioso — uma expressão sintaticamente válida que simplesmente nunca é executada, ou é executada com muito mais frequência do que o pretendido. 0 0 30 2 * é analisado corretamente e depois fica inativo para sempre (fevereiro não tem dia 30). 0 0 1,15 * 1 parece "dia 1 e 15 se for segunda-feira", mas na verdade significa "dia 1, dia 15, OU toda segunda-feira" — ~6 execuções/mês em vez de ~2.

Esta habilidade ensina um agente a capturar esses erros antes que cheguem à produção. Ela vem com um mecanismo de validação sem dependências (scripts/cron-engine.js, sem necessidade de instalação) que analisa, descreve, valida profundamente e calcula os próximos horários de execução.

Quando Usar Esta Habilidade

  • Use quando um usuário escrever, editar, revisar ou implantar uma expressão cron — em um crontab, um CronJob do Kubernetes, um schedule do GitHub Actions, um DAG do Airflow, uma agenda Celery beat, um timer systemd, ou qualquer tarefa agendada.
  • Use ao depurar um job que "não foi executado" ou "foi executado no momento errado".
  • Use quando um usuário perguntar "o que essa expressão cron significa?" ou "quando isso será executado a seguir?" ou "com que frequência isso é executado por ano?"
  • Use ao revisar um pipeline de CI/CD ou configuração de infraestrutura que contenha um campo schedule.
  • Use quando um usuário colar uma expressão cron de 5 campos e pedir uma verificação de sanidade.

Como Funciona

Passo 1: Analisar a expressão

Divida por espaços em 5 campos: minuto, hora, dia-do-mês, mês, dia-da-semana. Confirme os intervalos válidos:

Campo Posição Intervalo Notas
minuto 1 0–59
hora 2 0–23
dia-do-mês 3 1–31
mês 4 1–12 nomes (JAN–DEC) aceitos
dia-da-semana 5 0–7 0 e 7 ambos = Domingo; nomes (SUN–SAT) aceitos

Passo 2: Descrever em linguagem clara

Declare o que o usuário acha que a expressão faz versus o que ela realmente faz. Seja explícito sobre a semântica de OU vs. E para dia-do-mês + dia-da-semana (veja a armadilha nº 2).

Passo 3: Executar a lista de verificação de armadilhas

Verifique as cinco armadilhas abaixo e sinalize qualquer uma que se aplique.

Passo 4: Calcular as próximas execuções e a contagem anual de execuções

Calcule os próximos 5 horários de execução como datas concretas para que o usuário possa verificar se o agendamento se comporta como esperado. Estime a contagem anual de execuções — um agendamento que executa 365 vezes/ano versus 12 vezes/ano representa uma diferença de custo e carga de ~30×.

As Cinco Armadilhas do Cron

Estes são os bugs que passam na validação crontab -l, mas falham em produção.

1. Datas impossíveis — o bug "nunca executa"

0 0 30 2 *

Sintaxe válida. Nunca executa. Fevereiro não tem dia 30. Este agendamento é um job morto que fica inativo para sempre. O mesmo se aplica ao dia 31 em qualquer mês de 30 dias: 0 0 31 4 *, 0 0 31 6 *, 0 0 31 9 *, 0 0 31 11 *.

Correção: use 0 0 28-31 * * e verifique o fim do mês no script, ou use a sintaxe L (último dia) se o seu agendador suportar.

2. Semântica de OU — o bug "executa com muita frequência"

0 0 1,15 * 1

NÃO significa "meia-noite no dia 1 e 15 se for segunda-feira." Significa "meia-noite no dia 1, no dia 15, OU toda segunda-feira." Isso são ~6 execuções/mês em vez de ~2.

Esta é a regra de cron mais mal compreendida. Quando tanto o dia-do-mês QUANTO o dia-da-semana são restritos (nenhum é *), o cron usa lógica OU, não E.

Correção: se você precisa de "dia 1 e 15 apenas se for segunda-feira", execute diariamente e verifique no script:

0 0 * * 1 [ "$(date +%d)" = "01" -o "$(date +%d)" = "15" ] && your-command

3. Pico de meia-noite — o bug "tudo de uma vez"

0 0 * * *

Todo job agendado para 0 0 compete por recursos exatamente às 00:00. Backups de banco de dados, rotação de logs, renovação de certificados, geração de relatórios — todos executam simultaneamente. Isso causa picos de carga, esgotamento de pools de conexão e timeouts em cascata.

Correção: distribua os jobs pela hora. Use 17 2 * * * ou 43 3 * * * em vez de 0 0. Jitter é seu amigo.

4. Passos irregulares — o bug "deriva"

*/7 * * * *

NÃO significa "a cada 7 minutos uniformemente." Significa "a cada 7 minutos começando em 0, depois reinicia em 60." Então: 0, 7, 14, 21, 28, 35, 42, 49, 56 — depois 0 novamente (uma lacuna de 4 minutos). Os intervalos derivam: 7,7,7,7,7,7,7,7,4.

Correção: 60 não é divisível por 7. Use valores de passo que dividam 60 uniformemente: */5, */10, */15, */20, */30. Se você realmente precisa de a cada 7 minutos, use um loop com sleep 420.

5. 29 de fevereiro em ano bissexto — a "surpresa anual"

0 0 29 2 *

Executa apenas em anos bissextos — 29 de fevereiro de 2024 / 2028 / 2032… Se alguém escrever isso

…

Perguntas frequentes

O que é uma 'cron expression'?

É um código usado em sistemas para dizer quando uma tarefa deve ser executada automaticamente (ex: todo dia às 3 da manhã).

Quais são os erros mais comuns que ele pega?

Tarefas que nunca rodam (ex: dia 30 de fevereiro), tarefas que rodam mais vezes que o planejado (ex: dia 1º, dia 15 E toda segunda-feira), ou quando muitas tarefas rodam ao mesmo tempo.

Ele corrige os erros sozinho?

Ele identifica os erros e sugere como corrigi-los, mas a correção final geralmente precisa ser feita pelo usuário.

Detalhes

Descrição original do autor

Diagnose and validate cron expressions before they ship. Catches the five silent death-traps: impossible dates that never fire, OR-semantics that fire too often, midnight spikes, uneven step drift, and leap-year February 29.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#2671
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas