Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Une commande directe contourne le prompt de vérification. Examinez la source avant de l'exécuter.
Design → Document → Mock → Build → Test → Deploy
NOT: Build → Document (maybe) → Hope it works
REST Patterns
Resource Naming
# Collection
GET /users # List users
POST /users # Create user
# Item
GET /users/{id} # Get user
PUT /users/{id} # Replace user
PATCH /users/{id} # Update user
DELETE /users/{id} # Delete user
# Nested resources
GET /users/{id}/posts # User's posts
POST /users/{id}/posts # Create post for user
# Actions (when CRUD doesn't fit)
POST /users/{id}/activate
POST /orders/{id}/cancel
{"error":{"code":"VALIDATION_ERROR","message":"Invalid request parameters","details":[{"field":"email","code":"INVALID_FORMAT","message":"Must be a valid email address"}],"requestId":"req_abc123"}}
Pagination Patterns
Offset-Based
GET /users?page=2&perPage=20
GET /users?offset=20&limit=20
Pros: Simple, familiar
Cons: Inconsistent with real-time data, slow on large datasets
Pros: Consistent, performant
Cons: Can't jump to page N
Keyset-Based
GET /users?after_id=123&limit=20
Pros: Very performant
Cons: Requires sortable unique field
Filtering, Sorting, Search
Filtering
# Simple
GET /users?status=active
# Multiple values
GET /users?status=active,pending
# Operators
GET /users?created_at[gte]=2024-01-01
GET /users?name[contains]=john
# Nested
GET /users?organization.name=Acme
Sorting
# Single field
GET /users?sort=createdAt
# Descending
GET /users?sort=-createdAt
# Multiple fields
GET /users?sort=-createdAt,name
Field Selection
GET /users?fields=id,name,email
GET /users?fields[user]=id,name&fields[posts]=title
Search
GET /users?q=john
GET /users?search=john+doe
Versioning Strategies
URL Path (Recommended for major versions)
GET /v1/users
GET /v2/users
Pros: Explicit, cacheable
Cons: URL pollution
Header
GET /users
Accept: application/vnd.api+json; version=2
Pros: Clean URLs
Cons: Harder to test, less visible
Query Parameter
GET /users?version=2
Pros: Easy to test
Cons: Breaks caching, URL pollution
type User {id: ID!email: String!name: String
posts(first: Int, after: String): PostConnection!createdAt: DateTime!}type Post {id: ID!title: String!content: String!author: User!}type PostConnection {edges:[PostEdge!]!pageInfo: PageInfo!}typeQuery{
user(id: ID!): User
users(filter: UserFilter, first: Int, after: String): UserConnection!}typeMutation{
createUser(input: CreateUserInput!): CreateUserPayload!
updateUser(id: ID!, input: UpdateUserInput!): UpdateUserPayload!}
Naming Conventions
Element
Convention
Example
Types
PascalCase
User, BlogPost
Fields
camelCase
firstName, createdAt
Arguments
camelCase
userId, first
Enums
SCREAMING_SNAKE
USER_STATUS, ACTIVE
Mutations
verbNoun
createUser, updatePost
Error Handling
{"data":null,"errors":[{"message":"User not found","locations":[{"line":2,"column":3}],"path":["user"],"extensions":{"code":"NOT_FOUND","timestamp":"2024-01-15T10:30:00Z"}}]}