Routines et agents planifiés : skill vs automatisation DevOps
À la fin de ce tutoriel routines et agents planifiés, vous saurez distinguer un skill (recette à la demande) d’une routine / agent planifié (déclencheur temps ou événement), cartographier les offres 2026 (ChatGPT Scheduled, Cursor Automations, Claude Cowork / Claude Code Routines, DIY), et bâtir un lab factice sous
/tmp/lab-ai-routinesavec prompt, pseudo-cron et check-list sécurité — sans secrets ni clés API.Niveau : Intermédiaire · Temps estimé : 50–65 min · Versions / contexte : ChatGPT Scheduled Tasks · Cursor Automations · Claude Cowork scheduled + Claude Code Routines (aperçu) · cron / Actions / n8n · Dernière vérification : 2026-09-11
Prérequis
- Hub IA pour DevOps : parcours 2026
- AI Skills : concept et catalogue, Cursor Skills, Agent workflows, MCP servers DevOps
- Lab entièrement local ; aucun token GitHub/Slack/OpenAI/Anthropic réel
- Notions cron / GitHub Actions utiles mais pas obligatoires
Coût lab : 0 €. Les routines cloud consomment des quotas d’abonnement — vérifiez l’offre avant un cron réel.
Ce que nous allons construire
/tmp/lab-ai-routines
├── prompts/digest-matin.md (prompt de routine)
├── cron/digest-matin.cron (pseudo crontab — lab only)
├── fixtures/{ci-runs,prs}.json (données factices)
├── scripts/run-digest.sh (pipeline local sans LLM live)
└── checklist-securite.md
→ skill vs routine · panorama 2026 · tableau · quiz · FAQ
(Schéma à remplacer par une image locale, alt : « Skill à la demande vs routine planifiée : cron, webhook, agent cloud ».)
Chapitre module D #34 : après skills et workflows, on ajoute le temps et l’événement. Objectif : digests et alertes utiles, sans LLM qui touche la prod sans garde-fous.
Étape 1 — Skill vs routine / agent planifié
Un skill est une recette réutilisable (instructions, exemples, parfois MCP). Vous l’invoquez à la demande. Il ne tourne pas tout seul.
Une routine (agent planifié) ajoute un déclencheur : horloge ou événement (PR, Slack, alerte).
| Dimension | Skill | Routine / agent planifié |
|---|---|---|
| Déclencheur | Humain / autre agent | Cron ou webhook / événement |
| Fréquence | Occasionnelle | Récurrente ou à chaque event |
| Visibilité | Vous voyez la session | Tourne souvent sans vous |
| Risque | Moindre | Plus élevé → budgets, silence, HITL |
En DevOps 2026 : le skill dit comment digérer les builds ; la routine dit quand (07:30 ou workflow_run en échec).
Étape 2 — Cas d’usage DevOps
- Digest matinal CI/PR — builds de la nuit, PR ouvertes, flaky.
- Alerte build rouge — webhook CI → résumé logs + commit suspect (sans redeploy).
- Sync docs — drift docs vs PR mergées ; draft PR hebdo.
- Review nightly — commentaires draft seulement (jamais merge auto).
- Monitoring logs via agent — MCP logs + Slack si seuil.
- Cron + LLM — crontab / scheduler → CLI ou API.
- Webhooks GitHub / Slack — événement → prompt figé + allowlist.
Règle d’or : silence si rien à signaler (anti alerte-fatigue).
Étape 3 — Panorama outils 2026 (faits vérifiés)
ChatGPT Scheduled Tasks
OpenAI documente des Scheduled Tasks : ponctuelles ou récurrentes, monitoring, page Scheduled (créer / pauser / supprimer). Limites d’actives selon l’offre (ordres de grandeur aide officielle : Free/Go ≈ 3, Plus ≈ 5, Business/Edu ≈ 10, Pro/Enterprise ≈ 15 — à revérifier, chiffres évolutifs). Free : souvent ≤ 1×/jour et fenêtres flexibles ; horaires exacts / horaire plutôt payant.
Tâches événementielles (Gmail, Slack, activité PR GitHub) pour comptes éligibles Work / Plus+ selon workspace — pas Free/Go. Codex Automations sont distinctes. Ce n’est pas un bot CI à SLA ops.
Cursor Automations
Automations Cursor : agents cloud sur planning (preset ou cron) ou événements (GitHub/GitLab, Slack, Linear, PagerDuty, webhooks). Setup via cursor.com/automations ; sandbox + prompt + MCP. Facturation usage cloud agent. Capacités type « agent à l’écoute d’un fil » : selon offre / changelog 2026.
Claude : Projects, Cowork, Code Routines
- Claude Projects (chat) : contexte + instructions — pas un cron cloud universel.
- Claude Cowork (Desktop) : tâches planifiées (
/schedule) sur offres payantes, uniquement si machine éveillée + app ouverte — digests locaux, pas on-call 24/7. - Claude Code Routines (aperçu recherche) : cloud (horaire, API, événements GitHub), indépendant du laptop ; quotas/jour selon plan. Feature en évolution — validez avant process critique.
DIY : cron, Actions, n8n, MCP
| Pattern | Idée | Quand |
|---|---|---|
| cron + CLI | 0 7 * * 1-5 → Claude Code / Codex / API |
Contrôle total |
| GitHub Actions + LLM | schedule: / workflow_run + secret |
Déjà dans CI |
| n8n / Zapier + LLM | Webhook → LLM → Slack | No-code intégré |
| MCP + agent event | Logs/Jira via MCP sur Automation / routine | Moins de tokens en clair |
Jamais de clés dans le prompt : secrets runner / connecteurs éditeur.
Étape 4 — Lab factice /tmp/lab-ai-routines
mkdir -p /tmp/lab-ai-routines/{prompts,cron,fixtures,scripts}
cd /tmp/lab-ai-routines
cat > fixtures/ci-runs.json << 'EOF'
{"runs":[
{"id":"run-101","pipeline":"api-ci","branch":"main","conclusion":"success"},
{"id":"run-102","pipeline":"api-ci","branch":"feat/cache","conclusion":"failure"},
{"id":"run-103","pipeline":"web-ci","branch":"main","conclusion":"success"}
]}
EOF
cat > fixtures/prs.json << 'EOF'
{"open":[
{"number":42,"title":"feat: cache Redis","checks":"failing"},
{"number":43,"title":"docs: runbook rollback","checks":"passing"}
]}
EOF
cat > prompts/digest-matin.md << 'EOF'
# Routine digest matinal CI/PR (lab)
Entrée : JSON ci-runs + prs. Sortie : Markdown ≤ 12 lignes.
1) Seulement runs failure et PR checks=failing.
2) Si aucune anomalie : exactement `RAS — rien à signaler.`
3) Interdit : destroy, merge auto, rotation secrets, métriques inventées.
4) Budget sortie < 800 tokens. Une seule action humaine non destructive.
EOF
cat > cron/digest-matin.cron << 'EOF'
# LAB ONLY — ne pas crontab -e en prod (TZ America/Toronto à ajuster)
0 7 * * 1-5 cd /tmp/lab-ai-routines && ./scripts/run-digest.sh >> /tmp/lab-ai-routines/digest.log 2>&1
EOF
cat > scripts/run-digest.sh << 'EOF'
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
FAILS=$(jq '[.runs[]|select(.conclusion=="failure")]|length' "$ROOT/fixtures/ci-runs.json")
BAD=$(jq '[.open[]|select(.checks=="failing")]|length' "$ROOT/fixtures/prs.json")
echo "=== digest $(date -u +%Y-%m-%dT%H:%MZ) ==="
if [[ "$FAILS" -eq 0 && "$BAD" -eq 0 ]]; then echo "RAS — rien à signaler."; exit 0; fi
echo "## Builds rouges"
jq -r '.runs[]|select(.conclusion=="failure")|"- (.id) (.pipeline) @(.branch)"' "$ROOT/fixtures/ci-runs.json"
echo "## PR checks failing"
jq -r '.open[]|select(.checks=="failing")|"- #(.number) (.title)"' "$ROOT/fixtures/prs.json"
echo "## Action humaine"; echo "- Lire les logs du run rouge ; pas de merge auto."
EOF
chmod +x scripts/run-digest.sh
cat > checklist-securite.md << 'EOF'
- [ ] Pas d’API key dans prompts/ ou cron/
- [ ] Allowlist repos / canaux
- [ ] Actions destructives = human-in-the-loop
- [ ] Budget tokens + max runs/jour
- [ ] Idempotence + silence si RAS
- [ ] Kill switch (pause Scheduled / disable workflow)
EOF
./scripts/run-digest.sh && jq empty fixtures/*.json && echo "lab OK"
Attendu : run-102 + PR #42, puis lab OK. Pour le silence, passez fixtures en success/passing et relancez.
Étape 5 — Tableau comparatif
| Critère | Cron shell | Routine LLM | CI bot (Actions) |
|---|---|---|---|
| Déclencheur | Horloge machine | Horloge / webhook éditeur | schedule / events Git |
| Raisonnement | Script figé | Résumé, triage, draft | Figé ± appel LLM |
| Laptop | Runner requis | Souvent cloud (sauf Cowork) | Runners GH / self-hosted |
| Coût | CPU | Tokens + quotas | Minutes CI + API |
| Audit | Logs fichiers | UI Scheduled / historique | Logs workflow |
| Idéal | Collecte, healthcheck | Digest narratif, review draft | Gates merge, tests, deploy |
Collecter en cron/CI ; synthétiser en routine LLM ; décider en humain pour la prod.
Étape 6 — Bonnes pratiques
- Idempotence — mêmes entrées → même sortie ; dédup Slack.
- Silence si RAS — zéro bruit inutile.
- Allowlist — repos, branches, canaux, types d’événements.
- Budgets tokens — max sortie, max runs/jour, petit modèle pour digests.
- Human-in-the-loop — merge, destroy, IAM, secrets : jamais auto.
- Skill versionné / routine déclenche — prompt dans Git ; routine = horloge + allowlist.
- Observabilité — run_id, durée, statut ok/ras/erreur ; redact secrets.
- Kill switch — pause en < 30 s.
Enchaînez avec Évaluer la qualité d’un skill : fixtures, critère RAS, anti-hallucination.
Check-list mise en service
- [ ] Prompt + fixtures de régression
- [ ] TZ du cron + événements documentés
- [ ] Secrets hors prompt
- [ ] Canal dédié + rate limit
- [ ] Owner (qui pause ?) + revue mensuelle des routines
Quiz (3 questions)
1. Affirmation correcte ?
– A. Un skill tourne chaque nuit tout seul
– B. Une routine ajoute un déclencheur temps ou événement
– C. Cron et skill sont synonymes
2. Digests : fixtures tout vert → ?
– A. Un rapport de 3 pages
– B. RAS — rien à signaler.
– C. Un terraform destroy
3. Limite Cowork pour l’on-call ?
– A. Planifié souvent lié à Desktop ouvert / machine éveillée
– B. Cowork remplace Actions
– C. Cowork interdit les digests
Réponses : 1‑B · 2‑B · 3‑A
Compléments opérationnels
Standard de brief réutilisable
Pour ai-routines-agents, adoptez un brief unique partagé par l’équipe. Il contient toujours cinq champs : objectif mesurable, contexte borné (lab/staging), liste blanche de fichiers ou ressources, interdits explicites (secrets, réseau, prod), et definition of done exécutable (commande de test ou checklist). Sans ces champs, l’outil improvisera — parfois avec élégance, souvent hors périmètre.
Stockez les briefs gagnants sous briefs/ai-routines-agents/ dans un dépôt de documentation interne. Chaque brief cite le commit de référence et le modèle utilisé. Au troisième succès comparable, ouvrez une PR qui transforme le brief en rule, Skill ou slash command. Voir ai-skills-concept, claude-skills-instructions et evaluer-qualite-skill.
Revue de diff comme compétence P0
La vitesse d’un agent n’a aucune valeur si personne ne sait lire un diff. Instituez une règle simple : aucun apply massif sans parcours hunk par hunk. Posez-vous trois questions : ce changement est-il demandé ? est-il testé ? est-il réversible ? Si une réponse est non, refusez ou exigez un plan plus petit.
En atelier, faites commenter un diff à voix haute pendant cinq minutes. Les juniors apprennent ainsi le vocabulaire du refus. Reliez cette pratique à ai-code-review-pr et aux workflows ai-agent-workflows.
Sécurité continue
Les surfaces ai-routines-agents multiplient les occasions d’injection et de fuite. Traitez tickets, README upstream, logs et ressources MCP comme des données non fiables. Séparez instructions et données. Allowlist tools. Confirmation humaine avant mutation. Guide : ai-prompt-injection-securite, mcp-servers-devops, claude-code-mcp.
Secrets : variables d’environnement de session, gestionnaire d’équipe, rotation, jamais de commit. Si un secret fuit dans un chat vendor, supposez-le compromis et rotatez.
Coûts, modèles et mode dégradé
Documentez un mapping fast/strong et un soft-cap mensuel dans la stack perso. OpenRouter peut aider à basculer — openrouter-multi-modeles. Le local (ollama-llm-locaux + continue-dev) sert de mode dégradé ou de bac à sable confidentialité.
Surveillez les changements silencieux de modèle par défaut : une régression de qualité est souvent un routing vendor, pas « l’équipe qui a oublié comment prompter ».
FAQ
Skill ou routine d’abord ?
Skill d’abord (prompt + fixtures + critères), puis routine. Voir AI Skills et Évaluer la qualité d’un skill.
Scheduled ChatGPT = GitHub Actions ?
Non. Digests / monitoring narratif (et events apps si offre éligible). Les gates CI restent dans Actions. Codex Automations ≠ Scheduled Tasks.
Cursor Automations vs cron maison ?
Automations : sandbox + intégrations + MCP, coût usage. Cron : contrôle / air-gap. Souvent hybride : CI collecte, agent résume.
Claude Projects a-t-il un cron cloud ?
Projects chat = contexte. Planifié 2026 : surtout Cowork (Desktop) et Claude Code Routines (cloud, aperçu). Vérifiez offre et changelog — ne pas inventer.
MCP dans une routine ?
Oui, lecture logs/Jira via MCP ; allowlist outils. Voir MCP DevOps et Agent workflows.
Éviter fuites de secrets ?
Fixtures sans tokens ; redact ; interdire de reformuler des env ; revue avant canal public.
Pour aller plus loin
- Aide OpenAI Scheduled Tasks · Docs Cursor Automations · Anthropic Claude Code Routines · Claude Help Cowork
/schedule - Hub : IA parcours DevOps 2026
- Module D : ai-skills-concept · cursor-skills-creer · ai-agent-workflows · mcp-servers-devops · evaluer-qualite-skill
Maillage série IA Outils 2026 — Skills & agents
| ← Précédent | RAG pour docs infra |
| → Suite | Évaluer la qualité d’un skill |
| Hub | IA pour DevOps : parcours 2026 |
Retour parcours IA — hub Claude, Codex, ChatGPT et Skills.