roble3/cc-blender-skill37 files

Text To Blender

Drive Blender from natural language. Converts plain-English requests ("model a sword and render it with cinematic lighting", "make this glass look frosted", "set up three-point lighting", "export this scene as glTF for the web") into Blender Python code executed via the Blender MCP server. Acts as the orchestrator that picks and chain-loads specialised sub-skills (blender-modeling, blender-materials, blender-lighting, blender-cameras, blender-rendering, blender-animation, blender-export, wireframe-to-3d, blender-pro-workflow, blender-skill-harmonizer, quality-refinement-autoloop). Use this skill whenever the user wants Claude to do anything in Blender, including creating geometry, applying materials, lighting a scene, framing a camera, rendering, animating, or exporting. Make sure to invoke this skill even if the user does not say "Blender" — also covers requests like "create a 3D model of...", "render this...", "make a glTF from...", "set up a scene with...", or any 3D-creation task. Requires the Blender MCP addon (ahujasid/blender-mcp) running on port 9876.

Specification
Skill ID
roble3/cc-blender-skill/text-to-blender
Publisher
roble3
Repository
cc-blender-skill
Installs
0
Files
37
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

roble3/cc-blender-skill/text-to-blenderInstalls these files
  • SKILL.md
  • assets/v0.4.0-validation/README.md
  • assets/v0.4.0-validation/test1-modeling-materials-lighting-render.webp
  • assets/v0.4.0-validation/test2-glass-cycles.webp
  • assets/v0.4.0-validation/test3-anim-frame001.webp
  • assets/v0.4.0-validation/test3-anim-frame048.webp
  • assets/v0.4.0-validation/test3-anim-frame096.webp
  • assets/v0.6.0-round2-validation/M_sword_FINAL_v0.6.0.webp
  • assets/v0.6.0-round2-validation/M_sword_attempt1_broken_world.webp
  • assets/v0.6.0-round2-validation/M_sword_attempt2_clean_world.webp
  • assets/v0.6.0-round2-validation/M_sword_attempt3_aimed_lights.webp
  • assets/v0.6.0-round2-validation/M_sword_attempt4_correct_dimensions_wrong_orientation.webp
  • assets/v0.6.0-round2-validation/M_sword_attempt5_rotated_no_taper.webp
  • assets/v0.6.0-round2-validation/M_sword_attempt6_with_pointed_tip.webp
  • assets/v0.6.0-round2-validation/README.md
  • assets/v0.7.0-bottle-validation/README.md
  • assets/v0.7.0-bottle-validation/bottle_FINAL_v0.7.0.webp
  • assets/v0.7.0-bottle-validation/bottle_first_try.webp
  • assets/v0.8.0-chair-validation/README.md
  • assets/v0.8.0-chair-validation/chair_FINAL_v0.8.0.webp
  • assets/v0.8.0-chair-validation/chair_attempt1_simple_rectangles.webp
  • assets/v0.8.0-chair-validation/chair_attempt2_overcooked_wood.webp
  • assets/v0.8.0-chair-validation/chair_attempt3_balanced_wood.webp
  • assets/v0.9.0-validation/01_bottle_glass_class_lighting.webp
  • assets/v0.9.0-validation/02_bottle_proper_wine_density.webp
  • assets/v0.9.0-validation/03_aviator_wireframe_to_3d.webp
  • assets/v0.9.0-validation/04_aviator_chained_upgrade.webp
  • assets/v0.9.0-validation/05_aviator_proper_rayban_dimensions.webp
  • assets/v1.1.0-validation/desk_lamp_emission.webp
  • assets/v1.2.0-validation/01_broadcaster_too_bright.webp
  • assets/v1.2.0-validation/02_broadcaster_neutral_dominates.webp
  • assets/v1.2.0-validation/03_broadcaster_synthwave_FINAL.webp
  • assets/v1.2.0-validation/04_broadcaster_with_features_still_not_human.webp
  • evals/evals.json
  • references/assembly-order.md
  • references/blender-version-compat.md
  • references/common-object-dimensions.md

What this skill tells the agent

Text-to-Blender Orchestrator

Turn plain-English requests into Blender work. You are the conductor: read the request, decide which sub-skills to chain-load, sequence them in the right order, and execute via the Blender MCP.

Multi-skill harmonization

For complex tasks that trigger multiple Blender skills, especially reference/template/brand work, load blender-skill-harmonizer before choosing the execution order. It owns precedence, handoff artifacts, and conflict policy.

If the user rejects an output as sub-par, says the same issue is recurring, or asks to improve the skill stack before retrying, load quality-refinement-autoloop before further product work. It turns evidence into a sanitized reusable lesson, patches generic skills/docs/versioning when explicitly requested, and only then resumes the Blender repair loop.

How this skill works

The user speaks in tasks ("render a hero shot of a sword on a stone"); you:

  1. Identify intent → which capabilities are needed (modeling? materials? lighting? rendering? export?).
  2. Check prerequisites → MCP server reachable, scene state.
  3. Reset world to a known-good baseline (see World reset below) — prevents leftover broken HDRI / Environment Texture nodes from previous runs corrupting the render.
  4. Look up real-world dimensions for the subject (references/common-object-dimensions.md) BEFORE generating Python. A "sword" has specific proportions; a "chair" has specific proportions; do not guess.
  5. Route to sub-skills → load the relevant ones via Read and follow their instructions.
  6. Sequence the work in the order pros use (see references/assembly-order.md).
  7. Execute generated Python via mcp__blender__execute_blender_code.
  8. Validate with mcp__blender__get_scene_info, get_object_info, AND `get_viewport_screenshot` — see Visual validation checkpoint below. Numerical validation alone is not enough: the API can report success while geometry is grossly wrong.
  9. Iterate — if the visual check shows an obvious problem (subject barely visible, wrong proportions, wrong orientation), fix and re-render BEFORE reporting success.
  10. Report to the user with concrete numbers AND a path to the proof render they can inspect.

