Помимо единого репозиторного .github/copilot-instructions.md, GitHub Copilot поддерживает более гранулярный механизм — отдельные файлы .github/instructions/*.instructions.md с полем applyTo во frontmatter. Формат концептуально тот же, что и glob у Cursor Rules, но со своим синтаксисом и заметно меньшим количеством документации и сторонних инструментов вокруг.
Структура файла
---
description: Backend API conventions
applyTo: src/api/**/*.ts, src/routes/**/*.ts
---
Use dependency injection for services, not static imports.
Как applyTo соотносится с единым файлом инструкций
Оба механизма могут сосуществовать одновременно: единый copilot-instructions.md задаёт общие для всего репозитория правила, а path-specific instructions добавляют более узкий, специфичный для конкретной части кодовой базы контекст поверх общих.
| Механизм | Область действия | Синтаксис ограничения |
|---|---|---|
| copilot-instructions.md | Весь репозиторий | Нет ограничения по путям |
| *.instructions.md с applyTo | Конкретные пути файлов | Список паттернов через applyTo |
Почему этот формат менее покрыт документацией
Path-specific instructions появились позже единого файла instructions.md и пока не успели обрасти таким же количеством гайдов, линтеров и обсуждений в сообществе, как аналогичный, но более давний механизм у Cursor.
Частая проблема — неуказанный applyTo
Если поле applyTo не указано вообще, поведение по умолчанию зависит от конкретной версии интеграции Copilot и может измениться между релизами. Разумная практика — явно прописывать applyTo для каждого path-specific файла, а не полагаться на неявное поведение.
Как проверить, на каких путях сработает правило
Открывать десяток файлов и смотреть на реакцию Copilot — медленный способ отладки. Copilot Path-Specific Instructions (applyTo) Validator разбирает frontmatter и сразу показывает на списке тестовых путей, какие из них попадут под конкретное правило.
Итоговый чеклист
applyTo и copilot-instructions.md решают разные по масштабу задачи и рассчитаны на совместное использование, а не на замену одного другим.
Формат синтаксически похож на glob у Cursor Rules, но использует собственное имя поля и не переносится между инструментами без адаптации.
Явное указание applyTo надёжнее, чем расчёт на поведение по умолчанию, которое может отличаться между версиями Copilot.