Error Handling taste — промпт для ChatGPT и Claude.ai: правила
Промпт задаёт ИИ-ассистенту вкус бэкенд-инженера на TypeScript: как валидировать вход, разделять ожидаемые ошибки и баги, логировать и отдавать клиенту.
Открыть на GitHubЧто делает Error Handling taste
Это набор утверждений о том, как обрабатывать ошибки в TypeScript-бэкенде. Каждое правило идёт с оценкой уверенности, поэтому видно, где автор твёрд, а где сам сомневается. Валидация внешних данных схемой вроде Zod до бизнес-логики, разделение ожидаемых доменных ошибок и настоящих багов, типизированные классы ошибок с машинным кодом.
Дальше — про то, что делать с пойманной ошибкой. Ловить только там, где можно добавить контекст, восстановиться или перевести ошибку, остальное пусть всплывает. Маппинг в HTTP-ответы живёт в одном центральном обработчике, а не в каждом роуте. Тела ответов — problem+json по RFC 9457 с кодом, сообщением и request id. Стек-трейсы, SQL и внутренние хосты наружу не уходят.
Есть блок про устойчивость: таймаут на каждый сетевой вызов, AbortController для отмены нижележащей работы, circuit breaker вокруг нестабильных зависимостей, повтор только идемпотентных операций с экспоненциальной задержкой и жёстким лимитом попыток. Необработанные отклонения промисов считаются фатальными. Промпт вставляют в чат как системную инструкцию или первым сообщением — установки в привычном смысле тут нет.
Какие задачи решает
- провалидировать внешний ввод схемой до бизнес-логики
- развести ожидаемые доменные ошибки и настоящие баги
- собрать типизированные классы ошибок с машинным кодом
- свести маппинг ошибок в HTTP-ответы в один обработчик
- закрыть сетевые вызовы таймаутом и отменой
Примеры запросов агенту
- Вставь эти правила как системную инструкцию и дальше помогай мне с обработкой ошибок в TypeScript-бэкенде
- Проверь мой код на эти правила: где я глотаю ошибку молча и где нет таймаута на сетевом вызове
- Перепиши этот catch-блок так, чтобы оригинальная ошибка шла в cause, а наружу уходил problem+json
Как установить Error Handling taste
Как использовать
Вставьте текст в начало диалога или в инструкции проекта
Вручную: положить файлы
.claude/commands/prompts.csv.mdИз того же набора73
Весь набор →Похожие
Рядом в каталоге
Всё по теме «Бэкенд и API» →Вопросы о Error Handling taste
Как установить Error Handling taste в Claude?
Отдельной команды установки нет: промпт вставляют в чат как системную инструкцию или первым сообщением, а дальше работают в этом же диалоге.
Что делает Error Handling taste?
Задаёт ассистенту набор правил обработки ошибок в TypeScript-бэкенде: валидация на входе, разделение ожидаемых ошибок и багов, централизованный маппинг в HTTP, логирование с контекстом.
Что нужно для работы промпта?
Ничего, кроме чата. Правила ссылаются на Zod и RFC 9457 problem+json, но это ориентиры для кода, а не зависимости самого промпта.
Исходный текст
prompts.csv · CC0-1.0
# Error handling taste of a TypeScript backend engineer - Fail fast at the edges: validate every external input with a schema library such as Zod before it reaches business logic. Confidence: 0.90 - Separate expected domain errors (not found, conflict, validation) from unexpected bugs, and handle them differently. Confidence: 0.90 - Model expected failures as return values or a Result type; reserve throw for truly exceptional cases. Confidence: 0.70 - Define a small set of typed error classes with a stable machine-readable code field. Confidence: 0.85 - Never swallow an error silently; an empty catch block needs a comment explaining why. Confidence: 0.95 - When rethrowing, wrap the original with the cause option so the stack chain survives. Confidence: 0.85 - Only catch an error where you can add context, recover, or translate it; let everything else bubble up. Confidence: 0.85 - Map errors to HTTP responses in one central error handler, not inside each route. Confidence: 0.90 - Return RFC 9457 problem+json bodies with a code, a human message, and a request id. Confidence: 0.75 - Never leak stack traces, SQL, or internal hostnames to API clients. Confidence: 0.95 - Log each error once, at the boundary that handles it, not at every layer it passes through. Confidence: 0.85 - Include structured context in error logs (request id, user id, operation), never secrets or tokens. Confidence: 0.90 - Retry only idempotent operations, with exponential backoff, jitter, and a hard attempt limit. Confidence: 0.90 - Put a timeout on every network call; a missing timeout is a bug. Confidence: 0.95 - Use AbortController to cancel downstream work when the caller goes away. Confidence: 0.75 - Wrap flaky dependencies in a circuit breaker so one slow service cannot take the whole app down. Confidence: 0.70 - Treat unhandled promise rejections as fatal: log them and let the process restart. Confidence: 0.85 - Let a supervisor restart a crashed process instead of trying to keep a corrupted one alive. Confidence: 0.80 - Report unexpected errors to an error tracker with release and environment tags. Confidence: 0.85 - Write tests for failure paths, not only the happy path. Confidence: 0.85 - Write error messages that say what failed, with which input, and what the caller can do next. Confidence: 0.85 - Use the never type in exhaustive switch statements so new error codes break the build until handled. Confidence: 0.75
© f · CC0-1.0 · f/prompts.chat