api-compat-review
Skill214 starsChanged 28 days agoMITView on GitHub
Compatibility assessment for items with the needs-api-compat-review trait. Evaluates the tool surface (served over both MCP and REST ops) and the REST-only surface separately, since their compatibility models differ. Invoked via skillPointer when filling api-compatibility notes.
In this repository12 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- claude-plugins/CLAUDE.mdCLAUDE.md
- add-componentSkill
- feature-implementationSkill
- implementSkill
- migration-reviewSkill
- perf-reviewSkill
- plugin-impact-reviewSkill
- prepare-releaseSkill
- review-qualitySkill
- spec-qualitySkill
- test-authorSkill
The file
Files
API Compatibility Review Framework
Assess API changes by surface. There is ONE tool surface, served over MCP and over REST POST /api/v1/ops/{tool} (the same ToolDispatcher, see api-rest.md 20a). MCP clients re-discover the schema every session, but REST ops callers hardcode tool, field and select names. A REST-only surface (routes, DTOs, openapi) has its own hardcoded clients. Do not treat a tool change as rename-friendly just because MCP clients re-read the schema.
Step 1: Classify the Change
Determine which surface(s) the change touches:
- Tool surface (MCP and REST ops) - request-class
@Docfields (underapplication/api/<area>/, inapplication/report/ReportRequests.kt, or in theitems_*/configop file), theToolSpecs registered inbuildToolSpecs()(interfaces/shared/tools/ToolRegistry.kt), the goldens undercurrent/src/test/resources/golden/tools/, the generated blocks ofapi-reference.md, andcall-shapes.md - REST-only surface -
interfaces/api/v1/routes/,interfaces/api/v1/dto/Dtos.kt,current/docs/api/openapi.yaml, SSE and leases
A single change (e.g., a domain model field rename) can touch both surfaces independently — assess each.
Step 2: Tool Surface Assessment
MCP clients re-read the tools/list schema every session, but the same tools are reachable over REST POST /api/v1/ops/{tool} by callers that hardcode names. Only description and doc prose is rename-cheap. A field rename or removal, or a response-shape change, breaks hardcoded REST ops callers. The item GETs (interfaces/api/v1/routes/ItemRoutes.kt, NoteResourceRoutes.kt) dispatch items_read and notes_read, so a select's output change reaches them too. Verify:
- Every changed field's request-class
@Docand its decode site stay in sync - no schema-says-X/code-reads-Y drift - Response-shape changes are additive where possible; a rename or removal has a migration path for REST ops callers
- ALL first-party callers update in lockstep: plugin skills, hooks (including the
orchestration-contexthook's injected text), auto-memory references, and the generated artifacts:./gradlew :current:regenerateToolGoldens,./gradlew :current:regenerateApiReference,node claude-plugins/task-orchestrator/scripts/gen-call-shapes.mjs, theto-callblocks andtool-catalog.json - The tool
descriptionanddocprose accurately reflect the new behavior
Step 3: REST-Only Surface Assessment
Routes, DTOs, openapi, SSE and leases. HTTP clients hardcode field and param names, so compatibility matters here too:
- Response-shape changes are additive (new fields only) where possible
- Renames or removals of existing fields/params have an explicit migration path or version bump — not a silent break
- Note when a surface has effectively zero consumers (e.g., a days-old endpoint) so the reviewer can right-size caution instead of over-indexing on hypothetical clients
current/docs/api/openapi.yamlis updated for any REST-facing change, including the/ops/{tool}bodyapi-rest.mdis updated for any REST-facing change
Output
Compose the api-compatibility note with findings from Step 2 and/or Step 3, scoped to whichever surface(s) the change actually touches. If a surface wasn't touched, say so explicitly rather than omitting it silently.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

