- Дата публикации
GitHub Copilot Custom Skills: как превратить рутины разработчика в исполняемые сценарии ИИ
Что нового
GitHub добавил в Copilot новый уровень кастомизации — Custom Skills. Это не просто подсказки в редакторе, а полноценные сценарии, которые Copilot может запускать сам по себе по одному текстовому запросу.
Что именно появилось:
- Навык как папка в репозитории: каждый skill — это каталог с файлом
SKILL.mdи дополнительными скриптами, шаблонами, конфигами. - Единый формат SKILL.md: YAML-фронтматтер + подробная инструкция, когда и как запускать процедуру.
- Автоматический запуск по фразе: Copilot читает описание навыка и подгружает его, когда запрос в чате совпадает с триггерными фразами.
- Автономное выполнение пайплайнов: Copilot сам переходит в нужную папку, запускает скрипты, подставляет аргументы и собирает результат.
- Открытый стандарт Agent Skills: один и тот же навык работает в:
- GitHub Copilot в VS Code (чат и Agent mode),
- GitHub Copilot CLI,
- GitHub Copilot coding agent,
- совместимых агентах вроде Claude Code и Gemini CLI через
.claude/skills/и.agents/skills/.
- Интеграция со слэш-командами: все навыки автоматически появляются как команды
/skill-nameв Copilot Chat. - Быстрое создание навыков: команда
/create-skillв чате генерирует структуру папок иSKILL.mdпо текстовому описанию. - Гранулярный контроль загрузки: параметры
user-invocableиdisable-model-invocationв фронтматтере управляют, когда навык доступен и как его можно вызвать. - Поддержка нескольких мест хранения: навыки могут быть проектными (в репозитории) или персональными (в домашней директории), плюс настраиваемые пути через
chat.skillsLocationsв VS Code.
Цифр по скорости или цене Microsoft не приводит, но в примере типичная рутина на 15–30 минут превращается в один запрос к Copilot с выполнением за пару минут.
Как это работает
Базовая идея: SKILL.md — это контракт между вами и Copilot. Вы описываете процедуру, Copilot orchestration берёт на себя.
Структура навыка
Навык — это папка, например:
.github/skills/my-skill/
├── SKILL.md # Инструкции (обязательно)
└── references/
├── resources/
│ ├── run.py # Скрипт автоматизации
│ ├── query-template.sql # Шаблон запроса
│ └── config.yaml # Конфиг
└── reports/
└── report_template.html # Шаблон отчёта
``
Ключевой файл — `SKILL.md`. У него фиксированная структура:
```markdown
---
name: my-skill
description: 'What this does and when to use it. Include trigger
phrases so Copilot knows when to load it. USE FOR: specific
task A, task B. Trigger phrases: "keyword1", "keyword2".'
argument-hint: 'What inputs the user should provide.'
---
# My Skill
## When to Use
- Situation A
- Situation B
## Quick Start
```powershell
cd .github/skills/my-skill/references/resources
py run.py <arg1> <arg2>
What It Does
| Step | Action | Purpose | |------|--------|---------| | 1 | Fetch data from source | Gather raw input | | 2 | Process and transform | Apply business logic | | 3 | Generate report | Produce actionable output |
Output
Description of what the user gets back.
### Как Copilot находит и загружает навыки
Загрузка идёт по шагам:
1. **Сканирование навыков**. Copilot просматривает только `name` и `description` у всех доступных `SKILL.md`. Это примерно 100 токенов на навык.
2. **Описание = поиск**. Поле `description` — единственный источник, по которому Copilot решает, подходит ли навык под запрос. Поэтому туда нужно упаковать ключевые слова и триггерные фразы.
3. **Прогрессивная загрузка**:
- сначала — только `name` и `description`;
- если навык подходит — Copilot загружает полный текст `SKILL.md`;
- файлы из `references/` он читает только тогда, когда процедура явно их использует.
4. **Исполнение**. Copilot в Agent mode запускает команды, описанные в `SKILL.md`: заходит в нужную директорию, вызывает Python/Node/.NET/CLI, читает конфиги и шаблоны, формирует результат.
Copilot не «угадывает» команды. Он следует инструкции в `SKILL.md`. Скрипты выполняют тяжёлую работу, ИИ управляет последовательностью действий.
### Технические требования
Чтобы всё это работало, нужно:
- **VS Code** — актуальная стабильная версия.
- **GitHub Copilot** — активная подписка (Individual, Business или Enterprise).
- **Agent mode** — в панели Copilot Chat нужно выбрать режим Agent (в новых версиях он по умолчанию).
- **Рантайм-инструменты** — всё, что используют ваши скрипты: Python, Node.js, .NET CLI, `az` CLI и т.д.
Сами навыки не требуют дополнительных расширений или облачных сервисов — это просто файлы в репозитории или в пользовательской директории.
---
## Что это значит для вас
### Какие задачи закрывает
Custom Skills полезны везде, где вы повторяете одни и те же многошаговые сценарии:
- **CLI-рутина**: последовательность команд, чтение вывода, ручной разбор JSON, формирование отчёта.
- **Интеграции с API**: запросы к нескольким сервисам, склейка данных, сводка результатов.
- **Тестирование**: запуск тестов, анализ падений, сравнение с предыдущим прогоном, отчёт с приоритизацией.
- **DevOps и SRE-процедуры**: health-check после деплоя, валидация конфигураций, поиск дрейфа инфраструктуры.
- **Отчётность**: релиз-ноты, отчёты по безопасности, анализ затрат в облаке.
Раньше вы хранили это в wiki или runbook и каждый раз копировали команды вручную. Теперь вы описываете процедуру один раз в `SKILL.md`, и Copilot запускает её по фразе в духе: «проверь здоровье деплоя staging».
### Когда это особенно полезно
- У вас **команда**, и вы хотите, чтобы все делали сложные операции одинаково. Навык живёт в `.github/skills` и версионируется вместе с кодом.
- У вас **много рутинных проверок**: регрессия, безопасность, перфоманс, инфраструктура. Каждую можно упаковать в отдельный skill.
- Вы **часто обучаете новичков**: вместо устных инструкций даёте им набор навыков, которые Copilot может выполнять и объяснять по ходу.
### Когда не стоит заморачиваться
- Задача разовая и вряд ли повторится.
- Процедура постоянно меняется, и вы не готовы поддерживать `SKILL.md` и скрипты в актуальном состоянии.
- Вы почти не пользуетесь Copilot Chat или Agent mode и не планируете менять процесс.
### Доступность из России
GitHub Copilot официально недоступен для аккаунтов из России. Для работы с Custom Skills нужен активный Copilot, так что без обходных путей (VPN, аккаунты в других регионах, корпоративные подписки через зарубежные юрлица) вы их не запустите.
---
## Место на рынке
Custom Skills — это часть экосистемы «агентов» вокруг GitHub Copilot.
На уровне рынка это конкурирует с:
- **Claude Code** (Anthropic) — поддерживает тот же формат навыков через `.claude/skills/`.
- **Gemini CLI** (Google) — совместим через `.agents/skills/`.
- **GitHub Copilot CLI и coding agent** — используют тот же стандарт.
Чётких цифр по скорости или стоимости относительно GPT-4o, Claude 3.5 или Gemini 1.5 Microsoft не приводит. Главное отличие — не в качестве модели, а в **стандарте описания процедур**, который работает сразу в нескольких инструментах.
Если вы уже живёте в экосистеме GitHub и VS Code, Custom Skills логично использовать как «формат runbook’ов», который умеет выполнять Copilot. Если вы строите процессы вокруг других ассистентов, плюс в том, что формат открытый и поддерживается не только Copilot.
---
## Как запустить: пример навыка для health-check деплоя
Разберём полноценный пример из Microsoft: навык, который проверяет здоровье деплоя, опрашивает health-эндпоинты, сравнивает задержки с базовыми значениями и генерирует HTML-отчёт.
### Шаг 1 — структура папок
```text
.github/skills/deployment-health/
├── SKILL.md
└── references/
└── resources/
├── check_health.py
└── endpoints.yaml
Шаг 2 — содержимое SKILL.md
---
name: deployment-health
description: 'Check deployment health across environments. Queries
health endpoints, compares response times against baselines, and
flags degraded services. USE FOR: deployment validation, health
check, post-deploy verification, service status. Trigger phrases:
"check deployment health", "is the deployment healthy",
"post-deploy check", "service health".'
argument-hint: 'Provide the environment name (e.g., staging, production).'
---
# Deployment Health Check
## When to Use
- After deploying to any environment
- During incident triage to check service status
- Scheduled spot checks
## Quick Start
```bash
cd .github/skills/deployment-health/references/resources
python check_health.py <environment>
What It Does
- Loads endpoint definitions from
endpoints.yaml - Calls each endpoint, records response time and status code
- Compares against baseline thresholds
- Generates an HTML report with pass/fail status
Output
HTML report at references/reports/health_<environment>_<date>.html
Здесь видно несколько важных моментов:
- В `description` зашиты **конкретные триггерные фразы**: `"check deployment health"`, `"post-deploy check"`, `"service health"`.
- `argument-hint` подсказывает, что от пользователя нужен один аргумент — имя окружения.
- В разделе **Quick Start** есть точная команда, которую Copilot будет повторять.
### Шаг 3 — скрипт `check_health.py`
```python
# check_health.py
import sys, yaml, requests, time, json
from datetime import datetime
def main():
env = sys.argv[1]
with open("endpoints.yaml") as f:
config = yaml.safe_load(f)
results = []
for ep in config["endpoints"]:
url = ep["url"].replace("{env}", env)
start = time.time()
resp = requests.get(url, timeout=10)
elapsed = time.time() - start
results.append({
"service": ep["name"],
"status": resp.status_code,
"latency_ms": round(elapsed * 1000),
"threshold_ms": ep["threshold_ms"],
"healthy": resp.status_code == 200 and elapsed * 1000 < ep["threshold_ms"]
})
healthy = sum(1 for r in results if r["healthy"])
print(f"Health check: {healthy}/{len(results)} services healthy")
# ... generate HTML report ...
if __name__ == "__main__":
main()
Copilot не переписывает этот код. Он просто запускает его с нужным аргументом, считывает вывод и может на основе него сформировать резюме в чате.
Шаг 4 — запуск навыка через Copilot
Дальше всё выглядит так:
- Вы открываете VS Code, включаете Agent mode.
- В Copilot Chat пишете:
Check deployment health for staging. - Copilot:
- сопоставляет запрос с описанием
deployment-health; - загружает
SKILL.md; - выполняет команды из раздела Quick Start:
python check_health.py stagingв нужной папке; - открывает сгенерированный отчёт;
- резюмирует результат в чате.
- сопоставляет запрос с описанием
Примеры полезных навыков
Custom Skills не привязаны к конкретной доменной области. Microsoft приводит несколько типовых паттернов:
| Skill | Что автоматизирует | |-------|---------------------| | Test Regression Analyzer | Запускает тесты, парсит падения, сравнивает с последним успешным прогоном, генерирует diff-отчёт | | API Contract Checker | Сравнивает OpenAPI-спеки между ветками, подсвечивает ломающие изменения | | Security Scan Reporter | Запускает SAST/DAST, объединяет результаты, формирует приоритизированный отчёт | | Cost Analysis | Запрашивает биллинг-API облака, сравнивает затраты по периодам, ищет аномалии | | Release Notes Generator | Парсит git log между тегами, классифицирует изменения, генерирует changelog | | Infrastructure Drift Detector | Сравнивает живое состояние инфраструктуры с IaC-шаблонами, ищет дрейф | | Log Pattern Analyzer | Ходит в систему логов, находит аномальные паттерны, делает сводку | | Performance Benchmarker | Запускает бенчмарки, сравнивает с базовыми значениями, отмечает деградации | | Dependency Auditor | Сканирует зависимости, ищет уязвимости и устаревшие пакеты |
Общий шаблон: инструкции в SKILL.md + скрипты автоматизации + шаблон отчёта.
Где хранить навыки
Навыки могут быть общими для проекта или личными.
Проектные навыки (делятся с командой)
Хранятся в репозитории и попадают в Git:
.github/skills/<name>/
.agents/skills/<name>/
.claude/skills/<name>/
Они доступны всем, кто работает с этим репо.
Персональные навыки
Живут в домашней директории разработчика и не шарятся с командой:
~/.copilot/skills/<name>/
~/.agents/skills/<name>/
~/.claude/skills/<name>/
VS Code позволяет добавить дополнительные пути к навыкам через настройку chat.skillsLocations.
Как правильно писать SKILL.md
Делайте
- Набивайте
descriptionключевыми словами. Это единственное поле, по которому Copilot решает, какой навык ему нужен. - Пишите точные команды:
cd path/to/dir && python script.py <args>. - Чётко описывайте вход и выход: какие аргументы нужны, какие файлы или отчёты появятся.
- Используйте таблицы для многошаговых процедур — ИИ проще следовать структурированному плану.
- Добавляйте заметки по таймзонам, если работаете со временем.
- Кладите HTML-шаблоны отчётов в
references/reports— визуальный вывод лучше сухого текста.
Не делайте
- Не пишите расплывчатые описания вроде
A useful skill— Copilot не поймёт, когда его вызывать. - Не полагайтесь на «контекст» — указывайте все пути, переменные окружения, prereqs.
- Не тащите большие файлы в
SKILL.md— складывайте их вreferences/. - Не хардкодьте секреты — используйте переменные окружения или, например, Azure Key Vault.
- Не забывайте про ошибки — опишите типичные фейлы и что с ними делать.
Управление загрузкой навыков
Через фронтматтер в SKILL.md можно тонко настроить поведение навыка:
- По умолчанию (оба флага отсутствуют):
- навык доступен как слэш-команда;
- Copilot может подгружать его автоматически, когда запрос подходит по смыслу.
user-invocable: false:- навык не доступен как
/команда; - Copilot может использовать его как фоновое знание.
- навык не доступен как
disable-model-invocation: true:- навык можно вызвать только явно пользователем;
- Copilot сам его не подгрузит по смыслу запроса.
- Оба флага включены:
- навык по сути выключен.
Это полезно, если вы хотите, чтобы какие-то навыки работали только по прямой команде или наоборот — тихо помогали модели в фоне.
Быстрое создание и слэш-команды
Каждый навык автоматически превращается в слэш-команду в Copilot Chat:
deployment-health→/deployment-health.
Можно сразу передавать аргументы:
/deployment-health staging/webapp-testing for the login page
Для быстрого старта есть команда /create-skill. Вы описываете задачу словами, Copilot задаёт уточняющие вопросы и генерирует:
SKILL.mdс корректным фронтматтером;- структуру папок;
- при желании — наброски скриптов.
Ещё один сценарий — вы только что прошли сложный путь отладки в чате и говорите Copilot: create a skill from how we just debugged that. Он упакует весь разговор в многошаговую процедуру, которую потом можно запускать по запросу.
Как Custom Skills вписываются в настройку Copilot
Custom Skills — один из нескольких механизмов кастомизации поведения Copilot.
- Workspace Instructions (
.github/copilot-instructions.md) — общие правила для репозитория: кодстайл, архитектурные принципы. - File Instructions (
.github/instructions/*.instructions.md) — правила для конкретных типов файлов, например для всех*.test.ts. - Prompts (
.github/prompts/*.prompt.md) — одноразовые шаблоны задач с параметрами. - Skills (
.github/skills/<name>/SKILL.md) — многошаговые сценарии с кодом и шаблонами. - Custom Agents (
.github/agents/*.agent.md) — отдельные «саб-агенты» с ограниченным доступом к инструментам или многостадийными пайплайнами. - Hooks (
.github/hooks/*.json) — гарантированные shell-команды на события жизненного цикла агента (например, автоформатирование или блокировка определённых действий). - Plugins — отдельные пакеты навыков из сообщества (например,
awesome-copilot).
Custom Skills занимают нишу между простыми промптами и полноценными кастомными агентами: это именно исполняемые runbook’и.
Как начать
-
Создайте папку для навыка в репозитории:
.github/skills/<your-skill>/SKILL.md -
Напишите насыщенное ключевыми словами
descriptionв YAML-фронтматтере. -
Опишите процедуру и добавьте скрипты в
references/resourcesи шаблоны отчётов вreferences/reports. -
Откройте репозиторий в VS Code, включите Agent mode.
-
В Copilot Chat сформулируйте задачу обычным языком.
-
Посмотрите, как Copilot находит ваш навык, загружает инструкции и выполняет сценарий.
Если не хочется руками возиться со структурой, начните с /create-skill в чате и дайте Copilot текстовое описание задачи.
Custom Skills превращают документацию и runbook’и в исполняемые сценарии. Начните с самой болезненной рутины в вашем процессе, упакуйте её в SKILL.md и отдайте её Copilot.