Why it matters
#327 gated use_nodes = True on < (5, 0, 0) in the skill and snippets, because it is deprecated on 5.x and scheduled for removal in 6.0. The examples and showcase still teach it ungated, about 520 times, including the anatomy every new example copies. Agents read examples as ground truth, and when 6.0 removes the property, every one of these scripts raises.
Evidence
- About 520 ungated assignments in 133 files: 199 lines in 57 example scripts and 321 lines across all 76 showcase pieces.
- This includes
examples/bmesh-gear/bmesh_gear.py:122,247,437, the reference anatomy in CLAUDE.md.
- The skill (
skills/procedural-materials-and-shaders/SKILL.md:30,154) and both snippets gate it.
- Live on Blender 5.2.1 LTS:
Material.use_nodes and World.use_nodes both report is_deprecated=True.
- Setting either emits
'Material.use_nodes' is expected to be removed in Blender 6.0.
materials.new().node_tree already exists without setting it.
Suggested approach
Codemod every assignment to if bpy.app.version < (5, 0, 0): mat.use_nodes = True, or to a shared one-liner in each helper block (keep check_helper_drift.py happy). Add a rule to tests/check_example_rules.py that rejects an ungated .use_nodes = True in examples, showcase and templates. Consider a matching .mdc rule so user code gets the same advice.
Done when
A repo scan finds 0 ungated assignments, the lint enforces it, and smoke stays green on 5.2 and 4.5.
Why it matters
#327 gated
use_nodes = Trueon< (5, 0, 0)in the skill and snippets, because it is deprecated on 5.x and scheduled for removal in 6.0. The examples and showcase still teach it ungated, about 520 times, including the anatomy every new example copies. Agents read examples as ground truth, and when 6.0 removes the property, every one of these scripts raises.Evidence
examples/bmesh-gear/bmesh_gear.py:122,247,437, the reference anatomy in CLAUDE.md.skills/procedural-materials-and-shaders/SKILL.md:30,154) and both snippets gate it.Material.use_nodesandWorld.use_nodesboth reportis_deprecated=True.'Material.use_nodes' is expected to be removed in Blender 6.0.materials.new().node_treealready exists without setting it.Suggested approach
Codemod every assignment to
if bpy.app.version < (5, 0, 0): mat.use_nodes = True, or to a shared one-liner in each helper block (keepcheck_helper_drift.pyhappy). Add a rule totests/check_example_rules.pythat rejects an ungated.use_nodes = Truein examples, showcase and templates. Consider a matching.mdcrule so user code gets the same advice.Done when
A repo scan finds 0 ungated assignments, the lint enforces it, and smoke stays green on 5.2 and 4.5.