api-documentation-generator

API Documentation Generator Skill

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "api-documentation-generator" with this command: npx skills add dexploarer/claudius-skills/dexploarer-claudius-skills-api-documentation-generator

API Documentation Generator Skill

Expert at creating comprehensive, developer-friendly API documentation.

When to Activate

  • "document API endpoints"

  • "create API documentation for [feature]"

  • "generate OpenAPI/Swagger spec"

  • "write API integration guide"

OpenAPI 3.0 Specification

openapi.yaml

openapi: 3.0.3 info: title: User Management API description: | Comprehensive API for managing users, authentication, and profiles.

## Features
- User CRUD operations
- JWT authentication
- Role-based access control
- Search and pagination

## Authentication
Use Bearer token in Authorization header:
```
Authorization: Bearer <your-jwt-token>
```

version: 1.0.0 contact: name: API Support email: api@example.com url: https://api.example.com/support license: name: MIT url: https://opensource.org/licenses/MIT

servers:

tags:

  • name: Users description: User management operations
  • name: Authentication description: Authentication and authorization

paths: /users: get: tags: [Users] summary: List users description: Retrieve a paginated list of users with optional filtering operationId: getUsers security: - bearerAuth: [] parameters: - name: page in: query description: Page number schema: type: integer minimum: 1 default: 1 - name: limit in: query description: Number of items per page schema: type: integer minimum: 1 maximum: 100 default: 10 - name: search in: query description: Search query for name or email schema: type: string - name: role in: query description: Filter by user role schema: type: string enum: [user, admin, moderator] responses: '200': description: Successful response content: application/json: schema: type: object properties: users: type: array items: $ref: '#/components/schemas/User' meta: $ref: '#/components/schemas/PaginationMeta' example: users: - id: 1 email: user@example.com name: John Doe role: user createdAt: '2024-01-01T00:00:00Z' meta: page: 1 limit: 10 total: 45 totalPages: 5 '401': $ref: '#/components/responses/UnauthorizedError'

post:
  tags: [Users]
  summary: Create user
  description: Create a new user account
  operationId: createUser
  requestBody:
    required: true
    content:
      application/json:
        schema:
          $ref: '#/components/schemas/CreateUserInput'
        example:
          name: Jane Doe
          email: jane@example.com
          password: SecurePass123!
          role: user
  responses:
    '201':
      description: User created successfully
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/User'
    '400':
      $ref: '#/components/responses/ValidationError'
    '409':
      description: Email already exists
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'

/users/{id}: get: tags: [Users] summary: Get user by ID operationId: getUserById security: - bearerAuth: [] parameters: - name: id in: path required: true schema: type: integer description: User ID responses: '200': description: User found content: application/json: schema: $ref: '#/components/schemas/User' '404': $ref: '#/components/responses/NotFoundError'

put:
  tags: [Users]
  summary: Update user
  operationId: updateUser
  security:
    - bearerAuth: []
  parameters:
    - name: id
      in: path
      required: true
      schema:
        type: integer
  requestBody:
    required: true
    content:
      application/json:
        schema:
          $ref: '#/components/schemas/UpdateUserInput'
  responses:
    '200':
      description: User updated
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/User'

delete:
  tags: [Users]
  summary: Delete user
  operationId: deleteUser
  security:
    - bearerAuth: []
  parameters:
    - name: id
      in: path
      required: true
      schema:
        type: integer
  responses:
    '204':
      description: User deleted
    '403':
      $ref: '#/components/responses/ForbiddenError'

components: securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT

schemas: User: type: object required: [id, email, name, role] properties: id: type: integer description: Unique user identifier email: type: string format: email description: User email address name: type: string description: User full name role: type: string enum: [user, admin, moderator] description: User role createdAt: type: string format: date-time updatedAt: type: string format: date-time

CreateUserInput:
  type: object
  required: [email, name, password]
  properties:
    email:
      type: string
      format: email
    name:
      type: string
      minLength: 2
      maxLength: 100
    password:
      type: string
      minLength: 8
    role:
      type: string
      enum: [user, admin, moderator]
      default: user

UpdateUserInput:
  type: object
  properties:
    email:
      type: string
      format: email
    name:
      type: string
    password:
      type: string
      minLength: 8
    role:
      type: string
      enum: [user, admin, moderator]

