К основному содержанию
промпт GP ChatGPT

Go Service taste — промпт для ChatGPT: правила Go-бэкенда

Набор инженерных правил для Go-сервиса: какой роутер брать, как раскладывать пакеты, что делать с ошибками и логами. Пригодится, когда агент пишет бэкенд с нуля.

Открыть на GitHub

Что делает Go Service taste

Промпт задаёт агенту набор предпочтений бэкендера на Go. Сначала стандартный роутер net/http из Go 1.22, фреймворк — только если без него никак. Раскладка проекта: cmd/<service>/main.go и пакеты в internal/, без pkg/. Сам main.go остаётся тонким: прочитать конфиг, собрать зависимости, поднять сервер.

Дальше идут правила, которые чаще всего забывают. context.Context первым аргументом в любой функции с I/O. Ошибки оборачиваются через fmt.Errorf с %w и проверяются errors.Is и errors.As. Логи — log/slog в JSON, с request ID в каждой строке. Конфиг читается из переменных окружения в одну типизированную структуру на старте, и при нехватке обязательных полей сервис падает сразу, а не через час в проде.

Для данных: SQL руками, типизированный код через sqlc, драйвер pgx с пулом соединений. Интерфейсы объявляются в пакете-потребителе, а не там, где живёт реализация. Тесты табличные с t.Run, в CI go test -race на каждый pull request, линт через golangci-lint с коротким списком линтеров. Ещё тут graceful shutdown по SIGTERM, явные таймауты на http.Server и http.Client, эндпоинты /healthz и /readyz, отказ от глобального состояния и init с побочными эффектами. Горутины запускаются только с понятным владельцем и условием остановки, группы — через errgroup. Сборка — статический бинарник в distroless-образ многоступенчатым Dockerfile. Дженерики — лишь когда убирают настоящее дублирование.

Какие задачи решает

  • выбрать роутер и структуру пакетов для нового Go-сервиса
  • привести обработку ошибок к единому виду через %w и errors.Is
  • настроить JSON-логи с request ID вместо fmt.Println
  • добавить graceful shutdown и таймауты серверу перед выкладкой
  • убрать глобальное состояние и init с побочными эффектами из кода

Примеры запросов агенту

  • Напиши на Go сервис заказов: роутер из стандартной библиотеки, раскладка cmd/orders/main.go и internal/, конфиг из переменных окружения.
  • Отрефактори этот файл: оберни ошибки через %w, замени логгер на log/slog в JSON с request ID.
  • Добавь graceful shutdown по SIGTERM и таймауты на http.Server, плюс /healthz и /readyz.

Как установить Go Service taste

Как использовать

Вставьте текст в начало диалога или в инструкции проекта

Вопросы о Go Service taste

Как установить Go Service taste в Claude?

У промпта нет команды установки: его текст добавляют в чат или в инструкции проекта. В Claude он лежит файлом .claude/commands/prompts.csv.md.

Что делает Go Service taste?

Задаёт агенту набор правил для Go-бэкенда: стандартный роутер, структура cmd/ и internal/, обёртка ошибок, log/slog, pgx с sqlc, табличные тесты и graceful shutdown.

Обязательно ли следовать всем пунктам?

У каждого правила указана уверенность от 0.70 до 0.95. Самые спорные — дженерики и sqlc вместо ORM; на небольшом сервисе их стоит обсудить с агентом отдельно.

Исходный текст

prompts.csv · CC0-1.0
# Go service taste of a backend engineer
- Use the standard library net/http router from Go 1.22 before reaching for a framework. Confidence: 0.85
- Lay the project out as cmd/<service>/main.go plus internal/ packages, and skip pkg/. Confidence: 0.80
- Keep main.go thin: read config, wire dependencies and start the server. Confidence: 0.90
- Pass context.Context as the first argument to every function that does I/O. Confidence: 0.95
- Wrap errors with fmt.Errorf and %w, and check them with errors.Is and errors.As. Confidence: 0.95
- Log with log/slog in JSON format and include a request ID on every line. Confidence: 0.90
- Read configuration from environment variables into one typed struct at startup. Confidence: 0.85
- Fail fast at startup when required configuration is missing. Confidence: 0.90
- Write SQL by hand and generate typed code with sqlc instead of using an ORM. Confidence: 0.80
- Use pgx as the Postgres driver with a connection pool. Confidence: 0.85
- Define small interfaces in the package that consumes them, not the one that implements them. Confidence: 0.85
- Use table-driven tests with t.Run subtests. Confidence: 0.90
- Run go test with -race in CI on every pull request. Confidence: 0.90
- Lint with golangci-lint using a short, curated list of linters. Confidence: 0.80
- Shut down gracefully on SIGTERM with signal.NotifyContext and server.Shutdown. Confidence: 0.90
- Set explicit read, write and idle timeouts on every http.Server and http.Client. Confidence: 0.90
- Expose /healthz for liveness and /readyz for readiness. Confidence: 0.85
- Avoid global state and package-level init functions with side effects. Confidence: 0.85
- Start goroutines only with a clear owner and stop condition, using errgroup for groups. Confidence: 0.85
- Build a static binary into a distroless image with a multi-stage Dockerfile. Confidence: 0.80
- Add generics only when they remove real duplication. Confidence: 0.70

© f · CC0-1.0 · f/prompts.chat

Похожие промпты

Все промпты по теме «Бэкенд и API» →

Из того же набора91

Весь набор →
Error Handling taste Промпт задаёт ИИ-ассистенту вкус бэкенд-инженера на TypeScript: как валидировать вход, разделять ожидаемые ошибки и баги, логировать и отдавать клиенту. GP ChatGPT ★ 174 676звёзд репо Kubernetes taste Промпт задаёт ИИ-ассистенту набор правил платформенной команды: GitOps, пробы, ресурсы, безопасность подов. Пригодится, когда просите модель писать или проверять манифесты. GP ChatGPT ★ 174 676звёзд репо Git Workflow taste Промпт задаёт ИИ-ассистенту привычки trunk-based команды: короткие ветки, Conventional Commits, squash-merge и защита main. GP ChatGPT ★ 174 676звёзд репо Monorepo taste Промпт задаёт агенту свод правил для монорепозитория: pnpm workspaces, Turborepo, границы пакетов и общие конфиги. Пригодится, когда нужно привести структуру репо к одному стилю. GP ChatGPT ★ 174 676звёзд репо Rust CLI taste Промпт задаёт набор правил, по которым ИИ пишет консольные утилиты на Rust: разбор аргументов, ошибки, вывод, тесты. GP ChatGPT ★ 174 676звёзд репо React State Management taste Сводка правил по управлению состоянием в React: когда использовать useState, Zustand, Context и TanStack Query. Помогает избежать типичных ошибок вроде лишних глобальных сторов. GP ChatGPT ★ 174 676звёзд репо Observability taste Набор правил для ИИ-ассистента: как расставлять трейсы, метрики и логи в сервисе, чтобы потом не гадать по дашбордам. Пригодится, когда просите модель написать код с телеметрией. GP ChatGPT ★ 174 676звёзд репо Python Packaging taste Промпт задаёт агенту набор правил для упаковки Python-проектов: pyproject.toml, src/, uv, Ruff. Пригодится, когда нужно привести новый пакет к одному стилю. GP ChatGPT ★ 174 676звёзд репо

Спонсоры проекта

Компании, которые помогают держать аналитику открытой