
Vous retapez la même consigne à Copilot à chaque fois : « génère un test pour cette fonction », « scaffolde un module »... Un prompt file enregistre cette consigne une fois et la rejoue d'une commande /. Ce guide montre comment créer un prompt file, lui passer des variables, et le partager à l'équipe. Il prolonge le hub de personnalisation Copilot.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Créer un prompt file invoqué par
/nom - Renseigner son frontmatter (
description,agent,tools,model) - Passer des variables à l'exécution
- Partager vos prompts en équipe via git
Prérequis
Section intitulée « Prérequis »- GitHub Copilot actif dans VS Code
- Les bases de la personnalisation Copilot (instructions vs prompts)
- Un projet ouvert comme workspace
Prompt file ou instruction : ne pas confondre
Section intitulée « Prompt file ou instruction : ne pas confondre »La distinction est simple mais structurante. Une instruction s'applique automatiquement à chaque échange (vos standards de code). Un prompt file est une action ponctuelle que vous déclenchez quand vous en avez besoin.
| Instruction | Prompt file | |
|---|---|---|
| Déclenchement | automatique, chaque requête | manuel, par /nom |
| Contenu | un standard durable | une tâche réutilisable |
| Exemple | « typer toutes les fonctions » | « générer un endpoint + son test » |
Si vous écrivez « génère... », « crée... », « refactorise... », c'est un prompt file. Si vous écrivez « toujours... », « ne jamais... », c'est une instruction.
Anatomie d'un prompt file
Section intitulée « Anatomie d'un prompt file »Un prompt file est un fichier *.prompt.md placé dans .github/prompts/. Il a un frontmatter YAML et un corps en Markdown.
---description: "Générer un endpoint FastAPI complet avec son test"agent: agent---
Crée un endpoint FastAPI pour la ressource ${input:ressource}.
- Route avec validation Pydantic et gestion des erreurs 404/422.- Réponse JSON typée.- Un test pytest (cas nominal + cas absent) dans tests/.
Respecte les conventions du dépôt.Les champs de frontmatter utiles :
description: ce que fait le prompt, affiché dans le menu.agent: l'agent qui exécute le prompt, parmiask,agent,plan, ou le nom d'un custom agent. Notez que ce champ s'appelaitmodedans les anciennes versions.tools: la liste des outils autorisés pendant l'exécution.model: forcer un modèle précis.
Passer des variables
Section intitulée « Passer des variables »Un prompt générique devient puissant avec des variables, résolues à l'exécution :
${input:nom}: Copilot demande la valeur quand vous lancez le prompt (ici${input:ressource}ci-dessus).${selection}: insère le code sélectionné dans l'éditeur.#tool:<nom>: référence un outil directement dans le corps.
Exemple d'un prompt de revue qui agit sur la sélection :
---description: "Revue de code Python sur la sélection"agent: ask---
Relis ce code et signale les problèmes :
${selection}
- Conformité PEP 8 et type hints.- Noms de variables ambigus.- Propose un correctif concret pour chaque point.Invoquer un prompt file
Section intitulée « Invoquer un prompt file »Une fois le fichier enregistré dans .github/prompts/, deux façons de le lancer :
-
Depuis le chat : tapez
/puis le nom du prompt (par défaut, le nom du fichier sans l'extension). -
Depuis la palette : commande « Chat: Run Prompt », puis choisissez le prompt.
Si vous avez défini des ${input:...}, Copilot vous demande les valeurs avant d'exécuter. Pour créer un nouveau prompt, la commande « Chat: New Prompt File » génère le squelette au bon endroit.
Partager et réutiliser
Section intitulée « Partager et réutiliser »L'intérêt majeur : les prompt files sont versionnés dans le dépôt. En les rangeant dans .github/prompts/, toute l'équipe hérite des mêmes commandes en clonant le projet. Vous construisez ainsi une bibliothèque de prompts maison : generer-test, revue-code, message-commit, scaffold-module.
Pour des prompts utiles sur plusieurs projets, vous pouvez aussi les enregistrer au niveau utilisateur (dans votre profil VS Code), au prix de les perdre comme référence partagée. Pour ajouter des emplacements, le réglage chat.promptFilesLocations liste les dossiers scannés.
Pièges courants
Section intitulée « Pièges courants »| Symptôme | Cause probable | Correction |
|---|---|---|
Le prompt n'apparaît pas en /nom | Mauvais dossier ou suffixe | Fichier .prompt.md dans .github/prompts/ |
mode: ignoré dans le frontmatter | Champ renommé | Utiliser agent: à la place de mode: |
| La variable n'est pas demandée | Syntaxe incorrecte | Écrire ${input:nom}, pas {{nom}} |
| Le prompt redéfinit le style | Standards copiés dans le prompt | Déplacer les conventions dans une instruction |
À retenir
Section intitulée « À retenir »- Un prompt file (
*.prompt.mddans.github/prompts/) enregistre une tâche réutilisable, lancée par/nom. - Le frontmatter clé :
description,agent(ask/agent/plan, ex-mode),tools,model. - Les variables
${input:...}et${selection}rendent le prompt générique. - Les standards restent dans les instructions ; le prompt porte l'action.
- Versionnés dans
.github/, les prompts se partagent à toute l'équipe.