Skip to main content

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

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

Обзор

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

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

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

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

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

Языки кода navigation

TypeScript
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: "approve-once" }),
});

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

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

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

Языки кода navigation

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

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

Каждый навык представляет собой именованный подкаталог, содержащий 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

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

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

  1. Организовать по домену — сгруппировать связанные навыки вместе (например, skills/security/, skills/testing/)

  2. Используйте frontmatter — включите name``description и включите в YAML frontmatter для ясности

  3. Зависимости документов — обратите внимание на любые инструменты или MCP-серверы, требуемые для навыка

  4. Проверяйте навыки по отдельности — проверяйте работу навыков перед их объединением

  5. Используйте относительные пути — Сохраняйте навыки в разных условиях

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

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

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

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

Примечание.

Навыки — это опция по выбору — если skills их опускают, контент навыков не вводится. Субагенты не наследуют навыки от родителя; Вы должны указывать их явно для каждого агента.

Навыки + 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: "approve-once" }),
});

Troubleshooting

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

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

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

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

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

См. также