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

Введение

Claude Code — это инструмент командной строки от Anthropic, который позволяет интегрировать ИИ-ассистента прямо в ваш рабочий процесс разработки. В отличие от веб-интерфейса, Claude Code работает с вашим кодом локально, понимает структуру проекта, систему контроля версий и может выполнять изменения в реальном времени. Однако, как и любой мощный инструмент, он требует правильных промтов (запросов) для эффективной работы.

В этой статье я собрал 15 проверенных промтов для Claude Code, разделённых на три категории: базовые (для повседневных задач), продвинутые (для рефакторинга и код-ревью) и экспертные (для проектирования архитектуры). Каждый промт сопровождается примером результата и практическим советом. Мы рассмотрим, как формулировать запросы, чтобы Claude Code не просто генерировал код, а делал это осмысленно, с учётом контекста вашего проекта.

Базовые промты: повседневные задачи

1. Генерация функции по спецификации

Задача: Быстро создать функцию для обработки данных.

Промт:

Напиши функцию на Python, которая принимает список словарей с ключами 'name' и 'age', фильтрует людей старше 18 лет и возвращает отсортированный по возрасту список имён. Добавь type hints и docstring.

Пример результата:

def filter_and_sort_adults(people: list[dict]) -> list[str]:
    """
    Фильтрует людей старше 18 лет и возвращает отсортированные имена.

    Args:
        people: Список словарей с ключами 'name' и 'age'.

    Returns:
        Отсортированный по возрасту список имён взрослых.
    """
    adults = [p for p in people if p.get('age', 0) > 18]
    return [p['name'] for p in sorted(adults, key=lambda x: x['age'])]

Совет: Всегда уточняйте язык, типы данных и желаемый стиль (type hints, docstring). Это экономит время на доработку.

2. Написание тестов для существующего кода

Задача: Покрыть функцию тестами.

Промт:

Напиши pytest-тесты для функции filter_and_sort_adults. Проверь: пустой список, список без взрослых, список с дубликатами имён, граничное значение 18 лет. Используй parametrize.

Пример результата:

import pytest

def test_filter_and_sort_adults():
    assert filter_and_sort_adults([]) == []
    assert filter_and_sort_adults([{'name': 'Alice', 'age': 16}]) == []
    assert filter_and_sort_adults([{'name': 'Bob', 'age': 20}, {'name': 'Alice', 'age': 18}]) == ['Alice', 'Bob']

@pytest.mark.parametrize("people,expected", [
    ([], []),
    ([{'name': 'John', 'age': 15}], []),
    ([{'name': 'Jane', 'age': 18}], []),
    ([{'name': 'Jane', 'age': 19}], ['Jane']),
])
def test_filter_and_sort_adults_param(people, expected):
    assert filter_and_sort_adults(people) == expected

Совет: Claude Code хорошо понимает контекст, поэтому можно ссылаться на соседние файлы или функции. Например: "Напиши тесты для функции из файла utils.py".

3. Объяснение фрагмента кода

Задача: Понять сложный участок legacy-кода.

Промт:

Объясни, что делает следующий код на JavaScript. Разбей по шагам:

const res = await fetch('/api/users');
const data = await res.json();
const names = data.reduce((acc, user) => {
  if (user.active) acc.push(user.name);
  return acc;
}, []);
console.log(names.join(', '));

Пример результата:
Шаг 1: fetch отправляет GET-запрос к /api/users и ждёт ответ. Шаг 2: res.json() парсит тело ответа как JSON. Шаг 3: reduce проходит по массиву users, и если user.active === true, добавляет имя в аккумулятор. Шаг 4: console.log выводит имена через запятую.

4. Исправление бага с контекстом

Задача: Исправить ошибку на основе стек-трейса.

Промт:

В моём проекте возникает ошибка: TypeError: Cannot read properties of undefined (reading 'name'). Вот код:

users.forEach(user => console.log(user.profile.name));

Исправь, добавив проверку на undefined.

Пример результата:

users.forEach(user => {
  const name = user?.profile?.name || 'Unknown';
  console.log(name);
});

Продвинутые промты: рефакторинг и код-ревью

5. Рефакторинг с улучшением читаемости

Задача: Сделать код понятнее и короче.

Промт:

