CtrlK
BlogDocsLog inGet started
Tessl Logo

api-design-principles

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

1.13x
Quality

41%

Does it follow best practices?

Impact

93%

1.13x

Average score across 6 eval scenarios

SecuritybySnyk

Passed

No known issues

Optimize this skill with Tessl

npx tessl skill review --optimize ./plugins/backend-development/skills/api-design-principles/SKILL.md
SKILL.md
Quality
Evals
Security

Evaluation results

96%

Inventory Management REST API Design

REST resource naming and HTTP semantics

Criteria
Without context
With context

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%

90%

13%

Customer Transactions API

Pagination, filtering, and error response structure

Criteria
Without context
With context

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%

97%

19%

Blog Platform GraphQL API

GraphQL schema design and resolver patterns

Criteria
Without context
With context

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%

83%

-7%

Library Catalogue REST API — Multi-Version Support

HATEOAS links and API versioning

Criteria
Without context
With context

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%

100%

35%

Payment Processing API — Production Readiness

OpenAPI documentation, health checks, caching, and idempotency

Criteria
Without context
With context

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%

94%

8%

Content Feed GraphQL API — Multi-Type Search and Live Updates

GraphQL advanced schema: subscriptions, unions, interfaces, custom scalars

Criteria
Without context
With context

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%

Repository
wshobson/agents
Evaluated
Agent
Claude Code
Model
Claude Sonnet 4.6

Table of Contents

Is this your skill?

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.