Skip to content

Commit dcb7a77

Browse files
docs: update inventory counts for the cleanup track
README, CLAUDE.md, AGENTS.md, and plugin.json now list 14 skills, 8 rules, and 21 snippets so validate-counts and validate-manifest stay aligned. Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com> Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 49bf2db commit dcb7a77

4 files changed

Lines changed: 34 additions & 20 deletions

File tree

.cursor-plugin/plugin.json

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
],
1616
"skills": [
1717
"skills/addon-scaffolding/SKILL.md",
18+
"skills/ai-mesh-cleanup/SKILL.md",
1819
"skills/operators/SKILL.md",
1920
"skills/ui-panels/SKILL.md",
2021
"skills/custom-properties/SKILL.md",
@@ -34,19 +35,25 @@
3435
"rules/target-extensions-platform-format.mdc",
3536
"rules/type-annotate-props-and-defend-context.mdc",
3637
"rules/prefer-temp-override-over-context-copy.mdc",
37-
"rules/use-foreach-set-for-bulk-data.mdc"
38+
"rules/use-foreach-set-for-bulk-data.mdc",
39+
"rules/validate-imported-mesh-scale.mdc",
40+
"rules/no-unapplied-modifiers-on-export.mdc"
3841
],
3942
"snippets": [
4043
"snippets/action-ensure-channelbag-for-slot.py",
4144
"snippets/app-handler-registration.py",
4245
"snippets/bmesh-load-edit-free.py",
4346
"snippets/canonical-object-creation.py",
4447
"snippets/canonical-object-deletion.py",
48+
"snippets/convex_hull_collider.py",
4549
"snippets/cross-version-property-delete.py",
50+
"snippets/decimate_to_budget.py",
4651
"snippets/depsgraph-evaluated-mesh.py",
4752
"snippets/driver-with-custom-function.py",
4853
"snippets/foreach-get-vertices.py",
4954
"snippets/foreach-set-vertices.py",
55+
"snippets/gltf_draco_export.py",
56+
"snippets/lod_chain.py",
5057
"snippets/pointerproperty-binding.py",
5158
"snippets/principled-bsdf-material.py",
5259
"snippets/register-classes-factory.py",

AGENTS.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ a `.cursor-plugin/plugin.json` manifest so the ecosystem drift checker
2020
classifies it as a `cursor-plugin`. This is content the AI loads when the user
2121
asks Blender questions or works on Blender add-ons in Cursor or Claude Code.
2222

23-
The content base is 13 skills, 6 rules, 2 templates, 17 snippets, and 53
23+
The content base is 14 skills, 8 rules, 2 templates, 21 snippets, and 53
2424
examples (counts are CI-enforced against README.md and the manifest). The full
2525
inventory tables and per-item purposes live in `CLAUDE.md`. Example anatomy
2626
and authoring rules: copy `examples/bmesh-gear/`; the render look is specified
@@ -31,10 +31,10 @@ in `docs/VISUAL-STYLE.md`; the canonical run prompt is
3131

3232
```
3333
Blender-Developer-Tools/
34-
skills/<skill-name>/SKILL.md # 13 skill files
35-
rules/<rule-name>.mdc # 6 rule files
34+
skills/<skill-name>/SKILL.md # 14 skill files
35+
rules/<rule-name>.mdc # 8 rule files
3636
templates/<template-name>/ # 2 starter templates
37-
snippets/<snippet-name>.py # 17 standalone Python snippets
37+
snippets/<snippet-name>.py # 21 standalone Python snippets
3838
examples/<name>/ # 53 runnable smoke-gated examples (+ gallery.json)
3939
examples/gallery_framing.py # shared Layer 1 framing measurement (render path only)
4040
scripts/build_gallery.py # generates docs/gallery/ (stdlib only)

CLAUDE.md

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,23 @@ The **Blender Developer Tools** repository is at **v0.53.0**. It packages skills
1717
## Repository Architecture
1818

1919
```
20-
skills/<skill-name>/SKILL.md - AI workflow definitions, 13 total
21-
rules/<rule-name>.mdc - Anti-pattern rules, 6 total
20+
skills/<skill-name>/SKILL.md - AI workflow definitions, 14 total
21+
rules/<rule-name>.mdc - Anti-pattern rules, 8 total
2222
templates/<template-name>/ - Starter projects, 2 total
23-
snippets/<snippet-name>.py - Standalone code patterns, 17 total
23+
snippets/<snippet-name>.py - Standalone code patterns, 21 total
2424
examples/<name>/ - Runnable smoke-gated examples, 53 total (+ gallery.json)
2525
scripts/build_gallery.py - Regenerates docs/gallery/ from gallery.json (stdlib only)
2626
scripts/site/ - Vendored landing-page build (Jinja2)
2727
docs/gallery/ - Committed generated gallery pages + hero renders
2828
VERSION - Source of truth for the repo version
2929
```
3030

31-
## Skills (13)
31+
## Skills (14)
3232

3333
| Skill | Purpose |
3434
| --- | --- |
3535
| addon-scaffolding | Extensions Platform manifest, file layout, register/unregister symmetry |
36+
| ai-mesh-cleanup | Ordered cleanup for imported generated meshes: units, transform apply, origin, normals, budget, collider |
3637
| operators | `bpy.types.Operator` lifecycle, `bl_idname`, redo, defensive context handling |
3738
| ui-panels | `bpy.types.Panel` declarative `draw()`, layout primitives, conditional UI |
3839
| custom-properties | `bpy.props` annotations, PropertyGroup, PointerProperty, storage tradeoffs |
@@ -46,7 +47,7 @@ VERSION - Source of truth for the repo version
4647
| bl-info-migration | Three-step migration from legacy `bl_info` to Extensions Platform, dual-format pattern |
4748
| vse-python | VSE timeline from Python: `.strips` vs `.sequences`, `new_effect` kwargs, 5.2 COLOR `width`/`height` bake |
4849

49-
## Rules (6)
50+
## Rules (8)
5051

5152
| Rule | Scope | What it flags |
5253
| --- | --- | --- |
@@ -56,6 +57,8 @@ VERSION - Source of truth for the repo version
5657
| type-annotate-props-and-defend-context | `*.py` | `bpy.props` defined as assignments, unguarded `context.active_object` |
5758
| prefer-temp-override-over-context-copy | `*.py` | `bpy.context.copy()` passed to operators (deprecated 4.x, removed 5.x) |
5859
| use-foreach-set-for-bulk-data | `*.py` | Python loops over `mesh.vertices` setting bulk attributes one at a time |
60+
| validate-imported-mesh-scale | `*.py` | glTF/FBX import then mesh work with no `transform_apply` and no unit-scale check |
61+
| no-unapplied-modifiers-on-export | `*.py` | Export with live modifiers when the export does not request evaluated geometry |
5962

6063
## Templates (2)
6164

@@ -75,14 +78,16 @@ VERSION - Source of truth for the repo version
7578
- glTF export via `bpy.ops.export_scene.gltf`
7679
- Explicit exit codes for CI integration
7780

78-
## Snippets (17)
81+
## Snippets (21)
7982

8083
Small standalone `.py` files at `snippets/<name>.py`, each 5 to 50 lines.
8184

8285
v0.1.0: canonical object creation and deletion, depsgraph evaluated mesh, bmesh load-edit-free, temp_override context, foreach_set vertex bulk write, register_classes_factory, PointerProperty binding, cross-version property delete, and the `action_ensure_channelbag_for_slot` slotted-actions bridge.
8386

8487
v0.2.0: Principled BSDF material, driver-with-custom-function via `driver_namespace`, application handler registration, shader node group with cross-version `interface` API, `foreach_get` bulk vertex read, version-branch skeleton, and USD export with `evaluation_mode='RENDER'`.
8588

89+
AI asset pipeline track: `decimate_to_budget.py`, `convex_hull_collider.py`, `lod_chain.py` (helper duplicated, not imported), `gltf_draco_export.py`.
90+
8691
## Examples (53)
8792

8893
Runnable scripts at `examples/<name>/`, each asserting a real API contract with

README.md

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
</p>
1919

2020
<p align="center">
21-
<strong>13 skills</strong> &nbsp;&bull;&nbsp; <strong>6 rules</strong> &nbsp;&bull;&nbsp; <strong>2 templates</strong> &nbsp;&bull;&nbsp; <strong>17 snippets</strong> &nbsp;&bull;&nbsp; <strong>53 examples</strong>
21+
<strong>14 skills</strong> &nbsp;&bull;&nbsp; <strong>8 rules</strong> &nbsp;&bull;&nbsp; <strong>2 templates</strong> &nbsp;&bull;&nbsp; <strong>21 snippets</strong> &nbsp;&bull;&nbsp; <strong>53 examples</strong>
2222
</p>
2323

2424
<p align="center">
@@ -36,16 +36,16 @@
3636

3737
## Overview
3838

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.
4040

4141
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.
4242

4343
| Layer | Role |
4444
| --- | --- |
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 |
4747
| **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 |
4949

5050
## Quick start
5151

@@ -1008,22 +1008,24 @@ the duplicates, then glTF ships 24 tris / 48 positions / 8 unique.
10081008
## How content is organized
10091009

10101010
```
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
10131013
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
10151015
```
10161016

10171017
## Using rules in Cursor
10181018

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:
10201020

10211021
- `prefer-data-over-ops-in-loops`: flags `bpy.ops.*` calls inside object iteration
10221022
- `always-free-bmesh`: flags `bmesh.new()` without paired `bm.free()` in `try`/`finally`
10231023
- `target-extensions-platform-format`: flags add-ons missing `blender_manifest.toml`
10241024
- `type-annotate-props-and-defend-context`: flags `bpy.props` assignment form and unguarded `context.active_object`
10251025
- `prefer-temp-override-over-context-copy`: flags `bpy.context.copy()` passed to operators (deprecated 4.x, removed 5.x)
10261026
- `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
10271029

10281030
Symlink or clone this repo, then point Cursor at it as a skills/rules source.
10291031

0 commit comments

Comments
 (0)