laurentvv/agents-kit/blender-core
Claude Code and agent skill by laurentvv/agents-kit
- community
- ext:[{"type":"plugin","description":"Custom plugin integration"}]
Checking that the SKILL.md file is still in the repository.
Foundation for any Blender 5.2+ task an agent drives - running bpy via MCP (live) or headless CLI, context overrides, locale-safe node lookup, enum discovery, 5.x API changes, verification. Use first for any Blender, bpy, .blend or 3D-asset request; routes to the specialized blender-* skills.
Install
npx vskill@latest install laurentvv/agents-kit/blender-coreSemi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard
SKILL.md
The same SKILL.md was published earlier as el4cteo/blender-skills/blender-core.
Blender Core (5.2 LTS+)
Route to the specialized skill
| Task | Skill | |
|---|---|---|
| Units, collections, naming, linking, asset libraries | blender-scene-setup | |
| Hard-surface modeling, bevels, booleans, normals | blender-hardsurface-modeling | |
| Sculpting, multires, remesh | blender-sculpting | |
| Retopology, UV unwrap, texel density | blender-retopology-uv | |
| PBR materials, color spaces, texture sets | blender-pbr-materials | |
| Wear, grime, dust, decals, trim sheets, texture painting | blender-texturing | |
| Baking high→low maps (normal, AO, curvature, ...) | blender-texture-baking | |
| Geometry Nodes, procedural modeling | blender-geometry-nodes | |
| Body rigging, Rigify, weight painting | blender-character-rigging | |
| Face rig, shape keys, ARKit, visemes | blender-facial-shapekeys | |
| Keyframes, actions, NLA, mocap retarget, loops, root motion | blender-animation | |
| Garments, layered clothing, body poke-through | blender-clothing | |
| Hair, fur, grooming, hair cards | blender-hair-grooming | |
| Poly budgets, LODs, draw calls, cleanup | blender-game-optimization | |
| Export: glTF/FBX/USD to Roblox, Unity, Unreal, Godot, web | blender-export-pipelines | |
| Cycles/EEVEE settings, compositor, batch render | blender-rendering | |
| Lighting, HDRI, camera, turntable | blender-lighting-lookdev | |
| Toon/cel/anime shading, outlines, Line Art, Grease Pencil | blender-stylized-npr | |
| Terrain, biome scatter, modular kits | blender-environment-kits | |
| Video editing (VSE), motion tracking, camera solve | blender-video-editing | |
| Time of day, night, sunset, fog, mood (cyberpunk, horror...) | blender-time-of-day | |
| Rain, snow, wet surfaces, puddles, lightning, dust/embers | blender-weather-fx | |
| Cloth, rigid body, fluids, hair, GN physics | blender-simulation | |
| Writing add-ons / extensions | blender-addon-development | |
| Batch/headless pipelines, file conversion | blender-pipeline-automation | |
| Checking a mesh/asset before delivery (always) | blender-asset-qa | |
| End-to-end playbooks (prop, character, Roblox, product shot) | blender-workflow-recipes |
Execute
Live (blender-mcp `execute_blender_code`): work in small steps and print only what you need. To call a skill script, import it:
Each MCP call runs in a fresh namespace: re-import in every call. That's cheap because modules stay cached in sys.modules. reload only after editing a script. Headless (any agent with a shell): this prints only the script's JSON (@@JSON@@ lines):
Raw form: blender -b in.blend --factory-startup --python-exit-code 1 -P x.py -- args. Every script here exposes run(**kw) -> dict and the same flags after --. First call in a session: scripts/env_report.py, which returns the version, engines, GPU, add-ons, units, color management and scene counts.
Rules
- Data API over operators: use
bpy.data,bmesh,mesh.attributes, andforeach_get/setwith numpy. Operators depend on context and selection, and many need a 3D View, which background mode doesn't have. - If an operator is unavoidable:
with bpy.context.temp_override(object=ob, active_object=ob, selected_objects=[ob], selected_editable_objects=[ob]): bpy.ops.... Check that the result is{'FINISHED'}. - Edit mode isolation:
ob.dataisn't updated while in Edit Mode. Usebmesh.from_edit_mesh+bmesh.update_edit_mesh, or switch to OBJECT mode before reading. - Nodes: find them by
type(n.type == "BSDF_PRINCIPLED"), never byname, because names are localized. Sockets by English name oridentifierare fine. - Enums: read the valid values with
[i.identifier for i in T.bl_rna.properties[p].enum_items]. Dynamic enums (render.engine,view_transform,look) under-report, so assign them insidetry/except TypeError(the message lists the valid values). - Engines:
BLENDER_EEVEE,CYCLES,BLENDER_WORKBENCH. Cycles device:scene.cycles.device = "GPU"+ preferencescompute_device_type. - Evaluated data: use
ob.evaluated_get(depsgraph), then.to_mesh(), then always.to_mesh_clear(). Callview_layer.update()before readingmatrix_worldafter a change. - Freed data: applying or removing a modifier, or removing an object or ID, frees it. Collect names first (
[m.name for m in ob.modifiers]) and never touch the old Python reference afterward, because it returns garbage or crashes. - Never trust default names ("Cube.001"). Keep object references, rename explicitly, and look objects up via
bpy.data.objects[name]. - Scale: 1 unit = 1 m. Apply rotation/scale (
transform_apply) before bevels, modifiers with distances, rigging, physics, baking and export. - Paths:
bpy.path.abspath("//textures/x.png")resolves relative to the .blend. Save explicitly; usesave_as_mainfile(filepath=..., copy=True)for backups. - Live sessions are the user's work: never
read_factory_settings, never delete data you didn't create, and save a backup copy before destructive batch edits. - GPU module in background: call
gpu.init()first (5.2+).bglno longer exists. - Big meshes: no per-vertex
bpy.ops. Use numpyforeach_get(see references/bpy-patterns.md).
5.x API changes that break old tutorials/LLM memory
action.fcurves → channelbags · scene.node_tree → scene.compositing_node_group · material.use_nodes is deprecated (new materials already have nodes) · mod["Socket_2"] → mod.properties.inputs.Socket_2.value (5.2) · BLENDER_EEVEE_NEXT → BLENDER_EEVEE · Boolean FAST → FLOAT · bone layers → bone collections · bl_info add-ons → extensions (blender_manifest.toml) · bpy.props values are no longer dict-accessible (scene["cycles"]). Full table: references/api-changes-5x.md.
Verify (required before saying "done")
- Numbers, not adjectives: report tris, objects, materials, dimensions (
ob.dimensions) and the output files written. - Geometry changed → run
blender-asset-qaqa_check.py(z-fighting, detached parts, non-manifold, flipped normals, scale). - Look at it: MCP
look(mode="angles", shadingmaterial/wireframe). Headless:blender-asset-qa/scripts/review_shots.pyrenders contact sheets. - Re-read your own output: confirm that exported files exist and that their size is non-zero.
References
- references/api-changes-5x.md: 4.x→5.2 migration table. Load it when code fails with AttributeError/KeyError.
- references/bpy-patterns.md: verified snippets for bmesh, attributes, numpy, temp_override, depsgraph, drivers, append/link, handlers and timers.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/blender-core/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Extension points
pluginCustom plugin integration
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/laurentvv/agents-kit/blender-core)