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
Mensagem pronta para colar
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-doctorOu 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.mdConteú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
CronJobdo Kubernetes, umscheduledo 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.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #2671
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
cpp-testing
Faz seu agente escrever e melhorar testes para código C++. Ajuda a configurar ferramentas de teste e a corrigir erros.
affaan-m/ECC
csharp-testing
Ajuda seu agente a criar testes para código C# e .NET. Ele usa as melhores práticas para garantir que os testes sejam eficientes e confiáveis.
affaan-m/ECC
django-tdd
Faz seu agente aplicar estratégias de teste para Django com pytest-django e TDD. É útil para escrever testes robustos e garantir a qualidade do código, especialmente para APIs DRF.
affaan-m/ECC