Кастомні інструкції Copilot
Налаштування поведінки GitHub Copilot — copilot-instructions.md, prompt files та інструкції для генерації коду
📎ОФІЦІЙНА ДОКУМЕНТАЦІЯ
Навіщо потрібні кастомні інструкції?
Кастомні інструкції дозволяють налаштувати поведінку GitHub Copilot під стандарти вашого проєкту та команди. Замість того, щоб повторювати вимоги в кожному промпті, ви описуєте їх один раз у спеціальних файлах.
Кастомні інструкції працюють як додатковий системний промпт для Copilot. Вони застосовуються до Chat, Edits та Agent Mode.
copilot-instructions.md
Розташування
Основний файл кастомних інструкцій зберігається у корені репозиторію:
.github/copilot-instructions.md
Цей файл автоматично підвантажується Copilot при роботі з проєктом.
Структура файлу
# Copilot Instructions
## Загальні правила
- Пиши код на TypeScript з strict mode
- Використовуй функціональний стиль, уникай class-ів
- Всі функції повинні мати JSDoc документацію
- Обробляй помилки через custom Error classes
## Стиль коду
- Використовуй single quotes для строк
- Крапка з комою в кінці рядків
- Max 100 символів на рядок
- Prefer const над let
## React компоненти
- Використовуй функціональні компоненти
- Props описуй через interface, не type
- Використовуй named exports (не default)
- CSS через Tailwind CSS utility classes
## Тестування
- Framework: Vitest
- Assertions: expect().toBe() стиль
- Мокай зовнішні залежності через vi.mock()
- Кожен тест повинен тестувати одну річ
## API
- REST API з валідацією через Zod
- Відповіді завжди повертають { data, error, meta }
- HTTP коди: 200, 201, 400, 401, 403, 404, 500
- Пагінація: cursor-based
Приклад для Python-проєкту
# Copilot Instructions
## Python стандарти
- Python 3.12+
- Type hints обов'язкові для всіх функцій
- Docstrings у Google стилі
- Форматування: black, лінтинг: ruff
## Архітектура
- Clean Architecture з чіткими шарами
- Domain layer не залежить від infrastructure
- Dependency Injection через конструктор
## Тестування
- pytest з fixtures
- Тестова БД через testcontainers
- Мінімум 80% coverage для нового коду
Prompt Files
Prompt Files — це багаторазові шаблони промптів для поширених задач. Вони дозволяють стандартизувати підходи у команді.
Розташування
.github/prompts/
create-component.prompt.md
write-tests.prompt.md
code-review.prompt.md
create-api.prompt.md
Створення prompt file
Файл: .github/prompts/create-component.prompt.md
# Create React Component
Create a new React component following these rules:
1. Use functional component with TypeScript
2. Define Props interface with JSDoc for each prop
3. Use named export
4. Add Storybook story in ComponentName.stories.tsx
5. Add unit test in ComponentName.test.tsx
6. Use Tailwind CSS for styling
7. Include aria-labels for accessibility
## File structure:
src/components// .tsx .test.tsx .stories.tsx index.ts (barrel export)
## Template:
```tsx
import { type FC } from 'react';
/** Props for {ComponentName} */
interface {ComponentName}Props {
/** Description of prop */
propName: string;
}
/** Brief description of what the component does */
export const {ComponentName}: FC<{ComponentName}Props> = ({ propName }) => {
return (
<div role="..." aria-label="...">
{/* Implementation */}
</div>
);
};
### Використання prompt files
У Copilot Chat просто посилайтесь на prompt file:
Використай промпт create-component для створення компонента SearchBar з пропсами: placeholder (string), onSearch (callback), isLoading (boolean)
## Code Generation Instructions
### VS Code Settings
Інструкції також можна задати через налаштування VS Code:
```json
// .vscode/settings.json
{
"github.copilot.chat.codeGeneration.instructions": [
{
"text": "Always use TypeScript strict mode"
},
{
"text": "Use Vitest for testing, not Jest"
},
{
"file": ".github/copilot-instructions.md"
}
]
}
Test Generation Instructions
Окремі інструкції для генерації тестів:
{
"github.copilot.chat.testGeneration.instructions": [
{
"text": "Use Vitest with @testing-library/react. Include edge cases and error scenarios."
}
]
}
Review Instructions
Інструкції для code review:
{
"github.copilot.chat.reviewSelection.instructions": [
{
"text": "Focus on security, performance, and type safety. Flag any use of 'any' type."
}
]
}
Порівняння з CLAUDE.md
| Аспект | copilot-instructions.md | CLAUDE.md |
|---|---|---|
| Розташування | .github/copilot-instructions.md | CLAUDE.md (корінь) |
| Ієрархія | Один файл | Кілька рівнів (global, project, subdir) |
| Prompt files | Так (.github/prompts/) | Skills (.claude/skills/) |
| VS Code settings | Так | Ні (свій settings.json) |
| Формат | Markdown | Markdown |
Обидві системи вирішують однакову задачу — надання контексту AI-агенту. Якщо ви використовуєте і Copilot, і Claude Code, підтримуйте обидва файли актуальними, або створіть спільний документ і посилайтесь на нього.
Найкращі практики
- Комітьте інструкції — це частина стандартів проєкту
- Будьте конкретними — "Використовуй Vitest" замість "пиши тести"
- Оновлюйте регулярно — при зміні стеку або стандартів
- Тримайте стислим — 50-150 рядків достатньо
- Тестуйте ефект — перевірте, чи Copilot дотримується інструкцій
Повне налаштування Copilot у VS Code
Порівняйте з системою конфігурації Claude Code