Updated 1w ago
by TMHSDigital
Blender-Developer-Tools
Correct bpy for AI agents: Blender Python skills, rules and smoke-tested examples for Blender 5.2 LTS and 4.5 LTS, installable as a Claude Code and Cursor plugin.
20 GitHub stars (20)
+3 in 30 days
| Period | New stars |
|---|---|
| Oct 5 | 0 |
| Oct 6 | 0 |
| Oct 7 | +1 |
| Oct 8 | 0 |
| Oct 9 | 0 |
| Oct 10 | 0 |
| Oct 11 | 0 |
| Oct 12 | 0 |
| Oct 13 | 0 |
| Oct 14 | 0 |
| Oct 15 | 0 |
| Oct 16 | 0 |
| Oct 17 | 0 |
| Oct 18 | 0 |
| Oct 19 | 0 |
| Oct 20 | 0 |
| Oct 21 | 0 |
| Oct 22 | 0 |
| Oct 23 | 0 |
| Oct 24 | 0 |
| Oct 25 | 0 |
| Oct 26 | 0 |
| Oct 27 | 0 |
| Oct 28 | 0 |
| Oct 29 | 0 |
| Oct 30 | 0 |
| Oct 31 | +1 |
| Nov 1 | 0 |
| Nov 2 | 0 |
| Nov 3 | +1 |
| Nov 4 | 0 |
| Nov 5 | 0 |
| Nov 6 | 0 |
| Nov 7 | 0 |
| Nov 8 | 0 |
| Nov 9 | 0 |
| Nov 10 | 0 |
| Nov 11 | +1 |
- 28 skills (28 skills found in its SKILL.md files)
- 5 forks (5 forks)
- 1w ago last update (Last updated 1w ago)
Install
Skills CLI
npx skills add TMHSDigital/Blender-Developer-Tools
Asks which skills and agents to install. Just one: npx skills add TMHSDigital/Blender-Developer-Tools --skill addon-scaffolding — add -g for every project.
Claude Code
git clone https://github.com/TMHSDigital/Blender-Developer-Toolscp -r "Blender-Developer-Tools/skills/addon-scaffolding" ~/.claude/skills/
Copies the addon-scaffolding skill into ~/.claude/skills/ for every project (use .claude/skills/ for one project). Repeat for the other skills listed below.
Plugin
/plugin marketplace add TMHSDigital/Blender-Developer-Tools
Run inside Claude Code if the repository ships a plugin marketplace, then pick plugins from /plugin.
Skills can run code on your machine — read the SKILL.md first.
What it does
In the author's own words, from each skill's SKILL.md.
-
addon-scaffolding
Scaffold a Blender add-on as an Extensions Platform package: blender_manifest.toml, modular file layout, register_classes_factory, symmetric register/unregister. Use when the user starts a new add-on or extension, writes or fixes blender_manifest.toml, asks which layout or registration pattern to use on Blender 4.5 LTS or 5.x, or has classes that fail to register or unregister cleanly. Targets 5.…
skills/addon-scaffolding/ on GitHub (opens in a new tab)SKILL.md -
ai-mesh-cleanup
Ordered cleanup for an imported generated or scanned mesh before it goes to an engine: scene units, apply rotation and scale, origin to base, recalculate normals, evaluated triangle count, decimate to a budget, convex collider. Use when the user has a GLB, glTF or FBX that is not engine-ready, mentions unit scale, unapplied transforms, triangle budget, LODs or a collision hull, or is about to run…
skills/ai-mesh-cleanup/ on GitHub (opens in a new tab)SKILL.md -
bake-high-to-low
Cage-bake high-poly surface detail onto a low-poly target as a tangent-space normal map with bpy.ops.object.bake (Cycles, selected-to-active, active Image Texture node, UV layer, save_render). Use when the user wants a normal map from a dense mesh onto a game-resolution or decimated LOD, mentions cage_extrusion or use_selected_to_active, or gets a bake that returns CANCELLED, comes out black or f…
skills/bake-high-to-low/ on GitHub (opens in a new tab)SKILL.md -
bl-info-migration
Migrate a legacy bl_info add-on to the Extensions Platform in three steps, with a before/after diff and the dual-format pattern. Use when the user has a bl_info dictionary in __init__.py, asks whether bl_info is deprecated or still supported, wants to publish to extensions.blender.org or ship an extension .zip, or sees warnings about legacy add-ons at install time. Targets 5.2 LTS; manifests work…
skills/bl-info-migration/ on GitHub (opens in a new tab)SKILL.md -
compositor-nodes
Build and render through the scene compositor from Python across the 4.5 LTS to 5.x split: scene.use_nodes plus scene.node_tree and a Composite node on 4.5, a CompositorNodeTree node group assigned to scene.compositing_node_group with interface sockets and a Group Output on 5.x, a Render Layers to Glare (Fog Glow) chain, the Glare node's move from enum properties to menu input sockets, and render…
skills/compositor-nodes/ on GitHub (opens in a new tab)SKILL.md -
constraints-and-parenting
Parent objects without moving them, aim them with constraints, and author empties as engine attach sockets, all on the data API: child.parent plus matrix_parent_inverse = parent.matrix_world.inverted(), stale matrix_world until view_layer.update(), Object.constraints.new('DAMPED_TRACK') read back through the evaluated depsgraph, right-handed socket bases, and the transform_apply-on-an-Empty-root…
skills/constraints-and-parenting/ on GitHub (opens in a new tab)SKILL.md -
curves-and-text
Build legacy Curve and TextCurve datablocks from Python: bpy.data.curves.new(type='CURVE' or 'FONT'), splines.new('BEZIER'), bezier_points.add, handle types, bevel_depth, bevel_resolution, resolution_u, use_fill_caps, extrude, TextCurve.body, align_x/align_y, the built-in Bfont, and reading the tessellated result through evaluated_get(...).to_mesh() / to_mesh_clear(). Use when the user scripts be…
skills/curves-and-text/ on GitHub (opens in a new tab)SKILL.md -
custom-properties
Define and bind custom properties with bpy.props annotations, PropertyGroup and PointerProperty, and choose where to store them (Scene, Object, WindowManager, AddonPreferences). Use when the user attaches settings or data to datablocks so it survives save and load, is unsure where add-on settings belong, or writes a property as an assignment instead of an annotation and gets a deprecation warning…
skills/custom-properties/ on GitHub (opens in a new tab)SKILL.md -
depsgraph-and-evaluated-data
Read the evaluated geometry the user actually sees through the dependency graph instead of raw obj.data: evaluated_depsgraph_get, evaluated_get, to_mesh and to_mesh_clear lifetimes. Use when the user writes an exporter, measurement or inspection script, reports that modifiers, shape keys, armatures or geometry nodes are missing from exported or measured geometry, or reads obj.data.vertices and ge…
skills/depsgraph-and-evaluated-data/ on GitHub (opens in a new tab)SKILL.md -
drivers-and-app-handlers
Drive properties from expressions with the Driver API (driver_add, driver_namespace for custom Python functions) and react to events with bpy.app.handlers (load_post, save_pre, frame_change_post, depsgraph_update_post, exit_pre in 5.1+). Use when the user wants one property to follow another, runs code on load, save, frame change or exit, or has a driver failing with NameError or the Python secur…
skills/drivers-and-app-handlers/ on GitHub (opens in a new tab)SKILL.md -
engine-export-presets
Export presets for Unity, Godot and Unreal. glTF is +Y up and meters by spec, so every engine gets export_yup=True with no scale bake (Unreal converts to centimeters on import); FBX takes axis_forward/axis_up plus global_scale. Use when the user exports for a game engine, mentions export_yup, axis_forward, axis_up, global_scale, Y-up or centimeters, passes FBX axis kwargs to export_scene.gltf, or…
skills/engine-export-presets/ on GitHub (opens in a new tab)SKILL.md -
extension-runtime-and-packaging
Ship and run a Blender extension after its first install: bundled wheels, user data that survives upgrades via bpy.utils.extension_path_user, the network permission and bpy.app.online_access, bl_ext package names, and blender --command extension validate/build/server-generate in CI. Use when the user bundles third-party Python packages, pip-installs into Blender's Python, writes files next to __f…
skills/extension-runtime-and-packaging/ on GitHub (opens in a new tab)SKILL.md -
geometry-nodes-python
Build Geometry Nodes trees from Python: node_groups.new, tree.interface sockets, nodes by RNA identifier, links, Repeat and for-each zones, Bundles, and applying the tree as a NODES modifier including the 5.1 vs 5.2 modifier input API. Use when the user generates a GeometryNodeTree in a script, sets modifier inputs from Python, or hits 'Node type ... undefined' or socket identifier errors. Target…
skills/geometry-nodes-python/ on GitHub (opens in a new tab)SKILL.md -
gpu-drawing-and-overlays
Draw viewport overlays and offscreen images with the gpu module instead of the removed bgl: SpaceView3D.draw_handler_add/remove symmetry, gpu.shader.from_builtin names, gpu_extras.batch.batch_for_shader, gpu.state for blending, depth and line width (POLYLINE shaders), blf text, tag_redraw, and GPUOffScreen with gpu.init() for --background on 5.2. Use when the user wants a viewport overlay, measur…
skills/gpu-drawing-and-overlays/ on GitHub (opens in a new tab)SKILL.md -
grease-pencil-v3
Create and inspect Grease Pencil v3 (GPv3) data from Python: the datablock address split (bpy.data.grease_pencils_v3 on 4.5 LTS, bpy.data.grease_pencils on 5.x), layers.new -> frames.new(n).drawing -> add_strokes([counts]) -> per-point position/radius/opacity/vertex_color, lazily materialized drawing.attributes, and the Line Art modifier (source_type/source_object, edge-type flags, depsgraph-eval…
skills/grease-pencil-v3/ on GitHub (opens in a new tab)SKILL.md -
headless-batch-scripting
Run Blender unattended with blender --background --python, arguments after the -- separator, --factory-startup and --python-exit-code, and temp_override for operators that need context. Use when the user renders, exports or processes .blend files from a CLI, CI job or batch script, passes arguments to a Blender script, or hits 'poll() failed, context is incorrect' or a job that exits 0 despite a…
skills/headless-batch-scripting/ on GitHub (opens in a new tab)SKILL.md -
images-and-pixels
Create and edit bpy.types.Image pixel buffers from Python: bpy.data.images.new, Image.pixels bulk access with foreach_get/foreach_set, the flat always-RGBA bottom-left-origin layout, byte vs float_buffer storage, colorspace_settings, and saving PNG vs OpenEXR with alpha through Image.save (filepath_raw, file_format) vs Image.save_render (scene render.image_settings). Use when the user writes or r…
skills/images-and-pixels/ on GitHub (opens in a new tab)SKILL.md -
mesh-editing-and-bmesh
Create, edit and read meshes efficiently: when to use bpy.data, bpy.ops or bmesh, the bmesh.new / try / finally / free pattern, foreach_get and foreach_set for bulk data, and evaluated meshes for modifier results. Use when the user writes mesh-generating or mesh-editing Python, mentions bmesh, from_pydata, foreach_set or mesh.vertices, has a slow script looping over bpy.ops.mesh or per-vertex ass…
skills/mesh-editing-and-bmesh/ on GitHub (opens in a new tab)SKILL.md -
operators
Author bpy.types.Operator classes: bl_idname naming, poll / invoke / execute / modal lifecycle, bl_options (REGISTER, UNDO, INTERNAL, BLOCKING), operator properties and defensive context handling. Use when the user creates an operator for a button, menu, keymap or script, asks why its properties are missing from the Adjust Last Operation (redo) panel or why Ctrl-Z ignores it, or gets poll failure…
skills/operators/ on GitHub (opens in a new tab)SKILL.md -
porting-to-blender-5
Port an add-on or script from Blender 3.x/4.x to 5.x (5.2 LTS) while keeping 4.5 LTS working: a triage recipe that runs the code headless on the target version and maps each traceback to its fix, and one table of every break the pack covers (bgl, action.fcurves, use_auto_smooth, Principled sockets, sequences, context dicts, ID properties, compositor node_tree, Grease Pencil, NodesModifier inputs,…
skills/porting-to-blender-5/ on GitHub (opens in a new tab)SKILL.md -
procedural-materials-and-shaders
Build materials and shader node graphs from Python: bpy.data.materials, node_tree, Principled BSDF and its 4.0+ socket names, default values, links and shader node groups, for EEVEE and Cycles. Use when the user creates or edits materials in a script, generates many material variations, hits a KeyError on a Principled BSDF input such as Specular or Emission, restricts a light to some objects with…
skills/procedural-materials-and-shaders/ on GitHub (opens in a new tab)SKILL.md -
slotted-actions-animation
Create and edit animation from Python under Slotted Actions (Blender 4.4+): Action, slots, layers, strips, channelbags. Bind the action slot, then reach F-curves through a channelbag; action_ensure_channelbag_for_slot exists only on 5.0+, so use strip.channelbag(slot, ensure=True) on 4.5 LTS. Use when the user inserts keyframes or builds F-curves in a script, hits AttributeError on action.fcurves…
skills/slotted-actions-animation/ on GitHub (opens in a new tab)SKILL.md -
timers-modal-and-threading
Run long or repeated work in a Blender add-on without freezing or crashing it: bpy.app.timers return values and persistent=True, modal operators driven by event_timer_add, and worker threads that hand results to the main thread through a queue. Use when the user polls, animates or downloads from an add-on, calls bpy from a thread, writes a modal operator, sees a timer never fire in --background,…
skills/timers-modal-and-threading/ on GitHub (opens in a new tab)SKILL.md -
ui-panels
Author bpy.types.Panel UI: bl_space_type, bl_region_type, bl_category sidebar tabs, declarative draw(), layout row, column and split, sub-panels, and conditional UI with enabled and active. Use when the user adds an N-panel tab or properties-editor panel, exposes add-on properties or operator buttons, or has a panel that does not appear, shows the wrong labels or warns about a missing _PT_ in its…
skills/ui-panels/ on GitHub (opens in a new tab)SKILL.md -
uv-and-mesh-attributes
Author per-loop and per-vertex mesh data from Python: UV layers (mesh.uv_layers.new, bmesh loops.layers.uv, the calc_uvs=True silent no-op), a second lightmap UV channel and its active / active_render flags, loop tangents (calc_tangents, bitangent_sign), color attributes and their CORNER vs POINT domain, shape keys (shape_key_add, key_blocks data), and vertex-group weights capped at four influenc…
skills/uv-and-mesh-attributes/ on GitHub (opens in a new tab)SKILL.md -
vse-python
Build and inspect Video Sequence Editor timelines from Python: SequenceEditor.strips vs the removed .sequences, new_effect length vs frame_end, strip transforms, and the 5.2 COLOR strip width/height bake from scene resolution. Use when the user scripts the sequencer, hits AttributeError on sequence_editor.sequences in 5.x or a TypeError on new_effect keyword arguments, or renders COLOR strips tha…
skills/vse-python/ on GitHub (opens in a new tab)SKILL.md -
blender-rules
Blender Python anti-pattern rules (bmesh leaks, bpy.ops in loops, deprecated context-copy overrides, bulk mesh writes, prop annotations and context guards, Extensions manifest, import scale, export modifiers, glTF/FBX axis RNA, the removed bgl module, the normals API removed in 4.1). Use when writing, reviewing or fixing any bpy / Blender add-on or script code.
claude/skills/ on GitHub (opens in a new tab)blender-rules/ SKILL.md -
live-blender-session
Work against the user's running Blender through the Blender Lab MCP server (the blender tools): read the scene with the summary, screenshot and docs tools before touching anything, save before any execute_blender_code call that mutates, prototype live, then hand back a script proven with blender --background. Use when the user has Blender open and asks about or wants changes to their current scen…
live-session/skills/ on GitHub (opens in a new tab)live-blender-session/ SKILL.md
No skill matches that filter.
Review before you install
A skill is a set of instructions and scripts your agent will follow, and it can run code on your machine. Read the SKILL.md and any scripts first — this listing is not a security review.