api-compat-review
Backward-compatibility review of changes to a project's public surface.
Skill by Priyank Patel
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/priyank766-api-compat-review
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/api-compat-review
What's inside
- Skill name
api-compat-review- Description
- Backward-compatibility review of changes to a project's public surface. Use when a diff changes exported function or type signatures, renames or removes public symbols, changes a default value, alters config keys, environment variables, or CLI flags, modifies an HTTP or wire format, migrates a database schema, changes exception or error types, touches plugin or extension hooks, or whenever a PR proposes a major-version bump. Establishes what the project actually promises, diffs the public surface between base and head with language-native tooling, classifies each change against a breaking-change taxonomy, and requires a migration path before a break may land. Language-agnostic. Do NOT use for purely internal or private code with no external consumers.
- License
- Apache-2.0
- Metadata
- suite: opensource-review-suite · author: Priyank Patel · domain: compatibility · version: 1.0.0 · severity_floor: 7.5
- Instructions
- 356 lines in SKILL.md · view on GitHub
Files (4)
- SKILL.md
- DETECTION-PLAYBOOK.md · references/
- QUALITY-FILTER.md · references/
- REVIEW-VOICE.md · references/
SKILL.md (first lines)
# API Compatibility Review
A specialised lens layered on [`pr-review`](https://github.com/priyank766/OpenSource-SKILL/blob/main/skills/pr-review/SKILL.md). Run the general
procedure first; run this when the diff touches anything a downstream consumer can observe.
**Read first:** [`DETECTION-PLAYBOOK.md`](references/DETECTION-PLAYBOOK.md) ·
[`QUALITY-FILTER.md`](references/QUALITY-FILTER.md) ·
[`REVIEW-VOICE.md`](references/REVIEW-VOICE.md)
> **Where the time goes.** Finding the flaw is the review. The playbook above is the
> general flaw-hunting procedure; this file is the domain-specific lens on top of it.
> Scoring and writing the comment are the last ten minutes, not the work.
**Severity floor: 7.5** — lower than the suite default of 8.0. The asymmetry justifies it.
A noisy comment costs one maintainer thirty seconds. A missed break reaches every
downstream user simultaneously the moment the release publishes, and cannot be un-shipped:
registries are append-only, a yanked version is still in someone's lockfile, and the fix
arrives as *another* release those users must now also adopt. Under that asymmetry, a
false positive is cheap and a false negative is not.
---
## The governing question
> **What breaks for someone who upgrades without reading the changelog?**
Not "is this change reasonable" — most breaks are reasonable. Not "is the new API better" —
it usually is. The only question is what happens to the person who bumps a caret range,
runs their suite, and gets a red build or, worse, a green one with different behaviour.
Everything below exists to answer that one question with evidence rather than intuition.
---
## Why this exists
Compatibility damage is invisible at review time and expensive afterwards. A removed
keyword argument produces a clean diff, a passing CI run, and — three weeks after release —
a stream of issues that all look different and all have the same cause. The maintainer
pays for it in triage, not in review.
### What each role gets out of it
| Role | Time this gives back |
| :--- | :--- |
| **Maintainer** | The surface diff is computed before merge, not reconstructed from bug reports. One pass over `apidiff`/`cargo-semver-checks` output replaces the weeks of issue triage that follow an unnoticed break, plus the emergency patch release and the apology thread. |
| **Contributor** | You find out your change is breaking while you can still design around it, instead of after a maintainer closes the PR with "this can't land before 3.0". |
| **Project owner** | A written, checkable definition of what the project promises. Version numbers start meaning something, and "is this a minor or a major?" stops being decided by whoever cuts the release. |
---
## Procedure
```mermaid
flowchart TD
A[Start] --> B[1. Establish the public surface]
B --> C[2. Diff base vs head across that surface]
C --> D[3. Classify each change with the taxonomy]
D --> E{Breaking?}
E -->|"no, internal only"| F[Drop it silently]
E -->|"yes"| G[4. Measure blast radius]
G --> H[5. Check for a migration path]
H --> I{Shim, changelog, docs present?}
I -->|"all present"| J[Score the deprecation window]
I -->|"any missing"| K[Finding at 9.0 or above]
J --> L[6. Frame in review voice]
K --> L
L --> M[7. Get explicit approval, then post]
```
---
## 1. Establish the public surface first
A change is breaking only relative to a contract. Find the contract before judging the
diff; otherwise you will flag internal churn and miss a real break in a file that did not
look public.
```bash
rg -n "semver|semantic version|stability|public API|breaking" README.md docs/ CONTRIBUTING.md
ls docs/versioning.md docs/stability.md POLICY.md 2>/dev/null
cat CHANGELOG.md | head -60 # how have breaks been handled before?
git tag --sort=-v:refname | head # does this project even bump majors?
```
Then read the language's own marker of intent:
| Ecosystem | Where "public" is declared |
| :--- | :--- |
| Python | `__all__`, absence of a leading `_`, what `docs/` imports, `py.typed` |
| JS/TS | `package.json` `exports` map, generated `.d.ts`, `@public` / `@internal` TSDoc tags |
| Go | Exported identifiers outside any `internal/` directory — the compiler enforces this one |
| Rust | `pub` vs `pub(crate)`, `#[doc(hidden)]`, `#[non_exhaustive]` on enums and structs |
| Java | `public` modifier plus `module-info.java` `exports`, `@Internal` annotations |
| C/C++ | Installed headers only; anything under `src/` or `detail/` is not surface |
`#[non_exhaustive]`, `@internal`, and `internal/` are the project telling you in advance
which changes it reserves the right to make. Respect them — flagging a change the project
explicitly reserved is a false positive, and a costly one for your credibility.
**No stated policy?** Assume anything importable, documented, or shown in a README example
is public, and say so in the review rather than silently assuming it:
> There's no stability policy I could find, so I'm treating anything reachable from
> `import foo` as public — `foo.Client.retries` is used in the quickstart, which is why I
> think dropping it needs a shim. If that's not the intent, a line in the README would
> settle it for future PRs too.
---
## 2. Detection procedure
Start with the raw diff, restricted to the paths you established as public.
```bash
git diff upstream/main...HEAD -- src/mypkg/ 'src/**/*.pyi' docs/api/
git diff upstream/main...HEAD -- ':!**/internal/**' ':!**/_*.py' ':!**/*_test.go'
```From priyank766/OpenSource-SKILL, Apache-2.0.
More from priyank766/OpenSource-SKILL
- 0.552score
performance-review
Priyank Patel
Performance and resource-efficiency review of an open-source pull request or diff.
SkillBFreshness: B★ 1Claude Code +9 - 0.552score
dependency-review
Priyank Patel
Supply-chain review of dependency and CI changes in an open-source pull request.
SkillBFreshness: B★ 1Claude Code +9 - 0.552score
docs-review
Priyank Patel
Review of documentation correctness in an open-source pull request — treating docs as unexecuted code and verifying them by running them.
SkillBFreshness: B★ 1Claude Code +9 - 0.552score
contributor-experience-review
Priyank Patel
Review of a first-time or early-stage contributor's pull request, where the technical bar stays fixed but the sequencing, batching, and supplied context change.
SkillBFreshness: B★ 1Claude Code +9 - 0.552score
pr-review
Priyank Patel
High-signal, maintainer-grade review of an open-source pull request.
SkillBFreshness: B★ 1Claude Code +9 - 0.552score
security-review
Priyank Patel
Security-focused review of an open-source pull request or diff.
SkillBFreshness: B★ 1Claude Code +9 - 0.518score
test-review
Priyank Patel
Review of test quality in an open-source pull request, and of the tests the PR should have written but did not.
SkillBFreshness: B★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Aug 6, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 1.0.0
- License
- Apache-2.0
- Repository
- github.com/priyank766/OpenSource-SKILL
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Priyank Patel
- 0.552score
performance-review
Priyank Patel
Performance and resource-efficiency review of an open-source pull request or diff.
SkillBFreshness: B★ 1Claude Code +9 - 0.552score
dependency-review
Priyank Patel
Supply-chain review of dependency and CI changes in an open-source pull request.
SkillBFreshness: B★ 1Claude Code +9 - 0.552score
docs-review
Priyank Patel
Review of documentation correctness in an open-source pull request — treating docs as unexecuted code and verifying them by running them.
SkillBFreshness: B★ 1Claude Code +9 - 0.552score
contributor-experience-review
Priyank Patel
Review of a first-time or early-stage contributor's pull request, where the technical bar stays fixed but the sequencing, batching, and supplied context change.
SkillBFreshness: B★ 1Claude Code +9 - 0.552score
pr-review
Priyank Patel
High-signal, maintainer-grade review of an open-source pull request.
SkillBFreshness: B★ 1Claude Code +9 - 0.552score
security-review
Priyank Patel
Security-focused review of an open-source pull request or diff.
SkillBFreshness: B★ 1Claude Code +9
Cite this page
api-compat-review skill. Agent Mart. https://agentmart.dev/skills/priyank766-api-compat-review (last updated 2026-10-24)