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)…
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.
$ npx skills add Jahrome907/minecraft-agent-skills --skill minecraft-testing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Jahrome907/minecraft-agent-skills minecraft-testing --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "minecraft-testing" agent skill from https://github.com/Jahrome907/minecraft-agent-skills/tree/main/.codex/skills/minecraft-testing into .claude/skills/minecraft-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "minecraft-testing", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Jahrome907/minecraft-agent-skills/tree/main/.codex/skills/minecraft-testingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Jahrome907/minecraft-agent-skills --skill minecraft-testing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Jahrome907/minecraft-agent-skills minecraft-testing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Jahrome907/minecraft-agent-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.codex/skills/minecraft-testing .agents/skills/minecraft-testing && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "minecraft-testing" agent skill from https://github.com/Jahrome907/minecraft-agent-skills/tree/main/.codex/skills/minecraft-testing into .agents/skills/minecraft-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "minecraft-testing", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Jahrome907/minecraft-agent-skills --skill minecraft-testing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Jahrome907/minecraft-agent-skills minecraft-testing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Jahrome907/minecraft-agent-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.codex/skills/minecraft-testing .cursor/skills/minecraft-testing && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "minecraft-testing" agent skill from https://github.com/Jahrome907/minecraft-agent-skills/tree/main/.codex/skills/minecraft-testing into .cursor/skills/minecraft-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "minecraft-testing", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Jahrome907/minecraft-agent-skills.git --path .codex/skills/minecraft-testing--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Jahrome907/minecraft-agent-skills --skill minecraft-testing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Jahrome907/minecraft-agent-skills minecraft-testing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Jahrome907/minecraft-agent-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.codex/skills/minecraft-testing .gemini/skills/minecraft-testing && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "minecraft-testing" agent skill from https://github.com/Jahrome907/minecraft-agent-skills/tree/main/.codex/skills/minecraft-testing into .gemini/skills/minecraft-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "minecraft-testing", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Jahrome907/minecraft-agent-skills minecraft-testingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Jahrome907/minecraft-agent-skills --skill minecraft-testing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Jahrome907/minecraft-agent-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/.codex/skills/minecraft-testing .github/skills/minecraft-testing && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "minecraft-testing" agent skill from https://github.com/Jahrome907/minecraft-agent-skills/tree/main/.codex/skills/minecraft-testing into .github/skills/minecraft-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "minecraft-testing", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Jahrome907/minecraft-agent-skills --skill minecraft-testing -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Jahrome907/minecraft-agent-skills minecraft-testing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Jahrome907/minecraft-agent-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.codex/skills/minecraft-testing .opencode/skills/minecraft-testing && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "minecraft-testing" agent skill from https://github.com/Jahrome907/minecraft-agent-skills/tree/main/.codex/skills/minecraft-testing into .opencode/skills/minecraft-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "minecraft-testing", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
minecraft-testingDesign 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. 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.
Read from SKILL.md and the folder at commit dd57c5a. It shows what the files ask for, not the result of running them.
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.
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.
Hosts in commands or code, which the agent is likely to contact:
repo.papermc.ioAlso links to:
docs.neoforged.netgithub.comdocs.mockbukkit.orgdocs.fabricmc.netjunit.orgFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from Jahrome907/minecraft-agent-skills at commit dd57c5a, republished under its MIT licence (© Jahrome907). 750 words, ~3,832 tokens.
.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.| Approach | Best For | Requires Game? |
|---|---|---|
| JUnit 5 (pure unit tests) | Logic, data structures, NBT serialization | No |
| MockBukkit | Bukkit/Paper plugin events, commands, inventory | No (mocked server) |
| NeoForge GameTests | In-game block/entity/world interaction | Yes (test environment) |
| Fabric GameTests | In-game block/entity/world interaction | Yes (test environment) |
| Integration server | Full plugin/mod lifecycle | Yes (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.
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).references/test-layouts.md./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.
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:
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.
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));
}
}build.gradle.ktsrepositories {
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()
}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();
}
}@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");
}@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.");
}@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));
}@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());
}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.
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);
}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.
@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);
}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.
{
"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.
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.
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.
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.
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{
"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.
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).
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.
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.
© Jahrome907, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (scripts, references) in .codex/skills/minecraft-testing of Jahrome907/minecraft-agent-skills.
Open the folder on GitHubat commit dd57c5a
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Minecraft Testing this skillJahrome907/minecraft-agent-skills | 169 | — | ~3.8k | Automated safety check: Pass | MIT | |
| Debug Surefireeclipse-rdf4j/rdf4j | 420 | — | ~2.4k | Automated safety check: Pass | BSD-3-Clause | |
| Eclipse Testgradusnikov/eclipse-chatgpt-plugin | 172 | — | ~1k | Automated safety check: Pass | MIT | |
| Unit TestingLeavesfly/Jimi | 237 | — | ~667 | Automated safety check: Pass | None | |
| Migrate Junit Source To TabletestDataDog/dd-trace-java | 736 | — | ~950 | Automated safety check: Pass | Apache-2.0 | |
| Test Analysis Extensionsmicrosoft/testfx | 1k | 2 repos | ~1.1k | Automated safety check: Pass | MIT |
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)…
gradusnikov/eclipse-chatgpt-plugin
Run JUnit tests in Eclipse projects — all tests, by package, by class, or individual test methods.
Leavesfly/Jimi
Java单元测试编写指南(基于JUnit和Mockito)
DataDog/dd-trace-java
Convert JUnit 5 @MethodSource/@CsvSource/@ValueSource parameterized tests to @TableTest (JDK8)
microsoft/testfx
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).
sickn33/agentic-awesome-skills
Generates production-grade JUnit 5 unit and integration tests in Java.
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.
Jahrome907/minecraft-agent-skills
Write and debug Minecraft Java 26.x and 1.21.x commands, selectors, execute chains, scoreboards, NBT, and RCON scripts.
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.
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.
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.
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.
Categories
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.
Minecraft Testing fits situations like: test code and test execution; not release publishing; gameplay implementation.
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.
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.
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.
Going by SKILL.md and its folder, Minecraft Testing needs a shell for the scripts in its folder. Our summary lists: A Bash shell.
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.
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.
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.
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.
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.
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.