Отрефактори следующий код на Python. Улучши читаемость: вынеси магические числа в константы, замени цикл на list comprehension, добавь аннотации типов:

def process(items):
    result = []
    for i in items:
        if i > 10:
            result.append(i * 2 + 5)
    return result

Пример результата:

from typing import List

THRESHOLD = 10
MULTIPLIER = 2
OFFSET = 5

def process_items(items: List[int]) -> List[int]:
    """
    Обрабатывает список чисел: фильтрует, умножает и добавляет смещение.
    """
    return [item * MULTIPLIER + OFFSET for item in items if item > THRESHOLD]

Совет: Указывайте, что именно хотите улучшить: производительность, читаемость или безопасность. Claude Code может предложить несколько вариантов.

6. Код-ревью с акцентом на безопасность

Задача: Проверить код на уязвимости.

Промт:

Проведи код-ревью следующего Flask-приложения. Найди проблемы безопасности (SQL-инъекции, XSS, CSRF, неправильная аутентификация). Дай рекомендации по исправлению:

@app.route('/user/<id>')
def get_user(id):
    query = f"SELECT * FROM users WHERE id = {id}"
    cursor.execute(query)
    user = cursor.fetchone()
    return f"<h1>{user[1]}</h1>"

Пример результата:
Проблемы: 1) SQL-инъекция — используйте параметризованные запросы. 2) XSS — экранируйте вывод. Исправление:

from flask import escape

@app.route('/user/<int:id>')
def get_user(id):
    cursor.execute("SELECT * FROM users WHERE id = ?", (id,))
    user = cursor.fetchone()
    return f"<h1>{escape(user[1])}</h1>"

7. Рефакторинг с изменением паттерна

Задача: Переписать спагетти-код с использованием паттерна.

Промт:

Перепиши этот код с использованием паттерна Стратегия. У нас есть разные способы расчёта скидки: percentage, fixed, none. Создай классы для каждой стратегии.

def apply_discount(price, discount_type, value):
    if discount_type == 'percentage':
        return price * (1 - value / 100)
    elif discount_type == 'fixed':
        return price - value
    else:
        return price

Пример результата:

from abc import ABC, abstractmethod

class DiscountStrategy(ABC):
    @abstractmethod
    def apply(self, price: float) -> float:
        pass

class PercentageDiscount(DiscountStrategy):
    def __init__(self, percent: float):
        self.percent = percent
    def apply(self, price):
        return price * (1 - self.percent / 100)

class FixedDiscount(DiscountStrategy):
    def __init__(self, amount: float):
        self.amount = amount
    def apply(self, price):
        return max(0, price - self.amount)

class NoDiscount(DiscountStrategy):
    def apply(self, price):
        return price

8. Оптимизация производительности

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

Промт:

Этот код обрабатывает список из миллиона записей и работает очень медленно. Оптимизируй: используй генераторы, избегай лишних копирований, добавь профилирование.

def process_big_data(data):
    result = []
    for item in data:
        if item['status'] == 'active':
            result.append(item['value'] * 2)
    return result

Пример результата:

def process_big_data(data):
    return (item['value'] * 2 for item in data if item['status'] == 'active')

Генератор не создаёт промежуточный список, что экономит память. Для профилирования используйте cProfile.

Экспертные промты: проектирование архитектуры

9. Проектирование микросервиса

Задача: Спроектировать архитектуру нового микросервиса.

Промт:

Спроектируй микросервис для управления заказами в интернет-магазине. Он должен: создавать заказы, проверять статус, отменять. Используй FastAPI, PostgreSQL, Redis для кэширования. Опиши модели данных, эндпоинты, схему БД. Учти идемпотентность.

Пример результата:
Модели: Order (id, user_id, status, total, created_at), OrderItem (id, order_id, product_id, quantity, price). Эндпоинты: POST /orders (создание, идемпотентность через idempotency-key), GET /orders/{id} (статус), DELETE /orders/{id} (отмена). Redis для кэширования статуса. БД: индексы по user_id и status.

10. Выбор архитектурного паттерна

Задача: Сравнить подходы для конкретного сценария.

Промт:

Мы создаём систему аналитики в реальном времени. Сравни Event-Driven и Batch Processing архитектуры. Дай рекомендацию для сценария: 10 000 событий в секунду, требуется агрегация с задержкой не более 5 секунд. Учти AWS-сервисы (Kinesis, Lambda, S3).

