You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit c801f77
Browse filesBrowse the repository at this point in the historyBrowse files
fix: correctness pass on Blender skills, snippets, and docs (#3)
Code bugs the AI serves to users:
- operators: import Vector from mathutils (not bpy.types) in the offset
example and column-normalize the basis so object scale no longer distorts
the local-axis direction.
- cross-version-property-delete: property_unset resets RNA props to default,
it does not remove a custom ID property. Use del on all versions and drop
the bogus version branch; note the property_unset distinction.
- version-branch-skeleton: ID-property deletion is not version-dependent;
clear_property now uses del unconditionally. EEVEE engine id stays as the
genuine divergence example.
- custom-properties: stop crediting property_unset for unbinding a type
PointerProperty or removing an ID property; both are del on all versions.
- shader-node-group: modernize ShaderNodeMixRGB to ShaderNodeMix with
data_type='RGBA', wiring RGBA sockets by index to avoid the node's
duplicate socket names.
Doc drift:
- README: drop the static version-0.2.0 shields badge that drifts every
release; the dynamic github/v/release badge already covers it.
- ROADMAP: v0.2.0 row -> Shipped, drop the per-row Current marker so the
action-owned Current: prose line is the single source of truth.
- SECURITY: Supported Versions -> 0.2.x; scope text -> two templates.
- CONTRIBUTING: snippet length 5 to 50 (was 5 to 30); standards-version
wording points at meta-repo STANDARDS_VERSION, not VERSION.
- CLAUDE: relabel the 7 materials/drivers/migration snippets v0.2.1 -> v0.2.0
to match ROADMAP/CHANGELOG/README.
Signed-off-by: fOuttaMyPaint <TMhospitalitystrategies@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
1. Add a `.py` file under `snippets/`, e.g. `snippets/depsgraph-evaluated-mesh.py`.
81
-
2. Keep it 5 to 30 lines, fully working code, with a header comment naming the snippet and citing the relevant Blender doc URL or research section.
81
+
2. Keep it 5 to 50 lines, fully working code, with a header comment naming the snippet and citing the relevant Blender doc URL or research section.
82
82
3. Snippets are validated for Python syntax in CI.
83
83
84
84
## Adding a Template
@@ -101,10 +101,10 @@ else:
101
101
102
102
## Standards-version Markers
103
103
104
-
Files that participate in ecosystem drift checking must carry a `standards-version` marker matching the current meta-repo `VERSION`:
104
+
Files that participate in ecosystem drift checking must carry a `standards-version` marker matching the current meta-repo `STANDARDS_VERSION` (which is decoupled from this repo's `VERSION`):
105
105
106
-
-`AGENTS.md`, `CLAUDE.md`, `ROADMAP.md`: HTML comment first line, e.g. `<!-- standards-version: 1.9.1 -->`.
107
-
-`skills/*/SKILL.md`, `rules/*.mdc`: YAML frontmatter field `standards-version: 1.9.1`.
106
+
-`AGENTS.md`, `CLAUDE.md`, `ROADMAP.md`: HTML comment first line, e.g. `<!-- standards-version: <STANDARDS_VERSION> -->`.
107
+
-`skills/*/SKILL.md`, `rules/*.mdc`: YAML frontmatter field `standards-version: <STANDARDS_VERSION>`.
108
108
109
109
The drift-check workflow enforces these on every push and PR.
Copy file name to clipboardExpand all lines: SECURITY.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,7 +15,7 @@ Please include:
15
15
16
16
## Scope
17
17
18
-
This repository ships Markdown skill files, MDC rule files, Python snippets, and one Blender extension add-on template. The primary security concerns are:
18
+
This repository ships Markdown skill files, MDC rule files, Python snippets, and two starter templates (a Blender extension add-on and a headless batch script). The primary security concerns are:
19
19
20
20
-**Snippets or templates demonstrating insecure patterns** (executing arbitrary code from `.blend` files, loading remote scripts without validation, leaking filesystem paths into logs).
21
21
-**The extension-addon template declaring over-broad permissions** in `blender_manifest.toml` (e.g. `network`, `files`, `clipboard`, `camera`) without a documented justification.
@@ -28,8 +28,8 @@ Issues with the Blender Python API itself (`bpy`, `bmesh`, `bpy_extras`) belong
Copy file name to clipboardExpand all lines: skills/custom-properties/SKILL.md
+8-3Lines changed: 8 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -133,11 +133,11 @@ The order matters. The bound `PointerProperty` references the `PropertyGroup` cl
133
133
134
134
```python
135
135
defunregister():
136
-
del bpy.types.Scene.my_addon# or property_unset() on 5.0+
136
+
del bpy.types.Scene.my_addon
137
137
bpy.utils.unregister_class(MY_ADDON_PG_settings)
138
138
```
139
139
140
-
See the snippet `cross-version-property-delete.py` for the 5.0+ `property_unset` shape and the 4.5 LTS `del` shape.
140
+
Unbinding a type-level property is `del bpy.types.Scene.my_addon` on all Blender versions. See the snippet `cross-version-property-delete.py` for removing a custom ID property (also `del`, version-stable).
141
141
142
142
## CollectionProperty (lists)
143
143
@@ -231,7 +231,12 @@ This is a frequent AI mistake when generating quick scripts. Always wrap state i
231
231
232
232
## Compatibility paths (4.5 LTS vs 5.0+)
233
233
234
-
In Blender 5.0+, `bpy.types.Scene.my_addon.property_unset(...)` is the preferred unbind for individual props. In 4.5 LTS, `del bpy.types.Scene.my_addon` is still required for `PointerProperty` bindings. The snippet `cross-version-property-delete.py` shows both.
234
+
Two distinct operations, both version-stable via `del`:
235
+
236
+
-**Unbind a type-level property** (e.g. a `PointerProperty` bound to `bpy.types.Scene`): `del bpy.types.Scene.my_addon`. Same on 4.5 LTS and 5.0+.
237
+
-**Remove a custom ID property** (the dict-style `obj["key"]`): `del obj["key"]`. Same on 4.5 LTS and 5.0+. The snippet `cross-version-property-delete.py` shows this.
238
+
239
+
Do not reach for `property_unset()` here. It resets a registered RNA property to its default, which is neither unbinding a type property nor removing an ID property.
0 commit comments