MANDATORY prerequisite — invoke BEFORE any mcp__blockbench__* tool call that creates, modifies, or exports Blockbench content. Orchestrates the other blockbench-* skills (modeling, texturing, animation, PBR, Hytale, MCP overview). Trigger on: 3D model/texture/animation creation or edits in Blockbench; calls to mcp__blockbench__* tools; phrases like 'build a Minecraft model', 'paint a texture', 'animate this rig', 'export the model'. Dispatches to the right sub-skill(s), enforces pre-flight checks (project open, format, outline), wraps risky work in checkpoints, and ensures exports close the loop.
---
name: blockbench-use
description: "MANDATORY prerequisite — invoke BEFORE any mcp__blockbench__* tool call that creates, modifies, or exports Blockbench content. Orchestrates the other blockbench-* skills (modeling, texturing, animation, PBR, Hytale, MCP overview). Trigger on: 3D model/texture/animation creation or edits in Blockbench; calls to mcp__blockbench__* tools; phrases like 'build a Minecraft model', 'paint a texture', 'animate this rig', 'export the model'. Dispatches to the right sub-skill(s), enforces pre-flight checks (project open, format, outline), wraps risky work in checkpoints, and ensures exports close the loop."
---
# Blockbench Use
Orchestrator for Blockbench MCP work. Load this **before** touching the 3D scene so the right sub-skills load and the right pre-flight checks run.
## Rule
Any request that will call an `mcp__blockbench__*` tool to create or modify content **must** go through this skill first.
Steps, in order:
1. **Classify the request** → pick one or more sub-skills (table below).
2. **Pre-flight** → confirm a project is open and the format is correct (see "Pre-flight checks").
3. **Load the sub-skill(s)** via the Skill tool.
4. **Checkpoint before risk** → call `save_checkpoint` for multi-step edits that might need rollback.
5. **Execute** the sub-skill's workflow.
6. **Close the loop** → screenshot, validate (Hytale), or export if the user asked for a deliverable.
## Skill routing table
Pick by primary intent. When the task spans domains, load **all** relevant skills before starting.
| User intent | Primary skill | Also load when… |
|---|---|---|
| Build cubes, meshes, groups, hierarchy | `blockbench-modeling` | needs texture → `blockbench-texturing` |
| Paint, fill, draw, brush, layers, UV | `blockbench-texturing` | channel-aware (normal/MER) → `blockbench-pbr-materials` |
| Keyframes, bone rigs, walk/idle/attack | `blockbench-animation` | bones need geometry first → `blockbench-modeling` |
| `.texture_set.json`, normal/height/MER | `blockbench-pbr-materials` | textures not yet drawn → `blockbench-texturing` |
| `.blockymodel`, `.blockyanim`, attachments, quads, stretch, shading modes | `blockbench-hytale` | modeling/animation parts → those skills |
| "What tools are available?" / unclear scope | `blockbench-mcp-overview` | — |
| Write a Blockbench JS plugin (not use MCP) | `blockbench-plugins` (from `blockbench-development/`) | — |
**Skip this skill** for pure research questions (API docs, "how does Blockbench work?"). Go straight to `blockbench-mcp-overview`.
## Pre-flight checks
Run before any mutation. One round of `list_outline` + `list_textures` is usually enough.
1. **Is a project open?** If no project, call `create_project` first (format from the routing table below).
2. **Is the format correct for the task?**
- Cube modeling (Minecraft) → `bedrock_block`, `java_block`, `bedrock`
- Mesh/freeform → `free`, `modded_entity`, `optifine_entity`
- Hytale character → `hytale_character` (64px)
- Hytale prop → `hytale_prop` (32px)
- Generic → `generic` or `free`
3. **What's already there?** Use `list_outline` (structure) + `list_textures` (materials). Prefer `find_elements_by_criteria` / `filter_by_material` over dumping the whole outline for large projects.
4. **Hytale project?** Run `hytale_validate_model` at the end; never silently exceed 255 nodes.
## Multi-skill workflow compositions
### "Create a Minecraft character with a walk cycle"
```
blockbench-modeling → bones + cubes
blockbench-texturing → skin texture
blockbench-animation → walk cycle keyframes
# finally:
capture_screenshot → preview
export_model: codec_id="project" → save .bbmodel
```
### "Make a Bedrock RTX block"
```
blockbench-modeling → single cube
blockbench-texturing → color map
blockbench-pbr-materials → normal + MER + texture_set.json
# finally:
hytale_validate_model → (skip — not Hytale)
capture_screenshot
```
### "Build a Hytale character with attachments"
```
blockbench-hytale → read first: format, node limits, pieces
blockbench-modeling → geometry in character format
blockbench-animation → optional keyframes (60 FPS)
# separately per attachment collection:
blockbench-hytale → hytale_set_attachment_piece on bones
# finally:
hytale_validate_model → node count, stretch, shading
export_model: codec_id="blockymodel"
```
### "Retexture an existing model"
```
# Pre-flight: find everything that uses the old texture
filter_by_material: texture="old_skin"
# Load:
blockbench-texturing → paint/create replacement
# Swap references:
apply_texture per match (from filter_by_material results)
```
## Safety & efficiency rules (apply in every session)
1. **Checkpoint before risk.** For any workflow of 3+ mutations, call `save_checkpoint: name="<descriptive>"` first. If the result is wrong, `undo: steps=N` back.
2. **Filter, don't dump.** Prefer `find_elements_by_criteria`, `filter_by_material`, or `select_all_of_type` over `list_outline` when you know the shape of what you want. Large outlines blow context.
3. **Respect the format.** Don't call Hytale tools on a non-Hytale project — they will error. Check `Format.id` via `risky_eval` or `hytale_get_format_info` if unsure.
4. **Screenshot after meaningful changes.** `capture_screenshot` confirms the model looks right. Do it at milestones, not every edit.
5. **Export only when the user asks for a deliverable.** Use `list_export_formats` first to pick the right codec, then `export_model` with a `path` (or content-only if the user just wants to see it).
6. **Never call `trigger_action: action="undo"` or `"redo"`.** Use the dedicated `undo` / `redo` tools — they return which actions were traversed.
7. **Name everything.** Descriptive names make `find_elements_by_criteria` and filtering work later.
## When to load `blockbench-mcp-overview`
Load it instead of a specialized skill when:
- The user's intent is ambiguous ("help me with this model")
- The tool call count will be small (<5) and spans multiple domains
- The user is asking about capabilities, not executing
Otherwise prefer the specialized skills — they have concrete examples and return shapes.
## What this skill does NOT cover
- **Blockbench plugin development** (writing `.js` plugins) → `blockbench-plugins`
- **MCP server development** (adding tools to this repo) → not in this skill set
- **General 3D theory / THREE.js / rendering internals** → out of scope
Creator's repository · jasonjgardner/blockbench-mcp-project