api-design

Design stable public APIs with extend-only principles and versioning strategies.

57|7|Updated Aug 6, 2025
One-click install
npx skills add https://github.com/seiggy/lucia-dotnet --skill api-design-seiggy
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: api-design
Source: https://github.com/seiggy/lucia-dotnet/tree/main/.github/skills/csharp-api-design
Command: npx skills add https://github.com/seiggy/lucia-dotnet --skill api-design-seiggy

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This Skill helps developers design and maintain public APIs that remain stable and compatible over time, preventing breaking changes for users and systems.

Core Features & Use Cases

  • Extend-Only Design: Enforces principles to never remove or modify existing public APIs, only extend them.
  • Compatibility Management: Addresses API/Source, Binary, and Wire compatibility for NuGet packages and distributed systems.
  • Versioning Strategies: Guides on semantic versioning and deprecation patterns.
  • Use Case: When releasing a new version of a .NET library, this Skill ensures that existing applications using the older version will continue to compile and run without modification.

Quick Start

Use the api-design skill to review the proposed changes for breaking API surface modifications.

Frequently Asked Questions about api-design

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

FAQPage Schema
What is extend-only design and how does it prevent breaking API changes?

To design a stable public API, enforce extend-only principles to never remove or modify existing APIs, only add new ones. Manage API, binary, and wire compatibility, implement semantic versioning, and use tools like PublicApiGenerator to automate API surface testing.

What is the difference between API, binary, and wire compatibility in distributed systems?

API compatibility ensures source code compiles, binary compatibility ensures applications run without recompilation against new library versions, and wire compatibility ensures distributed systems serialize and deserialize data across different service versions without breaking communication.

How do I use PublicApiGenerator and Verify to test API surface compatibility?

You use PublicApiGenerator and Verify to automate API surface testing by generating a public API snapshot and verifying it against previous versions. This automated process detects breaking changes and ensures adherence to compatibility standards before release.

Does this API design approach work for NuGet package versioning and .NET libraries?

Yes, this API design approach specifically supports NuGet packages and .NET libraries by managing binary and source compatibility. It ensures existing applications using older NuGet package versions will continue to compile and run without modification when new versions are released.

What are the best versioning and deprecation strategies for public APIs?

The best versioning and deprecation strategies for public APIs utilize semantic versioning to signal breaking changes and guide deprecation patterns. This ensures consumers can safely upgrade by understanding the impact of version changes and planning transitions away from obsolete features.