---
description: Build and schedule a recurring autonomous Claude Code loop that runs tasks at night (research, reporting, inbox) and leaves a ready-to-read deliverable. Walks through the task diagnosis, agent definition with least-privilege tools, schedule setup (cron or /loop), and guardrails (draft-first, run report, morning review). Use when you have a repetitive task you want to run without you — but want to wake up to results, not disasters.
allowed-tools: Read, Write, Bash
---

# Ops:Agent Nocturne

Un agent nocturne fait une chose : il tourne pendant que tu dors, dépose un livrable propre, et s'arrête. Ce Skill guide ce setup en cinq temps : diagnostiquer ce qui mérite d'être automatisé, écrire le fichier agent avec les bons garde-fous, configurer le planning, installer la routine de validation du matin.

La distinction clé à tenir du début à la fin : **un Skill, c'est la méthode ; un sous-agent, c'est l'exécutant ; la loop, c'est le rythme.** Ce Skill pose le rythme. L'exécutant sera défini selon la méthode de `setup:sub-agents`. Ce qui les fait tourner sur un planning, c'est ce Skill.

## When to use

- Tu refais la même tâche de veille, reporting ou tri d'inbox à la main chaque matin ou chaque semaine, et tu voudrais la trouver faite au réveil.
- Tu as lu [Des agents qui bossent pendant que tu dors](/blog/agents-pendant-que-tu-dors) et tu veux passer du concept à un agent qui tourne vraiment.
- Tu as déjà un sous-agent qui marche bien en one-shot et tu veux le mettre sur un planning.
- Tu connais le concept de loop depuis [Après le prompt, la loop](/blog/apres-le-prompt-la-loop) et tu cherches maintenant à l'automatiser.

Ce n'est pas le bon Skill si la tâche demande ton jugement à chaque étape, si elle ne peut pas s'exprimer en une entrée et une sortie prévisible, ou si un seul run suffit. Ces tâches restent dans la conversation principale.

## Input

An optional argument naming the task to schedule (e.g. `veille concurrence`, `digest inbox`, `reporting hebdo`). If none is given, ask in Phase 1.

## Workflow

### Phase 1 — Diagnostiquer (est-ce que ça mérite une loop ?)

Ne pas automatiser trop tôt. Un agent nocturne n'a de valeur que si la tâche est **répétitive, isolable, et tolérable à l'erreur silencieuse**. Pose trois questions en un seul message, chacune avec une réponse proposée.

1. **Quelle tâche tu répètes chaque nuit ou chaque semaine ?** Digest de veille, digest inbox, reporting de métriques, préparation du brief du lundi.
2. **Elle tient sur son propre contexte ?** L'agent doit pouvoir tourner sans retour-chariot de ta part. Si la tâche demande un choix à chaque étape, elle ne se schedule pas.
3. **Lire ou agir ?** Un agent nocturne commence presque toujours par **lecture + rapport**. Il ne poste pas, n'envoie pas, ne modifie rien d'externe — il dépose un livrable que tu valides le matin. C'est le garde-fou numéro un. Si tu veux qu'il agisse, commence par le mode lecture pendant deux semaines.

Stop here and wait. If the task doesn't pass the three filters, say so clearly: it cannot be scheduled yet.

### Phase 2 — Écrire le fichier agent

Un agent nocturne est un sous-agent planifié. Il vit dans `.claude/agents/<nom>.md`. Le contenu de ce fichier est ce qui tourne chaque nuit — briefe-le comme tu le ferais avec quelqu'un qui ne te connaît pas et n'a accès à rien d'autre que ce que tu lui donnes.

| Partie | Ce que c'est | La règle |
|---|---|---|
| `name` | L'identifiant, kebab-case | Court et orienté tâche : `veilleur`, `rapporteur`, `trieur-inbox`. |
| `description` | Quand Claude l'active | Écris un déclencheur, pas une bio. |
| Prompt système | Le corps : rôle, mission, méthode, format de sortie | Briefe-le en aveugle. Il ne voit pas ta conversation principale. |
| `tools` | La liste blanche d'outils | Moindre privilège. Un veilleur qui lit n'a pas besoin de `Bash`. |
| `model` | Le modèle | `haiku` pour du tri rapide, `sonnet` pour la synthèse. |

