api-design

Guides extend-only public API design to preserve backward and binary compatibility.

Updated Feb 17, 2026
One-click install
npx skills add https://github.com/luongnguyenminhan/EmployeeDemoCS --skill api-design-luongnguyenminhan
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: api-design
Source: https://github.com/luongnguyenminhan/EmployeeDemoCS/tree/main/.github/skills/csharp-api-design
Command: npx skills add https://github.com/luongnguyenminhan/EmployeeDemoCS --skill api-design-luongnguyenminhan

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

API design challenges arise when evolving libraries and distributed systems without breaking existing users. This skill provides a disciplined approach to extend-only design that preserves compatibility.

Core Features & Use Cases

  • Extend-only design pillars: never remove or modify existing public members; add new overloads and new types to grow the surface.
  • API versioning and deprecation: plan migrations with clear deprecation paths and documentation.
  • Wire and binary compatibility guidance: ensure old clients can read new data formats and compiled surfaces.

Quick Start

Audit and extend your public API surface by adding overloads or new types instead of removing or renaming existing members.

Frequently Asked Questions about api-design

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

FAQPage Schema
How do I evolve a public API without breaking existing library users?

To evolve a public API without breaking existing library users, practice extend-only design by never removing or modifying public members. Grow the API surface additively by adding new method overloads or introducing entirely new types.

What is extend-only API design and how does it preserve backward compatibility?

Extend-only API design preserves backward compatibility by enforcing strict non-removal of existing public members. It ensures old clients can interact with new data formats and compiled surfaces by applying additive changes through overloads.

How do I deprecate public API members during migration?

To deprecate public API members during migration, establish clear deprecation paths and documentation. Keep old members intact to preserve compatibility while guiding users toward new overloads or replacement types.

Does extend-only design work for maintaining wire and binary compatibility in distributed systems?

Yes, extend-only design works for distributed systems by maintaining wire and binary compatibility. It ensures old clients can safely read new data formats without encountering removed or modified compiled surfaces.

What is the best way to add new features to a NuGet package without breaking binary compatibility?

The best way to add features to a NuGet package without breaking binary compatibility is to extend the public API surface additively. Introduce new types or method overloads instead of renaming or removing existing members.