Claude Code Plugins

Community-maintained marketplace

Feedback
1
0

Apply when designing RESTful APIs, defining endpoints, HTTP methods, status codes, and response formats.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name api-rest-design
description Apply when designing RESTful APIs, defining endpoints, HTTP methods, status codes, and response formats.
version 1.1.0
tokens ~700
confidence high
sources https://restfulapi.net/, https://www.rfc-editor.org/rfc/rfc9110
last_validated Wed Dec 10 2025 00:00:00 GMT+0000 (Coordinated Universal Time)
next_review Wed Dec 24 2025 00:00:00 GMT+0000 (Coordinated Universal Time)
tags api, rest, backend, design

When to Use

Apply when designing RESTful APIs, defining endpoints, HTTP methods, status codes, and response formats.

Patterns

Pattern 1: Resource Naming

# Source: https://restfulapi.net/resource-naming/
GOOD:
GET    /users              # List users
GET    /users/123          # Get user 123
POST   /users              # Create user
PUT    /users/123          # Update user 123
DELETE /users/123          # Delete user 123
GET    /users/123/orders   # User's orders (nested resource)

BAD:
GET    /getUsers           # Verb in URL
POST   /createUser         # Verb in URL
GET    /user/123           # Singular (use plural)

Pattern 2: HTTP Status Codes

# Source: https://www.rfc-editor.org/rfc/rfc9110
Success:
200 OK           - GET/PUT success with body
201 Created      - POST success, include Location header
204 No Content   - DELETE success, no body

Client Errors:
400 Bad Request  - Invalid input/payload
401 Unauthorized - Missing/invalid auth
403 Forbidden    - Auth valid, no permission
404 Not Found    - Resource doesn't exist
409 Conflict     - Resource state conflict
422 Unprocessable - Validation failed

Server Errors:
500 Internal     - Unexpected server error
503 Unavailable  - Service temporarily down

Pattern 3: Response Format

// Source: https://restfulapi.net/
// Success response
{
  "data": { "id": 123, "name": "John" },
  "meta": { "timestamp": "2025-12-10T12:00:00Z" }
}

// Error response
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid email format",
    "details": [{ "field": "email", "message": "Must be valid email" }]
  }
}

// List with pagination
{
  "data": [...],
  "meta": { "total": 100, "page": 1, "limit": 20 }
}

Pattern 4: Filtering & Pagination

# Source: https://restfulapi.net/
GET /users?status=active&role=admin     # Filter
GET /users?sort=created_at:desc         # Sort
GET /users?page=2&limit=20              # Pagination
GET /users?fields=id,name,email         # Field selection

Pattern 5: Versioning

# Source: https://restfulapi.net/versioning/
URL path (recommended):
GET /api/v1/users

Header (alternative):
Accept: application/vnd.api+json;version=1

Anti-Patterns

  • Verbs in URLs - Use nouns: /users not /getUsers
  • Wrong status codes - Don't return 200 for errors
  • Inconsistent responses - Same format for all endpoints
  • Missing pagination - Always paginate lists
  • No versioning - Plan for API evolution

Verification Checklist

  • Resource URLs use plural nouns
  • Correct HTTP methods (GET read, POST create, etc.)
  • Appropriate status codes returned
  • Consistent error response format
  • Pagination on list endpoints
  • API versioning strategy defined