microsoft/breaking-change-check
Use when adding, removing, or changing any public API surface in this repo (method signatures, class members, interface members, enum values, constructor parameters, or serialization behavior). Guides a systematic backward-compatibility check before committing.
npx skills add https://github.com/microsoft/durabletask-dotnet --skill breaking-change-check
Invoke this skill whenever you are about to:
public or protected method, property, class, or interfaceenum value or add a new value to a [Flags] enumTaskOrchestrationContext, TaskActivityContext, DurableTaskClientOptions, or DurableTaskWorkerOptionsRead the file containing the change. List every public or protected member being modified.
For each, determine: is this member shipped in a Microsoft.DurableTask.* NuGet package?
To decide this, inspect src/<area>/<area>.csproj and our build/CI configuration: look for NuGet packaging metadata (such as <PackageId>, IsPackable, GeneratePackageOnBuild, or inclusion in a packing target or release artifact). If the project is packed into a Microsoft.DurableTask.* NuGet, assume customers may depend on it.
For each changed member, search the full solution before modifying the signature:
git grep -n "MemberName" -- '*.cs'
Also search test/ and samples/ — these are first-party consumers that must be updated alongside the change.
If the changed API is callable from inside an orchestrator (anything reachable from TaskOrchestrationContext):
TaskVersion) or an explicit feature flag. Do not proceed without documenting this.If the change affects a type serialized to/from the gRPC wire format or the JSON data converter:
src/Abstractions/Converters/JsonDataConverter.cs for any serializer configuration that applies.Reference: https://github.com/dotnet/runtime/blob/main/docs/coding-guidelines/breaking-change-rules.md
Classify as one of:
Binary and source breaking changes require explicit maintainer approval (noted in PR summary or linked issue).
Behavioral breaking changes on serialization or wire paths require a documented migration plan.
If the change is breaking (any category), add this block to the PR description:
## Breaking Change
Type: [binary | source | behavioral]
Impact: [what breaks and who is affected]
Migration: [what callers must do to upgrade to this version]
If not breaking, state explicitly: "No breaking change — [reason]."
DataConverter default in DurableTaskWorkerOptions without noting it affects in-flight orchestrationsTaskActivityContext abstract interface without updating the source generator output in src/Generators/Take microsoft/breaking-change-check from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.