Skip to main content

Использование кастомных навыков с помощью Copilot SDK

Используйте навыки для расширения Copilotвозможностей с помощью многоразовых модулей подсказок.

Кто может использовать эту функцию?

GitHub Copilot SDK Доступна со всеми Copilot тарифными планами.

Примечание.

          Второй пилот SDK в настоящее время находится в Technical Preview. Функциональность и доступность могут меняться.

Навыки — это повторно используемые модули подсказок, расширяющие Copilotвозможности . Загружайте навыки из каталогов, чтобы предоставить Copilot специализированные способности для конкретных областей или рабочих процессов.

Навык — это именованный каталог, содержащий SKILL.md файл — документ markdown, который предоставляет инструкции для Copilot. При загрузке содержимое навыка вводится в контекст сессии.

Навыки позволяют вам:

  • Экспертиза в области упаковки в повторно используемые модули
  • Делитесь специализированными поведением между проектами
  • Организовывать сложные конфигурации агентов
  • Включать/отключать возможности за сессию

Навыки загрузки

При создании сессии указывайте каталоги, содержащие навыки:

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" });

Примеры в Python, Go и .NET см. репозиторийgithub/copilot-sdk.

Навыки отключения

Отключите определённые навыки, сохраняя активность других:

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

Примеры в Python, Go и .NET см. репозиторийgithub/copilot-sdk.

Структура каталога навыков

Каждый навык представляет собой именованный подкаталог, содержащий SKILL.md файл:

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

Опция skillDirectories указывает на родительский каталог (например, ./skills). CLI обнаруживает все SKILL.md файлы в немедленных подкаталогах.

формат SKILL.md

Файл SKILL.md — это документ markdown с опциональной YAML-фронтматерью:

---
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.

Фронтматтерные поля: * ** name **—Идентификатор навыка (используется для disabledSkills выборочного отключения). Если оно опущено, используется имя каталога. * ** description **— Краткое описание того, что делает этот навык.

Тело markdown содержит инструкции, которые вводятся в контекст сессии при загрузке навыка.

Параметры конфигурации

Поля навыков SessionConfig

Когда вы вызываете createSession(), передайте следующие поля, связанные с навыками, в объекте конфигурации сессии:

ЯзыкПолеТипОписание
Node.jsskillDirectoriesstring[]Каталоги для загрузки навыков
Node.jsdisabledSkillsstring[]Навыки для отключения
Pythonskill_directorieslist[str]Каталоги для загрузки навыков
Pythondisabled_skillslist[str]Навыки для отключения
ВпередSkillDirectories[]stringКаталоги для загрузки навыков
ВпередDisabledSkills[]stringНавыки для отключения
.NETSkillDirectoriesList<string>Каталоги для загрузки навыков
.NETDisabledSkillsList<string>Навыки для отключения

Лучшие практики

  •         **Организовывать по домену** — объединять связанные навыки (например, `skills/security/`, `skills/testing/`)
    
  •         **Используйте frontmatter** — включите `name` и `description` в YAML frontmatter для ясности
    
  •         **Зависимости от документов** — Обратите внимание на любые инструменты или MCP-серверы, требуемые для навыка
    
  •         **Проверяйте навыки по отдельности** — проверяйте работу навыков перед их объединением
    
  •         **Используйте относительные пути** — сохраняйте навыки в разных условиях
    

Объединение с другими особенностями

Навыки работы с кастомными агентами

Навыки работают вместе с кастомными агентами:

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" }),
});

Навыки работы с MCP-серверами

Навыки могут дополнять возможности 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" }),
});

Troubleshooting

Навыки не загружаются

  1.        **Существует путь Check** — проверьте правильный путь в каталоге навыков и содержит подкаталоги с `SKILL.md` файлами.
    
  2.        **Проверьте права** — убедитесь, что SDK может читать каталог.
    
  3.        **Проверьте SKILL.md формат** — убедитесь, что markdown хорошо сформирован и любой фронтмат YAML использует корректный синтаксис.
    
  4.        **Включите логирование отладки** — установите `logLevel: "debug"` просмотр логов загрузки навыков.
    

Конфликты навыков

Если несколько навыков дают противоречивые инструкции:

  • Используйте disabledSkills для исключения конфликтующих навыков
  • Реорганизуйте каталоги навыков, чтобы избежать пересечений