3 juillet 2025
Suggestions de code en temps réel lors de la saisie dans l’éditeur.
Interface conversationnelle pour poser des questions, demander des explications ou générer du code sur demande.
Ctrl+Alt+I
Ctrl+I
Ctrl+Shift+Alt+L

Utiliser Git en plus ("stage" les modifs avant de commencer un chat)
/...) : raccourcis pour les actions courantes./fix pour proposer une correction, /explain pour expliquer du code, / pour lister toutes les commandes.
@...) :
améliore les réponses de l'IA en utilisant des connaissances spécifiques.@workspace, @vscode, @terminal, ... permettent d’interagir respectivement avec l'ensemble du code du projet, l’éditeur, le terminal, ...
#...) : ajoutent du contexte ou des outils au prompt.#codebase pour l’ensemble du code du projet, #file, #folder, #symbol pour cibler un fichier, un dossier ou un symbole précis.
/nom (ex : /explain, /fix, /test).
NES aide à corriger des erreurs simples comme les fautes de frappe. Il suggère des corrections lorsque des lettres sont manquantes ou inversées, par exemple cont x = 5 ou conts x = 5 au lieu de const x = 5.
NES peut aussi aider à corriger des erreurs de logique plus complexes, comme une expression ternaire inversée.
Copilot comprend qu'il fallait utiliser && au lieu de ||.
NES peut aussi suggérer des refactorings.
Référence : https://code.visualstudio.com/docs/copilot/ai-powered-suggestions#_use-cases-for-next-edit-suggestions
Ask
Edit#file.
Agent3 raisons de préférer le modeAgent
2 raisons de préférer le modeEdit
Limite de requêtes simultanées : par défaut, un agent GitHub Copilot peut effectuer jusqu’à 5 requêtes simultanées pour les utilisateurs Copilot Free, et 15 requêtes pour les autres abonnements.
Write three.js code for the coolest spinning 3d shape you can make.
Merci à Cyril d'avoir risqué l'intégrité de son OS pour nous montrer que les modèles actuels ne sont pas encore prêts pour faire du "vibe coding" 😅
---
mode: 'agent'
tools: ['githubRepo', 'codebase']
description: 'Perform a REST API security review'
---
Perform a REST API security review:
* Ensure all endpoints are protected by authentication and authorization
* Validate all user inputs and sanitize data
* Implement rate limiting and throttling
* Implement logging and monitoring for security events
---
mode: 'agent'
tools: ['githubRepo', 'codebase']
description: 'Perform a REST API security review'
---
Perform a REST API security review:
* Ensure all endpoints are protected by authentication and authorization
* Validate all user inputs and sanitize data
* Implement rate limiting and throttling
* Implement logging and monitoring for security events
En-tête contenant les métadonnées (optionnel)
---
mode: 'agent'
tools: ['githubRepo', 'codebase']
description: 'Perform a REST API security review'
---
Perform a REST API security review:
* Ensure all endpoints are protected by authentication and authorization
* Validate all user inputs and sanitize data
* Implement rate limiting and throttling
* Implement logging and monitoring for security events
mode : le "chat mode" à utiliser pour le prompt, i.e. "ask", "edit" ou "agent" (par défaut)
---
mode: 'agent'
tools: ['githubRepo', 'codebase']
description: 'Perform a REST API security review'
---
Perform a REST API security review:
* Ensure all endpoints are protected by authentication and authorization
* Validate all user inputs and sanitize data
* Implement rate limiting and throttling
* Implement logging and monitoring for security events
tools : la liste d'outils que l'agent peut utiliser (évoqué à la fin de la présentation)
---
mode: 'agent'
tools: ['githubRepo', 'codebase']
description: 'Perform a REST API security review'
---
Perform a REST API security review:
* Ensure all endpoints are protected by authentication and authorization
* Validate all user inputs and sanitize data
* Implement rate limiting and throttling
* Implement logging and monitoring for security events
description : une brève description du prompt
---
mode: 'agent'
tools: ['githubRepo', 'codebase']
description: 'Perform a REST API security review'
---
Perform a REST API security review:
* Ensure all endpoints are protected by authentication and authorization
* Validate all user inputs and sanitize data
* Implement rate limiting and throttling
* Implement logging and monitoring for security events
Le prompt à exécuter
---
mode: 'edit'
description: 'Add a comprehensive docstring.'
---
Add a comprehensive docstring to the provided code snippet:
* Use the Numpy style.
* The docstring should include a description of the function's purpose, its parameters, return values, and any exceptions it may raise.
* It may also include notes and examples of usage if applicable.
* Ensure that the docstring is clear and concise, following best practices for documentation.
---
mode: 'agent'
tools: ['githubRepo', 'codebase']
description: 'Generate a new React form component'
---
Your goal is to generate a new React form component based on the templates in #githubRepo contoso/react-templates.
Ask for the form name and fields if not provided.
Requirements for the form:
* Use form design system components: [design-system/Form.md](../docs/design-system/Form.md)
* Use `react-hook-form` for form state management:
* Always define TypeScript types for your form data
* Prefer *uncontrolled* components using register
* Use `defaultValues` to prevent unnecessary rerenders
* Use `yup` for validation:
* Create reusable validation schemas in separate files
* Use TypeScript types to ensure type safety
* Customize UX-friendly validation rules
Les liens relatifs Markdown permettent de référencer d'autres fichiers de l'espace de travail, fichiers "*.prompt.md" ou fichiers d'instructions dans le corps des prompts
---
mode: 'agent'
tools: ['githubRepo', 'codebase']
description: 'Generate a new React form component'
---
Your goal is to generate a new React form component based on the templates in #githubRepo contoso/react-templates.
Ask for the form name and fields if not provided.
Requirements for the form:
* Use form design system components: [design-system/Form.md](../docs/design-system/Form.md)
* Use `react-hook-form` for form state management:
* Always define TypeScript types for your form data
* Prefer *uncontrolled* components using register
* Use `defaultValues` to prevent unnecessary rerenders
* Use `yup` for validation:
* Create reusable validation schemas in separate files
* Use TypeScript types to ensure type safety
* Customize UX-friendly validation rules
Ces liens sont relatifs à l'emplacement du fichier "*.prompt.md"
[index](../index.ts)
#index.ts
---
mode: 'agent'
tools: ['githubRepo', 'codebase']
description: 'Generate a new React form component'
---
Your goal is to generate a new React form component based on the templates in #githubRepo contoso/react-templates.
Ask for the form name and fields if not provided.
Requirements for the form:
* Use form design system components: [design-system/Form.md](../docs/design-system/Form.md)
* Use `react-hook-form` for form state management:
* Always define TypeScript types for your form data
* Prefer *uncontrolled* components using register
* Use `defaultValues` to prevent unnecessary rerenders
* Use `yup` for validation:
* Create reusable validation schemas in separate files
* Use TypeScript types to ensure type safety
* Customize UX-friendly validation rules
[index](../index.ts)
#index.ts
---
mode: 'agent'
tools: ['githubRepo', 'codebase']
description: 'Generate a new React form component'
---
Your goal is to generate a new React form component based on the templates in #githubRepo contoso/react-templates.
Ask for the form name and fields if not provided.
Requirements for the form:
* Use form design system components: #Form.md
* Use `react-hook-form` for form state management:
* Always define TypeScript types for your form data
* Prefer *uncontrolled* components using register
* Use `defaultValues` to prevent unnecessary rerenders
* Use `yup` for validation:
* Create reusable validation schemas in separate files
* Use TypeScript types to ensure type safety
* Customize UX-friendly validation rules
La référence à des fichiers .prompt.md permet de créer une hiérarchie de prompts !
Un fichier "*.prompt.md" peut aussi contenir des variables avec la syntaxe ${variableName}
Variables d'espace de travail :
${workspaceFolder}, ${workspaceFolderBasename}
Variables de sélection :
${selection}, ${selectedText}
Variables de contexte de fichier :
${file}, ${fileBasename}, ${fileDirname}, ${fileBasenameNoExtension}
Variables d'entrée utilisateur :
${input:variableName}, ${input:variableName:placeholder}
☝️ Permet de passer des valeurs au prompt via le champ de saisie du chat
👉️ (i.e. permet de faire des templates de prompts)
Vous pouvez créer directement un fichier .prompt.md dans le dossier .github/prompts de votre projet...
Ctrl+Shift+P).
.github/prompts est disponible.chat.promptFilesLocations.
Référence: https://code.visualstudio.com/docs/copilot/copilot-customization#_create-a-workspace-prompt-file
Ctrl+Shift+P).
~/.config/Code/User/prompts/ par défaut
Référence: https://code.visualstudio.com/docs/copilot/copilot-customization#_create-a-workspace-prompt-file
Plusieurs possibilités :
Ctrl+Shift+P) et sélectionnez un fichier prompt dans la liste.
/ suivi du nom du fichier prompt dans le champ de saisie du chat./create-react-form ou /create-react-form: formName=MyForm
Référence: https://code.visualstudio.com/docs/copilot/copilot-customization#_create-a-workspace-prompt-file
Remarque : c'est l'équivalent dans GitHub Copilot des fichiers .cursor/rules (dans Cursor) et .windsurf/rules (dans Windsurf)
copilot-instructions.md
*.prompt.md
# Coding pattern preferences
- Always prefer simple solutions
- Avoid duplication of code whenever possible, which means checking for other areas of the codebase
that might already have similar code and functionality
- Write code that takes into account the different environments: dev, test, and prod
- You are careful to only make changes that are requested or you are confident are well understood
and related to the change being requested
- When fixing an issue or bug, do not introduce a new pattern or technology without first exhausting
all options for the existing implementation. And if you finally do this,
make sure to remove the old implementation afterwards so we don't have duplicate logic.
- Keep the codebase very clean and organized
- Avoid writing scripts in files if possible, especially if the script is likely only to be run once
- Avoid having files over 200-300 lines of code. Refactor at that point.
- Mocking data is only needed for tests, never mock data for dev or prod
- Never add stubbing or fake data patterns to code that affects the dev or prod environments
- Never overwrite my .env file without first asking and confirming
# Technical stack
- Python for the backend
- HTML/JS for the frontend
- SQL databases, never JSON file storage
- Separate databases for dev, test, and prod
- Elasticsearch for search, using elastic.co hosting
- Elastic.co will have dev and prod indexes
- Python tests
# Coding workflow preferences
- Focus on the areas of code relevant to the task
- Do not touch code that is unrelated to the task
- Write thorough tests for all major functionality
- Avoid making major changes to the patterns and architecture of how a feature works,
after it has shown to work well, unless explicitly instructed
- Always think about what other methods and areas of code might be affected by code changes
But: forcer un agent à adopter une approche "Test-Driven Development"
.github/copilot-instructions.md : y définir la stack technique du projet, les conventions, etc.
git commit, réinitialiser le chat, mettre à jour le fichier TODO.md, puis passer à la fonctionnalité suivante.Un "modèle" = une IA
Choosing the right AI model for your task
Comparing AI models using different tasks
Supported AI models in Copilot
| Model name | Provider | Release status | Agent mode | Ask mode | Edit mode |
|---|---|---|---|---|---|
| GPT-4.1 | OpenAI | GA | ✅ | ✅ | ✅ |
| GPT-4.5 | OpenAI | Public preview | ❌ | ✅ | ✅ |
| GPT-4o | OpenAI | GA | ✅ | ✅ | ✅ |
| o1 | OpenAI | Public preview | ❌ | ✅ | ✅ |
| o3 | OpenAI | Public preview | ❌ | ✅ | ✅ |
| o3-mini | OpenAI | GA | ❌ | ✅ | ✅ |
| o4-mini | OpenAI | Public preview | ❌ | ✅ | ✅ |
| Claude Opus 4 | Anthropic | GA | ❌ | ✅ | ✅ |
| Claude Sonnet 3.5 | Anthropic | GA | ✅ | ✅ | ✅ |
| Claude Sonnet 3.7 | Anthropic | GA | ✅ | ✅ | ✅ |
| Claude Sonnet 3.7 Thinking | Anthropic | GA | ❌ | ✅ | ✅ |
| Claude Sonnet 4 | Anthropic | GA | ✅ | ✅ | ✅ |
| Gemini 2.5 Pro | Public preview | ✅ | ✅ | ✅ | |
| Gemini 2.0 Flash | GA | ❌ | ✅ | ✅ |
Légende : ✅ = mode disponible, ❌ = mode non disponible | GA = General Availability
Source : https://docs.github.com/en/copilot/reference/ai-models/supported-ai-models-in-copilot
| Modèles disponibles en chat | Copilot Free | Copilot Pro | Copilot Pro+ | Copilot Business | Copilot Enterprise |
|---|---|---|---|---|---|
| GPT-4.1 | ✅ | ✅ | ✅ | ✅ | ✅ |
| GPT-4.5 | ❌ | ❌ | ✅ | ❌ | ✅ |
| GPT-4o | ✅ | ✅ | ✅ | ✅ | ✅ |
| o1 | ❌ | ✅ | ✅ | ✅ | ✅ |
| o3 | ❌ | ❌ | ✅ | ❌ | ✅ |
| o3-mini | ✅ | ✅ | ✅ | ✅ | ✅ |
| o4-mini | ❌ | ✅ | ✅ | ✅ | ✅ |
| Claude Opus 4 | ❌ | ❌ | ✅ | ❌ | ✅ |
| Claude Sonnet 3.5 | ✅ | ✅ | ✅ | ✅ | ✅ |
| Claude Sonnet 3.7 | ❌ | ✅ | ✅ | ✅ | ✅ |
| Claude Sonnet 3.7 Thinking | ❌ | ✅ | ✅ | ✅ | ✅ |
| Claude Sonnet 4 | ❌ | ✅ | ✅ | ✅ | ✅ |
| Gemini 2.5 Pro | ❌ | ✅ | ✅ | ✅ | ✅ |
| Gemini 2.0 Flash | ✅ | ✅ | ✅ | ✅ | ✅ |
Légende : ✅ = disponible, ❌ = non disponible
Source : https://docs.github.com/en/copilot/reference/ai-models/supported-ai-models-in-copilot
| Modèle | Multiplicateur abonnements payants |
Multiplicateur Copilot Free |
|---|---|---|
| GPT-4.1 | 0 | 1 |
| GPT-4.5 | 50 | ❌ |
| GPT-4o | 0 | 1 |
| o1 | 10 | ❌ |
| o3 | 1 | ❌ |
| o3-mini | 0.33 | 1 |
| o4-mini | 0.33 | ❌ |
| Claude Opus 4 | 10 | ❌ |
| Claude Sonnet 3.5 | 1 | 1 |
| Claude Sonnet 3.7 | 1 | ❌ |
| Claude Sonnet 3.7 Thinking | 1.25 | ❌ |
| Claude Sonnet 4 | 1 | ❌ |
| Gemini 2.5 Pro | 1 | ❌ |
| Gemini 2.0 Flash | 0.25 | 1 |
Légende : 1 = coût standard, 0 = inclus, ❌ = non applicable ou non disponible
Source : docs.github.com/en/copilot/reference/ai-models/supported-ai-models-in-copilot
| Model name | Release date | Knowledge Cutoff | Multimodal input (text+images) |
Web search | File search | Reasoning | MCP compliant | Context window (input) |
|---|---|---|---|---|---|---|---|---|
| GPT-4.1 | 2025-04 | 2024-06 | ✅ | ✅ | ✅ | ❌ | ✅ | 1M |
| GPT-4.5 | 2025-02 | 2023-10 | ? | ? | ? | ? | ? | ? |
| GPT-4o | 2024-05 | 2023-10 | ✅ | ✅ | ✅ | ❌ | ✅ | 128k |
| o1 | 2024-09 | 2023-10 | ✅ | ❌ | ✅ | ✅ | ✅ | 200k |
| o3 | 2025-04 | 2024-06 | ✅ | ✅ | ✅ | ✅ | ✅ | 200k |
| o3-mini | 2025-01 | 2023-10 | ❌ | ❌ | ✅ | ✅ | ✅ | 200k |
| o4-mini | 2025-04 | 2024-06 | ✅ | ✅ | ✅ | ✅ | ✅ | 200k |
| Claude Opus 4 | 2025-05 | 2025-03 | ✅ | ✅ | ✅ | ✅ | ✅ | 200k |
| Claude Sonnet 3.5 | 2024-06 | 2024-04 | ✅ | ✅ | ✅ | ❌ | ✅ | 200k |
| Claude Sonnet 3.7 | 2025-02 | 2024-11 | ✅ | ✅ | ✅ | ❌ | ✅ | 200k |
| Claude Sonnet 3.7 Thinking | 2025-02 | 2024-11 | ✅ | ✅ | ✅ | ✅ | ✅ | 200k |
| Claude Sonnet 4 | 2025-04 | 2025-03 | ✅ | ✅ | ✅ | ✅ | ✅ | 200k |
| Gemini 2.5 Pro | 2025-06 | 2025-01 | ✅ | ✅ | ✅ | ✅ | ✅ | 1M |
| Gemini 2.0 Flash | 2025-02 | 2024-08 | ✅ | ✅ | ✅ | ✅ | ✅ | 1M |
Légende : ✅ = mode disponible, ❌ = mode non disponible
Sources : https://platform.openai.com/docs/models, https://openai.com/index/new-tools-and-features-in-the-responses-api/, https://docs.anthropic.com/en/docs/about-claude/models/overview#model-comparison-table, https://docs.anthropic.com/en/docs/agents-and-tools/tool-use/web-search-tool , https://ai.google.dev/gemini-api/docs/models, https://ai.google.dev/gemini-api/docs/function-calling
200 000 tokens = 30 000 à 50 000 lignes de code…
C’est bien plus qu’il n’en faut pour couvrir un projet complet, non ?
Non 😅
Source: https://lmarena.ai/
Accès illimité pour les licences payantes. À utiliser en priorité pour les tâches "simples".
Ctrl + Shift + PGitHub Copilot: Review and Comment
Source : https://x.com/AniBaddepudi/status/1905339694600339510
GitHub Copilot: Build Local Workspace IndexCtrl + Shift + P)
@workspace / #codebase en mode Ask