wit-breaking-change-check

Classifies WIT interface diff changes as breaking or non-breaking against frozen version markers.

32.7k|4.9k|Updated Feb 13, 2026
One-click install
npx skills add https://github.com/zeroclaw-labs/zeroclaw --skill wit-breaking-change-check
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: wit-breaking-change-check
Source: https://github.com/zeroclaw-labs/zeroclaw/tree/main/.claude/skills/wit-breaking-change-check
Command: npx skills add https://github.com/zeroclaw-labs/zeroclaw --skill wit-breaking-change-check

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Reviewing changes to WIT (WebAssembly Interface Types) definitions by hand is error-prone, and a single breaking change can silently break plugin compatibility for every consumer of a frozen interface version.

Core Features & Use Cases

  • Diff Classification: Runs git diff against the wit/ directory and classifies every modification as breaking, non-breaking, or uncertain using the taxonomy in wit/VERSIONING.md.
  • Frozen Version Awareness: Checks for .frozen marker files to distinguish stable versions requiring compatibility guarantees from experimental versions that only require component rebuilds.
  • Migration Guidance: When breaking changes are found, summarizes the required migration path for plugin authors.
  • Use Case: Before merging a PR that touches wit/v2/, run this check to confirm that adding a new record type is non-breaking while renaming a function would be flagged as breaking with a cited reason.

Quick Start

Ask the assistant to check whether the current WIT diff contains any breaking changes before merging the branch.

Frequently Asked Questions about wit-breaking-change-check

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

FAQPage Schema
How do I check if a WIT change is breaking?

Run a git diff of the wit/ directory against the base branch, then classify each modification against the breaking-change taxonomy in wit/VERSIONING.md. Removing or renaming types, functions, fields, or cases is breaking, while new types, interfaces, and worlds are non-breaking.

What counts as a breaking change in WIT interface definitions?

Breaking changes include removing or renaming any type, function, record field, enum case, or variant case, adding a case to an existing enum or variant, changing function signatures or field types, reordering record fields, and adding required fields or non-capability-gated required functions.

What WIT changes are considered non-breaking?

Non-breaking changes include new flags bits, new capability-gated functions, new record, variant, or enum types, new interfaces, new worlds, and adding @since or @unstable annotations. Adding cases to an existing enum or variant is still breaking.

What does the .frozen marker file mean in a WIT version directory?

The .frozen marker signals that a wit/vN/ version is stable and subject to the breaking-change compatibility window. Without it, the version is experimental and components must simply be rebuilt against the WIT shipped by the target host.

When should I run a WIT compatibility check?

Run it before merging any branch that touches the wit/ directory, when reviewing PRs that modify WIT interface definitions, and before publishing a plugin-compatible release to verify changes are safe.