|
18 | 18 | </p> |
19 | 19 |
|
20 | 20 | <p align="center"> |
21 | | - <strong>13 skills</strong> • <strong>6 rules</strong> • <strong>2 templates</strong> • <strong>17 snippets</strong> • <strong>53 examples</strong> |
| 21 | + <strong>14 skills</strong> • <strong>8 rules</strong> • <strong>2 templates</strong> • <strong>21 snippets</strong> • <strong>53 examples</strong> |
22 | 22 | </p> |
23 | 23 |
|
24 | 24 | <p align="center"> |
|
36 | 36 |
|
37 | 37 | ## Overview |
38 | 38 |
|
39 | | -This repository ships **13 skills, 6 rules, 2 templates, 17 snippets, and 48 runnable examples** for Blender Python development targeting Blender 5.2 LTS (current stable) with Blender 4.5 LTS fallback support. Blender 5.1 is prior stable. |
| 39 | +This repository ships **14 skills, 8 rules, 2 templates, 21 snippets, and 53 examples** for Blender Python development targeting Blender 5.2 LTS (current stable) with Blender 4.5 LTS fallback support. Blender 5.1 is prior stable. |
40 | 40 |
|
41 | 41 | The content is consumed by AI coding agents (Cursor, Claude Code, any MCP-capable client) when working on Blender add-ons, geometry nodes scripts, batch pipelines, or animation tooling. There is no build step. Edit the markdown and Python files directly. |
42 | 42 |
|
43 | 43 | | Layer | Role | |
44 | 44 | | --- | --- | |
45 | | -| **Skills** | Guided workflows: scaffolding, operators, panels, properties, mesh and bmesh, headless batch, slotted actions, geometry nodes, procedural materials, depsgraph queries, drivers and handlers, `bl_info` migration, video sequencer | |
46 | | -| **Rules** | Guardrails for the most common AI mistakes: ops-in-loops, bmesh leaks, legacy `bl_info` only, prop assignments, deprecated context-copy override, per-element loops over bulk mesh data | |
| 45 | +| **Skills** | Guided workflows: scaffolding, operators, panels, properties, mesh and bmesh, headless batch, slotted actions, geometry nodes, procedural materials, depsgraph queries, drivers and handlers, `bl_info` migration, video sequencer, imported-mesh cleanup | |
| 46 | +| **Rules** | Guardrails for the most common AI mistakes: ops-in-loops, bmesh leaks, legacy `bl_info` only, prop assignments, deprecated context-copy override, per-element loops over bulk mesh data, import without scale check, export without evaluated geometry | |
47 | 47 | | **Templates** | A working Extensions Platform add-on starter and a headless batch script starter | |
48 | | -| **Snippets** | 17 small standalone Python files demonstrating canonical patterns | |
| 48 | +| **Snippets** | 21 small standalone Python files demonstrating canonical patterns | |
49 | 49 |
|
50 | 50 | ## Quick start |
51 | 51 |
|
@@ -1008,22 +1008,24 @@ the duplicates, then glTF ships 24 tris / 48 positions / 8 unique. |
1008 | 1008 | ## How content is organized |
1009 | 1009 |
|
1010 | 1010 | ``` |
1011 | | -skills/<name>/SKILL.md - 13 skill files, YAML frontmatter, one canonical pattern each |
1012 | | -rules/<name>.mdc - 6 rule files, anti-pattern + correction |
| 1011 | +skills/<name>/SKILL.md - 14 skill files, YAML frontmatter, one canonical pattern each |
| 1012 | +rules/<name>.mdc - 8 rule files, anti-pattern + correction |
1013 | 1013 | templates/<name>/ - 2 template directories (extension-addon-template, headless-batch-script-template) |
1014 | | -snippets/<name>.py - 17 standalone Python snippets, 5 to 50 lines each |
| 1014 | +snippets/<name>.py - 21 standalone Python snippets, 5 to 50 lines each |
1015 | 1015 | ``` |
1016 | 1016 |
|
1017 | 1017 | ## Using rules in Cursor |
1018 | 1018 |
|
1019 | | -The `.mdc` files in `rules/` apply automatically when Cursor opens a Blender Python project, scoped by the `globs` in each rule's frontmatter. The six rules are: |
| 1019 | +The `.mdc` files in `rules/` apply automatically when Cursor opens a Blender Python project, scoped by the `globs` in each rule's frontmatter. The eight rules are: |
1020 | 1020 |
|
1021 | 1021 | - `prefer-data-over-ops-in-loops`: flags `bpy.ops.*` calls inside object iteration |
1022 | 1022 | - `always-free-bmesh`: flags `bmesh.new()` without paired `bm.free()` in `try`/`finally` |
1023 | 1023 | - `target-extensions-platform-format`: flags add-ons missing `blender_manifest.toml` |
1024 | 1024 | - `type-annotate-props-and-defend-context`: flags `bpy.props` assignment form and unguarded `context.active_object` |
1025 | 1025 | - `prefer-temp-override-over-context-copy`: flags `bpy.context.copy()` passed to operators (deprecated 4.x, removed 5.x) |
1026 | 1026 | - `use-foreach-set-for-bulk-data`: flags Python loops over `mesh.vertices` setting `co`, normals, or other per-element bulk data |
| 1027 | +- `validate-imported-mesh-scale`: flags glTF/FBX import then mesh work with no `transform_apply` and no unit-scale check |
| 1028 | +- `no-unapplied-modifiers-on-export`: flags export of objects with live modifiers when the export does not request evaluated geometry |
1027 | 1029 |
|
1028 | 1030 | Symlink or clone this repo, then point Cursor at it as a skills/rules source. |
1029 | 1031 |
|
|
0 commit comments