api-design

Guide stable public API design for NuGet packages and distributed systems.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This Skill addresses the challenge of creating and maintaining stable, backward-compatible public APIs for software libraries and distributed systems, minimizing upgrade friction for users.

Core Features & Use Cases

  • Extend-Only Design: Enforces principles to ensure existing functionality remains immutable.
  • Compatibility Management: Guides on maintaining API, binary, and wire compatibility.
  • Versioning Strategies: Provides clear guidelines on semantic versioning and deprecation.
  • Use Case: When designing a new NuGet package, use this Skill to ensure its public API is robust and won't break for consumers in future updates.

Quick Start

Use the api-design skill to review a pull request for breaking changes in a public API.

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 stable public API for a NuGet package?

Design a stable public API for a NuGet package by applying extend-only principles, ensuring existing functionality remains immutable and preventing breaking changes for consumers in future updates.

What's the best way to maintain backward and forward compatibility for distributed systems?

Maintain backward and forward compatibility for distributed systems by managing API, binary, and wire compatibility, enabling zero-downtime upgrades without breaking existing consumers during version updates.

How does semantic versioning apply to API compatibility?

Semantic versioning applies to API compatibility by providing clear guidelines on version numbering and deprecation, signaling breaking changes and ensuring consumers understand upgrade impacts.

How do I review a pull request for breaking changes in a public API?

Review a pull request for breaking changes by checking parameter ordering, return type selection, and error reporting strategies against extend-only design principles to ensure API and binary compatibility.

When do I need to consider wire compatibility versus binary compatibility?

Consider wire compatibility for distributed systems communication protocols and binary compatibility for compiled library references, ensuring both layers support zero-downtime upgrades and backward compatibility.

What naming conventions should I use for public API design in C#?

Use naming conventions for public API design in C# that align with extend-only principles, ensuring clear parameter ordering, return type selection, and error reporting strategies for robust library interfaces.