api-documentation-generator
从代码中生成全面、开发者友好的API文档,涵盖端点、参数、示例和最佳实践。
API Documentation Generator
Overview
Automatically generate clear, comprehensive API documentation from your codebase. This skill helps you create professional documentation that includes endpoint descriptions, request/response examples, authentication details, error handling, and usage guidelines.
Perfect for REST APIs, GraphQL APIs, and WebSocket APIs.
When to Use This Skill
How It Works
Step 1: Analyze the API Structure
First, I'll examine your API codebase to understand:
Step 2: Generate Endpoint Documentation
For each endpoint, I'll create documentation including:
Endpoint Details:
Request Specification:
Response Specification:
Code Examples:
Step 3: Add Usage Guidelines
I'll include:
Step 4: Document Error Handling
Clear error documentation including:
Step 5: Create Interactive Examples
Where possible, I'll provide:
Examples
Example 1: REST API Endpoint Documentation
## Create User\Creates a new user account.
Endpoint:
POST /api/v1/usersAuthentication: Required (Bearer token)
Request Body:
\\\json\
{
"email": "user@example.com", // Required: Valid email address
"password": "SecurePass123!", // Required: Min 8 chars, 1 uppercase, 1 number
"name": "John Doe", // Required: 2-50 characters
"role": "user" // Optional: "user" or "admin" (default: "user")
}
\\Success Response (201 Created):
\\\json\
{
"id": "usr_1234567890",
"email": "user@example.com",
"name": "John Doe",
"role": "user",
"createdAt": "2026-01-20T10:30:00Z",
"emailVerified": false
}
\\Error Responses:
400 Bad Request- Invalid input data
\\\json\
{
"error": "VALIDATION_ERROR",
"message": "Invalid email format",
"field": "email"
}
\\409 Conflict- Email already exists
\\\json\
{
"error": "EMAIL_EXISTS",
"message": "An account with this email already exists"
}
\\401 Unauthorized- Missing or invalid authentication tokenExample Request (cURL):
\\\bash\
curl -X POST https://api.example.com/api/v1/users \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"password": "SecurePass123!",
"name": "John Doe"
}'
\\Example Request (JavaScript):
\\\javascriptBearer ${token}
const response = await fetch('https://api.example.com/api/v1/users', {
method: 'POST',
headers: {
'Authorization':,
'Content-Type': 'application/json'
},
body: JSON.stringify({
email: 'user@example.com',
password: 'SecurePass123!',
name: 'John Doe'
})
});const user = await response.json();
console.log(user);
\\Example Request (Python):
\\\python
import requestsresponse = requests.post(
'https://api.example.com/api/v1/users',
headers={
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
},
json={
'email': 'user@example.com',
'password': 'SecurePass123!',
'name': 'John Doe'
}
)user = response.json()
print(user)
\\\
Example 2: GraphQL API Documentation
## User QueryFetch user information by ID.
Query:
\\\graphql
query GetUser($id: ID!) {
user(id: $id) {
id
email
name
role
createdAt
posts {
id
title
publishedAt
}
}
}
\\\
Variables:
\\\json
{
"id": "usr_1234567890"
}
\\\
Response:
\\\json
{
"data": {
"user": {
"id": "usr_1234567890",
"email": "user@example.com",
"name": "John Doe",
"role": "user",
"createdAt": "2026-01-20T10:30:00Z",
"posts": [
{
"id": "post_123",
"title": "My First Post",
"publishedAt": "2026-01-21T14:00:00Z"
}
]
}
}
}
\\\
Errors:
\\\json
{
"errors": [
{
"message": "User not found",
"extensions": {
"code": "USER_NOT_FOUND",
"userId": "usr_1234567890"
}
}
]
}
\\\
Example 3: Authentication Documentation
## AuthenticationAll API requests require authentication using Bearer tokens.
Getting a Token
Endpoint: POST /api/v1/auth/login
Request:
\\\json
{
"email": "user@example.com",
"password": "your-password"
}
\\\
Response:
\\\json
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresIn": 3600,
"refreshToken": "refresh_token_here"
}
\\\
Using the Token
Include the token in the Authorization header:
\\\
Authorization: Bearer YOUR_TOKEN
\\\
Token Expiration
Tokens expire after 1 hour. Use the refresh token to get a new access token:
Endpoint: POST /api/v1/auth/refresh
Request:
\\\json
{
"refreshToken": "refresh_token_here"
}
\\\
Best Practices
✅ Do This
❌ Don't Do This
Documentation Structure
Recommended Sections
- What the API does
- Base URL
- API version
- Support contact
- How to authenticate
- Token management
- Security best practices
- Simple example to get started
- Common use case walkthrough
- Organized by resource
- Full details for each endpoint
- Schema definitions
- Field descriptions
- Validation rules
- Error code reference
- Error response format
- Troubleshooting guide
- Limits and quotas
- Headers to check
- Handling rate limit errors
- API version history
- Breaking changes
- Deprecation notices
- Official client libraries
- Postman collection
- OpenAPI specification
Common Pitfalls
Problem: Documentation Gets Out of Sync
Symptoms: Examples don't work, parameters are wrong, endpoints return different data
Solution:
Problem: Missing Error Documentation
Symptoms: Users don't know how to handle errors, support tickets increase
Solution:
Problem: Examples Don't Work
Symptoms: Users can't get started, frustration increases
Solution:
Problem: Unclear Parameter Requirements
Symptoms: Users send invalid requests, validation errors
Solution:
Tools and Formats
OpenAPI/Swagger
Generate interactive documentation:
openapi: 3.0.0
info:
title: My API
version: 1.0.0
paths:
/users:
post:
summary: Create a new user
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUserRequest'Postman Collection
Export collection for easy testing:
{
"info": {
"name": "My API",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"item": [
{
"name": "Create User",
"request": {
"method": "POST",
"url": "{{baseUrl}}/api/v1/users"
}
}
]
}Related Skills
@doc-coauthoring - For collaborative documentation writing@copywriting - For clear, user-friendly descriptions@test-driven-development - For ensuring API behavior matches docs@systematic-debugging - For troubleshooting API issuesAdditional Resources
Pro Tip: Keep your API documentation as close to your code as possible. Use tools that generate docs from code comments to ensure they stay in sync!