Aller au contenu
Développement medium

GitHub Copilot : créer des prompt files réutilisables

6 min de lecture

logo copilot

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.

  • 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

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.

InstructionPrompt file
Déclenchementautomatique, chaque requêtemanuel, par /nom
Contenuun standard durableune 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.

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, parmi ask, agent, plan, ou le nom d'un custom agent. Notez que ce champ s'appelait mode dans les anciennes versions.
  • tools : la liste des outils autorisés pendant l'exécution.
  • model : forcer un modèle précis.

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.

Une fois le fichier enregistré dans .github/prompts/, deux façons de le lancer :

  1. Depuis le chat : tapez / puis le nom du prompt (par défaut, le nom du fichier sans l'extension).

  2. 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.

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.

SymptômeCause probableCorrection
Le prompt n'apparaît pas en /nomMauvais dossier ou suffixeFichier .prompt.md dans .github/prompts/
mode: ignoré dans le frontmatterChamp renomméUtiliser agent: à la place de mode:
La variable n'est pas demandéeSyntaxe incorrecteÉcrire ${input:nom}, pas {{nom}}
Le prompt redéfinit le styleStandards copiés dans le promptDéplacer les conventions dans une instruction
  • Un prompt file (*.prompt.md dans .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.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn