Master REST and GraphQL API design principles to build intuitive, scalable, and maintainable APIs that delight developers. Use when designing new APIs, reviewing API specifications, or establishing API design standards.
72
41%
Does it follow best practices?
Impact
93%
1.13xAverage score across 6 eval scenarios
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./plugins/backend-development/skills/api-design-principles/SKILL.mdREST resource naming and HTTP semantics
Plural nouns for collections
100%
100%
No verb-based endpoints
100%
100%
GET for retrieval
100%
100%
POST for creation
100%
100%
PUT or PATCH for updates
100%
100%
DELETE for removal
100%
100%
201 Created for POST
100%
100%
204 No Content for DELETE
100%
100%
404 for missing resources
100%
100%
422 for validation errors
100%
100%
Shallow nesting
42%
42%
409 for conflict
100%
100%
Pagination, filtering, and error response structure
Paginated response shape
58%
100%
Default page size 20
100%
100%
Max page size 100
100%
100%
Default page 1
100%
100%
Error response has error field
100%
100%
Error response has message field
100%
100%
Error response has details field
25%
62%
Rate limit headers present
100%
100%
429 with Retry-After
50%
100%
Status-based filtering
100%
100%
FastAPI + Pydantic
100%
100%
Sorting supported
0%
0%
GraphQL schema design and resolver patterns
Schema file first
100%
100%
Relay connection types
100%
100%
PageInfo fields
100%
100%
Cursor-based pagination args
100%
100%
DataLoader for relationships
100%
100%
Mutation input types
50%
62%
Mutation payload with errors
0%
100%
@deprecated used
100%
100%
Status enum defined
100%
100%
PascalCase types
100%
100%
camelCase fields
100%
100%
ariadne resolvers
0%
100%
HATEOAS links and API versioning
URL versioning used
83%
100%
Both versions present
100%
100%
_links field in responses
100%
58%
self link present
100%
60%
Related resource links
100%
60%
Write action links include method
100%
66%
Response model uses Pydantic
0%
100%
v1 and v2 differ in shape
100%
100%
Versioning strategy documented
100%
100%
Plural nouns in paths
100%
100%
No verb-based endpoints
100%
100%
OpenAPI documentation, health checks, caching, and idempotency
FastAPI title and description
100%
100%
FastAPI version set
100%
100%
docs_url and redoc_url configured
0%
100%
Endpoint tags used
100%
100%
Endpoint summary or docstring
100%
100%
/health endpoint present
50%
100%
/health/detailed endpoint present
0%
100%
Idempotency-Key header accepted
100%
100%
Idempotency deduplication logic
100%
100%
ETag header on GET
100%
100%
Cache-Control header on GET
100%
100%
If-None-Match / 304 handling
0%
100%
GraphQL advanced schema: subscriptions, unions, interfaces, custom scalars
schema.graphql present
100%
100%
Union type for search
100%
100%
Interface for shared fields
100%
100%
Types implement interface
100%
100%
DateTime custom scalar
0%
100%
URL or domain scalar
0%
100%
Subscription type defined
100%
100%
ariadne SubscriptionType used
100%
100%
ariadne resolver bindings
100%
100%
PascalCase type names
100%
100%
camelCase field names
100%
100%
Schema notes explain union/interface choice
100%
100%
Enums for content status
100%
0%
70444e5
Table of Contents
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.