Design consistent error codes following the PREFIX_CATEGORY_NUMBER format. Use when: defining error codes, creating error handling, designing APIs. Keywords: error code, error handling, error format, API errors, 錯誤碼, 錯誤處理.
/plugin marketplace add AsiaOstrich/universal-dev-standards/plugin install asiaostrich-universal-dev-standards@AsiaOstrich/universal-dev-standardsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Language: English | 繁體中文
Version: 1.0.0 Last Updated: 2025-12-30 Applicability: Claude Code Skills
This skill helps design consistent error codes following the standard format, enabling better debugging, monitoring, and user experience.
<PREFIX>_<CATEGORY>_<NUMBER>
| Component | Description | Example |
|---|---|---|
| PREFIX | Application/service identifier | AUTH, PAY, USR |
| CATEGORY | Error category | VAL, SYS, BIZ |
| NUMBER | Unique numeric identifier | 001, 100, 404 |
AUTH_VAL_001 → Authentication validation error
PAY_SYS_503 → Payment system unavailable
USR_BIZ_100 → User business rule violation
API_NET_408 → API network timeout
| Category | Full Name | Description | HTTP Status |
|---|---|---|---|
| VAL | Validation | Client input validation failures | 400 |
| BIZ | Business | Business rule violations | 422 |
| SYS | System | Internal system failures | 500 |
| NET | Network | Communication failures | 502/503/504 |
| AUTH | Auth | Security-related errors | 401/403 |
| Range | Description | Example |
|---|---|---|
| *_VAL_001-099 | Field validation | Missing required field |
| *_VAL_100-199 | Format validation | Invalid email format |
| *_VAL_200-299 | Constraint validation | Password too short |
| *_BIZ_001-099 | State violations | Order already cancelled |
| *_BIZ_100-199 | Rule violations | Cannot return after 30 days |
| *_BIZ_200-299 | Limit violations | Daily limit exceeded |
| *_AUTH_001-099 | Authentication | Invalid credentials |
| *_AUTH_100-199 | Authorization | Insufficient permissions |
| *_AUTH_200-299 | Token/session | Token expired |
| Category | HTTP Status | Description |
|---|---|---|
| VAL | 400 | Bad Request |
| BIZ | 422 | Unprocessable Entity |
| AUTH (001-099) | 401 | Unauthorized |
| AUTH (100-199) | 403 | Forbidden |
| SYS | 500 | Internal Server Error |
| NET | 502/503/504 | Gateway errors |
For complete standards, see:
For AI assistants, use the YAML format files for reduced token usage:
ai/standards/error-codes.ai.yaml{
"success": false,
"error": {
"code": "AUTH_VAL_001",
"message": "Email is required",
"field": "email",
"requestId": "req_abc123"
}
}
{
"success": false,
"errors": [
{
"code": "AUTH_VAL_001",
"message": "Email is required",
"field": "email"
},
{
"code": "AUTH_VAL_201",
"message": "Password must be at least 8 characters",
"field": "password"
}
],
"requestId": "req_abc123"
}
interface ApplicationError {
// Core fields
code: string; // "AUTH_VAL_001"
message: string; // Technical message for logs
// User-facing
userMessage: string; // Localized user message
userMessageKey: string; // i18n key: "error.auth.val.001"
// Context
field?: string; // Affected field: "email"
details?: object; // Additional context
// Debugging
timestamp: string; // ISO 8601
requestId: string; // Correlation ID
}
error.<prefix>.<category>.<number>
# en.yaml
error:
auth:
val:
001: "Email is required"
101: "Invalid email format"
auth:
001: "Invalid credentials"
# zh-TW.yaml
error:
auth:
val:
001: "電子郵件為必填欄位"
101: "電子郵件格式無效"
auth:
001: "帳號或密碼錯誤"
AUTH_VAL_001 // Missing required field: email
AUTH_VAL_101 // Invalid email format
ORDER_BIZ_001 // Order already cancelled
ORDER_BIZ_201 // Daily purchase limit exceeded
DB_SYS_001 // Database query failed
SEC_AUTH_001 // Invalid credentials
SEC_AUTH_201 // Token expired
ERR_001 // Too vague, no prefix or category
INVALID // Not descriptive
error // Not a code
AUTH_ERROR // Missing number
This skill supports project-specific configuration.
CONTRIBUTING.md for error code guidelinesIf no error code standard found:
errors/registry.ts:export const ErrorCodes = {
AUTH_VAL_001: {
code: 'AUTH_VAL_001',
httpStatus: 400,
messageKey: 'error.auth.val.001',
description: 'Email field is required',
},
// ... more codes
} as const;
| Version | Date | Changes |
|---|---|---|
| 1.0.0 | 2025-12-30 | Initial release |
This skill is released under CC BY 4.0.
Source: universal-dev-standards
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.