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 :
| Language | Champ | Type | Description |
|---|---|---|---|
| Node.JS | skillDirectories | string[] | Répertoires à partir duquel charger des compétences |
| Node.JS | disabledSkills | string[] | Compétences à désactiver |
| Python | skill_directories | list[str] | Répertoires à partir duquel charger des compétences |
| Python | disabled_skills | list[str] | Compétences à désactiver |
| Allez | SkillDirectories | []string | Répertoires à partir duquel charger des compétences |
| Allez | DisabledSkills | []string | Compétences à désactiver |
| .NET | SkillDirectories | List<string> | Répertoires à partir duquel charger des compétences |
| .NET | DisabledSkills | List<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
-
**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. -
**Vérifiez les autorisations : vérifiez** que le Kit de développement logiciel (SDK) peut lire le répertoire. -
**Vérifiez le format de SKILL.md**—Assurez-vous que le Markdown est bien formé et que tout frontmatter YAML utilise une syntaxe valide. -
**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
disabledSkillspour exclure les compétences en conflit - Réorganiser les répertoires de compétences pour éviter les chevauchements