
minecraft-datapack
Create, edit, and debug vanilla Minecraft 26.x and 1.21.x datapacks, including functions, advancements, recipes, loot tables, predicates, tags, and pack metadata. Use when the deliverable is a datapack file tree without Java or loader APIs.
- Installs
- 200
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/jahrome907/minecraft-agent-skills --skill minecraft-datapack- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads minecraft-datapack automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Minecraft Datapack Skill
Inspect pack.mcmeta and the target Minecraft version before editing. Preserve
an existing target unless migration is requested; metadata numbers alone do not
make older command or registry schemas compatible. Check the edited files with
the bundled validator and test in-game when available.
Skill Scope
Routing Boundaries
Use when: the deliverable is datapack files (pack.mcmeta,data/...) and.mcfunction/JSON content.Do not use when: the request is command-only snippets not tied to a datapack file tree (minecraft-commands-scripting).Do not use when: the request requires loader APIs, Java code, or runtime mod behavior (minecraft-modding).
Pack Metadata
| Minecraft Version | Preferred pack metadata |
|---|---|
| 1.21 / 1.21.1 | pack_format: 48 |
| 1.21.2 / 1.21.3 | pack_format: 57 |
| 1.21.4 | pack_format: 61 |
| 1.21.5 | pack_format: 71 |
| 1.21.6 | pack_format: 80 |
| 1.21.7 / 1.21.8 | pack_format: 81 |
| 1.21.9 / 1.21.10 | min_format: [88, 0], max_format: [88, 0] |
| 1.21.11 | min_format: [94, 1], max_format: [94, 1] |
| 26.1 | min_format: [101, 1], max_format: [101, 1] |
| 26.2 | min_format: [107, 1], max_format: [107, 1] |
| 26.3 | min_format: [121, 0], max_format: [121, 0] |
Use pack_format for a legacy-only target through data pack format 81. Starting
with data pack format 82 in 1.21.9, define both explicit min_format and
max_format values. A range that includes a legacy format below 82 must also
retain pack_format and supported_formats; do not include
supported_formats for a modern-only range.
For a legacy-compatible range, supported_formats may be one integer, a
two-integer inclusive range, or an object with integer min_inclusive and
max_inclusive fields.
For exact patch targeting, use [major, minor] arrays for both min_format and
max_format, including .0 versions such as [88, 0]. A single integer is
equivalent to [major, 0] for min_format, while a single integer in
max_format allows any minor version on that major line. Do not write decimal
JSON numbers such as 94.1.
Keep pack.mcmeta exact for the patch you target instead of trying to span the
multiple Minecraft releases with one metadata block.
Directory Layout
my-datapack/
├── pack.mcmeta
└── data/
├── <namespace>/ ← use your pack's name (e.g., mypack)
│ ├── function/
│ │ ├── main.mcfunction
│ │ └── tick.mcfunction
│ ├── advancement/
│ │ └── custom_advancement.json
│ ├── recipe/
│ │ └── custom_recipe.json
│ ├── loot_table/
│ │ └── custom_loot.json
│ ├── predicate/
│ │ └── is_night.json
│ ├── item_modifier/
│ │ └── add_name.json
│ └── tags/
│ ├── block/
│ │ └── climbable.json
│ ├── entity_type/
│ │ └── bosses.json
│ └── function/
│ └── custom_flow.json ← manually invoked tag
└── minecraft/
└── tags/function/
├── load.json ← engine tag; runs on /reload
└── tick.json ← engine tag; runs every game tick
pack.mcmeta
1.21.8 and earlier
{
"pack": {
"pack_format": 81,
"description": "My Custom Datapack v1.0"
}
}
Deliberate legacy-to-modern compatibility range
Use this form only when the pack actually supports both sides of the format-82 boundary. Mojang requires the retained legacy fields for this range.
{
"pack": {
"pack_format": 81,
"supported_formats": [81, 88],
"min_format": [81],
"max_format": [88],
"description": "My compatible datapack"
}
}
1.21.9 / 1.21.10
{
"pack": {
"min_format": [88, 0],
"max_format": [88, 0],
"description": "My Custom Datapack v1.0"
}
}
1.21.11
{
"pack": {
"min_format": [94, 1],
"max_format": [94, 1],
"description": "My Custom Datapack v1.0"
}
}
26.3
{
"pack": {
"min_format": [121, 0],
"max_format": [121, 0],
"description": "My Custom Datapack v1.0"
}
}
Function Tags (load / tick)
The engine recognizes the minecraft:load and minecraft:tick tags, so these
files must use the minecraft namespace. A load.json or tick.json in a
custom namespace is a valid custom tag name, but it has no automatic behavior.
data/minecraft/tags/function/load.json
{
"values": [
"<namespace>:setup"
]
}
data/minecraft/tags/function/tick.json
{
"values": [
"<namespace>:tick"
]
}
data/<namespace>/function/setup.mcfunction
# Runs once on /reload
scoreboard objectives add deaths deathCount
scoreboard objectives add kills playerKillCount
tellraw @a {"text":"[MyPack] Loaded!","color":"green"}
data/<namespace>/function/tick.mcfunction
# Runs every tick — KEEP THIS SHORT
# Only put fast, targeted operations here
execute as @a[scores={deaths=1..}] run function mypack:on_death_check
Commands and Function Syntax
Execute subcommands (datapack-specific patterns)
# Chained execute — common datapack pattern for conditional per-player logic
execute as @a[gamemode=!spectator] at @s if block ~ ~-1 ~ #minecraft:logs run give @s minecraft:apple
# store result into score (bridge between NBT world and scoreboard state)
execute store result score @s mypack.health run data get entity @s Health
# in: run logic in another dimension
execute in minecraft:the_nether run say This runs in the Nether
Storage NBT (datapack-specific global state)
# Storage is the datapack-native key-value store — persists across /reload
data modify storage mypack:data config.difficulty set value "hard"
data get storage mypack:data config.difficulty
# Copy live entity data into storage for macro use or cross-function state
data modify storage mypack:log last_player_pos set from entity @s Pos
For full command syntax, selectors, and scoreboard operations see the
Minecraft Wiki — Commands reference.
The minecraft-commands-scripting skill covers command-only work in depth.
Macros (1.20.2+)
Macro functions let you pass dynamic arguments to a function.
Define a macro function (data/mypack/function/greet.mcfunction)
# Macro argument: $(name)
$tellraw @a {"text":"Welcome $(name)!","color":"gold"}
$scoreboard players set $(name) points 0
Call with run function + with
# Pass values from storage
data modify storage mypack:tmp input set value {name:"Steve"}
function mypack:greet with storage mypack:tmp input
Registry data examples
Read references/data-examples.md when authoring advancements, recipes, loot tables, predicates, or tags. Load only the relevant section and keep existing namespaces and version targets.
Worldgen Overrides
Override biome noise (data/minecraft/worldgen/noise_settings/overworld.json)
Edit inside an existing copy — do NOT create from scratch without the full JSON.
Get the vanilla version from the Minecraft jar: jar xf minecraft.jar data/.
Override a biome's spawn costs (through 26.2)
For 26.3, use the biome's minecraft:gameplay/natural_mob_spawns environment
attribute instead; the old top-level spawn_costs field was removed.
{
"spawn_costs": {
"minecraft:zombie": {
"energy_budget": 0.12,
"charge": 0.7
}
}
}
Installation & Testing
Place the pack folder or ZIP under the world's datapacks/ directory, with
pack.mcmeta at its root. Then use these in-game commands:
/datapack list
/datapack enable "file/my-datapack"
/datapack disable "file/my-datapack"
/reload
Development workflow
- Edit
.mcfunctionor.jsonfiles - Run the bundled validator to catch JSON and path errors before loading:
./scripts/validate-datapack.sh --root /path/to/datapack - If errors, fix and re-validate until clean
- Run
/reloadin-game (or/minecraft:reloadif a mod intercepts it) - Test with target command (e.g.,
/function mypack:setup, trigger an advancement) - Check
latest.logfor runtime errors (missing references, bad selectors)
Common Errors
| Error | Cause | Fix |
|---|---|---|
Unknown or invalid command | Syntax error in function | Check whitespace, selector, trailing space |
Datapack did not load | Invalid JSON in any file | Validate with jq . < file.json |
pack metadata mismatch | Wrong pack_format or min_format / max_format values | Update pack.mcmeta for the exact Minecraft release |
| Function not running on tick | Missing engine tick tag or wrong namespace | Check data/minecraft/tags/function/tick.json |
| Macro error | $ line but no with | Provide with storage/entity/block |
Validator Script
Use the bundled validator script before shipping a datapack update:
# Run from the installed skill directory (for example `.codex/skills/minecraft-datapack`):
./scripts/validate-datapack.sh --root /path/to/datapack
# Strict mode treats warnings as failures:
./scripts/validate-datapack.sh --root /path/to/datapack --strict
What it checks:
- JSON validity for
pack.mcmetaanddata/**/*.json - Legacy pluralized path mistakes for loot tables, functions, and block/item/function tags
data/minecraft/tags/function/load.jsonandtick.jsonreferences resolve to local.mcfunctionfiles- custom-namespace
load.jsonandtick.jsonnames, which are valid but do not run automatically
References
-
Minecraft Wiki — Data Pack: https://minecraft.wiki/w/Data_pack
-
Minecraft Java Edition 1.21.9 release notes: https://www.minecraft.net/en-us/article/minecraft-java-edition-1-21-9
-
Minecraft Wiki — Function: https://minecraft.wiki/w/Function_(Java_Edition)
-
Minecraft Wiki — Commands: https://minecraft.wiki/w/Commands
-
Pack format history: https://minecraft.wiki/w/Pack_format
-
NBT format: https://minecraft.wiki/w/NBT_format
-
Predicate conditions: https://minecraft.wiki/w/Predicate
-
Loot table format: https://minecraft.wiki/w/Loot_table
FAQ
What does the minecraft-datapack skill do?
Create, edit, and debug vanilla Minecraft 26.x and 1.21.x datapacks, including functions, advancements, recipes, loot tables, predicates, tags, and pack metadata. Use when the deliverable is a datapack file tree without Java or loader APIs.
How do I install minecraft-datapack?
Run npx skills add https://github.com/jahrome907/minecraft-agent-skills --skill minecraft-datapack in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/minecraft-datapack/ (personal) or .claude/skills/minecraft-datapack/ (project).
Which AI agents can use minecraft-datapack?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is minecraft-datapack safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains minecraft-datapack?
It is published by jahrome907 in jahrome907/minecraft-agent-skills. It has 200 recorded installs.
More from jahrome907/minecraft-agent-skills
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. Use for loader-based gameplay code and assets; use minecraft-multiloader when one codebase must target both modern loaders.
minecraft-testing
jahrome907/minecraft-agent-skills
Open the skill to read its SKILL.md instructions.
minecraft-resource-pack
jahrome907/minecraft-agent-skills
Open the skill to read its SKILL.md instructions.
minecraft-server-admin
jahrome907/minecraft-agent-skills
Set up, operate, tune, and troubleshoot Minecraft Java 26.x and legacy 1.21.x servers across Paper, Purpur, Folia, Velocity, Fabric, and NeoForge. Use for infrastructure, backups, proxies, and live operations, not plugin or mod development.
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. Use for JavaPlugin APIs, events, commands, schedulers, configuration, PDC, and Adventure, not client mods or vanilla datapacks.
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. Use for command-only work; use minecraft-datapack for complete datapack structures.
Popular backend & apis skills
find-skills
vercel-labs/skills
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
entra-app-registration
microsoft/azure-skills
Guides Microsoft Entra ID app registration, OAuth 2.0 authentication, and MSAL integration. USE FOR: create app registration, register Azure AD app, configure OAuth, set up authentication, add API permissions, generate service principal, MSAL example, console app auth, Entra ID setup, Azure AD authentication. DO NOT USE FOR: Key Vault secrets (use azure-keyvault-expiration-audit), general Azure resource security guidance.
google-agents-cli-adk-code
google/agents-cli
This skill should be used when the user wants to "write agent code", "build an agent with ADK", "add a tool", "create a callback", "define an agent", "use state management" — in a project that needs ADK (Agent Development Kit) API patterns and code examples. It provides a quick reference for agent types, tool definitions, orchestration patterns, callbacks, state management, the graph Workflow API, and reference recipes to study. Do NOT use for scaffolding (use google-agents-cli-scaffold) or deployment (use google-agents-cli-deploy).
embedded-captions
heygen-com/hyperframes
Add captions or subtitles to an existing single-subject talking-head video without editing the footage. Use for plain verbatim captions, cinematic captions embedded behind the subject, VFX captions, “炸/特效/酷炫字幕,” or a named identity from the 35-style catalog. Route by visual identity, not by backend engine. The quiet anchor rail is the default; embed every word only when the user explicitly wants a fully cinematic treatment. The workflow runs locally end to end, including transcription and subject matting; split multi-shot footage before applying it.
entra-agent-id
microsoft/azure-skills
Provision Microsoft Entra Agent Identity Blueprints, BlueprintPrincipals, and per-instance Agent Identities via Microsoft Graph, and configure OAuth 2.0 token exchange (fmipath, OBO, cross-tenant) including the Microsoft Entra SDK for AgentID sidecar. USE FOR: Agent Identity Blueprint, BlueprintPrincipal, agent OAuth, fmipath token exchange, agent OBO, Workload Identity Federation for agents, polyglot agent auth, Microsoft.Identity.Web.AgentIdentities. DO NOT USE FOR: standard Entra app registration (use entra-app-registration), Microsoft Foundry agent authoring (use microsoft-foundry).
neon
neondatabase/agent-skills
Overview of Neon, a complete set of cloud backend primitives around Lakebase Postgres: Auth, Object Storage, Functions, the AI Gateway, and Realtime. Start here to choose Neon for undecided login, files, APIs, and LLM calls, set up the CLI or MCP server, and follow the branch-first workflow. Use when building an app or backend on Neon, or when "Neon" or "Lakebase Postgres" is mentioned. Child skill neon-postgres wins for an existing DATABASEURL, SQL, schema, inspect, or search. Child skill neon-auth wins for login, users, sessions, identity routing, and Managed Better Auth setup. Child skill neon-realtime wins for live queries in reactive apps and agents. Also use for object storage, S3, buckets, serverless functions, function triggers, cron, AI gateway, LLM calls, realtime, logs, Loki, Grafana, observability, postgres, database, backend, Claimable Neon, neon.new, or a no-signup database.