Formation IA pour développeurs · Atelier 3

Une commande pour votre agent

« Ce que vous avez demandé trois fois à l'agent, rangez-le dans le dépôt. »

Dans l'IDE ou en CLI Copilot Free, ou votre agent Fichier de prompt, skill ou hook 35 minutes, correction comprise

La règle du jeu

Repérez une demande que vous avez faite plusieurs fois à l'agent aujourd'hui, et faites-en une commande réutilisable, rangée dans le dépôt de votre application. Vous gardez l'agent de l'atelier 2, dans l'IDE ou en CLI.

Tout est gratuit avec Copilot Free. Le workflow de CI est un bonus.

Partez d'un exemple existant plutôt que d'une page blanche : les ressources ci-dessous en contiennent. Adaptez-le à votre projet avec l'agent.

Des idées, si rien ne vient

1Choisir
La tâche et la forme. 5 min
2Construire
À partir d'un exemple, adapté avec l'agent. 15 min
3Lancer deux fois
Relire le résultat, corriger, commiter. 8 min
4Préparer la démo
Une minute : la tâche, la commande, le résultat. 5 min

Choisir la forme

FormeComment elle se déclencheCopilot (VS Code)Copilot CLIClaude Code
Fichier de promptVous le lancez avec /nom.github/prompts/*.prompt.mdNon pris en charge : faites une skillUne skill, lancée avec /nom
SkillL'agent la charge quand la tâche correspond à sa description, ou vous la lancez avec /nom.github/skills/<nom>/SKILL.md.github/skills/, .claude/skills/ ou .agents/skills/.claude/skills/<nom>/SKILL.md
HookTout seul, à un moment précis (avant un outil, à la fin d'une tâche…).github/hooks/*.json (aperçu).github/hooks/*.json, même format.claude/settings.json

Laquelle choisir ? Le fichier de prompt est le plus rapide, mais il ne marche que dans l'IDE. La skill marche partout : dans VS Code, en CLI et dans Claude Code. Le hook demande un petit script ; partez des hooks de l'atelier 2 (verifier.json, proteger-env.json).

Partir d'un exemple

Lisez avant d'installer. Ces exemples viennent de tiers. Une skill ou un hook peut lancer des commandes sur votre machine : relisez le fichier en entier avant de le copier dans votre dépôt, comme vu avec la chaîne d'approvisionnement des outils IA.

Fichiers de prompt

Skills

Hooks

Avec Claude Code

Construire et lancer

Demandez à l'agent d'adapter l'exemple choisi à votre projet, puis lancez la commande deux fois, sur deux cas différents. Relisez chaque résultat : c'est vous qui le committez.

Prompt · Adapter un exemple
Voici un exemple de [fichier de prompt / skill / hook] : [coller l'exemple ou son lien]. Adapte-le à ce projet pour cette tâche : [la tâche répétée]. Respecte AGENTS.md. Montre-moi le fichier avant de l'écrire, puis dis-moi comment le lancer.

Exemple complet · Trier les alertes SonarQube

L'idée « trier les alertes d'un scanner », pas à pas. Il faut Docker et environ 2,5 Go d'images. Les commandes sont écrites pour PowerShell ; sous macOS ou Linux, remplacez ${PWD} par "$PWD" et curl.exe par curl.

À la main, une fois

1 · Démarrer le serveur (environ 2 min avant qu'il réponde)
docker run -d --name sonarqube -p 9000:9000 sonarqube:community

2 · Configurer. Ouvrez http://localhost:9000, connectez-vous en admin / admin et changez le mot de passe. Créez un projet local (clé demo), puis un jeton : Mon compte › Sécurité, type « Global Analysis Token ». Gardez-le dans une variable d'environnement, jamais dans un fichier du dépôt :

3 · Ranger le jeton pour la session
$env:SONAR_TOKEN = "collez-le-jeton-ici"

À chaque analyse

4 · Analyser le dossier courant (environ 3 min)
docker run --rm -e SONAR_HOST_URL=http://host.docker.internal:9000 -e SONAR_TOKEN -v "${PWD}:/usr/src" sonarsource/sonar-scanner-cli "-Dsonar.projectKey=demo"
5 · Exporter les alertes
curl.exe -u "${env:SONAR_TOKEN}:" "http://localhost:9000/api/issues/search?components=demo&ps=500" -o sonar.json
6 · Faire trier par l'agent
Voici l'export des alertes SonarQube (sonar.json).
Pour chaque alerte : vrai ou faux positif, gravité réelle dans CE projet
(justifie en citant le fichier et la ligne), correctif proposé.
Classe le résultat par gravité. Ne modifie aucun fichier.

Pièges. Sous PowerShell, gardez les guillemets autour de "-Dsonar.projectKey=demo", sinon l'analyse échoue. Sous Git Bash, l'analyse « réussit » mais sur 0 fichier : utilisez PowerShell. Sous PowerShell 5.1, tapez curl.exe et non curl. Si sonar.json est vide juste après l'analyse, attendez quelques secondes que le serveur la traite, puis exportez de nouveau.

Puis automatiser : une commande /scan-securite

Les étapes 4 à 6 se répètent à chaque analyse : c'est exactement ce que l'atelier vous demande de ranger dans le dépôt. Une skill suffit ; l'agent lance lui-même les commandes et vous demande l'autorisation à chaque fois. Le serveur et le jeton restent à préparer à la main (étapes 1 à 3).

.github/skills/scan-securite/SKILL.md (ou .claude/skills/ pour Claude Code)
---
name: scan-securite
description: Analyse le projet avec SonarQube, exporte les alertes et les trie. À utiliser quand on demande un scan de sécurité ou un tri des alertes SonarQube.
---
1. Vérifie que http://localhost:9000/api/system/status renvoie "UP". Sinon, arrête-toi et dis-le.
2. Vérifie que la variable d'environnement SONAR_TOKEN existe. Ne l'affiche jamais et ne l'écris dans aucun fichier.
3. À la racine du projet, lance l'analyse (adapte la syntaxe au shell, PowerShell ou bash) :
   docker run --rm -e SONAR_HOST_URL=http://host.docker.internal:9000 -e SONAR_TOKEN -v "${PWD}:/usr/src" sonarsource/sonar-scanner-cli "-Dsonar.projectKey=demo"
4. Exporte les alertes dans sonar.json avec l'API api/issues/search (composant demo, ps=500), authentifié par SONAR_TOKEN.
5. Pour chaque alerte : vrai ou faux positif, gravité réelle dans ce projet (fichier et ligne), correctif proposé. Classe par gravité.
6. Ne modifie aucun fichier du code. Ajoute sonar.json au .gitignore s'il n'y est pas.

Lancez-la avec /scan-securite, dans VS Code, en Copilot CLI ou dans Claude Code. Dans VS Code, un fichier de prompt .github/prompts/scan-securite.prompt.md avec le même contenu marche aussi.

Critères de réussite

En cas de blocage

SymptômeQue faire
/nom ne trouve pas le fichier de prompt en CLINormal : Copilot CLI ne lit pas les fichiers de prompt. Transformez-le en skill.
La skill n'est jamais chargéeVérifiez le chemin (.github/skills/<nom>/SKILL.md) et l'en-tête. Rendez la description plus précise, ou lancez-la avec /nom.
Le hook ne se déclenche pasVérifiez le JSON et le nom de l'événement (agentStop, preToolUse…). Dans VS Code, les hooks sont en aperçu : passez à une skill si le temps manque.
Quota gratuit épuiséLe repli local de l'atelier 1 (Ollama).

Bonus · La même tâche dans la CI

Un workflow GitHub Actions lance l'agent à chaque PR, à chaque tag ou à heure fixe. Pas besoin de clé d'API.

AgentAuthentificationCoûtPour démarrer
Copilot CLILe GITHUB_TOKEN du workflow, avec la permission copilot-requests: write : aucun secret. Ou un jeton personnel fin « Copilot Requests ».Imputé au compte Copilot du propriétaire du dépôt. Avec Copilot Free : non documenté, à tester.Exemple officiel de workflow
Claude CodeUn jeton d'abonnement (claude setup-token) dans le secret CLAUDE_CODE_OAUTH_TOKEN, ou /install-github-appAbonnement Pro, Max, Team ou EnterpriseExemples de workflows : pr-review-comprehensive, test-failure-analysis, issue-triage

Pour aller plus loin : GitHub Agentic Workflows (gh aw) décrit le workflow en Markdown et le fait tourner avec Copilot, Claude ou Codex. Le projet se dit en tout début de développement.

Un jeton personnel ou une clé va dans les secrets GitHub, jamais dans le fichier du workflow. Donnez au workflow les permissions minimales.