From api-error-handling
Implements standardized API error responses with status codes, logging, user messages, and circuit breaker for Node.js and Python Flask. Use for production APIs, error recovery, and monitoring integration.
How this skill is triggered — by the user, by Claude, or both
Slash command
/api-error-handling:api-error-handlingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Implement robust error handling with standardized responses and proper logging.
Implement robust error handling with standardized responses and proper logging.
{
"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" }
]
}
}
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);
});
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;
}
}
}
See references/python-flask.md for:
npx claudepluginhub midego1/claude-skills --plugin api-error-handlingImplements standardized API error responses with status codes, logging, user messages, and circuit breaker for Node.js and Python Flask. Use for production APIs, error recovery, and monitoring integration.
Standardizes API error handling with typed error classes, consistent error response formats, retry strategies, circuit breaker patterns, and monitoring integration. Useful for building resilient APIs or debugging production error patterns.
Implements standardized API error handling with RFC 7807 responses, typed error classes, middleware, and monitoring. Use for consistent HTTP errors across endpoints.