Configuration LSP pour GitHub Copilot CLI
SKILL UTILITAIRE — installe et configure les serveurs Language Server Protocol pour Copilot CLI. À UTILISER POUR : "setup LSP", "install language server", "configure LSP for Java", "add TypeScript LSP", "enable code intelligence", "I need go-to-definition", "find references not working", "need better code understanding" À NE PAS UTILISER POUR : tâches de codage général, configuration LSP IDE/éditeur, configurations non-Copilot-CLI
Workflow
- Demander le langage — utiliser
ask_userpour demander le(s) langage(s) de programmation pour lequel(s) l'utilisateur veut le support LSP - Détecter l'OS — exécuter
uname -s(ou vérifier Windows via$env:OS/%OS%) pour déterminer macOS, Linux ou Windows - Chercher le serveur LSP — lire
references/lsp-servers.mdpour connaître les serveurs disponibles, les commandes d'installation et les extraits de configuration - Demander la portée — utiliser
ask_userpour demander si la config doit être au niveau utilisateur (~/.copilot/lsp-config.json) ou au niveau dépôt (lsp.jsonà la racine du dépôt ou.github/lsp.json) - Installer le serveur — exécuter la commande d'installation appropriée pour l'OS détecté
- Écrire la configuration — fusionner la nouvelle entrée serveur dans le fichier de config choisi (
~/.copilot/lsp-config.jsonpour le niveau utilisateur ;lsp.jsonou.github/lsp.jsonpour le niveau dépôt). Si une config au niveau dépôt existe déjà, continuer à utiliser cette localisation ; sinon demander à l'utilisateur quelle localisation au niveau dépôt il préfère. Créer le fichier s'il manque et préserver les entrées existantes. - Vérifier — confirmer que le binaire LSP est sur
$PATHet que le fichier de config est un JSON valide
Format de configuration
Copilot CLI lit la configuration LSP depuis les localisations au niveau utilisateur ou au niveau dépôt, et la config au niveau dépôt prend la priorité sur la config au niveau utilisateur :
- Niveau utilisateur :
~/.copilot/lsp-config.json - Niveau dépôt :
lsp.json(racine du dépôt) ou.github/lsp.json
La structure JSON :
{
"lspServers": {
"<server-key>": {
"command": "<binary>",
"args": ["--stdio"],
"fileExtensions": {
".<ext>": "<languageId>",
".<ext2>": "<languageId>"
}
}
}
}
Règles clés
commandest le nom du binaire (doit être sur$PATH) ou un chemin absolu.argsinclut presque toujours"--stdio"pour utiliser le transport d'entrée/sortie standard.fileExtensionsmappe chaque extension de fichier (avec le point en début) à un Language ID.- Plusieurs serveurs peuvent coexister dans
lspServers. - Lors de la fusion dans un fichier existant, ne jamais écraser les autres entrées serveur — ajouter ou mettre à jour uniquement la clé du langage cible.
Comportement
- Toujours utiliser
ask_useravecchoicesquand demander à l'utilisateur de choisir un langage ou une portée. - Si le langage n'est pas listé dans
references/lsp-servers.md, chercher sur le web "<language> LSP server" et guider l'utilisateur à travers la configuration manuelle. - Si un gestionnaire de paquets n'est pas disponible (par ex. pas de Homebrew sur macOS), suggérer les méthodes d'installation alternatives du fichier de référence.
- Après l'installation, exécuter
which <binary>(ouwhere.exesur Windows) pour confirmer que le binaire est accessible. - Montrer à l'utilisateur le JSON de configuration final avant de l'écrire.
- Si le fichier de config existe déjà, le lire d'abord et fusionner — ne pas l'écraser.
Vérification
Après la configuration, dire à l'utilisateur :
- Taper
/exitpour quitter Copilot CLI — ceci est obligatoire pour que la nouvelle configuration LSP soit chargée au prochain lancement - Relancer
copilotdans un projet contenant des fichiers du langage configuré - Exécuter
/lsppour vérifier l'état du serveur - Essayer les fonctionnalités d'intelligence de code comme la navigation vers la définition ou le survol