Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
pproenca avatar

Restful Hateoas

  • 243 installs
  • 191 repo stars
  • Updated July 24, 2026
  • pproenca/dot-skills

restful-hateoas: A skill for development. This provides functionality for development workflows.

Key points

  • restful-hateoas

Restful Hateoas by the numbers

  • 243 all-time installs (skills.sh)
  • +7 installs in the week ending Aug 4, 2026 (Skillselion tracking)
  • Ranked #1,551 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/pproenca/dot-skills --skill restful-hateoas

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs243
repo stars191
Last updatedJuly 24, 2026
Repositorypproenca/dot-skills

How do I use restful-hateoas for development tasks?

Use restful-hateoas for development tasks

Who is it for?

Best when you're working on backend & apis and need structured help with restful-hateoas.

Skip if: Teams with no backend & apis needs, or anyone wanting a generic chat assistant without this specific workflow.

When should I use this skill?

When you need to use restful-hateoas for development tasks, or when restful-hateoas: a skill for development. this provides functionality for development workflows.

What you get

Structured output aligned to restful-hateoas: restful-hateoas.

Files

SKILL.mdMarkdownGitHub ↗

Community RESTful HATEOAS Best Practices

Comprehensive guide to building REST APIs that reach the Glory of REST (Richardson Maturity Level 3) in Ruby on Rails. Contains 47 rules across 9 categories, ordered by the request/response lifecycle — from resource URI design through hypermedia link relations to API evolution.

When to Apply

Reference these guidelines when:

  • Designing new REST API endpoints and resource URIs
  • Adding hypermedia controls (_links, affordances) to API responses
  • Implementing content negotiation with HAL, JSON:API, or vendor media types
  • Building paginated, filterable, sortable collection endpoints
  • Reviewing APIs for proper HTTP method semantics and status codes
  • Evolving APIs without breaking existing clients

Rule Categories by Priority

PriorityCategoryImpactPrefix
1Resource ModelingCRITICALres-
2HTTP Method SemanticsCRITICALhttp-
3Hypermedia & Link RelationsCRITICALlink-
4Status Codes & Response HeadersHIGHstatus-
5Content Negotiation & Media TypesHIGHmedia-
6Collection PatternsMEDIUM-HIGHcoll-
7Error SemanticsMEDIUMerr-
8Caching & Conditional RequestsMEDIUMcache-
9API EvolutionLOW-MEDIUMevolve-

Quick Reference

1. Resource Modeling (CRITICAL)

  • `res-noun-based-uris` - URIs must be nouns, not verbs
  • `res-plural-collection-uris` - Always use plural nouns for collections
  • `res-limit-nesting-depth` - Limit nested resources to max 2 levels
  • `res-model-business-entities` - Model business entities, not database tables
  • `res-use-consistent-identifiers` - Use opaque identifiers, never auto-increment IDs
  • `res-sub-resources-for-relationships` - Express relationships as sub-resources

2. HTTP Method Semantics (CRITICAL)

  • `http-get-must-be-safe` - Keep GET requests free of side effects
  • `http-post-for-creation` - Return 201 Created with Location header from POST
  • `http-put-for-full-replacement` - Use PUT only for full resource replacement
  • `http-patch-for-partial-updates` - PATCH for partial updates with merge semantics
  • `http-delete-is-idempotent` - Ensure DELETE is idempotent
  • `http-head-for-metadata` - Use HEAD for metadata without body transfer
  • `http-idempotency-key` - Use idempotency keys for safe POST retries

3. Hypermedia & Link Relations (CRITICAL)

  • `link-self-link-every-resource` - Include a self link in every resource
  • `link-related-resource-links` - Link to related resources instead of foreign keys
  • `link-action-affordances` - Expose available actions as conditional links
  • `link-standard-relation-types` - Use IANA-registered link relation types
  • `link-entry-point` - Provide a root API entry point
  • `link-pagination-links` - Use hypermedia links for pagination
  • `link-embedded-vs-linked` - Choose between embedding and linking

4. Status Codes & Response Headers (HIGH)

  • `status-201-with-location` - Return 201 Created with Location header
  • `status-204-for-no-content` - Return 204 No Content for empty responses
  • `status-409-for-conflicts` - Return 409 Conflict for state conflicts
  • `status-202-for-async` - Return 202 Accepted for async operations
  • `status-allow-header-on-405` - Return 405 with Allow header for wrong methods
  • `status-rate-limit-headers` - Include rate limit headers in API responses

5. Content Negotiation & Media Types (HIGH)

  • `media-accept-header-negotiation` - Respect the Accept header for content negotiation
  • `media-content-type-in-responses` - Set the correct Content-Type in every response
  • `media-vendor-media-types` - Use vendor media types for API versioning
  • `media-406-for-unsupported-types` - Return 406 for unsupported media types

6. Collection Patterns (MEDIUM-HIGH)

  • `coll-cursor-pagination` - Use cursor-based pagination instead of offset
  • `coll-link-header-pagination` - Include pagination links in body and Link header
  • `coll-filtering-via-query-params` - Support filtering via typed query parameters
  • `coll-sorting-convention` - Support sorting with a standardized sort parameter
  • `coll-field-selection` - Support sparse fieldsets via fields parameter

7. Error Semantics (MEDIUM)

  • `err-problem-details` - Use Problem Details (RFC 9457) for errors
  • `err-validation-errors` - Return structured validation errors
  • `err-error-links` - Include recovery links in error responses
  • `err-machine-readable-codes` - Use machine-readable error codes
  • `err-auth-error-codes` - Distinguish 401 Unauthorized from 403 Forbidden

8. Caching & Conditional Requests (MEDIUM)

  • `cache-etag-conditional-get` - Use ETags with stale? for conditional GET
  • `cache-last-modified` - Set Last-Modified for time-based validation
  • `cache-cache-control-headers` - Set explicit Cache-Control headers
  • `cache-vary-header` - Include Vary header for content-dependent caching

9. API Evolution (LOW-MEDIUM)

  • `evolve-additive-changes-only` - Make only additive changes to responses
  • `evolve-deprecation-headers` - Use Deprecation and Sunset headers
  • `evolve-hateoas-reduces-versioning` - Leverage HATEOAS to eliminate URL versioning

How to Use

Read individual reference files for detailed explanations and code examples:

  • Section definitions - Category structure and impact levels
  • Rule template - Template for adding new rules

Reference Files

FileDescription
references/_sections.mdCategory definitions and ordering
assets/templates/_template.mdTemplate for new rules
metadata.jsonVersion and reference information

Related skills

FAQ

What does restful-hateoas do?

restful-hateoas: A skill for development. This provides functionality for development workflows.

When should I use restful-hateoas?

When you need to use restful-hateoas for development tasks, or when restful-hateoas: a skill for development. this provides functionality for development workflows.

What are the main capabilities?

restful-hateoas.

Backend & APIsbackendintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.