Deux règles absolues pour un agent nocturne :
- **Draft first.** La sortie est toujours un fichier à lire, jamais une action directe (pas de push, pas d'envoi, pas de publication).
- **Tools minimaux.** Un veilleur qui lit ne prend que `Read, WebSearch, WebFetch`. Si tu veux un rapport dans un fichier, ajoute `Write`. C'est tout.

### Phase 3 — Poser le planning

Deux modes pour faire tourner l'agent sur un rythme :

**Mode `/loop` (Claude Code local)** : lance Claude Code avec un Skill ou un sous-agent et une fréquence. L'agent tourne pendant que ton ordi est allumé.

```
/loop 12h /veille:digest
```

Tu peux déclencher le lancement le soir avant de fermer le laptop.

**Mode schedule cloud** : utilise le Skill `schedule` pour créer une routine cloud qui tourne même quand ton ordi est éteint. Utile pour des loops quotidiennes ou hebdomadaires stables.

```
/schedule créer une routine cloud — chaque lundi matin à 7h, lance mon agent veilleur
```

The cloud schedule is more reliable for nocturnal loops: the computer can be off, the job still runs. That's the difference between a nocturnal agent and one that "runs only if you remember to keep the laptop on."

### Phase 4 — Installer les garde-fous

C'est la partie que les gens sautent et regrettent. Trois garde-fous non négociables.

1. **Draft first, toujours.** L'agent dépose dans un dossier de staging (ex : `runs/`), jamais en production. Tu valides le matin avant toute action.
2. **Rapport de run.** L'agent écrit un rapport daté (ex : `runs/2026-08-25-digest.md`) qui liste ce qu'il a fait, ce qu'il a trouvé, et ce qu'il n'a pas pu faire. Tu lis ce rapport en premier, avant le livrable.
3. **Périmètre d'outils limité.** Un agent de veille n'a jamais besoin de `Bash` ni d'un MCP avec accès à ton CRM. Delimite sans compromis. Ajouter un outil "juste au cas où" revient à construire une bombe à retardement.

Optional but recommended: a Telegram notification at the end of each run to confirm it ran (or errored). Better than discovering after three days that the agent had been silently failing.

### Phase 5 — La routine du matin (trois minutes)

Un agent nocturne sans routine de validation du matin, c'est un agent dont tu ne sais plus si tu peux lui faire confiance. Une fois que l'agent tourne depuis une semaine.

1. **Lis le rapport de run.** Est-ce que l'agent a tout couvert ? Y a-t-il eu des erreurs ou des skips ?
2. **Valide une sortie en entier.** Une fois par semaine, relis un livrable complet plutôt que de juste scanner. Ça prend cinq minutes et ça te dit si la qualité dérive.
3. **Décide si tu agis.** Si le livrable est bon, agis. Sinon, archive et note ce qui a merdé. Ajuste le prompt de l'agent — il s'améliore de tes corrections.

### Phase 6 — Sortie

Produis **un setup complet prêt à lancer** adapté à la tâche du Phase 1 : le fichier `.claude/agents/<nom>.md` avec ses outils au moindre privilège, la commande de schedule, et le format de rapport de run. Voici les trois templates de référence à adapter.

**Agent veilleur** (lecture web + rapport) :

```markdown
---
name: veilleur
description: Fait une veille sur un sujet et dépose un digest daté dans runs/. À lancer chaque soir ou chaque semaine.
tools: Read, WebSearch, WebFetch, Write
model: sonnet
---

Tu es un veilleur. Ta mission : trouver les 3 à 5 contenus les plus pertinents de la semaine sur le sujet configuré.

Méthode :
1. Lance 4 à 5 requêtes sous des angles différents.
2. Note chaque résultat sur pertinence (1-10) et fraîcheur (1-10).
3. Ne retiens que les articles qui apportent un angle nouveau.

Sortie : écris un rapport daté dans runs/YYYY-MM-DD-veille.md.
Format : titre + URL + score + une ligne d'opinion. Pas plus.
Tu ne publies rien, tu ne modifies rien d'autre que le dossier runs/.
```

**Agent rapporteur** (lit les métriques + rapport) :

```markdown
---
name: rapporteur
description: Lit les métriques disponibles et produit un rapport daté dans runs/. À lancer chaque lundi matin.
tools: Read, Write
model: haiku
---

Tu es un rapporteur. Ta mission : lire les données disponibles dans data/ et produire un rapport de métriques hebdo.

Méthode :
1. Lis les fichiers de données disponibles.
2. Identifie les variations notables par rapport à la période précédente.
3. Signale ce qui est hors norme, sans interpréter les causes.

Sortie : écris un rapport dans runs/YYYY-MM-DD-rapport.md.
Format : chiffres, deltas, anomalies. Pas d'hypothèses sur les causes.
```

**Agent trieur inbox** (lit les captures + classe) :

```markdown
---
name: trieur-inbox
description: Lit les éléments en attente dans inbox/ et les classe par priorité dans runs/. À lancer chaque soir avant de fermer.
tools: Read, Write
model: haiku
---

Tu es un trieur. Ta mission : lire chaque élément de inbox/ et le classer par priorité.

Méthode :
1. Note chaque élément de 1 à 5 (5 = urgent et important).
2. Une raison d'une ligne par élément.

Sortie : écris la liste triée dans runs/YYYY-MM-DD-inbox.md.
Tu ne traites pas les éléments, tu les ranges.
```

Remind the user where each file goes (`.claude/agents/` in the repo to share it, or `~/.claude/agents/` for personal use across all projects) and how to check running schedules with `/schedule` or active loops with `/loop`.

For the concepts behind agents and loops, point to [Après le prompt, la loop](/blog/apres-le-prompt-la-loop) (the rhythm), [Sub-agents Claude Code : déléguer en 40 minutes](/blog/deleguer-sub-agents) (the isolated executant), [Cinq agents en parallèle](/blog/agents-en-parallele) (fan-out), and [Des agents qui bossent pendant que tu dors](/blog/agents-pendant-que-tu-dors) (asynchronous). For the reading path, the [hub La Loop](/la-loop).

## Rules

- Write the agent files' content in the user's language; keep this skill's own instructions in English.
- Draft-first is non-negotiable. Never suggest an action-first nocturnal agent.
- Minimal tools. Never add a tool "just in case". A reader never gets `Bash` or `Write` on production files.
- If the task requires the user's judgment at each step, or runs only once, do not schedule it. Say so explicitly.
- The guardrails (run report in `runs/`, staging-only output, validation loop) are the product, not optional extras.
- Stop and ask when the call is the user's (which task, which schedule, which notification channel). Do not guess.