PaginationMeta:
  type: object
  properties:
    page:
      type: integer
    limit:
      type: integer
    total:
      type: integer
    totalPages:
      type: integer

Error:
  type: object
  properties:
    error:
      type: string
    message:
      type: string
    details:
      type: array
      items:
        type: string

responses: UnauthorizedError: description: Authentication required content: application/json: schema: $ref: '#/components/schemas/Error'

ForbiddenError:
  description: Insufficient permissions
  content:
    application/json:
      schema:
        $ref: '#/components/schemas/Error'

NotFoundError:
  description: Resource not found
  content:
    application/json:
      schema:
        $ref: '#/components/schemas/Error'

ValidationError:
  description: Validation failed
  content:
    application/json:
      schema:
        $ref: '#/components/schemas/Error'

API README Documentation

User API Documentation

Overview

The User API provides endpoints for managing user accounts, authentication, and profiles.

Base URL: https://api.example.com/v1

Authentication

All endpoints (except registration and login) require authentication using JWT tokens.

Include the token in the Authorization header:

Authorization: Bearer YOUR_JWT_TOKEN

Getting a Token

POST /auth/login
Content-Type: application/json

{
  "email": "user@example.com",
  "password": "password123"
}

Response:
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "user": { ... }
}

Quick Start

1. Register a New User

curl -X POST https://api.example.com/v1/users \
  -H "Content-Type: application/json" \
  -d '{
    "name": "John Doe",
    "email": "john@example.com",
    "password": "SecurePass123!"
  }'

2. Login

curl -X POST https://api.example.com/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "john@example.com",
    "password": "SecurePass123!"
  }'

3. Get User Profile

curl https://api.example.com/v1/users/me \
  -H "Authorization: Bearer YOUR_TOKEN"

Endpoints

List Users

GET /users

Query Parameters:

- page
 (integer): Page number (default: 1)

- limit
 (integer): Items per page (default: 10, max: 100)

- search
 (string): Search users by name or email

- role
 (string): Filter by role (user, admin, moderator)

Response:

{
  "users": [
    {
      "id": 1,
      "email": "user@example.com",
      "name": "John Doe",
      "role": "user",
      "createdAt": "2024-01-01T00:00:00Z"
    }
  ],
  "meta": {
    "page": 1,
    "limit": 10,
    "total": 45,
    "totalPages": 5
  }
}

Error Handling

The API uses standard HTTP status codes:

- 200
 - Success

- 201
 - Created

- 400
 - Bad Request (validation error)

- 401
 - Unauthorized (authentication required)

- 403
 - Forbidden (insufficient permissions)

- 404
 - Not Found

- 409
 - Conflict (e.g., email already exists)

- 500
 - Internal Server Error

Error Response Format:

{
  "error": "ValidationError",
  "message": "Invalid input data",
  "details": [
    "Email must be valid",
    "Password must be at least 8 characters"
  ]
}

Rate Limiting

API requests are rate-limited to:

- 100 requests per minute (authenticated)

- 20 requests per minute (unauthenticated)

Rate limit headers:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1640000000

SDKs and Libraries

- JavaScript/TypeScript: npm install @example/api-client

- Python: pip install example-api

- Go: go get github.com/example/api-go

Support

- Documentation: https://docs.example.com

- Support Email: api@example.com

- Status Page: https://status.example.com

## Best Practices

- Include all endpoints and parameters
- Provide request/response examples
- Document authentication requirements
- Explain error responses
- Add rate limiting information
- Include SDKs and code examples
- Keep documentation up-to-date
- Version your API
- Use standard HTTP methods
- Provide changelog

## Output Checklist

- ✅ OpenAPI spec generated
- ✅ All endpoints documented
- ✅ Request/response examples
- ✅ Authentication documented
- ✅ Error codes explained
- ✅ Quick start guide
- ✅ Code examples
- 📝 README created

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

threejs-scene-builder

No summary provided by upstream source.

Repository SourceNeeds Review
General

nextjs-page-generator

No summary provided by upstream source.

Repository SourceNeeds Review
General

testing-framework-helper

No summary provided by upstream source.

Repository SourceNeeds Review