Скорость веб-разработки на TypeScript всё чаще зависит не от того, сколько строк ты напишешь руками, а от того, насколько точно ты умеешь ставить задачу генеративному инструменту. За последние месяцы я собрал набор промтов, которые использую в ежедневной работе над full-stack проектами на Next.js. Они не заменяют инженерное мышление, но снимают рутину: типизацию API-слоя, миграции Prisma, тесты и ревью.
Ниже — проверенные формулировки с реальными примерами. Все примеры кода рабочие и опираются на официальную документацию: Next.js App Router, Prisma, tRPC, TypeScript Handbook. Если будешь адаптировать под свой стек — сохраняй структуру промта: роль, контекст, ограничения, формат вывода.
1. Генерация типизированного API-контракта
Промт: «Ты senior TypeScript-инженер. Сгенерируй tRPC-роутер для сущности User с процедурами list, byId, create. Используй Zod для валидации входных данных, Prisma Client для доступа к БД. Верни только код, без объяснений». Пример результата:
import { z } from 'zod';
import { router, publicProcedure } from '@/server/trpc';
export const userRouter = router({
list: publicProcedure.query(({ ctx }) => ctx.prisma.user.findMany()),
byId: publicProcedure
.input(z.object({ id: z.string().cuid() }))
.query(({ ctx, input }) => ctx.prisma.user.findUniqueOrThrow({ where: { id: input.id } })),
create: publicProcedure
.input(z.object({ email: z.string().email(), name: z.string().min(1) }))
.mutation(({ ctx, input }) => ctx.prisma.user.create({ data: input })),
});
Такой промт экономит 20–30 минут на каждом новом ресурсе и сразу даёт end-to-end типизацию между клиентом и сервером.
2. Prisma-схема из текстового описания
Промт: «Опиши Prisma-схему для блога: User, Post, Comment, Tag. Связи: Post→User many-to-one, Comment→Post one-to-many, Post↔Tag many-to-many. Добавь createdAt/updatedAt, индексы по slug и автору». На выходе — готовая schema.prisma, которую остаётся только прогнать через npx prisma migrate dev. Проверяй сгенерированные связи глазами: модели ИИ путают @relation при self-reference.
3. Server Actions с обработкой ошибок
Промт: «Напиши Next.js Server Action для создания заказа. Валидация через Zod, возвращай discriminated union { ok: true; id: string } | { ok: false; error: string }. Не используй any». Это даёт предсказуемый результат на клиенте и совместимость с useFormState из документации Next.js.
4. Типизация ответов внешнего API
Промт: «По примеру JSON-ответа сгенерируй TypeScript-типы и Zod-схему. Используй z.infer для экспорта типов. Неизвестные поля помечай как unknown». Пример для ответа GitHub REST API из официальной документации:
const RepoSchema = z.object({
id: z.number(),
name: z.string(),
private: z.boolean(),
owner: z.object({ login: z.string() }),
});
export type Repo = z.infer<typeof RepoSchema>;
5. Ревью PR-диффа
Промт: «Ты ревьюер. Проверь дифф на: 1) нарушения типов, 2) утечки секретов, 3) N+1 в Prisma, 4) отсутствие обработки ошибок. Верни список замечаний в формате Markdown-таблицы: файл, строка, проблема, предложение». Такой промт хорошо работает поверх git diff main...feature — вставляешь вывод в чат и получаешь структурированное ревью.
6. Генерация unit-тестов на Vitest
Промт: «Сгенерируй тесты Vitest для функции calculateDiscount. Покрой граничные случаи: 0, отрицательные значения, скидка больше 100%. Используй describe/it и expect». Проверяемо: Vitest — актуальный раннер, документация на vitest.dev.
7. Миграция с JavaScript на TypeScript
Промт: «Переведи модуль на TypeScript. Включай strict: true, избегай any, для внешних данных используй unknown + narrowing. Сохрани публичный API модуля». Прогоняй результат через tsc --noEmit — это быстрый способ поймать регрессии.
8. Оптимизация React-компонента
Промт: «Проанализируй компонент на предмет лишних ререндеров. Предложи мемоизацию через useMemo/useCallback только там, где это оправдано, и объясни, почему». Важно не слепо применять советы: официальные рекомендации React (react.dev) прямо предупреждают, что мемоизация не бесплатна.
9. Генерация DTO и мапперов
Промт: «Сгенерируй DTO и маппер из Prisma-модели User в API-ответ без passwordHash. Используй Pick/Omit». Быстро и безопасно: не отдаёшь лишние поля наружу.
10. Скрипт миграции данных
Промт: «Напиши идемпотентный скрипт на TypeScript, который переносит поле fullName в firstName/lastName в таблице users. Используй Prisma, обрабатывай пачками по 500, логируй прогресс». Идемпотентность — обязательное требование, иначе повторный запуск испортит данные.
11. Проверка безопасности Server Actions
Промт: «Проверь Server Action на: CSRF-риски, отсутствие авторизации, mass assignment. Предложи исправления с примерами». Это дешёвая страховка перед мержем.
12. Документация API из кода
Промт: «Сгенерируй OpenAPI 3.1 спецификацию по tRPC-роутерам. Опиши входы/выходы и коды ошибок». Спецификация OpenAPI реальна и описана на spec.openapis.org.
13. Оптимизация запросов Prisma
Промт: «Найди N+1 в этом коде и перепиши через include/select. Покажи до/после». Такой промт хорошо ловит проблемы в циклах с запросами внутри.
14. Типизация форм с react-hook-form
Промт: «Сгенерируй форму регистрации на react-hook-form + Zod resolver. Типы — из Zod-схемы, ошибки — по полям». Проверено, работает с актуальной версией библиотек.
15. Генерация e2e-тестов Playwright
Промт: «Напиши Playwright-тест сценария логина: успех, неверный пароль, пустые поля. Используй data-testid». Стабильные селекторы — залог того, что тесты не будут «мигать».
16. Разбор ошибки TypeScript
Промт: «Объясни ошибку TS2322 в этом коде, предложи минимальное исправление без any». Экономит время на неочевидных кейсах с дженериками.
17. Генерация Dockerfile для Next.js
Промт: «Сгенерируй multi-stage Dockerfile для Next.js с standalone-выходом. Node 20, non-root пользователь». Next.js официально поддерживает output: 'standalone' — см. документацию.
18. Чек-лист код-ревью
Промт: «Составь чек-лист код-ревью для TypeScript-проекта на Next.js: типы, безопасность, производительность, тесты». Использую как шаблон в PR-описаниях.
Главный вывод: промт — это не магия, а формализованное ТЗ. Чем точнее ты описываешь ограничения (strict, Zod, отсутствие any), тем меньше правишь за моделью. Начни с трёх промтов из списка, которые закрывают твою самую рутинную задачу, и измерь, сколько времени они экономят за неделю. Если хочешь глубже — посмотри официальные руководства Next.js и Prisma и адаптируй формулировки под свой кодстайл: это даст стабильный результат без лишних итераций.
Комментарии