Введение
GitHub Copilot, изначально запущенный как инструмент для автодополнения кода, к середине 2026 года превратился в полноценного AI-ассистента, встроенного в рабочий процесс разработчика. Однако многие инженеры по-прежнему используют Copilot лишь для генерации простых фрагментов кода, игнорируя его возможности в области документирования, оптимизации, ревью и написания коммитов. В этой статье мы собрали 20 проверенных промтов, которые помогут вам выжать максимум из Copilot — от написания осмысленных сообщений к коммитам до глубокого анализа кода в пулл-реквестах.
Категория 1: Базовые промты — каждый день
Эти промты подойдут для повседневных задач: написание документации, комментариев, простых функций.
1.1 Генерация комментариев для функции
Задача: Создать подробные комментарии для существующей функции.
Промт: Explain this function step by step, add JSDoc comments for each parameter and return value.
Пример результата:
/**
* Calculates the total price after applying a discount.
* @param {number} price - Original price before discount.
* @param {number} discount - Discount percentage (0-100).
* @returns {number} Final price after discount.
*/
function applyDiscount(price, discount) {
return price - (price * discount) / 100;
}
1.2 Написание сообщения к коммиту
Задача: Сгенерировать осмысленное сообщение для коммита на основе изменений.
Промт: Write a concise, descriptive commit message for the following changes. Use conventional commits format (type: description).
Пример результата: fix: correct typo in user authentication error message
1.3 Генерация простой функции по описанию
Задача: Создать функцию, проверяющую, является ли строка палиндромом.
Промт: Write a function that checks if a string is a palindrome. Use TypeScript.
Пример результата:
function isPalindrome(str: string): boolean {
const cleaned = str.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
return cleaned === cleaned.split('').reverse().join('');
}
1.4 Написание тестов для функции
Задача: Создать unit-тесты для функции applyDiscount.
Промт: Write Jest tests for the applyDiscount function. Include edge cases like negative discount.
Пример результата:
describe('applyDiscount', () => {
it('should apply 10% discount correctly', () => {
expect(applyDiscount(100, 10)).toBe(90);
});
it('should return original price for 0% discount', () => {
expect(applyDiscount(100, 0)).toBe(100);
});
it('should handle negative discount as increase', () => {
expect(applyDiscount(100, -10)).toBe(110);
});
});
1.5 Генерация README для проекта
Задача: Создать базовый файл README для репозитория.
Промт: Generate a README.md for a React project that uses Tailwind CSS. Include installation, usage, and contributing sections.
Пример результата: (сокращённо)
# My React Project
## Installation
```bash
npm install
npm run dev
Usage
...
## Категория 2: Продвинутые промты — оптимизация и рефакторинг
Эти промты требуют более глубокого понимания кодовой базы и помогают улучшить качество кода.
### 2.1 Рефакторинг функции с использованием map/filter/reduce
**Задача:** Переписать цикл for на функциональный стиль.
**Промт:** `Refactor this loop to use map and filter. Keep immutability.`
**Пример результата:**
```javascript
// Before
let result = [];
for (let i = 0; i < items.length; i++) {
if (items[i].active) {
result.push(items[i].name.toUpperCase());
}
}
// After
const result = items
.filter(item => item.active)
.map(item => item.name.toUpperCase());
2.2 Оптимизация производительности запроса
Задача: Оптимизировать SQL-запрос, который выполняется медленно.
Промт: Optimize this SQL query. Add indexes suggestions. Use EXPLAIN ANALYZE output.
Пример результата:
-- Original
SELECT * FROM orders WHERE customer_id = 123 AND status = 'pending';
-- Optimized with index suggestion
CREATE INDEX idx_customer_status ON orders (customer_id, status);
SELECT * FROM orders WHERE customer_id = 123 AND status = 'pending';
2.3 Преобразование callback hell в async/await
Задача: Переписать вложенные колбэки на современный синтаксис.
Промт: Convert this nested callback pattern to async/await. Handle errors properly.
Пример результата:
// Before
getUser(id, (err, user) => {
if (err) return handleError(err);
getPosts(user.id, (err, posts) => {
if (err) return handleError(err);
render(posts);
});
});
// After
async function loadUserPosts(userId) {
try {
const user = await getUser(id);
const posts = await getPosts(user.id);
render(posts);
} catch (err) {
handleError(err);
}
}
2.4 Генерация миграций базы данных
Задача: Создать SQL-миграцию для добавления новой таблицы.
Промт: Generate a migration file for adding a 'comments' table with foreign key to 'posts'. Use Knex.js syntax.
Пример результата:
exports.up = function(knex) {
return knex.schema.createTable('comments', (table) => {
table.increments('id').primary();
table.string('text', 500).notNullable();
table.integer('post_id').unsigned().references('id').inTable('posts').onDelete('CASCADE');
table.timestamps(true, true);
});
};
exports.down = function(knex) {
return knex.schema.dropTable('comments');
};
2.5 Поиск и исправление уязвимостей безопасности
Задача: Найти потенциальные SQL-инъекции в коде.
Промт: Find and fix SQL injection vulnerabilities in this code. Use parameterized queries.
Пример результата:
// Vulnerable
const query = `SELECT * FROM users WHERE email = '${req.body.email}'`;
// Fixed
const query = 'SELECT * FROM users WHERE email = ?';
db.query(query, [req.body.email]);
Категория 3: Экспертные промты — code review и архитектура
Эти промты требуют глубокого понимания проекта и позволяют проводить полноценное ревью кода и анализ архитектуры.
3.1 Анализ пулл-реквеста на предмет code smells
Задача: Проанализировать изменения в PR и найти code smells.
Промт: Review this pull request diff. Identify any code smells, duplicated code, or violations of SOLID principles. Suggest refactoring.
Пример результата:
Issues found:
1. Long method (>50 lines) in UserService.createUser — violates Single Responsibility.
2. Duplicated validation logic in createUser and updateUser.
3. Hardcoded string "ADMIN" instead of using an enum.
Recommendations:
- Extract validation into a separate validator class.
- Use UserRole enum for role constants.
3.2 Генерация архитектурной документации (ADR)
Задача: Создать запись архитектурного решения (ADR) для выбора библиотеки.
Промт: Generate an Architecture Decision Record (ADR) for choosing React Query over Redux for state management. Include context, decision, and consequences.
Пример результата: (сокращённо)
# ADR-001: Use React Query for server state
**Context:** We need to manage server-side data fetching and caching.
**Decision:** Use React Query.
**Consequences:** Reduced boilerplate, automatic caching, but requires understanding of stale-while-revalidate.
3.3 Оптимизация Dockerfile для продакшена
Задача: Уменьшить размер образа и улучшить безопасность.
Промт: Optimize this Dockerfile for production. Use multi-stage builds, reduce image size, and apply security best practices.
Пример результата:
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/node_modules ./node_modules
COPY . .
EXPOSE 3000
USER node
CMD ["node", "server.js"]
3.4 Анализ производительности по профилю
Задача: Найти узкое место в коде на основе логов профилирования.
Промт: Based on the following profiling output, identify the bottleneck and suggest optimization.
Пример результата:
Bottleneck: Function 'parseCSV' takes 80% of execution time due to manual string splitting.
Suggestion: Use a streaming CSV parser like Papa Parse to handle large files efficiently.
3.5 Генерация полного CI/CD пайплайна
Задача: Создать GitHub Actions workflow для тестирования и деплоя.
Промт: Create a GitHub Actions workflow that runs lint, tests, and deploys to AWS ECS on push to main branch.
Пример результата:
name: CI/CD Pipeline
on:
push:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npm test
deploy:
needs: test
runs-on: ubuntu-latest
steps:
- name: Deploy to ECS
run: echo "Deploying..."
Как использовать промты эффективно: советы и рекомендации
- Контекст — ключ к успеху. Чем больше контекста вы дадите Copilot (например, открытые файлы, описание задачи в комментариях), тем точнее будет результат. Copilot анализирует до 2000 строк кода вокруг курсора.
- Итеративный подход. Не ждите идеального ответа с первого раза. Уточняйте промты: «сделай короче», «используй TypeScript», «добавь обработку ошибок».
- Комбинируйте с другими инструментами. Copilot отлично работает вместе с линтерами (ESLint) и форматерами (Prettier). После генерации кода прогоните его через линтер.
- Проверяйте безопасность. Copilot может генерировать код с уязвимостями. Всегда проверяйте сгенерированный код на соответствие лучшим практикам.
Заключение
GitHub Copilot — это не просто автодополнение. Это мощный инструмент, который при правильном использовании может взять на себя рутинные задачи: написание документации, создание тестов, рефакторинг и даже анализ архитектуры. Представленные 20 промтов охватывают три уровня сложности: от базового написания коммитов до экспертного ревью кода. Начните с простого — например, с генерации сообщений к коммитам, — и постепенно переходите к более сложным сценариям. Помните: Copilot — ваш ассистент, но окончательное решение всегда за вами. Экспериментируйте, адаптируйте промты под свой проект и делитесь находками с командой. Успешного кодинга!
Комментарии