К основному содержанию
скилл CX Codex

api-error-handling — скилл для Claude Code: единый формат ошибок API

Скилл задаёт стандартный формат ответов об ошибках, класс ApiError и паттерн circuit breaker. Пригодится, когда API уходит в продакшен.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add secondsky/claude-skills --skill api-error-handling -a claude-code
Открыть на GitHub

Что делает api-error-handling

Скилл описывает единый JSON-формат ошибки: код, сообщение, HTTP-статус, requestId, метка времени и список деталей по полям. Такой ответ одинаково выглядит на всех эндпоинтах, поэтому клиенту проще разбирать сбои, а вам — искать их по идентификатору запроса.

Внутри есть класс ApiError для Node.js с фабриками badRequest, notFound и unauthorized, глобальный обработчик ошибок для Express и реализация circuit breaker с порогом срабатывания и таймаутом восстановления. Отдельная ссылка ведёт на references/python-flask.md — там разобраны исключения во Flask, повторные попытки с экспоненциальной задержкой и интеграция с Sentry.

Обработчик намеренно скрывает текст ошибки при статусе 500 и отдаёт клиенту общее сообщение, а подробности пишет в лог. Это стоит держать в голове: если вы привыкли возвращать наружу текст исключения, поведение придётся менять. Стек в примерах — Node.js и Express; для Python смотрите файл в references.

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

  • свести ответы об ошибках к одному формату на всех эндпоинтах
  • отдавать клиенту понятное сообщение вместо стектрейса
  • связать ошибку с конкретным запросом через requestId
  • разложить детали валидации по полям формы
  • защитить внешний сервис от повторных вызовов при сбоях

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

  • Добавь в этот Express-роутер обработку ошибок в формате из скилла api-error-handling
  • Сделай класс ApiError и глобальный обработчик, чтобы 500 не отдавал текст исключения
  • Оберни вызов платёжного API в circuit breaker с порогом 5 сбоев

Как установить api-error-handling

1Через Skills CLI (Vercel)

npx skills add secondsky/claude-skills --skill api-error-handling -a claude-code

2Вручную: положить файлы

~/.claude/skills/api-error-handling/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/api-error-handling/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о api-error-handling

Как установить api-error-handling в Claude?

Выполните npx skills add secondsky/claude-skills --skill api-error-handling -a claude-code. После этого файл скилла лежит в ~/.claude/skills/api-error-handling/SKILL.md.

Что делает api-error-handling?

Задаёт стандартный формат ответа об ошибке с кодом, статусом и requestId, даёт класс ApiError для Node.js, глобальный обработчик для Express и паттерн circuit breaker.

Для каких языков есть примеры?

Основные примеры написаны на Node.js с Express. Для Python есть отдельный файл references/python-flask.md с исключениями во Flask, повторными попытками и интеграцией с Sentry.

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

SKILL.md · MIT
---
name: api-error-handling
description: Implements standardized API error responses with proper status codes, logging, and user-friendly messages. Use when building production APIs, implementing error recovery patterns, or integrating error monitoring services.
license: MIT
---

# API Error Handling

Implement robust error handling with standardized responses and proper logging.

## Standard Error Response Format

```json
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid request parameters",
    "status": 400,
    "requestId": "req_abc123",
    "timestamp": "2025-01-15T10:30:00Z",
    "details": [
      { "field": "email", "message": "Invalid email format" }
    ]
  }
}
```

## Error Class (Node.js)

```javascript
class ApiError extends Error {
  constructor(code, message, status = 500, details = null) {
    super(message);
    this.code = code;
    this.status = status;
    this.details = details;
  }

  static badRequest(message, details) {
    return new ApiError('BAD_REQUEST', message, 400, details);
  }

  static notFound(resource) {
    return new ApiError('NOT_FOUND', `${resource} not found`, 404);
  }

  static unauthorized() {
    return new ApiError('UNAUTHORIZED', 'Authentication required', 401);
  }
}

// Global error handler
app.use((err, req, res, next) => {
  const status = err.status || 500;
  const response = {
    error: {
      code: err.code || 'INTERNAL_ERROR',
      message: status === 500 ? 'Internal server error' : err.message,
      status,
      requestId: req.id
    }
  };

  if (err.details) response.error.details = err.details;
  if (status >= 500) logger.error(err);

  res.status(status).json(response);
});
```

