10 промтов для Claude Code: от рефакторинга до архитектуры — кейсы и примеры

Введение

Claude Code — это AI-ассистент для программирования от Anthropic, интегрированный в терминал и IDE. В отличие от простых чат-ботов, он понимает контекст репозитория, поддерживает многофайловые изменения и умеет выполнять команды. Но его реальная ценность раскрывается только через правильно составленные промты. В этой подборке — 10 проверенных запросов для задач от повседневного рефакторинга до проектирования архитектуры. Каждый промт сопровождается реальным кейсом и результатом.


1. Код-ревью: поиск уязвимостей и антипаттернов

Задача: Найти в коде потенциальные ошибки, проблемы безопасности и нарушения best practices.

Промт:

Проведи полное code review модуля auth.ts. Игнорируй стиль кода. Найди:
- SQL-инъекции и XSS
- Гонки данных (race conditions)
- Утечки памяти и необработанные ошибки
- Категоризируй каждую проблему по критичности (Critical/High/Medium/Low)

Пример результата (сокращённо):

Критическая (High): Строка 24 — query(\"SELECT * FROM users WHERE id = \" + userId) — прямая конкатенация. Использовать параметризованные запросы.
Medium: Строка 45 — setTimeout без очистки. Возможна утечка при повторном вызове.


2. Рефакторинг длинной функции: разбиение на методы

Задача: Преобразовать функцию из 200+ строк в композицию небольших методов с инвариантами.

Промт:

Рефакторинг функции processOrder (JavaScript, 250 строк).
1. Выдели подфункции с понятными именами и JSDoc.
2. Каждая подфункция должна быть чистой (pure) если возможно.
3. Оставь комментарии только там, где логика нетривиальна.
4. Исходный код прилагается: [вставка кода]

Результат: Функция разбита на 7 подфункций: validateOrder, calculateTotal, applyDiscount, checkInventory, processPayment, sendConfirmation, logAudit. Основной вызов стал читаемым:

async function processOrder(order) {
  validateOrder(order);
  const total = applyDiscount(calculateTotal(order.lineItems));
  await checkInventory(order.lineItems);
  const payment = await processPayment(order.paymentInfo, total);
  await sendConfirmation(order.email, payment.id);
  logAudit(order, payment);
}

3. Перевод с устаревшего фреймворка на современный

Задача: Мигрировать контроллер с Express на Fastify, сохранив все маршруты и middleware.

Промт:

Перепиши следующие Express-роуты (файл routes/users.js) на эквивалент Fastify:
- Вместо app.use используй Fastify plugin.
- Асинхронные обработчики ошибок через .catch или try/catch.
- Сохрани те же HTTP-методы и пути.
- Исходный код: [вставка]

Результат: Автоматическая конвертация с сохранением семантики. Claude Code также предлагает использовать схему валидации (JSON Schema) для Fastify, добавляя типизацию.


4. Проектирование модуля: принципы SOLID

Задача: Спроектировать модуль обработки платежей с возможностью расширения под новые провайдеры.

Промт:

Спроектируй абстрактный класс PaymentProvider (или интерфейс) и реализации для Stripe, PayPal, Square.
- Принцип Open/Closed: новый провайдер = новый класс, без изменения существующего кода.
- Принцип Dependency Inversion: высокоуровневый модуль не должен зависеть от конкретных провайдеров.
- Включи фабрику провайдеров по строковому ключу.
- Напиши пример использования.

Результат (упрощённо):

interface PaymentProvider {
  charge(amount: number, currency: string): Promise<ChargeResult>;
}
class StripeProvider implements PaymentProvider { ... }
class PaymentProcessor {
  constructor(private provider: PaymentProvider) { }
  async process(amount: number, currency: string) {
    return this.provider.charge(amount, currency);
  }
}

5. Микросервисная архитектура: разбиение монолита

Задача: Разделить монолитное приложение на микросервисы с сохранением бизнес-логики.

Промт:

У меня монолит на NestJS со следующими модулями: Auth, Orders, Products, Notifications, Users.
Предложи архитектуру микросервисов:
- Какие модули стоит объединить или разбить?
- Как организовать общую авторизацию? (API Gateway vs JWT)
- Как синхронизировать данные между сервисами? (Event Bus / HTTP / gRPC)
- Нарисуй ASCII-схему взаимодействия.

Результат: Claude Code предлагает 4 микросервиса (User & Auth, Orders, Products, Notifications), API Gateway как единую точку входа, RabbitMQ для событий (order.placed, user.registered). Приводит пример JSON схем для событий и gRPC-контракт.


6. Оптимизация базы данных: N+1 запрос

Задача: Устранить проблему N+1 в Django ORM.

Промт:

Найди проблему N+1 запросов в view-функции get_users_with_orders (файл views.py).
Исправь с помощью select_related или prefetch_related.
Обоснуй выбор. Приведи SQL-запросы до и после оптимизации.

Результат: Выявлено, что цикл по users делает отдельный запрос для каждого user.orders. Замена на User.objects.prefetch_related('orders') сократило число запросов с 101 до 2. Claude Code показывает план EXPLAIN до/после.


7. Написание тестов: генерация unit- и integration-тестов

Задача: Покрыть тестами критичный модуль с минимальным ручным трудом.

Промт:

Напиши Jest-тесты для модуля billing.service.ts.
- Покрыть все публичные методы.
- Моки для внешних API (Stripe, email).
- Тесты граничных случаев: отрицательная сумма, превышение лимита, отказ провайдера.
- Используй describe/it блоки.
- Код модуля прилагается.

Результат: Сгенерировано 30+ тест-кейсов, включая негативные сценарии. Покрытие кода (по report) — 92%.


8. Документирование API: OpenAPI 3.0

Задача: Создать (или обновить) спецификацию OpenAPI по существующему коду.

Промт:

На основе контроллеров Express (файлы в папке routes/) сгенерируй OpenAPI 3.0 спецификацию.
- Используй JSDoc/swagger-jsdoc аннотации, если есть, иначе выведи из сигнатур.
- Группируй по тегам.
- Добавь схемы для всех request/response.
- Результат сохрани в openapi.yaml.

Результат: Автоматически сгенерирован YAML-файл с 15 эндпоинтами, всеми моделями и примерами запросов. Claude Code также замечает отсутствующие required поля и предлагает добавить.


9. Рефакторинг наследования в композицию

Задача: Заменить глубокую иерархию классов на более гибкую композицию (GoF «предпочитайте композицию наследованию»).

Промт:

В проекте есть цепочка наследования: Animal → Mammal → Dog → Labrador.
Замени на композицию с интерфейсами и делегированием.
- Создай интерфейсы IMove, IEat, ISound.
- Каждый класс реализует только необходимые интерфейсы.
- Пример: Labrador = Animal + DogBehavior + Swimming.
- Сохрани обратную совместимость (фасады).

Результат: Исходный код размером в 400 строк сократился до 250, дублирование устранено, добавлена возможность комбинировать поведения без создания новых подклассов.


10. Проектирование Event-Driven архитектуры

Задача: Спроектировать систему обработки заказов на основе событий с гарантией доставки и идемпотентностью.

Промт:

Спроектируй event-driven систему для e-commerce:
- Событие OrderPlanned → проверка склада → OrderConfirmed или OrderCancelled.
- Гарантия exactly-once delivery (использовать dedup key, transaction outbox).
- Идемпотентность обработчиков.
- Напиши пример на TypeScript с использованием RabbitMQ и PostgreSQL (outbox).

Результат: Claude Code предлагает архитектуру с Transactional Outbox (таблица outbox, worker читает и отправляет), идемпотентностью через уникальный event_id и dead-letter queue для ошибок. Приведён пример кода для публикации и обработки событий.


Заключение

Промты — это язык, на котором вы говорите с Claude Code. Чем точнее и структурированнее запрос, тем качественнее результат. Используйте эти 10 шаблонов как основу для своих реальных задач. Копируйте, адаптируйте, комбинируйте — и вы увидите, как AI превращается из игрушки в незаменимого архитектора и ревьюера вашего кода.

Попробуйте прямо сейчас: запустите claude code в терминале вашего проекта и примените один из промтов. Результаты могут удивить.

← Все статьи

Комментарии

Читайте также