Пример результата:
Event-Driven (Kinesis + Lambda) лучше подходит для низкой задержки. Batch (S3 + Glue) — для исторической аналитики. Рекомендуется гибрид: Kinesis для потоковой обработки с окнами агрегации и S3 для долгосрочного хранения.

11. Рефакторинг архитектуры legacy-системы

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

Промт:

У нас монолит на Django. Нужно выделить модуль авторизации в отдельный микросервис. Опиши шаги: выделение кода, создание API, работа с JWT, синхронизация сессий. Учти, что другие сервисы зависят от текущей модели User.

Пример результата:
Шаг 1: Создайте отдельный проект FastAPI для auth. Шаг 2: Реализуйте POST /auth/login, POST /auth/verify. Шаг 3: Используйте JWT (access+refresh токены). Шаг 4: В монолите замените прямые вызовы ORM на HTTP-запросы к auth-сервису. Шаг 5: Кэшируйте токены в Redis.

12. Проектирование API с версионированием

Задача: Создать план API для публичного сервиса.

Промт:

Спроектируй REST API для сервиса управления задачами (Trello-like). Учти: версионирование (v1, v2), пагинацию, фильтрацию, rate limiting, документацию OpenAPI. Опиши эндпоинты для досок, колонок и задач.

Пример результата:
/v1/boards (GET, POST), /v1/boards/{id} (GET, PUT, DELETE), /v1/boards/{id}/columns (GET, POST), /v1/boards/{id}/columns/{col_id}/tasks (GET, POST). Пагинация через cursor-based (query param ?cursor=...). Rate limiting: 100 запросов в минуту для бесплатного тарифа.

13. Интеграция с внешним API

Задача: Разработать план интеграции.

Промт:

Нужно интегрировать наше приложение с внешним CRM-сервисом (например, Salesforce). Опиши: как обрабатывать OAuth2, кэшировать токены, обрабатывать ошибки (429 Too Many Requests), синхронизировать данные в фоне. Предложи библиотеки для Python.

Пример результата:
Используйте requests-oauthlib для OAuth2, храните refresh token в БД, кэшируйте access token в Redis. Для rate limiting — tenacity с exponential backoff. Фоновая синхронизация через Celery с retry-механизмом. ASI Biont поддерживает подключение к CRM-системам через API — подробнее на asibiont.com/courses.

14. Проектирование базы данных

Задача: Создать схему БД для многопользовательского приложения.

Промт:

Спроектируй схему БД для SaaS-приложения по управлению проектами. Учти: мультитенантность (shared database, shared schema), роли пользователей (admin, editor, viewer), аудит изменений. Используй PostgreSQL.

Пример результата:
Таблицы: tenants (id, name, plan), users (id, email, tenant_id, role), projects (id, name, tenant_id, created_by), audit_log (id, user_id, action, timestamp). Индексы: (tenant_id, email) для users, (tenant_id, created_at) для projects. Row-Level Security для изоляции данных.

15. Выбор стека технологий

Задача: Обосновать выбор технологий для стартапа.

Промт:

Мы запускаем стартап — платформу для онлайн-курсов. Нужно выбрать стек для MVP: фронтенд (React/Vue), бэкенд (Node/Python), БД (PostgreSQL/MongoDB), инфраструктура (AWS/GCP). Учти: скорость разработки, стоимость, масштабируемость до 10 000 пользователей.

Пример результата:
Фронтенд: React (Next.js) для SSR и SEO. Бэкенд: Python (FastAPI) для быстрой разработки и отличной документации. БД: PostgreSQL (реляционная, подходит для курсов и юзеров). Инфраструктура: AWS (ECS + RDS) — гибко и популярно.

Заключение

Claude Code — это не просто автодополнение кода, а полноценный ассистент, который может взять на себя задачи от рефакторинга до проектирования архитектуры. Главное — правильно формулировать промты. Как вы заметили, качество результата напрямую зависит от контекста: чем больше деталей вы укажете (язык, библиотеки, требования), тем точнее будет ответ.

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

Если вы хотите углубить свои навыки работы с ИИ-инструментами в разработке, обратите внимание на специализированные курсы, которые помогут вам освоить промпт-инжиниринг для программирования. Удачи в кодинге!

← Все статьи

Комментарии