paper-version-compat
Provides a consistent procedure to research and document plugin compatibility against new Minecraft or Paper API updates.
Install
mkdir -p .claude/skills/paper-version-compat && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/18561" && unzip -o skill.zip -d .claude/skills/paper-version-compat && rm skill.zipInstalls to .claude/skills/paper-version-compat
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Repeatable procedure for validating and honestly documenting a Bukkit/Paper/Folia plugin's compatibility when a new Minecraft/Paper version ships — research-first API checking, build strategy, runtime verification, and maintaining a tested-vs-assumed compatibility matrix. Use whenever a new Minecraft or Paper version is released, the user asks "does my plugin support version X", a paper-api dependency bump is considered, or release notes need a compatibility claim.Key capabilities
- →Validate plugin compatibility with new Minecraft/Paper versions
- →Research Paper release announcements for API changes and requirements
- →Grep plugin source for actual API surface usage
- →Decide build strategy (e.g., compiling against oldest supported API)
- →Perform runtime verification through booting, manual passes, and suite passes
How it works
The skill follows a research-first approach to validate plugin compatibility, auditing API usage, defining build strategies, and performing multi-rung runtime verification.
Inputs & outputs
When to use paper-version-compat
- →Verifying plugin support for a new Minecraft release
- →Updating a plugin's build configuration for Paper API changes
- →Auditing API usage to identify breaking changes
- →Generating an honest 'tested' vs 'assumed' compatibility report
About this skill
Validating a Paper plugin against a new Minecraft/Paper version
The goal is an honest, documented compatibility claim — "tested" and "assumed" are different statements and users deserve to know which one they're getting. Most version bumps need zero code changes; the work is research, verification, and documentation discipline.
Step 1 — Research first (never trust model memory)
New MC/Paper versions are usually past the model's training cutoff, and Minecraft's versioning/cadence has changed over time. Before any code conclusion:
- Web-search the Paper release announcement and docs.papermc.io update notes for the target
version. Look specifically for: required Java version, plugin-affecting API removals,
api-versionpolicy changes, and remap/mappings changes. - Check the loaders-that-lag: Folia releases behind Paper — if no Folia build exists for the target version, the matrix entry is "N/A yet", not "supported".
- If findings are thin (fresh release), mark every conclusion medium-confidence and say so in anything you write.
Step 2 — Grep the plugin's real API surface
Don't audit the whole Bukkit API — audit what the plugin actually touches. Build the list once and keep it in the project's context doc:
grep -roh --include=*.kt --include=*.java \
-E 'org\.bukkit\.[A-Za-z.]+|io\.papermc\.[A-Za-z.]+|net\.kyori\.[A-Za-z.]+' src/ \
| sort -u
Cross-check that list against the release's deprecations/removals. Typical hot spots:
registry access patterns (enum → Registry migrations), scheduler APIs (legacy
scheduleSyncRepeatingTask-style methods are perennial removal candidates), event signature
changes, ItemStack/component APIs, and anything @Deprecated(forRemoval = true) in the
current compile.
Step 3 — Decide the build strategy (this is a policy, not a routine step)
- Default: keep compiling against the oldest supported Paper API. One JAR spanning
versions comes from API stability plus conservative bytecode targeting — not from chasing
the newest
paper-api. - Only bump
paper-api/api-versionwhen (a) you need a new API, or (b) you are deliberately dropping old-version support. Both are support-range decisions; changelog them. - Java: servers may raise their required Java version across MC versions while old servers
stay lower. Keep the bytecode target at the floor (e.g. Java 21 bytecode runs fine on a
Java 25 server); use a newer toolchain freely. Verify Gradle itself can run on the JDK in
use — Gradle's max-supported-JVM lags JDK releases, and the failure message is cryptic
(run Gradle on an older JDK via
JAVA_HOME; keep the toolchain block for compilation).
Step 4 — Build & fix
Branch (e.g. dev/<new-version>), build, and treat new deprecation warnings as work items
now — they're the removals of the next cycle.
Step 5 — Runtime verification ladder
Each rung upgrades the claim you're allowed to make:
- Boots clean — plugin enables on the target version, no stack traces, info command works.
- Manual pass — one full cycle of the plugin's core flow(s) by hand.
- Suite pass — the project's e2e/bot suite green on the target version. Caveat for bot-based suites: bot libraries (mineflayer etc.) lag new protocol versions — options are ViaVersion on the test server (bots handshake old, server runs new) or deferring the "tested" claim, explicitly.
- Folia pass — separate rung; Paper-tested says nothing about region-thread behavior.
Only rung 3+ justifies "Tested" in public docs. Rungs 1–2 justify "expected to work".
Step 6 — Update the compatibility matrix (the durable artifact)
Maintain a table in the project context doc with Status ∈ {Tested, Assumed, Partially tested, N/A yet, Not supported} and an evidence column (what ran, when). Rules:
- Never promote to "Tested" without the suite/manual pass on that exact platform+version.
- Downgrade honestly: a big internal change (threading, scheduler rework) drops previously "Tested" platforms back to "Partially tested" until re-run.
- Mirror the matrix everywhere users see claims: release notes, README badges, and the Modrinth/Hangar listing's game-version range — same commit.
Step 7 — Release hygiene
- Changelog states the new supported range and whether code changed or only verification.
- If zero code changes were needed, say exactly that — "no code changes; verified on X" is a meaningful, reassuring release note.
- Update the local dev server pin (
runServerversion or equivalent) so the next contributor tests against the new default.
Anti-patterns
- Claiming a version range from API stability alone while labeling it "tested".
- Bumping
paper-apito the newest version reflexively — it silently narrows your floor. - Skipping the Folia check because "it's just Paper with threads" (it is not).
- Letting the compatibility claim live only in a Modrinth dropdown, with no evidence trail in the repo.
When not to use it
- →When claiming a version range from API stability alone as 'tested'
- →When reflexively bumping `paper-api` to the newest version
- →When skipping Folia compatibility checks
Limitations
- →Folia releases behind Paper, impacting compatibility claims
- →Bot libraries for e2e suites may lag new protocol versions
- →Requires manual updates to the compatibility matrix in project context docs
How it compares
This skill provides a repeatable, research-driven procedure for honestly documenting plugin compatibility, distinguishing between 'tested' and 'assumed' support, unlike ad-hoc testing or simple version bumps.
Compared to similar skills
paper-version-compat side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| paper-version-compat (this skill) | 0 | 20d | No flags | Advanced |
| svelte-expert | 11 | 9mo | No flags | Intermediate |
| home-assistant-integration-knowledge | 8 | 2mo | No flags | Advanced |
| writing-skills | 4 | 4mo | Review | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
svelte-expert
Raudbjorn
Expert Svelte/SvelteKit development assistant for building components, utilities, and applications. Use when creating Svelte components, SvelteKit applications, implementing reactive patterns, handling state management, working with stores, transitions, animations, or any Svelte/SvelteKit development task. Includes comprehensive documentation access, code validation with svelte-autofixer, and playground link generation.
home-assistant-integration-knowledge
home-assistant
Everything you need to know to build, test and review Home Assistant Integrations. If you're looking at an integration, you must use this as your primary reference.
writing-skills
obra
Use when creating new skills, editing existing skills, or verifying skills work before deployment
obsidian-hello-world
jeremylongshore
Create a minimal working Obsidian plugin with commands and settings. Use when building your first plugin feature, testing your setup, or learning basic Obsidian plugin patterns. Trigger with phrases like "obsidian hello world", "first obsidian plugin", "obsidian quick start", "simple obsidian plugin".
code-review-checklist
vudovn
Code review guidelines covering code quality, security, and best practices.
react-expert
reactjs
Use when researching React APIs or concepts for documentation. Use when you need authoritative usage examples, caveats, warnings, or errors for a React feature.