## Circuit Breaker Pattern

```javascript
class CircuitBreaker {
  constructor(threshold = 5, timeout = 30000) {
    this.failures = 0;
    this.threshold = threshold;
    this.timeout = timeout;
    this.state = 'CLOSED';
  }

  async call(fn) {
    if (this.state === 'OPEN') throw new Error('Circuit open');
    try {
      const result = await fn();
      this.failures = 0;
      return result;
    } catch (err) {
      this.failures++;
      if (this.failures >= this.threshold) {
        this.state = 'OPEN';
        setTimeout(() => this.state = 'HALF_OPEN', this.timeout);
      }
      throw err;
    }
  }
}
```

## Additional Implementations

See [references/python-flask.md](references/python-flask.md) for:
- Python Flask error handling with custom exceptions
- Circuit breaker with automatic recovery
- Retry with exponential backoff
- Sentry integration

## Best Practices

- Use consistent error format across all endpoints
- Include request IDs for traceability
- Log errors at appropriate severity levels
- Never expose stack traces to clients
- Distinguish client errors (4xx) from server errors (5xx)
- Provide actionable error messages

© secondsky · MIT · secondsky/claude-skills

Похожие скиллы

Всё по теме «Бэкенд и API» →
error-handling affaan-m Скилл задаёт единые правила обработки ошибок в TypeScript, Python и Go: типизированные исключения, ретраи, circuit breaker, тексты для пользователя. CX Codex +1 4 800установок iii-error-handling iii-hq Скилл учит агента распознавать коды ошибок iii-движка и SDK, различать сетевые сбои от отказов в доступе, определять, когда повторять вызов безопасно. Нужен, если пишешь код на Node, Python, Rust или в браузере с вызовами удалённых функций. CX Codex +1 4 100установок error-handling-patterns Seth Hobson Скилл помогает проектировать обработку ошибок: исключения, Result-типы, передачу контекста и graceful degradation. Пригодится для API и отладки сбоев. CX Codex 22 957установок api-error-design Samuel Berthe Помогает спроектировать ответы API при сбоях: коды, конверт RFC 9457, сообщения и сигналы повтора. Пригодится, когда интеграторы чинят проблему сами. CX Codex +1 7 800установок golang-error-handling samber Скилл для идиоматичной обработки ошибок в Go: оборачивание с контекстом, проверка цепочек, структурированное логирование и интеграция с samber/oops. Применяется при создании, оборачивании, инспекции и логировании ошибок. CX Codex +1 43 400установок n8n-error-handling czlonkowski Настраивает обработку сбоев в n8n: ветки ошибок, повторные попытки и ответные статусы для вебхуков. Нужен, когда сценарий не должен молча завершаться. CX Codex +1 2 000установок

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

api-reference-documentation Собирает справочник по REST API из спецификации OpenAPI: эндпоинты, авторизация, примеры запросов и ответов. Пригодится, когда нужен developer portal или SDK-референс. CX Codex +1 454установок csrf-protection Скилл подсказывает агенту, как закрыть формы и эндпоинты от подделки запросов: синхронизатор-токены, double-submit cookie и SameSite. CX Codex +1 453установок bun-hono-integration Скилл подсказывает агенту, как строить API на Hono под Bun: маршруты, middleware, валидация через Zod, RPC-клиент. Пригодится, когда проект уже крутится на Bun. CX Codex +1 452установок interaction-design Скилл для проектирования отклика интерфейса: состояния загрузки, ошибки, пустые экраны, анимация и доступность. Пригодится, когда нужно продумать поведение UI, а не только его вид. CX Codex +1 441установок security-headers-configuration Настраивает HTTP-заголовки безопасности против XSS, кликджекинга и MIME-сниффинга. Пригодится при аудите или внедрении CSP. CX Codex +1 438установок mutation-testing Вносит мелкие правки в код и смотрит, ловят ли их тесты. Показывает, где тест проходит, хотя баг уже в коде. CX Codex +1 432установок seo-optimizer Разбирает статью или блог-пост по ключевым словам, читабельности и техническим тегам, а потом выдаёт список правок по приоритету. CX Codex +1 433установок mobile-app-debugging Скилл для отладки iOS, Android и кроссплатформенных приложений: падения, утечки памяти, просадки FPS, сетевые проблемы. CX Codex +1 428установок

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

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