World reset (always step 3, before any composition)

Previous tests can leave the scene's world in a broken state — particularly an Environment Texture node with image=None cascading into Background, which produces a magenta-flooded render. Reset world to a neutral baseline at the start of every scene-build:

def reset_world(scene, color=(0.04, 0.04, 0.05, 1.0), strength=0.4):
    world = scene.world
    world.use_nodes = True
    nodes = world.node_tree.nodes
    for n in list(nodes):
        nodes.remove(n)
    output = nodes.new('ShaderNodeOutputWorld')
    bg = nodes.new('ShaderNodeBackground')
    bg.inputs['Color'].default_value = color
    bg.inputs['Strength'].default_value = strength
    world.node_tree.links.new(bg.outputs['Background'], output.inputs['Surface'])

If the user wants HDRI lighting, override this AFTER it runs (load the actual .hdr file and verify env.image is not None).

Visual validation checkpoint (always between steps 8 and 10)

After rendering, always:

  1. Call mcp__blender__get_viewport_screenshot (or read the rendered file with Read).
  2. Visually verify against the user's request. Specifically:
  • Subject is visible and recognisable (not a thin streak, not magenta-flooded, not entirely in shadow)
  • Proportions match the real-world reference dimensions for that subject
  • Composition is reasonable (subject in frame, not clipped at edges, not microscopic in one corner)
  • Materials have visible variation (not perfectly flat plastic-looking surfaces) — for production-quality scenes, add procedural texture nodes
  1. If the render is obviously wrong, do NOT report success. Iterate: identify the specific problem, fix it, re-render, re-check.

A render passing every numerical check (object count, vertex count, file size, no error messages) can still look completely wrong. The user only sees the picture. Make sure the picture matches the request before declaring done.

Set viewport to Material Preview mode (last step before reporting)

The user is often looking at Blender's viewport, not the rendered file. Blender defaults the viewport to Solid shading mode which ignores all materials and shows everything as flat grey. After scene assembly, switch the viewport to Material Preview so the user actually sees the materials they got:

import bpy

for area in bpy.context.screen.areas:
    if area.type == 'VIEW_3D':
        for space in area.spaces:
            if space.type == 'VIEW_3D':
                space.shading.type = 'MATERIAL'           # or 'RENDERED' for full quality
                space.shading.use_scene_lights = True
                space.shading.use_scene_world = True

Skip this only when the user has explicitly asked you to leave the viewport alone.

Real-world dimension lookup

Before sizing any subject from natural language, consult references/common-object-dimensions.md. It lists realistic proportions for common requests:

SubjectTotalNotes
One-handed sword~95-100 cm longBlade 78cm × 4.5cm × 0.8cm; guard 20cm × 2.5cm; grip 13cm; pommel 5.6cm
Chairseat ~45cm × 45cm × 4cmSeat height 45cm; back ~45cm tall
Bottle25-30cm tallBody ø8-10cm; neck ø2-3cm

The full reference list lives in references/common-object-dimensions.md. Do not guess.

Prerequisites — always check first

Before any work, verify:

  1. Blender MCP is reachable. Call mcp__blender__get_scene_info. If it errors with "Could not connect to Blender": > "Blender's MCP addon isn't running. Start Blender, enable the BlenderMCP addon (port 9876 default), then re-run."

Stop and ask the user to fix this.

  1. Scene state. get_scene_info returns the current objects. Decide:
  • Empty scene? → Start fresh; build from primitives.
  • Existing objects? → Operate on them; do NOT delete unless asked.
  • Default cube only? → Probably safe to delete (bpy.ops.object.delete()).
  1. The user's actual request. If ambiguous, ask one question. Otherwise proceed with sensible defaults.

Intent → sub-skill routing table

For each intent the user expresses, load (via Read) the matching sub-skill's SKILL.md and follow its patterns. Multiple intents = chain multiple sub-skills.

User intent (paraphrased)Load these sub-skillsOrder
"Make a 3D model of X"blender-modeling1st
"From this wireframe drawing"wireframe-to-3d1st
"Use these materials / make it look like X"blender-materialsAfter modeling
"Light it / studio setup / cinematic"blender-lightingAfter geometry exists
"Hero shot / camera angle / DoF"blender-camerasAfter lighting
"Render it / produce an image"blender-renderingLast visual step
"Animate / move / rotate over time"blender-animationAfter geometry
"Export as glTF / FBX / OBJ / for web / for Unity"blender-exportFinal step
"Set up a scene / production-quality result"blender-pro-workflowFirst — guides everything
"I'm new / not sure where to start"blender-pro-workflowFirst
"This is sub-par / still wrong / same issue again"quality-refinement-autoloop, then blender-skill-harmonizerFirst — learn, sanitize, patch, then retry
"Match these templates / wireframes / textures exactly"blender-skill-harmonizer, then reference-specific fit skillsFirst — establish source-of-truth gates

Multi-intent example: "Model a sword with materials, light it dramatically, and export as glTF" →

  1. blender-pro-workflow (sequencing strategy)

More from roble3

Use this skill in a project

Open any RiverX project, search the Skills panel for roble3/cc-blender-skill/text-to-blender, and install it in one click.

Use this skill