03 Copilot dans l’IDE

Commandes, références et contexte

3.5 Slash commands

Définition

Les slash commands sont des commandes rapides dans Copilot Chat.

Tu tapes / puis une commande. Elles évitent d’écrire de longs prompts pour des actions fréquentes. GitHub précise que les slash commands permettent d’éviter des prompts complexes pour des scénarios courants, et que les commandes disponibles peuvent varier selon l’environnement et le contexte.

Exemples fréquents

Selon ton IDE et les extensions disponibles, tu peux avoir des commandes comme :

Texte
/explain

/fix

/tests

/doc

/help

/clear

Exemple /explain

Tu sélectionnes :

regex
^[^\s@]+@[^\s@]+\.[^\s@]+$

Tu demandes :

Texte
/explain

Copilot peut expliquer :

Texte
This regular expression checks whether a string has a basic email-like format:
- characters before @
- characters after @
- a dot followed by a domain part

Exemple /tests

Tu sélectionnes une fonction :

TypeScript
export function calculateTax(price: number, rate: number): number {
  return price * rate;
}

Tu demandes :

Texte
/tests

Copilot peut générer :

TypeScript
describe("calculateTax", () => {
  it("calculates tax for a valid price and rate", () => {
    expect(calculateTax(100, 0.2)).toBe(20);
  });

  it("returns 0 when price is 0", () => {
    expect(calculateTax(0, 0.2)).toBe(0);
  });
});

Mais tu peux améliorer avec un prompt plus précis :

Texte
/tests using Jest. Include negative values, zero rate, decimal precision, and invalid business cases.

Exemple /fix

Tu as ce code :

Python
def average(numbers):
    return sum(numbers) / len(numbers)

Problème : si numbers est vide, il y a une division par zéro.

Tu demandes :

Texte
/fix

Copilot peut proposer :

Python
def average(numbers):
    if not numbers:
        return 0
    return sum(numbers) / len(numbers)

Mais attention : retourner 0 est un choix métier. Peut-être qu’il faudrait lever une exception :

Python
def average(numbers):
    if not numbers:
        raise ValueError("numbers must not be empty")
    return sum(numbers) / len(numbers)

À retenir pour l’examen

Les slash commands sont utiles pour :

  • accélérer les actions communes ;
  • structurer une demande ;
  • expliquer ;
  • corriger ;
  • tester ;
  • documenter.

Mais elles ne remplacent pas :

  • la précision du contexte ;
  • la validation humaine ;
  • les tests ;
  • la review.

3.6 Référencer des fichiers et du contexte

Définition

Référencer le contexte signifie donner à Copilot les éléments nécessaires pour répondre correctement.

Le contexte peut être :

  • le fichier courant ;
  • une sélection de code ;
  • un autre fichier ;
  • une erreur ;
  • une stack trace ;
  • un test existant ;
  • un README ;
  • un fichier de configuration ;
  • une convention du projet ;
  • une règle métier ;
  • un ticket ou une issue selon l’environnement.

Pourquoi le contexte est important ?

Copilot n’est pas omniscient.

Si tu demandes :

Texte
Fix the bug.

C’est trop vague.

Si tu demandes :

Texte
Fix the bug in the selected function.
The expected behavior is to return an empty list when the input is None.
Keep the public API unchanged.

Là, c’est beaucoup mieux.

Exemple sans contexte

Texte
Generate a repository class.

Copilot peut partir dans n’importe quelle direction :

  • SQLAlchemy ;
  • TypeORM ;
  • Spring Data ;
  • MongoDB ;
  • DynamoDB ;
  • pattern maison ;
  • repository générique inutile.

Exemple avec contexte

Texte
Generate a TypeScript repository class for the User entity.
Use Prisma.
Follow the same structure as OrderRepository.ts.
Include methods: findById, findByEmail, create, and deactivate.
Do not expose passwordHash in returned objects.

Là, tu guides Copilot.

Exemple avec fichier de référence

Prompt :

Texte
Use the style of PaymentService.ts to create a similar service for RefundService.
Follow the same error handling and logging conventions.

Pourquoi c’est puissant ?

Parce que Copilot peut s’aligner sur :

  • naming ;
  • structure ;
  • gestion d’erreur ;
  • logs ;
  • dépendances ;
  • conventions de ton projet.

Exemple avec stack trace

Erreur :

Texte
TypeError: Cannot read properties of undefined (reading 'items')

Prompt :

Texte
Analyze this stack trace and the selected function.
Explain why this error happens and propose a defensive fix without hiding real data quality issues.

Bonne demande, parce qu’elle précise :

  • analyse ;
  • cause ;
  • correction ;
  • contrainte métier.

Bonnes pratiques de contexte

Donne à Copilot :

  • le langage ;
  • le framework ;
  • le fichier concerné ;
  • l’objectif ;
  • les contraintes ;
  • les exemples ;
  • les erreurs ;
  • les tests existants ;
  • ce qu’il ne faut pas changer.

Mauvais prompt

Texte
Refactor this.

Bon prompt

Texte
Refactor the selected function to improve readability.
Do not change the public function signature.
Preserve the current behavior.
Add early returns where useful.
Do not introduce new dependencies.

À retenir pour le GH-300

  • Les slash commands (/explain, /fix, /tests, /doc) accélèrent les actions fréquentes ; elles ne remplacent ni le contexte ni la validation.
  • Copilot n’est pas omniscient : on donne l’erreur, la stack trace, le fichier, le comportement attendu et ce qui ne doit pas changer.
  • Référencer un fichier d’exemple aide Copilot à suivre les conventions du projet.
  • Un prompt vague produit un résultat vague.

D2 · Utiliser les fonctionnalités de GitHub Copilot · 25–30 %