api-design

Design stable public APIs with extend-only changes and migration plans.

1.1k|101|Updated Nov 12, 2025
One-click install
npx skills add https://github.com/Aaronontheweb/dotnet-skills --skill api-design-aaronontheweb
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: api-design
Source: https://github.com/Aaronontheweb/dotnet-skills/tree/main/skills/csharp-api-design
Command: npx skills add https://github.com/Aaronontheweb/dotnet-skills --skill api-design-aaronontheweb

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This skill helps software teams design stable public APIs, ensuring compatibility across versions and minimizing breaking changes.

Core Features & Use Cases

  • Extend-only design: Add new functionality without removing or altering existing APIs.
  • Versioning guidance: Strategies for semantic versioning, deprecation, and migration planning for NuGet packages and libraries.
  • Wire compatibility & governance: Best practices for preserving wire formats and contracts across distributed components.
  • Use Case: When updating a public library, apply this skill to plan deprecation paths and introduce non-breaking enhancements.

Quick Start

Use this skill to draft a migration plan for API 'Foo' across versions 1.x to 2.x, including deprecation notes and new overloads.

Frequently Asked Questions about api-design

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I design a public API that preserves compatibility across versions?

To design stable public APIs that preserve compatibility across versions, apply an extend-only approach by adding new functionality without removing or altering existing endpoints. This minimizes breaking changes and ensures cross-version compatibility.

What is the best way to plan a NuGet package migration without breaking changes?

The best way to plan a NuGet package migration without breaking changes is to document migration steps, introduce new overloads, and apply deprecation paths. This ensures users can transition smoothly across major versions.

How do I handle API deprecation and versioning in a distributed system?

Handle API deprecation and versioning in a distributed system by preserving wire formats and contracts. Apply semantic versioning strategies and document migration steps to minimize user disruption across distributed components.

Can I use extend-only design for wire format compatibility in distributed systems?

Yes, you can use extend-only design for wire format compatibility in distributed systems. This approach enforces non-breaking enhancements, preserving wire formats and contracts across distributed components during version updates.

When should I use extend-only compatibility instead of major version bumps?

Use extend-only compatibility instead of major version bumps when you need to add new functionality without disrupting existing users. It warns against breaking changes and documents migration paths for non-breaking enhancements.

Why does removing a method break cross-version compatibility in a public library?

Removing a method breaks cross-version compatibility in a public library because it alters the existing API surface. Extend-only design prevents this by enforcing non-breaking enhancements and warning against breaking changes.