Tech & Performance
Skill Claude Code : automatiser son reporting hebdo
Skill Claude Code pour le reporting hebdomadaire : fichier SKILL.md, champs de configuration, arguments, lancement avec claude -p et options de planification.
Le rapport hebdomadaire d'un compte publicitaire suit toujours la même procédure : mêmes requêtes, même mise en forme, mêmes règles de prudence. Coller ces consignes dans chaque conversation use du temps et laisse passer des oublis. Claude Code propose un mécanisme prévu pour cela, le skill : un fichier SKILL.md qui contient la procédure et que l'on lance avec une commande courte. Ce guide montre comment en écrire un pour un rapport Google Ads, quels champs de l'en-tête régler, comment le lancer à la main ou sans interface, et quelles options de planification la documentation décrit.
Les faits cités viennent de la documentation de Claude Code (skills, mode non interactif, planification, permissions) et de celle de Google Ads (langage de requête), consultées le 11 octobre 2026. Le skill d'exemple est notre assemblage de ces pages et de la configuration du serveur Google Ads décrite dans notre guide Claude Code pour Google Ads. Il ne vient pas d'un exemple publié par Anthropic ou par Google.
Un skill, pour quoi faire
D'après la documentation des skills, on crée un skill quand on colle sans cesse les mêmes instructions, la même liste de contrôles ou la même procédure en plusieurs étapes dans la conversation, ou quand une section de CLAUDE.md est devenue une procédure plutôt qu'un fait. Le corps d'un skill ne se charge que lorsqu'il est utilisé : un long mode d'emploi coûte presque rien tant qu'on ne l'appelle pas. Une fois chargé, son contenu reste dans la conversation pour les tours suivants.
La répartition qui en découle pour une agence : le CLAUDE.md du client porte les faits (identifiant du compte, objectif de ROAS, saisonnalité), le skill porte la procédure du rapport. Un même skill sert alors à tous les clients, et un argument désigne le client concerné.
Où ranger le fichier
| Emplacement | Chemin | Où il se charge |
|---|---|---|
| Personnel | ~/.claude/skills/<nom>/SKILL.md | Tous vos projets sur cette machine |
| Projet | .claude/skills/<nom>/SKILL.md | Les sessions de ce dépôt, partagé avec l'équipe quand le dossier est versionné |
| Plugin | <plugin>/skills/<nom>/SKILL.md | Partout où le plugin est activé, sous la forme /plugin:nom |
Le nom du dossier devient la commande, sauf si le champ name en fixe un autre. Un skill personnel convient à un poste d'analyste ; un skill de projet convient à un dépôt d'agence que toute l'équipe clone.
Les champs d'en-tête utiles pour un rapport
L'en-tête est un bloc YAML entre deux lignes ---, placé à la première ligne du fichier. Tous les champs sont facultatifs et seule la description est recommandée. La documentation avertit qu'un nom de champ doit correspondre exactement au tableau de référence : Claude Code ignore un champ qu'il ne reconnaît pas, sans message d'erreur. Une faute de frappe dans allowed-tools ne produit donc aucune alerte.
| Champ | Ce que dit la documentation |
|---|---|
name | Nom de la commande dans le menu ; par défaut, le nom du dossier |
description | Ce que fait le skill et quand l'utiliser ; la description et when_to_use sont tronquées ensemble à 1 536 caractères dans la liste des skills |
argument-hint | Indication affichée à l'autocomplétion, par exemple [client] |
arguments | Arguments positionnels nommés, utilisables dans le texte sous la forme $nom |
disable-model-invocation | À true, Claude ne lance pas le skill de lui-même ; pour les workflows dont vous voulez choisir le moment |
allowed-tools | Outils utilisables sans demande d'autorisation pendant le tour qui lance le skill ; la liste n'en retire aucun et l'autorisation s'efface au message suivant |
context et agent | context: fork exécute le skill dans un sous-agent isolé, du type désigné par agent |
model, effort | Modèle et niveau d'effort appliqués pendant le tour du skill |
Un skill de rapport hebdomadaire complet
Le fichier ci-dessous suppose le serveur Google Ads en lecture seule branché sous le nom google-ads, comme dans notre guide Claude Code. Les règles de permission des outils MCP se nomment mcp__<serveur>__<outil>, d'après la documentation des permissions.
---
name: rapport-hebdo
description: Produit le rapport hebdomadaire Google Ads d'un client depuis le serveur MCP en lecture seule. À lancer avec /rapport-hebdo suivi du nom du client.
argument-hint: [client]
arguments: [client]
disable-model-invocation: true
allowed-tools: mcp__google-ads__search Edit(rapports/**) Bash(date *)
---
Date du jour : !`date +%F`
Rédige le rapport hebdomadaire du client $client dans rapports/AAAA-MM-JJ-hebdo.md,
avec la date du jour ci-dessus.
1. Lis l'identifiant du compte et l'objectif de ROAS dans le CLAUDE.md du dossier.
2. Interroge les campagnes avec le serveur Google Ads : d'abord LAST_7_DAYS, puis les
7 jours précédents avec BETWEEN et des dates explicites. Champs : campaign.name,
metrics.cost_micros, metrics.clicks, metrics.conversions, metrics.conversions_value.
3. Convertis cost_micros en euros (divise par 1 000 000).
4. Écris, dans cet ordre : une phrase de synthèse, le tableau des 10 campagnes les plus
dépensières avec l'écart sur 7 jours, les campagnes dont la valeur de conversion baisse
alors que le coût monte, les actions à valider.
5. Si une donnée manque ou si une requête échoue, écris NA à sa place. N'estime rien.
6. Ne propose jamais d'exécuter une modification : le serveur est en lecture seule,
liste les actions pour validation humaine.Ce que font les lignes qui demandent un commentaire :
arguments: [client]déclare un argument nommé, repris dans le texte par$client. Lancer/rapport-hebdo client-aremplace$clientparclient-a. La documentation précise que les valeurs à plusieurs mots se mettent entre guillemets.- La ligne
!`date +%F`utilise l'injection de contexte : Claude Code exécute la commande et remplace la ligne par sa sortie avant que Claude lise le skill. Hors mode auto, une commande injectée dont la vérification de permission ne renvoie pas « autorisé » fait échouer toute l'invocation, et la documentation conseille de la pré-approuver avecallowed-tools: d'oùBash(date *). Edit(rapports/**)autorise l'écriture dans le dossier des rapports. La documentation des permissions indique que les règles de chemin se rédigent avecEditpour les écritures de fichiers : une règleWrite(chemin)est acceptée mais jamais consultée.- Google définit
LAST_7_DAYScomme les sept derniers jours sans compter aujourd'hui, et accepteBETWEENavec des dates au format AAAA-MM-JJ. Les montants de l'API sont exprimés en micros, et la documentation des champs de budget précise qu'un million de micros équivaut à une unité de devise : vérifiez la première conversion decost_microsà la main. - Les points 5 et 6 sont des règles de prudence de notre cru : écrire NA plutôt qu'un chiffre estimé, et ne jamais proposer d'exécution. Elles s'accordent avec les règles du
CLAUDE.mddécrites dans le guide Claude Code, sans en dépendre.
Le lancer, à la main puis sans interface
Depuis le dossier du client, dans une session, il suffit de taper la commande en début de message :
/rapport-hebdo client-aPlacé au milieu d'une phrase, le nom du skill ne le lance pas directement : il donne à Claude la permission de l'utiliser, selon la documentation. Pour un lancement sans interface, la page sur le mode non interactif indique que les skills invoqués par l'utilisateur fonctionnent avec -p :
cd client-a
claude -p "/rapport-hebdo client-a" --max-budget-usd 2L'option --max-budget-usd (mode -p uniquement) coupe la session quand la dépense estimée atteint le plafond ; la documentation précise que cette estimation est faite côté client et peut différer de la facture, et que la dépense peut dépasser le plafond. Sans --bare, la session charge les mêmes skills, hooks, serveurs MCP et CLAUDE.md qu'une session interactive : c'est ce qu'il faut ici, puisque le skill et le serveur Google Ads en font partie. Avec --bare, ils ne seraient pas chargés.
Planifier le rapport
La documentation de Claude Code décrit trois mécanismes de planification, avec des contraintes différentes :
| Mécanisme | Où il tourne | Ce qu'il faut savoir |
|---|---|---|
| Routine cloud | Chez Anthropic, machine éteinte possible | Clone neuf du dépôt, pas d'accès à vos fichiers locaux, intervalle minimal d'une heure |
| Tâche planifiée Desktop | Votre machine | Accès aux fichiers locaux, mais exécution seulement application ouverte et ordinateur éveillé |
/loop | Votre machine, dans une session ouverte | Une tâche récurrente expire 7 jours après sa création |
Trois conséquences pour notre rapport. D'abord, /loop sert au sondage rapide pendant une session. Pour un rapport de chaque lundi, l'expiration à sept jours coupe la tâche au bout d'une semaine : elle se déclenche une dernière fois puis se supprime. Ensuite, pour une tâche Desktop, un ordinateur endormi à l'heure prévue saute l'exécution ; au réveil, Desktop lance une seule exécution de rattrapage pour la dernière échéance manquée parmi les sept derniers jours. Un rapport daté du lundi peut donc sortir le mercredi, et le skill a intérêt à écrire la date du jour réelle, comme le nôtre. Enfin, une routine cloud ne lit pas votre dossier ~/.claude/skills/ et ses connecteurs se configurent par tâche : le skill d'exemple, qui dépend d'un serveur MCP local et d'un dossier de rapports local, vise la tâche Desktop ou un lancement par le planificateur de votre système avec claude -p.
Dernier point, sur l'en-tête : disable-model-invocation: true empêche aussi le skill de s'exécuter quand une tâche planifiée de Claude Code se déclenche avec ce skill comme prompt. Si vous planifiez via /loop en désignant le skill, retirez ce champ ou recopiez la procédure dans la tâche. Un lancement par claude -p "/rapport-hebdo client-a" depuis le planificateur de votre système reste une invocation de l'utilisateur.
Tester le skill et corriger ses défauts
- Un en-tête YAML mal formé n'empêche pas le skill de se charger : il s'exécute avec des métadonnées vides, donc sans
allowed-tools. La commandeclaude plugin validate .claude/skills(ou~/.claude/skillspour les skills personnels) repère les fichiers dont l'en-tête ne s'analyse pas, à partir de Claude Code v2.1.233. - Si Claude cesse de suivre une consigne en cours de session, la documentation explique que le contenu du skill est ajouté à la conversation une seule fois, sans relecture du fichier, et qu'après un compactage de la conversation seul le début du skill est conservé. Elle conseille de mettre les consignes essentielles en haut du fichier, et de confier à un hook toute règle qui doit être respectée à chaque fois.
- Comparez les premiers rapports aux chiffres de l'interface Google Ads avant de les envoyer à un client : conversion des micros, plage de dates et regroupement des conversions se vérifient une première fois à la main. Nos articles sur le reporting automatisé et sur le workflow de pilotage détaillent la lecture business qui reste humaine.
Les garde-fous
- La documentation des skills prévient que Claude Code applique le champ
allowed-toolsd'un skill de projet même dans une exécution-plancée dans un dossier que vous n'avez jamais approuvé. Relisez l'en-tête des skills d'un dépôt avant d'y lancer Claude Code. - Limitez
allowed-toolsà ce que la procédure exige : ici la lecture Google Ads, l'écriture dans un dossier et une commande de date. Les règles de refus et de demande priment sur ce champ. - Le serveur Google Ads officiel est en lecture seule dans sa version actuelle d'après Google : le skill ne peut donc pas modifier de campagne, et la consigne 6 le rappelle à Claude.
- Les données d'un client circulent vers Claude : vérifiez que votre contrat l'autorise.
Par où commencer
- Brancher le serveur Google Ads en lecture seule et valider une requête à la main, en suivant le guide Claude Code. Pour Claude Desktop, voir le setup du Google Ads MCP.
- Créer
~/.claude/skills/rapport-hebdo/SKILL.mdavec l'exemple ci-dessus, adapté à vos clients. - Lancer
/rapport-hebdodans le dossier d'un client et comparer chaque chiffre à l'interface. - Ajuster le texte du skill jusqu'à trois rapports consécutifs justes.
- Seulement ensuite, planifier le lancement avec
claude -pou une tâche Desktop.
Questions fréquentes sur les skills Claude Code
Quelle différence entre un skill et un fichier CLAUDE.md ?
D’après la documentation de Claude Code, le corps d’un skill ne se charge que lorsqu’il est utilisé, alors que le contenu d’un CLAUDE.md est présent à chaque session. La documentation conseille de créer un skill quand une section de CLAUDE.md est devenue une procédure plutôt qu’un fait. Les faits du client (identifiant de compte, objectif de ROAS) restent dans son CLAUDE.md, la procédure du rapport va dans le skill.
Peut-on empêcher Claude de lancer le skill de lui-même ?
Oui, avec disable-model-invocation: true dans l’en-tête du fichier. Claude ne charge alors pas le skill de sa propre initiative et vous le lancez en tapant son nom précédé d’une barre oblique. La documentation recommande ce réglage pour les workflows dont vous voulez maîtriser le moment. Il empêche aussi le skill de s’exécuter quand une tâche planifiée de Claude Code se déclenche avec ce skill comme prompt.
Comment lancer un skill depuis un script ?
En mode non interactif, les skills invoqués par l’utilisateur fonctionnent : on écrit leur nom précédé d’une barre oblique dans la chaîne passée à claude -p, et Claude Code le développe avant l’exécution. Les commandes intégrées réservées à l’interface du terminal, comme /login, ne sont pas disponibles dans ce mode.
Un skill rangé dans mon dossier personnel fonctionne-t-il dans une routine cloud ?
Non. Les routines et les sessions cloud ne lisent pas le dossier ~/.claude/skills/ de votre machine, et Claude Code signale que le skill est introuvable quand une routine l’invoque. La documentation propose d’activer le skill pour votre compte claude.ai ou de le versionner dans le dépôt, sous .claude/skills/, que les sessions cloud clonent. L’envoi vers claude.ai n’accepte que les champs name, description, license, compatibility, metadata et allowed-tools : notre exemple, qui utilise aussi argument-hint, arguments et disable-model-invocation, y serait refusé.