Skip to main content

Utilisation de compétences personnalisées avec le Kit de développement logiciel (SDK) Copilot

Utilisez des aptitudes pour étendre les fonctionnalités de Copilot avec des modules d'invite réutilisables.

Qui peut utiliser cette fonctionnalité ?

SDK GitHub Copilot est disponible dans tous les forfaits Copilot.

Remarque

          Kit de développement logiciel (SDK) Copilot est actuellement en préversion technique. Les fonctionnalités et la disponibilité sont susceptibles de changer.

Les compétences sont des modules d’invite réutilisables qui étendent Copilotles fonctionnalités. Chargez des compétences à partir de répertoires pour fournir Copilot des capacités spécialisées pour des domaines ou des flux de travail spécifiques.

Une compétence est un répertoire nommé contenant un fichier SKILL.md, un document markdown qui fournit des instructions à Copilot. Lors du chargement, le contenu de la compétence est injecté dans le contexte de session.

Les compétences vous permettent de :

  • Emballer l'expertise du domaine en modules réutilisables
  • Partager des comportements spécialisés entre les projets
  • Organiser des configurations d’agent complexes
  • Activer/désactiver des fonctionnalités par session

Compétences de chargement

Spécifiez des répertoires contenant des compétences lors de la création d’une session :

import { CopilotClient } from "@github/copilot-sdk";

const client = new CopilotClient();
const session = await client.createSession({
    model: "gpt-4.1",
    skillDirectories: [
        "./skills/code-review",
        "./skills/documentation",
    ],
    onPermissionRequest: async () => ({ kind: "approved" }),
});

// Copilot now has access to skills in those directories
await session.sendAndWait({ prompt: "Review this code for security issues" });

Pour obtenir des exemples dans Python, Go et .NET, consultez le github/copilot-sdk référentiel.

Désactivation des fonctionnalités

Désactivez des compétences spécifiques tout en gardant les autres actifs :

const session = await client.createSession({
    skillDirectories: ["./skills"],
    disabledSkills: ["experimental-feature", "deprecated-tool"],
});

Pour obtenir des exemples dans Python, Go et .NET, consultez le github/copilot-sdk référentiel.

Structure du répertoire de compétences

Chaque compétence est un sous-répertoire nommé contenant un SKILL.md fichier :

skills/
├── code-review/
│   └── SKILL.md
└── documentation/
    └── SKILL.md

L’option skillDirectories pointe vers le répertoire parent (par exemple, ./skills). L’interface CLI découvre tous les SKILL.md fichiers dans les sous-répertoires immédiats.

format SKILL.md

Un SKILL.md fichier est un document Markdown avec un frontmatter YAML facultatif :

---
name: code-review
description: Specialized code review capabilities
---

# Code Review Guidelines

When reviewing code, always check for:

1. **Security vulnerabilities**—SQL injection, XSS, etc.
2. **Performance issues**—N+1 queries, memory leaks
3. **Code style**—Consistent formatting, naming conventions
4. **Test coverage**—Are critical paths tested?

Provide specific line-number references and suggested fixes.

Champs frontmatter : * ** name **—Identificateur de la compétence (utilisé avec disabledSkills pour le désactiver de manière sélective). S’il est omis, le nom du répertoire est utilisé. * ** description **— Brève description de ce que fait la compétence.

Le corps du markdown contient les instructions qui sont injectées dans le contexte de session lorsque la fonctionnalité est chargée.

Options de configuration

Champs de compétence SessionConfig

Lorsque vous appelez createSession(), transmettez ces champs liés aux compétences dans l’objet de configuration de session :

LanguageChampTypeDescription
Node.JSskillDirectoriesstring[]Répertoires à partir duquel charger des compétences
Node.JSdisabledSkillsstring[]Compétences à désactiver
Pythonskill_directorieslist[str]Répertoires à partir duquel charger des compétences
Pythondisabled_skillslist[str]Compétences à désactiver
AllezSkillDirectories[]stringRépertoires à partir duquel charger des compétences
AllezDisabledSkills[]stringCompétences à désactiver
.NETSkillDirectoriesList<string>Répertoires à partir duquel charger des compétences
.NETDisabledSkillsList<string>Compétences à désactiver

Bonnes pratiques

  •         **Organiser par domaine** : regrouper les compétences associées (par exemple, `skills/security/`, `skills/testing/`)
    
  •         **Utiliser frontmatter** : inclure `name` et `description` in YAML frontmatter pour plus de clarté
    
  •         **Dépendances de document** : notez tous les outils ou serveurs MCP dont une compétence nécessite
    
  •         **Tester les compétences en isolation** : vérifier le fonctionnement des compétences avant de les combiner
    
  •         **Utiliser des chemins relatifs** : assurer la portabilité des compétences dans les environnements
    

Combinaison avec d’autres fonctionnalités

Compétences avec des agents personnalisés

Les compétences fonctionnent avec des agents personnalisés :

const session = await client.createSession({
    skillDirectories: ["./skills/security"],
    customAgents: [{
        name: "security-auditor",
        description: "Security-focused code reviewer",
        prompt: "Focus on OWASP Top 10 vulnerabilities",
    }],
    onPermissionRequest: async () => ({ kind: "approved" }),
});

Compétences avec des serveurs MCP

Les compétences peuvent compléter les fonctionnalités du serveur MCP :

const session = await client.createSession({
    skillDirectories: ["./skills/database"],
    mcpServers: {
        postgres: {
            type: "local",
            command: "npx",
            args: ["-y", "@modelcontextprotocol/server-postgres"],
            tools: ["*"],
        },
    },
    onPermissionRequest: async () => ({ kind: "approved" }),
});

Résolution des problèmes

Compétences qui ne sont pas chargées

  1.        **Vérifier l'existence du chemin**—Vérifiez que le chemin d'accès au répertoire de compétences est correct et qu'il contient des sous-répertoires avec `SKILL.md` fichiers.
    
  2.        **Vérifiez les autorisations : vérifiez** que le Kit de développement logiciel (SDK) peut lire le répertoire.
    
  3.        **Vérifiez le format de SKILL.md**—Assurez-vous que le Markdown est bien formé et que tout frontmatter YAML utilise une syntaxe valide.
    
  4.        **Activer la journalisation du débogage** : définissez `logLevel: "debug"` pour afficher les journaux de chargement des compétences.
    

Conflits de compétences

Si plusieurs compétences fournissent des instructions contradictoires :

  • Utiliser disabledSkills pour exclure les compétences en conflit
  • Réorganiser les répertoires de compétences pour éviter les chevauchements