versioning-apis

2
1
Source

Implement API versioning with backward compatibility, deprecation notices, and migration paths. Use when managing API versions and backward compatibility. Trigger with phrases like "version the API", "manage API versions", or "handle API versioning".

Install

mkdir -p .claude/skills/versioning-apis && curl -L -o skill.zip "https://mcp.directory/api/skills/download/7726" && unzip -o skill.zip -d .claude/skills/versioning-apis && rm skill.zip

Installs to .claude/skills/versioning-apis

About this skill

Versioning APIs

Overview

Implement API versioning strategies -- URL path (/v1/, /v2/), header-based (Accept: application/vnd.api.v2+json), or query parameter (?version=2) -- with backward compatibility layers, deprecation notices, and automated migration paths. Manage concurrent version support, sunset timelines, and breaking change detection across the API surface.

Prerequisites

  • Existing API codebase with route definitions and controller implementations
  • Version control history for tracking breaking changes across releases
  • OpenAPI specs for each supported API version (or ability to generate them)
  • API gateway or reverse proxy capable of version-based routing (optional: Kong, AWS API Gateway)
  • Consumer notification channel for deprecation announcements (changelog, email, response headers)

Instructions

  1. Audit existing endpoints using Grep and Read to identify current versioning approach (if any) and catalog all public-facing endpoints with their request/response contracts.
  2. Select a versioning strategy based on API consumer patterns: URL path versioning for public APIs, header versioning for APIs needing clean URLs, or content negotiation for advanced use cases.
  3. Create a version router that directs requests to the appropriate version handler set based on the extracted version identifier from URL, header, or query parameter.
  4. Implement version-specific controller directories (/v1/controllers/, /v2/controllers/) with shared business logic extracted into version-independent service layers.
  5. Build a compatibility layer that transforms v1 requests into v2 format and v2 responses back to v1 format, enabling older versions to run on the latest business logic.
  6. Add deprecation headers to sunset versions: Deprecation: true, Sunset: <date>, and Link: <migration-guide-url>; rel="sunset" per the Sunset HTTP header RFC.
  7. Create a breaking change detector that compares OpenAPI specs between versions and flags removed fields, changed types, new required parameters, and altered response structures.
  8. Write version compatibility tests that send v1-formatted requests and verify correct responses, ensuring the compatibility layer preserves backward compatibility.

See ${CLAUDE_SKILL_DIR}/references/implementation.md for the full implementation guide.

Output

  • ${CLAUDE_SKILL_DIR}/src/routes/v1/ - Version 1 route definitions
  • ${CLAUDE_SKILL_DIR}/src/routes/v2/ - Version 2 route definitions
  • ${CLAUDE_SKILL_DIR}/src/middleware/version-router.js - Version extraction and routing middleware
  • ${CLAUDE_SKILL_DIR}/src/compatibility/ - Request/response transformation layers between versions
  • ${CLAUDE_SKILL_DIR}/src/utils/breaking-change-detector.js - OpenAPI diff tool for breaking changes
  • ${CLAUDE_SKILL_DIR}/docs/migration-guide-v1-to-v2.md - Consumer migration documentation

Error Handling

ErrorCauseSolution
400 Unsupported VersionClient requests a version that does not existReturn available versions list in error body; suggest closest valid version
410 GoneClient requests a sunset version past its end-of-life dateReturn migration guide URL and recommended current version in error body
Compatibility layer failurev1-to-v2 transform encounters a field with no mappingLog unmapped fields; return partial response with warning header; alert API team
Version header ignoredClient sets version header but reverse proxy strips custom headersDocument required proxy configuration; add URL path fallback for header-based versioning
Breaking change undetectedSemantic change (same field name, different meaning) not caught by schema diffAdd contract tests with business-logic assertions beyond schema structure

Refer to ${CLAUDE_SKILL_DIR}/references/errors.md for comprehensive error patterns.

Examples

URL path versioning: Migrate from /api/users to /api/v1/users and /api/v2/users where v2 changes name (string) to firstName/lastName (object), with v1 compatibility layer that joins the fields.

Header-based versioning: Route requests using Accept: application/vnd.myapi.v2+json with a default version fallback for clients omitting the header, and version discovery via OPTIONS responses.

Sunset lifecycle management: Announce v1 deprecation with 6-month sunset timeline, add Sunset headers immediately, log v1 usage metrics to track migration progress, and auto-disable after sunset date.

See ${CLAUDE_SKILL_DIR}/references/examples.md for additional examples.

Resources

  • RFC 8594 The Sunset HTTP Header Field
  • API Versioning strategies comparison (Stripe, GitHub, Twilio approaches)
  • OpenAPI diff tools: oasdiff, openapi-diff
  • Semantic Versioning 2.0.0: https://semver.org/

svg-icon-generator

jeremylongshore

Svg Icon Generator - Auto-activating skill for Visual Content. Triggers on: svg icon generator, svg icon generator Part of the Visual Content skill category.

12244

d2-diagram-creator

jeremylongshore

D2 Diagram Creator - Auto-activating skill for Visual Content. Triggers on: d2 diagram creator, d2 diagram creator Part of the Visual Content skill category.

11038

automating-mobile-app-testing

jeremylongshore

This skill enables automated testing of mobile applications on iOS and Android platforms using frameworks like Appium, Detox, XCUITest, and Espresso. It generates end-to-end tests, sets up page object models, and handles platform-specific elements. Use this skill when the user requests mobile app testing, test automation for iOS or Android, or needs assistance with setting up device farms and simulators. The skill is triggered by terms like "mobile testing", "appium", "detox", "xcuitest", "espresso", "android test", "ios test".

21836

performing-penetration-testing

jeremylongshore

This skill enables automated penetration testing of web applications. It uses the penetration-tester plugin to identify vulnerabilities, including OWASP Top 10 threats, and suggests exploitation techniques. Use this skill when the user requests a "penetration test", "pentest", "vulnerability assessment", or asks to "exploit" a web application. It provides comprehensive reporting on identified security flaws.

5823

designing-database-schemas

jeremylongshore

Design and visualize efficient database schemas, normalize data, map relationships, and generate ERD diagrams and SQL statements.

12619

optimizing-sql-queries

jeremylongshore

This skill analyzes and optimizes SQL queries for improved performance. It identifies potential bottlenecks, suggests optimal indexes, and proposes query rewrites. Use this when the user mentions "optimize SQL query", "improve SQL performance", "SQL query optimization", "slow SQL query", or asks for help with "SQL indexing". The skill helps enhance database efficiency by analyzing query structure, recommending indexes, and reviewing execution plans.

5814

You might also like

ui-ux-pro-max

nextlevelbuilder

"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."

1,5601,562

flutter-development

aj-geddes

Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.

1,8271,484

drawio-diagrams-enhanced

jgtolentino

Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.

1,7071,236

godot

bfollington

This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.

1,618905

pdf-to-markdown

aliceisjustplaying

Convert entire PDF documents to clean, structured Markdown for full context loading. Use this skill when the user wants to extract ALL text from a PDF into context (not grep/search), when discussing or analyzing PDF content in full, when the user mentions "load the whole PDF", "bring the PDF into context", "read the entire PDF", or when partial extraction/grepping would miss important context. This is the preferred method for PDF text extraction over page-by-page or grep approaches.

1,897838

nano-banana-pro

garg-aayush

Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.

1,437791