From minestom-skills
Build Minestom commands — extend Command, addSyntax with ArgumentType arguments, setDefaultExecutor, conditions/permissions, tab-completion suggestions, and registering via CommandManager. Use when adding chat commands, parsing command arguments, or wiring command permissions/suggestions.
How this skill is triggered — by the user, by Claude, or both
Slash command
/minestom-skills:minestom-commandsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A command is a class extending `Command`. You declare **syntaxes** (argument patterns); Minestom parses input, picks the matching syntax, and provides client-side autocomplete from the brigadier tree.
A command is a class extending Command. You declare syntaxes (argument patterns); Minestom parses input, picks the matching syntax, and provides client-side autocomplete from the brigadier tree.
package com.example.commands;
import net.minestom.server.command.builder.Command;
import net.minestom.server.command.builder.arguments.ArgumentType;
public class GiveCommand extends Command {
public GiveCommand() {
super("give", "g"); // name + aliases
// fallback when no syntax matches
setDefaultExecutor((sender, context) ->
sender.sendMessage("Usage: /give <amount>"));
var amount = ArgumentType.Integer("amount");
addSyntax((sender, context) -> {
int n = context.get(amount);
sender.sendMessage("Giving " + n);
}, amount);
}
}
Register once at startup:
MinecraftServer.getCommandManager().register(new GiveCommand());
ArgumentType factory methods, e.g. Integer, Float, Boolean, String, StringArray (greedy rest), Word, Enum, Entity, ItemStack, BlockState, RelativeVec3 / Position. Read with context.get(arg).
var target = ArgumentType.Entity("target").onlyPlayers(true);
var pos = ArgumentType.RelativeVec3("pos");
addSyntax((sender, context) -> { /* ... */ }, target, pos);
Multiple addSyntax calls = overloads; longest/most-specific match wins.
sender is a CommandSender — could be a Player or the ConsoleSender. Guard before player-only logic:
addSyntax((sender, context) -> {
if (!(sender instanceof Player player)) {
sender.sendMessage("Players only.");
return;
}
// use player
}, /* args */);
setCondition((sender, commandString) ->
sender instanceof Player p && p.getPermissionLevel() >= 2);
Per-syntax condition is the 1st arg of an addConditionalSyntax(...). Minestom has no built-in permission plugin — you define what permissions mean.
var name = ArgumentType.Word("name").setSuggestionCallback((sender, context, suggestion) -> {
suggestion.addEntry(new SuggestionEntry("alice"));
suggestion.addEntry(new SuggestionEntry("bob"));
});
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Applies a firm's KYC/AML rules grid to parsed onboarding records: assigns risk rating, checks required documents, outputs rule outcomes with citations, and routes for escalation.
Generates daily or weekly digests of activity from connected sources (chat, email, docs, tasks, CRM), highlighting action items, decisions, mentions, and project updates.
npx claudepluginhub tjkdev1/minestom-skills --plugin minestom-skills