minecraft-modding-workbench
Skill1 starsChanged 15 days agoMITView on GitHub
Use when building, debugging, porting, or inspecting Minecraft Java Edition mods for Fabric, NeoForge, or Architectury, including Mixins, access wideners, access transformers, mappings, registry/resource issues, NBT payloads, mod JAR inspection, remapping, version migration, dependency API source lookup, GameTest wiring, client screens, HUD rendering, or runtime logs. Also use as a side reference when another planning, execution, or review skill is active and the work depends on Minecraft API facts.
In this repository17 other files it gives its agents.
- AGENTS.mdAGENTS.md
- skill-evalSkill
- skill-qualitySkill
- vibe-agent-instructionsSkill
- vibe-brainstormSkill
- vibe-code-researchSkill
- vibe-codingSkill
- vibe-commitSkill
- vibe-debugSkill
- vibe-goal-alignmentSkill
- vibe-orchestrateSkill
- vibe-plan-executionSkill
- vibe-planningSkill
- vibe-plan-reviewSkill
- vibe-requirements-specSkill
- vibe-reviewSkill
- vibe-writingSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
58 rules. About 0 are common, 31 are distinctive, and 27 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈31
Distinctive · estimate
This author's own choices. Worth a look.
27
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 24
Prefer project-aware MCP calls when a workspace exists.
- Very specific: line 25
Use the high-level MCP workflow tools first: inspect-minecraft, analyze-symbol, compare-minecraft, validate-project, analyze-mod, and …
- Very specific: line 34
Use the NBT helpers (nbt-to-json, json-to-nbt, nbt-apply-json-patch) when working with level.dat, chunk, playerdata, or command-driven NBT.
- Distinctive: line 45
Ask only the minimum blocking question when the workspace is absent or contradictory.
- Distinctive: line 46
Prefer explicit TODOs or placeholder assets over stalling on art or balance details.
- Distinctive: line 47
When the user clearly requests implementation rather than explanation, default to delivering code.
- Distinctive: line 71
Keep bundled-reference routing internal unless the user requests an audit or a fallback/provenance decision needs explanation.
- Distinctive: line 76
Read or build the project profile: workspace root, loader, Minecraft version, mapping, Java version, modules, and normal verification …
- Distinctive: line 78
If the workspace is absent, record the missing profile facts before making version-, loader-, mapping-, or Java-sensitive claims.
- Very specific: line 80
Run MCP preflight before assuming minecraft-modding tools are callable.
- Distinctive: line 81
Use one high-level MCP call first for the relevant fact.
- Distinctive: line 85
If a worker restart, timeout, or transport failure occurs, retry once with a narrower high-level payload, then switch to the matching …
- Distinctive: line 100
Run this once near the start of a Minecraft modding task, before the first MCP-dependent claim:
- Very specific: line 102
Check whether the host exposes minecraft-modding tools and inspect the callable schema before the first request, especially …
- Very specific: line 107
If neither inspect-minecraft nor analyze-symbol is available, say minecraft-modding MCP unavailable once and switch to …
- Very specific: line 110
If a tool or argument this skill names is rejected as unknown, first rule out a failed start after an MCP upgrade …
- Very specific: line 116
If MCP is available, prefer project-aware calls with projectPath, preferProjectVersion, and preferProjectMapping when the current tool …
- Very specific: line 123
Read gradle.properties, build.gradle, build.gradle.kts, settings.gradle, fabric.mod.json, neoforge.mods.toml, mixin configs, and nearby …
- Distinctive: line 126
Read the existing code before writing new code.
- Distinctive: line 129
Prefer workspace-aware MCP resolution before manual version or mapping selection.
- Very specific: line 132
Start with inspect-minecraft or analyze-symbol.
- Distinctive: line 135
If no project exists yet, ask only for loader, Minecraft version, modid, and package name.
- Distinctive: line 138
If the task depends on an external generator or template that is not present, say so explicitly instead of fabricating generated files.
- Very specific: line 146
Use SKILL.md, the project profile, MCP preflight, and one high-level MCP lookup when available.
- Very specific: line 148
Read only the matching section of references/task-checklists.md once the task shape is known.
- Very specific: line 151
Read references/fabric.md only for Fabric project structure, registration, APIs, entrypoints, datagen, networking, Mixins, or pitfalls.
- Very specific: line 153
Read references/neoforge.md only for NeoForge project structure, DeferredRegister, events, capabilities, access transformers, datagen, …
- Very specific: line 156
Read references/architectury.md only for Architectury multi-module placement or a slice that crosses common/platform boundaries.
- Distinctive: line 158
Read multiple loader references only when the workspace is multi-loader and the changed slice touches those loaders.
- Very specific: line 161
Read references/mcp-recipes.md only for payload shape, high-level tool error recovery, ERR_INVALID_INPUT, old-shape/current-shape mismatch, …
- Distinctive: line 164
If a high-level MCP answer is sufficient, do not restate unrelated recipes.
- Very specific: line 166
Read references/mcp-unavailable-fallback.md only after preflight shows no MCP tools, a named tool or argument is rejected as older MCP, or …
- Very specific: line 169
Read references/validator-fallbacks.md only after validate-project, validate-mixin, validate-access-widener, or validate-access-transformer …
- Very specific: line 174
Read references/dependency-jars.md for dependency API source lookup.
- Very specific: line 175
Read references/rendering-hud.md for HUD overlays, screens, projection, GUI scale, FOV, or client rendering.
- Very specific: line 177
Read references/gametest.md for GameTest or test-harness wiring.
- Very specific: line 178
Read references/bootstrap-from-template.md only for sparse templates.
- Very specific: line 179
Read references/project-profile-template.md when a durable project profile is useful.
- Very specific: line 181
Read references/subagent-mcp-contract.md only when delegating Minecraft work to another agent.
- Distinctive: line 184
Keep loaded/skipped reference choices internal by default.
- Very specific: line 190
Read references/mcp-guardrails.md before detailed MCP payload construction, expert/batch-tool selection, response-field interpretation, …
- Distinctive: line 195
start with the highest-level read-only tool that can answer the fact.
- Distinctive: line 200
keep project version, mapping, artifact, and workspace provenance explicit.
- Distinctive: line 205
Do not silently treat Quilt or legacy Forge as Fabric, NeoForge, or Architectury.
- Distinctive: line 214
If workspace files contradict the prompt, call out the contradiction and resolve it from checked files before coding.
- Distinctive: line 215
If the request depends on a symbol, event, registry entry, or vanilla hook you cannot verify, say that it is unverified or unsupported …
- Distinctive: line 221
If the template is too empty, bootstrap the missing project skeleton first.
- Distinctive: line 222
Add only the minimum entrypoints, registration classes, client hooks, and datagen wiring needed for the requested feature.
- Distinctive: line 223
Do not create every possible system up front.
- Distinctive: line 230
Run the verification loop before calling the task done.
- Distinctive: line 236
Do not invent mapping names, event names, registration order, or descriptors.
- Distinctive: line 237
Prefer stable loader APIs or events over Mixins when the loader already exposes a clean hook.
- Distinctive: line 238
When the project is template-only, create the smallest working scaffold that can compile and host the requested feature.
- Very specific: line 241
Use @ExpectPlatform, Architectury abstractions, or a plain Java interface/service split only when the code truly needs platform-specific …
- Distinctive: line 242
Keep side separation correct.
- Distinctive: line 243
Prefer datagen when the request creates repeated JSON or more than a couple of content entries.
- Distinctive: line 245
Keep fixes narrow during debugging.
- Very specific: line 249
Read references/verification-and-debugging.md before declaring an implementation complete or when diagnosing Mixin/access, …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Minecraft Modding Workbench
Support fast, version-aware Minecraft modding. Treat the minecraft-modding
MCP server as the primary source of truth, then turn verified findings into
working code and assets.
Scope
- Supports Fabric, NeoForge, and Architectury.
- Requires the
minecraft-moddingMCP server from@adhisang/minecraft-modding-mcp. - Prefer project-aware MCP calls when a workspace exists. Reuse the repository root as
projectPath. - Use the high-level MCP workflow tools first:
inspect-minecraft,analyze-symbol,compare-minecraft,validate-project,analyze-mod, andmanage-cache. - Also use the MCP validation and batch helpers when they fit:
verify-mixin-targetfor one-call Mixin owner/member checks and accessor/invoker advice, andbatch-class-source,batch-class-members,batch-symbol-exists, orbatch-mappingsfor fixed shortlists that share one resolved artifact or Minecraft version. - Covers Forge-style access transformers through
validate-project(taskaccess-transformer) for NeoForge, in addition to Fabric-style access wideners. - Use the NBT helpers (
nbt-to-json,json-to-nbt,nbt-apply-json-patch) when working with level.dat, chunk, playerdata, or command-driven NBT. Stay in typed JSON while editing and re-encode once at the end. Back up the original binary before editing live save data. The helpers read raw NBT payloads, not.mcaregion files: extract the chunk payload with a region tool first, or stop and say the input is unsupported.
Default Behavior
- Produce runnable feature slices, not generic advice.
- Infer loader, version, mappings, modid, package, Java version, and project conventions from the workspace before asking questions.
- Ask only the minimum blocking question when the workspace is absent or contradictory.
- Prefer explicit TODOs or placeholder assets over stalling on art or balance details.
- When the user clearly requests implementation rather than explanation, default to delivering code.
- Respond in the user's language when practical, but keep the workflow and trigger logic language-agnostic.
- Separate facts by verification source when the answer will guide later
implementation:
Verified by MCP,Verified by workspace/source jar fallback,Runtime/user-observed, andUnverified.
Implementation-Guiding Output Contract
For plans, debugging explanations, MCP payload/error-recovery answers, eval answers, and handoffs that guide later implementation, make the provenance visible before giving version-sensitive recommendations:
Project profile: record confirmed workspace root, loader(s), Minecraft version, mapping namespace, Java version, modid, and base package when they matter. If no workspace or file evidence is available, explicitly mark the missing or assumed fields before using prompt-provided versions as examples.MCP status: record preflight/schema status before MCP-dependent claims. If tools have not actually run, call the MCP step planned or unverified instead of writing as if results are known.Verification sources: separate implementation facts underVerified by MCP,Verified by workspace/source jar fallback,Runtime/user-observed, andUnverified. For fallback/error-recovery tasks or eval-style answers, include empty categories asnone yetwhen omitting them would blur the source boundary.- Keep bundled-reference routing internal unless the user requests an audit or a fallback/provenance decision needs explanation.
Quick Path
- Read or build the project profile: workspace root, loader, Minecraft version, mapping, Java version, modules, and normal verification commands. If the workspace is absent, record the missing profile facts before making version-, loader-, mapping-, or Java-sensitive claims.
- Run MCP preflight before assuming
minecraft-moddingtools are callable. - Use one high-level MCP call first for the relevant fact.
- Choose narrow internal reference context before loading bundled references. Once the task shape is known, start with its checklist section and add loader, MCP recipe, fallback, or task-specific references only when their conditions match.
- If a worker restart, timeout, or transport failure occurs, retry once with a
narrower high-level payload, then switch to the matching fallback playbook.
A validator that restarts once is not retried: record it as unavailable for
this task and use
references/validator-fallbacks.md. - For invalid payloads, consult only the relevant
references/mcp-recipes.mdrecipe, correct the shape once, and retry the same high-level tool before changing tools. - For Mixins, access wideners, and access transformers, record owner, name, descriptor, namespace, config declaration, and side before editing.
- For resources, worldgen, loot, models, codecs, HUD, screens, and runtime
hooks, run the task-specific checklist instead of treating
buildas proof of runtime behavior.
MCP Preflight
Run this once near the start of a Minecraft modding task, before the first MCP-dependent claim:
- Check whether the host exposes
minecraft-moddingtools and inspect the callable schema before the first request, especiallyinspect-minecraft,analyze-symbol, and their transformed callable names. - Record the available high-level tool names, workspace root to use as
projectPath, detected Minecraft version, loader, mapping, and Java version. - If neither
inspect-minecraftnoranalyze-symbolis available, sayminecraft-modding MCP unavailableonce and switch toreferences/mcp-unavailable-fallback.md. - If a tool or argument this skill names is rejected as unknown, first rule
out a failed start after an MCP upgrade
(
references/mcp-unavailable-fallback.md); otherwise treat the installed MCP as older than the MCP surface these recipes target or version-skewed and use the nearest older-compatible path or workspace fallback. Do not keep guessing tool names. - If MCP is available, prefer project-aware calls with
projectPath,preferProjectVersion, andpreferProjectMappingwhen the current tool accepts those fields.
First Pass
- Detect the project shape.
- Read
gradle.properties,build.gradle,build.gradle.kts,settings.gradle,fabric.mod.json,neoforge.mods.toml, mixin configs, and nearby registration classes. - Infer loader, Minecraft version, mappings, Java version, modid, base package, whether the project already uses datagen, and whether the workspace is single-loader or Architectury multi-module.
- Record the workspace root you will pass as
projectPathto MCP tools.
- Read
- Read the existing code before writing new code.
- Match the project's naming, package layout, registration helpers, and client/server split.
- Reuse existing registries, tabs, packet patterns, and datagen providers when present.
- Prefer workspace-aware MCP resolution before manual version or mapping selection.
- Load only the relevant references using the Reference Routing section below.
- Find the closest vanilla example before implementing behavior.
- Start with
inspect-minecraftoranalyze-symbol. - Drop to low-level tools only when the high-level answer still leaves the implementation ambiguous.
- Start with
If no project exists yet, ask only for loader, Minecraft version, modid, and package name. For explanation-only tasks with no workspace access, list those facts as missing or assumed before giving examples. If the task depends on an external generator or template that is not present, say so explicitly instead of fabricating generated files.
Reference Routing
Bundled references are optional, conditional context. Do not read or restate the whole reference bundle just because this skill triggered.
- Default route:
- Use
SKILL.md, the project profile, MCP preflight, and one high-level MCP lookup when available. - Read only the matching section of
references/task-checklists.mdonce the task shape is known.
- Use
- Loader route:
- Read
references/fabric.mdonly for Fabric project structure, registration, APIs, entrypoints, datagen, networking, Mixins, or pitfalls. - Read
references/neoforge.mdonly for NeoForge project structure, DeferredRegister, events, capabilities, access transformers, datagen, networking, sided access, or pitfalls. - Read
references/architectury.mdonly for Architectury multi-module placement or a slice that crosses common/platform boundaries. - Read multiple loader references only when the workspace is multi-loader and the changed slice touches those loaders.
- Read
- MCP recipe route:
- Read
references/mcp-recipes.mdonly for payload shape, high-level tool error recovery,ERR_INVALID_INPUT, old-shape/current-shape mismatch, or a supporting utility not covered by the high-level call. - If a high-level MCP answer is sufficient, do not restate unrelated recipes.
- Read
- Fallback route:
- Read
references/mcp-unavailable-fallback.mdonly after preflight shows no MCP tools, a named tool or argument is rejected as older MCP, or the failure budget routes to fallback. - Read
references/validator-fallbacks.mdonly aftervalidate-project,validate-mixin,validate-access-widener, orvalidate-access-transformeris unavailable, restarts, times out, cannot answer, refuses for runtime-jar context, or returns an approximate verdict.
- Read
- Task-specific route:
- Read
references/dependency-jars.mdfor dependency API source lookup. - Read
references/rendering-hud.mdfor HUD overlays, screens, projection, GUI scale, FOV, or client rendering. - Read
references/gametest.mdfor GameTest or test-harness wiring. - Read
references/bootstrap-from-template.mdonly for sparse templates. - Read
references/project-profile-template.mdwhen a durable project profile is useful. - Read
references/subagent-mcp-contract.mdonly when delegating Minecraft work to another agent.
- Read
Keep loaded/skipped reference choices internal by default. Surface them only when the user requests an audit or when explaining a fallback, missing source, or provenance limitation materially affects the recommendation.
MCP Guardrails
Read references/mcp-guardrails.md before detailed MCP payload construction,
expert/batch-tool selection, response-field interpretation, retry or fallback
decisions, or version/mapping-sensitive recommendations. Keep these invariants
visible:
- start with the highest-level read-only tool that can answer the fact;
- inspect callable schema and correct invalid input once before changing tools;
- retry one narrower high-level request only for bounded transport/restart failures, never an identical deterministic server fault; a validator that restarts once is not retried;
- keep project version, mapping, artifact, and workspace provenance explicit;
- mark fallback facts as fallback-verified, not MCP-verified.
Unsupported or Risky Requests
- Do not silently treat Quilt or legacy Forge as Fabric, NeoForge, or Architectury.
- For legacy Forge-only or other unsupported loaders, limit help to verified workspace facts, logs, and migration boundaries. Say that full guidance is outside this skill.
- If MCP is unavailable, misconfigured, or stale, say so immediately, fall back to workspace and log inspection, and keep any fix narrow. The same rule covers version skew: if a tool, task, response-shaping argument, or input shape this skill names (for example,
detail/include[],manage-cacheaction: "verify",validate-projecttaskaccess-transformer,analyze-symbollifecycle range controls,get-class-source/get-class-memberstarget.kind, or the NBT helpers) is rejected as unknown, apply MCP Preflight step 4, including its post-upgrade check, before calling it version skew; say which conclusion applies, and route the request through the nearest older-compatible tool or a workspace-only fallback rather than fabricating a different payload shape. - On a download size-cap refusal, ask the user to raise
MCP_MAX_DOWNLOAD_BYTESand restart MCP; ask to raiseMCP_MAX_NESTED_JAR_ENTRY_BYTESand restart only with evidence that the inner jar is oversized; whenERR_REPO_FETCH_FAILEDhints name a cache path and errno, ask the user to repair that path's permissions or disk state. Use local fallback meanwhile (references/mcp-unavailable-fallback.md). - If workspace files contradict the prompt, call out the contradiction and resolve it from checked files before coding.
- If the request depends on a symbol, event, registry entry, or vanilla hook you cannot verify, say that it is unverified or unsupported instead of inventing it. Offer the closest verified alternative.
Core Workflow
- Inspect vanilla or existing mod code that already solves the same problem.
- Translate that pattern into the user's loader, module boundary, and mapping namespace.
- If the template is too empty, bootstrap the missing project skeleton first.
- Add only the minimum entrypoints, registration classes, client hooks, and datagen wiring needed for the requested feature.
- Do not create every possible system up front.
- Implement the whole slice in one pass.
- Include registrations.
- Include client wiring when needed.
- Include required JSON resources or datagen hooks.
- Include lang keys, loot tables, blockstates, models, tags, recipes, or screen wiring when the feature needs them.
- In Architectury workspaces, keep shared gameplay logic in
commonand loader-specific wiring in platform modules unless the workspace already uses another verified pattern.
- Run the verification loop before calling the task done.
- Report assumptions, placeholders, follow-up tasks, and verification sources briefly.
Delivery Rules
- Match the current project style before introducing a new abstraction.
- Do not invent mapping names, event names, registration order, or descriptors. Verify them.
- Prefer stable loader APIs or events over Mixins when the loader already exposes a clean hook.
- When the project is template-only, create the smallest working scaffold that can compile and host the requested feature.
- In Architectury projects, keep code in
commonby default and move only loader-bound code tofabricorneoforge. - In Architectury templates that already route both loaders through a shared init method, do not add no-op platform edits just to mirror a shared content change.
- Use
@ExpectPlatform, Architectury abstractions, or a plain Java interface/service split only when the code truly needs platform-specific behavior. - Keep side separation correct. Put renderer, screen, and other client-only code behind the proper client entrypoint or event.
- Prefer datagen when the request creates repeated JSON or more than a couple of content entries.
- Preserve existing helper classes, registries, and package structure instead of replacing them wholesale.
- Keep fixes narrow during debugging. Identify the concrete failure first, then patch the cause.
Verification And Debugging Reference
Read references/verification-and-debugging.md before declaring an
implementation complete or when diagnosing Mixin/access, registry/resource
codec, dependency, HUD/rendering, GameTest, NBT, cache/index, model/texture,
side-only, or version-porting failures. It owns the detailed Gradle, datagen,
runtime, resource, and category-specific verification paths. A green build
alone is not runtime proof for resource-heavy or runtime-only changes.
References
- Fabric patterns:
references/fabric.md - NeoForge patterns:
references/neoforge.md - Architectury patterns:
references/architectury.md - Template bootstrap patterns:
references/bootstrap-from-template.md - Delivery checklists by task shape:
references/task-checklists.md - MCP payload and recovery recipes:
references/mcp-recipes.md - Detailed MCP guardrails:
references/mcp-guardrails.md - MCP unavailable fallback:
references/mcp-unavailable-fallback.md - Dependency API source lookup:
references/dependency-jars.md - HUD and client rendering:
references/rendering-hud.md - Validator fallbacks:
references/validator-fallbacks.md - Verification and fast debugging:
references/verification-and-debugging.md - GameTest wiring:
references/gametest.md - Project profile template:
references/project-profile-template.md - Subagent MCP contract:
references/subagent-mcp-contract.md - For current upstream migration guidance, consult the official Fabric, NeoForge, and Architectury docs or release notes that match the target loader and Minecraft version instead of relying on hardcoded URLs.
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.

