Agent skill

Minecraft Testing

by Jahrome907 in Jahrome907/minecraft-agent-skills

Design and implement automated tests for current Minecraft 26.x or legacy 1.21.x mods and plugins using JUnit, MockBukkit, NeoForge Game Tests, or Fabric Game Tests.

MITAuto-check passedTesting & QA

Install Minecraft Testing

skills CLI
$ npx skills add Jahrome907/minecraft-agent-skills --skill minecraft-testing -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Jahrome907/minecraft-agent-skills minecraft-testing --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Jahrome907/minecraft-agent-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.codex/skills/minecraft-testing .claude/skills/minecraft-testing && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
minecraft-testing
GitHub stars
169
Token cost
~3.8k tokens
SKILL.md length
750 words
Files
3 (incl. scripts, references)
Skills in repo
13
Repo updated
First seen
Licence
MIT

At a glance

Design and implement automated tests for current Minecraft 26.x or legacy 1.21.x mods and plugins using JUnit, MockBukkit, NeoForge Game Tests, or Fabric Game Tests.

  • Test code and test execution
  • SKILL.md covers Testing Strategies Overview, Bundled References And Helpers, Unit Testing (JUnit 5 — No… and MockBukkit (Paper/Bukkit…, plus 5 more sections
  • Runs Shell scripts from its folder; reaches repo.papermc.io
  • Not release publishing

What it does

Minecraft Testing is an agent skill from Jahrome907/minecraft-agent-skills. Design and implement automated tests for current Minecraft 26.x or legacy 1.21.x mods and plugins using JUnit, MockBukkit, NeoForge Game Tests, or Fabric Game Tests. Use for test code and test execution, not release publishing or gameplay implementation.

Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including scripts and reference files (for example `references/test-layouts.md` and `scripts/validate-test-layout.sh`).

It sits in Testing & QA, covering Unit testing. It works with JUnit and Java. The repository describes itself as: Minecraft AI agent skills and dual-target plugin bundle for Codex and Claude Code. The licence is MIT.

When your agent uses it

  • Test code and test execution
  • Not release publishing
  • Gameplay implementation

Example prompts

  • “/minecraft-testing”

Requirements

  • A Bash shell

What it can do on your machine

Read from SKILL.md and the folder at commit dd57c5a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Shell), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • repo.papermc.io

    Also links to:

    • docs.neoforged.net
    • github.com
    • docs.mockbukkit.org
    • docs.fabricmc.net
    • junit.org

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Minecraft Testing loads about 3.8k tokens when it runs, and up to ~4.6k if it reads all its reference files. Until then it costs about 68 tokens; SKILL.md has 750 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~68
When it runs · the whole SKILL.md, loaded when a task matches
~3.8k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from Jahrome907/minecraft-agent-skills at commit dd57c5a, republished under its MIT licence (© Jahrome907). 750 words, ~3,832 tokens.

Download SKILL.mdSave it as .claude/skills/minecraft-testing/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
minecraft-testing
description
Design and implement automated tests for current Minecraft 26.x or legacy 1.21.x mods and plugins using JUnit, MockBukkit, NeoForge Game Tests, or Fabric Game Tests. Use for test code and test execution, not release publishing or gameplay implementation.

Minecraft Testing Skill

Testing Strategies Overview

ApproachBest ForRequires Game?
JUnit 5 (pure unit tests)Logic, data structures, NBT serializationNo
MockBukkitBukkit/Paper plugin events, commands, inventoryNo (mocked server)
NeoForge GameTestsIn-game block/entity/world interactionYes (test environment)
Fabric GameTestsIn-game block/entity/world interactionYes (test environment)
Integration serverFull plugin/mod lifecycleYes (dedicated test server)

Use Java 25 for current 26.x projects. Keep legacy 1.21.x examples on Java 21 and Forge 1.20.1 on Java 17. Do not combine source layouts or APIs across versions.

Routing Boundaries
  • Use when: the task is designing or implementing automated tests (unit, mock, gametest, CI test jobs) for Minecraft projects.
  • Do not use when: the task is implementing gameplay features rather than testing them (minecraft-modding, minecraft-plugin-dev, minecraft-datapack).
  • Do not use when: the task is release automation or publishing pipelines (minecraft-ci-release).

Bundled References And Helpers

  • Layout guide: references/test-layouts.md
  • Fixture/layout validator: ./scripts/validate-test-layout.sh --root <project>

Use the validator before copying a test layout into a real project. It checks visible static dependencies, metadata, and literal structure references. It does not compile the project or prove a Game Test can run.


Unit Testing (JUnit 5 — No Minecraft)

JUnit Platform task
kotlin
tasks.test {
    useJUnitPlatform()
    testLogging {
        events("passed", "skipped", "failed")
    }
}

For Fabric code that needs loader setup, use Fabric Loader JUnit rather than assuming ordinary JUnit initialized Minecraft:

groovy
dependencies {
    testImplementation "net.fabricmc:fabric-loader-junit:${project.loader_version}"
}

test {
    useJUnitPlatform()
}

When a unit test reaches registry-dependent Minecraft classes, initialize only the required bootstrap in test setup. The current Fabric guide uses SharedConstants.tryDetectVersion() and Bootstrap.bootStrap() for that case.

Example pure unit test
java
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

class CooldownManagerTest {

    @Test
    void cooldown_tracksPlayersIndependently() {
        var manager = new CooldownManager(500L); // 500ms cooldown
        manager.startCooldown("steve");
        assertTrue(manager.isOnCooldown("steve"));
        assertFalse(manager.isOnCooldown("notExisting"));
    }

    @Test
    void cooldown_throwsIllegalArgument_onNegativeDuration() {
        assertThrows(IllegalArgumentException.class,
            () -> new CooldownManager(-1L));
    }
}

MockBukkit (Paper/Bukkit Plugin Tests)

build.gradle.kts
kotlin
repositories {
    maven("https://repo.papermc.io/repository/maven-public/")
    mavenCentral()
}

dependencies {
    compileOnly("io.papermc.paper:paper-api:26.2.build.+")
    testImplementation("org.junit.jupiter:junit-jupiter:6.1.3")
    testImplementation("org.mockbukkit.mockbukkit:mockbukkit-v26.2:4.116.1")
    testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}

tasks.test {
    useJUnitPlatform()
}
Setup / teardown pattern
java
import org.mockbukkit.mockbukkit.MockBukkit;
import org.mockbukkit.mockbukkit.ServerMock;
import org.mockbukkit.mockbukkit.entity.PlayerMock;
import org.junit.jupiter.api.*;

class MyPluginTest {

    private static ServerMock server;
    private static MyPlugin plugin;

    @BeforeAll
    static void setUp() {
        // Start mock Bukkit server and load your plugin
        server = MockBukkit.mock();
        plugin = MockBukkit.load(MyPlugin.class);
    }

    @AfterAll
    static void tearDown() {
        MockBukkit.unmock();
    }
}
Testing events
java
@Test
void playerJoin_getsWelcomeMessage() {
    PlayerMock player = server.addPlayer("Steve");
    player.simulateJoin(); // fires PlayerJoinEvent

    // Assert the player received the expected message component
    player.assertSaid("Welcome, Steve!");
    // Or for Adventure components:
    assertTrue(player.nextMessage().contains("Welcome"));
}

@Test
void onBlockBreak_cancelledForNonOp() {
    PlayerMock player = server.addPlayer();
    player.setOp(false);

    Block block = player.getWorld().getBlockAt(0, 64, 0);
    block.setType(Material.STONE);
    BlockBreakEvent event = new BlockBreakEvent(block, player);
    server.getPluginManager().callEvent(event);

    assertTrue(event.isCancelled(), "Non-op should not be able to break blocks");
}
Testing commands
java
@Test
void mypluginInfo_returnsVersion() {
    PlayerMock player = server.addPlayer("Admin");
    player.setOp(true);

    boolean result = server.dispatchCommand(player, "myplugin info");

    assertTrue(result);
    player.assertSaid("Version: " + plugin.getDescription().getVersion());
}

@Test
void mypluginReload_requiresOp() {
    PlayerMock player = server.addPlayer("NonOp");
    player.setOp(false);

    server.dispatchCommand(player, "myplugin reload");

    player.assertSaid("No permission.");
}
Testing inventory / items
java
@Test
void giveKitCommand_givesPlayerItems() {
    PlayerMock player = server.addPlayer();
    
    server.dispatchCommand(player, "kit starter");
    
    // Check inventory
    assertTrue(player.getInventory().contains(Material.STONE_SWORD));
    assertTrue(player.getInventory().contains(Material.BREAD, 16));
}
Testing scheduler tasks
java
@Test
void repeatingTask_firesAfterDelay() {
    PlayerMock player = server.addPlayer();
    
    // Execute 40 ticks worth of scheduled tasks
    server.getScheduler().performTicks(40L);
    
    // Assert expected side effect happened
    assertEquals(2, plugin.getTaskCount());
}
Testing Folia-safe scheduler abstractions

MockBukkit does not emulate Folia's region-threaded runtime. The safe pattern is to wrap scheduling behind your own interface and unit test the abstraction boundary.

java
interface SchedulerFacade {
    void runPlayerTask(Player player, Runnable task);
    void runAsync(Runnable task);
}

@Test
void playerTask_delegatesThroughFacade() {
    List<String> calls = new ArrayList<>();
    SchedulerFacade facade = new SchedulerFacade() {
        @Override
        public void runPlayerTask(Player player, Runnable task) {
            calls.add("player");
            task.run();
        }

        @Override
        public void runAsync(Runnable task) {
            calls.add("async");
            task.run();
        }
    };

    facade.runPlayerTask(server.addPlayer(), () -> calls.add("ran"));
    assertEquals(List.of("player", "ran"), calls);
}
Testing PDC
java
import java.util.ArrayList;
import org.bukkit.damage.DamageSource;
import org.bukkit.damage.DamageType;
import org.bukkit.entity.LivingEntity;

@Test
void pdcKillCount_incrementsOnKill() {
    PlayerMock player = server.addPlayer();
    NamespacedKey key = new NamespacedKey(plugin, "kills");

    // EntityDeathEvent requires a living victim and an explicit damage source.
    LivingEntity victim = (LivingEntity) server.addMockEntity(EntityType.ZOMBIE);
    DamageSource damageSource = DamageSource.builder(DamageType.GENERIC)
        .withCausingEntity(player)
        .withDirectEntity(player)
        .build();
    EntityDeathEvent deathEvent = new EntityDeathEvent(
        victim, damageSource, new ArrayList<>(), 0
    );
    server.getPluginManager().callEvent(deathEvent);

    int kills = player.getPersistentDataContainer()
        .getOrDefault(key, PersistentDataType.INTEGER, 0);
    assertEquals(1, kills);
}

This dispatches a synthetic death event. For player attribution, the listener under test should read event.getDamageSource().getCausingEntity(); test actual combat attribution separately on a real server.

Testing item or chunk PDC writes
java
@Test
void itemPdc_roundTripsCustomId() {
    NamespacedKey key = new NamespacedKey(plugin, "custom_id");
    ItemStack item = new ItemStack(Material.STICK);

    item.editMeta(meta -> meta.getPersistentDataContainer().set(
        key, PersistentDataType.STRING, "wand"
    ));

    String value = item.getItemMeta().getPersistentDataContainer()
        .get(key, PersistentDataType.STRING);
    assertEquals("wand", value);
}

Current NeoForge Game Tests (26.x)

NeoForge 1.21.5 and later uses data-driven test environments and test instances, not the old @GameTestHolder method-registration API. Store resources under data/<namespace>/test_environment/ and data/<namespace>/test_instance/. A test_instance selects its environment, structure, timing, and either a registered function or a block-based test.

json
{
  "environment": "minecraft:default",
  "structure": "examplemod:example_structure",
  "max_ticks": 200,
  "setup_ticks": 0,
  "required": true,
  "type": "minecraft:function",
  "function": "examplemod:example_function"
}

Register the Consumer<GameTestHelper> with a DeferredRegister for the current BuiltInRegistries.TEST_FUNCTION registry, then attach that register to the mod event bus. The function below makes the JSON reference above usable. Use RegisterGameTestsEvent only when registering environments and test instances in code instead of data files. Keep the referenced structure in data/<namespace>/structure/<path>.nbt and mark success explicitly.

java
import java.util.function.Consumer;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.gametest.framework.GameTestHelper;
import net.minecraft.world.level.block.Blocks;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.fml.common.Mod;
import net.neoforged.neoforge.registries.DeferredHolder;
import net.neoforged.neoforge.registries.DeferredRegister;

@Mod(ExampleGameTests.MOD_ID)
public final class ExampleGameTests {
    public static final String MOD_ID = "examplemod";
    private static final DeferredRegister<Consumer<GameTestHelper>> TEST_FUNCTIONS =
        DeferredRegister.create(BuiltInRegistries.TEST_FUNCTION, MOD_ID);
    public static final DeferredHolder<Consumer<GameTestHelper>, Consumer<GameTestHelper>>
        EXAMPLE_FUNCTION = TEST_FUNCTIONS.register(
            "example_function", () -> ExampleGameTests::exampleTest
        );

    public ExampleGameTests(IEventBus modBus) {
        TEST_FUNCTIONS.register(modBus);
    }

    public static void exampleTest(GameTestHelper helper) {
        helper.assertBlockPresent(Blocks.AIR, 0, 0, 0);
        helper.succeed();
    }
}

Run ./gradlew runGameTestServer; the server exits with the count of required failed tests. This command is for a real project, not this skills repository.


Show full SKILL.md (308 more words)Show less

Current Fabric Game Tests (26.x)

Use Fabric Loom's dedicated Game Test source set. Configure it in the existing fabricApi block and keep its metadata and code under src/gametest, separate from ordinary unit tests.

groovy
fabricApi {
    configureTests {
        createSourceSet = true
        modId = "example-mod-test-${project.name}"
        enableGameTests = true
        enableClientGameTests = true
        eula = true
    }
}

Place fabric.mod.json in src/gametest/resources/ and register server tests under fabric-gametest; use fabric-client-gametest for client tests. Implement server methods with Fabric's net.fabricmc.fabric.api.gametest.v1.GameTest and, when setup is needed before a method runs, CustomTestMethodInvoker.

java
package com.example.mymod;

import java.lang.reflect.Method;
import net.fabricmc.fabric.api.gametest.v1.CustomTestMethodInvoker;
import net.fabricmc.fabric.api.gametest.v1.GameTest;
import net.minecraft.gametest.framework.GameTestHelper;
import net.minecraft.world.level.block.Blocks;

public final class ExampleGameTest implements CustomTestMethodInvoker {
    @GameTest
    public void testBlock(GameTestHelper context) {
        context.assertBlockPresent(Blocks.AIR, 0, 0, 0);
        context.succeed();
    }

    @Override
    public void invokeTestMethod(GameTestHelper context, Method method)
            throws ReflectiveOperationException {
        method.invoke(this, context);
    }
}
src/gametest/resources/fabric.mod.json
json
{
  "entrypoints": {
    "fabric-gametest": [
      "com.example.mymod.ExampleGameTest"
    ]
  }
}

Keep the fabric-gametest entrypoint in sync with the concrete Game Test class. Fabric's server Game Tests run with build; use runClientGameTest for client tests. Follow the current Fabric documentation for project-specific Loom options and headless client CI.


Legacy NeoForge Game Tests (1.21.3 only)

Keep annotation-based tests isolated to Minecraft 1.21.3. The class can be registered by either @GameTestHolder(MOD_ID) or a RegisterGameTestsEvent listener. Do not register a @GameTestHolder class again with modEventBus.register(MyGameTests.class).

java
import net.minecraft.gametest.framework.GameTest;
import net.minecraft.gametest.framework.GameTestHelper;
import net.neoforged.neoforge.gametest.GameTestHolder;
import net.neoforged.neoforge.gametest.PrefixGameTestTemplate;

@GameTestHolder("examplemod")
@PrefixGameTestTemplate(false)
public final class ExampleGameTests {
    @GameTest(template = "example_structure")
    public static void smoke(GameTestHelper helper) {
        helper.succeed();
    }
}

For RegisterGameTestsEvent, register the class on the mod event bus and set templateNamespace = MOD_ID on each @GameTest. Legacy templates are .nbt files under data/<namespace>/structure/; @PrefixGameTestTemplate(false) controls whether the class name is added to the template path. When template is omitted, the path uses the lowercase method name and, unless that prefix is disabled, the lowercase simple class name followed by a dot. template is the path name only; configure its namespace through templateNamespace or @GameTestHolder.


CI

Keep fast unit/mock tests separate from a loader's Game Test task, and select the Java version for each Minecraft version: 25 for 26.x, 21 for 1.21.x, and 17 for Forge 1.20.1. Upload test reports when a runtime-facing job fails. Do not assume a task name from another loader: Fabric server Game Tests run with build, while NeoForge uses runGameTestServer. MockBukkit does not prove Folia thread safety or real server bootstrap.


References

© Jahrome907, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (scripts, references) in .codex/skills/minecraft-testing of Jahrome907/minecraft-agent-skills.

  • SKILL.md
  • references/test-layouts.md
  • scripts/validate-test-layout.sh

Open the folder on GitHubat commit dd57c5a

Compare with similar skills

Minecraft Testing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Minecraft Testing compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Minecraft Testing this skillJahrome907/minecraft-agent-skills169—~3.8kAutomated safety check: PassMIT
Debug Surefireeclipse-rdf4j/rdf4j420—~2.4kAutomated safety check: PassBSD-3-Clause
Eclipse Testgradusnikov/eclipse-chatgpt-plugin172—~1kAutomated safety check: PassMIT
Unit TestingLeavesfly/Jimi237—~667Automated safety check: PassNone
Migrate Junit Source To TabletestDataDog/dd-trace-java736—~950Automated safety check: PassApache-2.0
Test Analysis Extensionsmicrosoft/testfx1k2 repos~1.1kAutomated safety check: PassMIT

Similar skills

  • Debug Surefire

    eclipse-rdf4j/rdf4j

    Debug Maven Surefire unit tests by running them in JDWP "wait for debugger" mode (-Dmaven.surefire.debug) and attaching to the forked test JVM using jdb (preferred for CLI/agent debugging)…

    420 GitHub stars~2.4k tokensUpdated today
    Testing & QAAuto-check passed
  • Eclipse Test

    gradusnikov/eclipse-chatgpt-plugin

    Run JUnit tests in Eclipse projects — all tests, by package, by class, or individual test methods.

    172 GitHub stars~1k tokensUpdated today
    Testing & QAAuto-check passed
  • Unit Testing

    Leavesfly/Jimi

    Java单元测试编写指南(基于JUnit和Mockito)

    237 GitHub stars~667 tokensUpdated 1 mo ago
    Testing & QAAuto-check passed
  • Official

    Convert JUnit 5 @MethodSource/@CsvSource/@ValueSource parameterized tests to @TableTest (JDK8)

    736 GitHub stars~950 tokensUpdated today
    Testing & QAAuto-check passed
  • Test Analysis Extensions

    microsoft/testfx

    Official

    Provides file paths to language-specific reference files for the test ANALYSIS skills (assertion-quality, test-anti-patterns, test-gap-analysis, test-smell-detection, test-tagging).

    1k GitHub starsUsed in 2 repos~1.1k tokens
    Testing & QAAuto-check passed
  • Junit 5 Skill

    sickn33/agentic-awesome-skills

    Generates production-grade JUnit 5 unit and integration tests in Java.

    47k GitHub starsUsed in 1 repo~1.8k tokens
    Testing & QAAuto-check passed

More from Jahrome907/minecraft-agent-skills

All 13 skills in this repo
  • Minecraft CI Release

    Jahrome907/minecraft-agent-skills

    Set up and review CI, artifact publishing, versioning, and release management for Minecraft 26.x or legacy 1.21.x mods and Paper plugins.

    169 GitHub stars~3.6k tokensUpdated 26 days ago
    Auto-check passed
  • Minecraft Commands Scripting

    Jahrome907/minecraft-agent-skills

    Write and debug Minecraft Java 26.x and 1.21.x commands, selectors, execute chains, scoreboards, NBT, and RCON scripts.

    169 GitHub stars~1.3k tokensUpdated 26 days ago
    Auto-check passed
  • Minecraft Datapack

    Jahrome907/minecraft-agent-skills

    Create, edit, and debug vanilla Minecraft 26.x and 1.21.x datapacks, including functions, advancements, recipes, loot tables, predicates, tags, and pack metadata.

    169 GitHub stars~2.7k tokensUpdated 26 days ago
    Auto-check passed
  • Minecraft Modding

    Jahrome907/minecraft-agent-skills

    Create, modify, debug, or migrate Minecraft mods for current NeoForge or Fabric 26.x, legacy 1.21.x, and Forge 1.20.1.

    169 GitHub stars~4.3k tokensUpdated 26 days ago
    Auto-check passed
  • Minecraft Plugin Dev

    Jahrome907/minecraft-agent-skills

    Create, modify, and debug server plugins for current Paper 26.x on Java 25 or legacy Bukkit-derived 1.21.x servers on Java 21.

    169 GitHub stars~4.3k tokensUpdated 26 days ago
    Auto-check passed
  • Minecraft Resource Pack

    Jahrome907/minecraft-agent-skills

    Create and debug Minecraft 26.x and 1.21.x resource packs, including pack metadata, textures, models, blockstates, item definitions, sounds, fonts, animations, and shaders.

    169 GitHub stars~3.2k tokensUpdated 26 days ago
    Auto-check passed

Works with

Categories

Questions about Minecraft Testing

What does Minecraft Testing do?

Design and implement automated tests for current Minecraft 26.x or legacy 1.21.x mods and plugins using JUnit, MockBukkit, NeoForge Game Tests, or Fabric Game Tests. Minecraft Testing is an agent skill from Jahrome907/minecraft-agent-skills.x mods and plugins using JUnit, MockBukkit, NeoForge Game Tests, or Fabric Game Tests.

When should I use Minecraft Testing?

Minecraft Testing fits situations like: test code and test execution; not release publishing; gameplay implementation.

How do I install Minecraft Testing in Claude Code?

Run `npx skills add Jahrome907/minecraft-agent-skills --skill minecraft-testing -a claude-code`. Or copy the skill folder (.codex/skills/minecraft-testing in Jahrome907/minecraft-agent-skills) into .claude/skills/minecraft-testing in your project. Claude Code loads it when a task matches its description.

How do I install Minecraft Testing in Codex?

Run `npx skills add Jahrome907/minecraft-agent-skills --skill minecraft-testing -a codex`. Or copy the skill folder (.codex/skills/minecraft-testing in Jahrome907/minecraft-agent-skills) into .agents/skills/minecraft-testing in your project. Codex loads it when a task matches its description.

Can I use Minecraft Testing in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Jahrome907/minecraft-agent-skills --skill minecraft-testing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/minecraft-testing, .gemini/skills/minecraft-testing, .github/skills/minecraft-testing and .opencode/skills/minecraft-testing in your project.

What does Minecraft Testing need to run?

Going by SKILL.md and its folder, Minecraft Testing needs a shell for the scripts in its folder. Our summary lists: A Bash shell.

Does Minecraft Testing access the network?

SKILL.md names 6 domains. In commands or code: repo.papermc.io; the agent is likely to contact it when it follows the instructions. As links in the text: docs.neoforged.net, github.com, docs.mockbukkit.org, docs.fabricmc.net and junit.org. This is read from the text; nothing was executed.

Is Minecraft Testing safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Minecraft Testing use?

Minecraft Testing is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Minecraft Testing use?

About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 767 tokens, read only when the agent opens those files.

What are the alternatives to Minecraft Testing?

Skills that share tags, products or a category with Minecraft Testing: Debug Surefire (eclipse-rdf4j/rdf4j, 420 stars), Eclipse Test (gradusnikov/eclipse-chatgpt-plugin, 172 stars), Unit Testing (Leavesfly/Jimi, 237 stars) and Migrate Junit Source To Tabletest (DataDog/dd-trace-java, 736 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Minecraft Testing?

Jahrome907 (a GitHub user) maintains it in Jahrome907/minecraft-agent-skills, which has 169 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on September 13, 2026.

Source: Jahrome907/minecraft-agent-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.