blender-syntax-properties

Enforce correct bpy.props declaration syntax and callback safety for Blender objects.

30|4|Updated Mar 5, 2026
One-click install
npx skills add https://github.com/Impertio-Studio/Blender-Bonsai-ifcOpenshell-Sverchok-Claude-Skill-Package --skill blender-syntax-properties-impertio-studio
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: blender-syntax-properties
Source: https://github.com/Impertio-Studio/Blender-Bonsai-ifcOpenshell-Sverchok-Claude-Skill-Package/tree/main/skills/blender/syntax/blender-syntax-properties
Command: npx skills add https://github.com/Impertio-Studio/Blender-Bonsai-ifcOpenshell-Sverchok-Claude-Skill-Package --skill blender-syntax-properties-impertio-studio

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This Skill prevents subtle Blender Python mistakes when defining custom object properties, such as UI not updating, stale or crashing dynamic enums, and broken behavior across Blender versions.

Core Features & Use Cases

  • Correct bpy.props property declarations: Covers BoolProperty, IntProperty, FloatProperty, EnumProperty, PointerProperty, CollectionProperty, plus vector variants and common subtypes/units.
  • Production-safe EnumProperty patterns: Handles static and dynamic enum items, including module-level caching to avoid garbage-collection issues.
  • Version-aware property behavior: Addresses key Blender 4.1/5.0 changes (enum UI for ID properties, RNA vs ID storage split, and get_transform/set_transform + property_unset).
  • Safety guardrails for callbacks: Enforces best practices for update callbacks (avoid recursion, avoid bpy.ops, don’t modify the triggering property) and correct getter/setter contracts for properties and enums.

Quick Start

Use the blender-syntax-properties Skill to generate a Blender 3.x/4.x/5.x PropertyGroup with correctly declared properties and safe update/get/set/dynamic-enum patterns.

Frequently Asked Questions about blender-syntax-properties

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
Why does my Blender dynamic EnumProperty crash or show stale UI items?

Dynamic EnumProperty crashes occur when generated item lists are garbage-collected or cached incorrectly. You must use module-level caching for enum items and implement strict getter/setter contracts to maintain stable UI behavior.

How do I correctly declare a PropertyGroup with bpy.props in Blender 4.1 and 5.0?

To correctly declare a PropertyGroup in Blender 4.1 and 5.0, you must handle RNA vs ID storage splits, adapt to enum UI changes for ID properties, and utilize get_transform/set_transform with property_unset for safe registration.

What are the safety rules for bpy.props update callbacks to prevent recursion?

Update callbacks must avoid recursion, prohibit bpy.ops calls, and never modify the triggering property itself. Following these callback guardrails ensures stable property updates without crashing Blender.

How do I attach PointerProperty and CollectionProperty data with correct registration order?

Attaching PointerProperty and CollectionProperty data requires enforcing a strict registration order. This prevents Blender Python failures by ensuring base classes are registered before dependent PropertyGroup attachments.

Does this approach to adding bpy.props work across Blender 3.x, 4.x, and 5.x API versions?

Yes, this approach works across Blender 3.x, 4.x, and 5.x by enforcing correct declaration syntax and handling API differences like RNA storage changes. It ensures your custom properties remain stable throughout version updates.

What is the best way to prevent Blender Python failures when adding custom object properties?

The best way to prevent Blender Python failures when adding custom object properties is enforcing correct declaration syntax and callback safety. This applies correct PropertyGroup settings, stable EnumProperty lists, and strict getter/setter contracts.