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 ae0d859
Browse filesBrowse the repository at this point in the historyBrowse files
feat(distribution): Claude Code plugin, rules bridge, Pages trim, count and cap gates (#310)
* feat(distribution): Claude Code plugin, rules bridge, Pages trim, count and cap gates
- #288: remove the personal context-mode block from CLAUDE.md; CI fails if it returns
- #289: add .claude-plugin/plugin.json + marketplace.json (CI-validated, version synced
by release.yml), generate claude/blender-rules.md from rules/*.mdc (CI drift check),
rewrite README and site.json install steps, drop placeholder author email
- #295: fix stale counts, document the real 5-to-75 snippet cap and enforce it; CI scans
AGENTS.md and CONTRIBUTING.md for stale aggregate counts
- #307: pin Jinja2/MarkupSafe exactly, pip cache, dependabot pip entry, warn when the
GitHub description drifts from the README counts
- #212: Pages artifact leaves out contact/asset sheets and internal docs
Closes#288, closes#289, closes#295, closes#307, closes#212
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
* fix(distribution): sync .claude-plugin versions to 0.131.2
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CLAUDE.md
+1-64Lines changed: 1 addition & 64 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -97,7 +97,7 @@ matching its `globs` does. Changing a glob changes when the rule fires.
97
97
98
98
## Snippets (27)
99
99
100
-
Small standalone `.py` files at `snippets/<name>.py`, each 5 to 50 lines.
100
+
Small standalone `.py` files at `snippets/<name>.py`, each 5 to 75 lines.
101
101
102
102
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.
103
103
@@ -239,66 +239,3 @@ When adding content to a future version:
239
239
3. Update ROADMAP.md candidate pool entries.
240
240
4. Use `feat:` for new content, `fix:` for corrections.
241
241
5. Push. The release pipeline handles VERSION, tags, CHANGELOG, the `**Version:**` line here, and the `**Current:**` line in ROADMAP.md.
242
-
243
-
# context-mode — MANDATORY routing rules
244
-
245
-
You have context-mode MCP tools available. These rules are NOT optional — they protect your context window from flooding. A single unrouted command can dump 56 KB into context and waste the entire session.
246
-
247
-
## BLOCKED commands — do NOT attempt these
248
-
249
-
### curl / wget — BLOCKED
250
-
Any Bash command containing `curl` or `wget` is intercepted and replaced with an error message. Do NOT retry.
251
-
Instead use:
252
-
-`ctx_fetch_and_index(url, source)` to fetch and index web pages
253
-
-`ctx_execute(language: "javascript", code: "const r = await fetch(...)")` to run HTTP calls in sandbox
254
-
255
-
### Inline HTTP — BLOCKED
256
-
Any Bash command containing `fetch('http`, `requests.get(`, `requests.post(`, `http.get(`, or `http.request(` is intercepted and replaced with an error message. Do NOT retry with Bash.
257
-
Instead use:
258
-
-`ctx_execute(language, code)` to run HTTP calls in sandbox — only stdout enters context
259
-
260
-
### WebFetch — BLOCKED
261
-
WebFetch calls are denied entirely. The URL is extracted and you are told to use `ctx_fetch_and_index` instead.
262
-
Instead use:
263
-
-`ctx_fetch_and_index(url, source)` then `ctx_search(queries)` to query the indexed content
264
-
265
-
## REDIRECTED tools — use sandbox equivalents
266
-
267
-
### Bash (>20 lines output)
268
-
Bash is ONLY for: `git`, `mkdir`, `rm`, `mv`, `cd`, `ls`, `npm install`, `pip install`, and other short-output commands.
269
-
For everything else, use:
270
-
-`ctx_batch_execute(commands, queries)` — run multiple commands + search in ONE call
271
-
-`ctx_execute(language: "shell", code: "...")` — run in sandbox, only stdout enters context
272
-
273
-
### Read (for analysis)
274
-
If you are reading a file to **Edit** it → Read is correct (Edit needs content in context).
275
-
If you are reading to **analyze, explore, or summarize** → use `ctx_execute_file(path, language, code)` instead. Only your printed summary enters context. The raw file content stays in the sandbox.
276
-
277
-
### Grep (large results)
278
-
Grep results can flood context. Use `ctx_execute(language: "shell", code: "grep ...")` to run searches in sandbox. Only your printed summary enters context.
279
-
280
-
## Tool selection hierarchy
281
-
282
-
1.**GATHER**: `ctx_batch_execute(commands, queries)` — Primary tool. Runs all commands, auto-indexes output, returns search results. ONE call replaces 30+ individual calls.
283
-
2.**FOLLOW-UP**: `ctx_search(queries: ["q1", "q2", ...])` — Query indexed content. Pass ALL questions as array in ONE call.
4.**WEB**: `ctx_fetch_and_index(url, source)` then `ctx_search(queries)` — Fetch, chunk, index, query. Raw HTML never enters context.
286
-
5.**INDEX**: `ctx_index(content, source)` — Store content in FTS5 knowledge base for later search.
287
-
288
-
## Subagent routing
289
-
290
-
When spawning subagents (Agent/Task tool), the routing block is automatically injected into their prompt. Bash-type subagents are upgraded to general-purpose so they have access to MCP tools. You do NOT need to manually instruct subagents about context-mode.
291
-
292
-
## Output constraints
293
-
294
-
- Keep responses under 500 words.
295
-
- Write artifacts (code, configs, PRDs) to FILES — never return them as inline text. Return only: file path + 1-line description.
296
-
- When indexing content, use descriptive source labels so others can `ctx_search(source: "label")` later.
297
-
298
-
## ctx commands
299
-
300
-
| Command | Action |
301
-
|---------|--------|
302
-
|`ctx stats`| Call the `ctx_stats` MCP tool and display the full output verbatim |
303
-
|`ctx doctor`| Call the `ctx_doctor` MCP tool, run the returned shell command, display as checklist |
304
-
|`ctx upgrade`| Call the `ctx_upgrade` MCP tool, run the returned shell command, display as checklist |
1. Add a `.py` file under `snippets/`, e.g. `snippets/depsgraph-evaluated-mesh.py`.
100
-
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.
100
+
2. Keep it 5 to 75 lines, fully working code, with a header comment naming the snippet and citing the relevant Blender doc URL or research section.
101
101
3. Snippets are validated for Python syntax in CI.
102
102
103
103
## Adding a Template
@@ -307,7 +307,7 @@ The drift-check workflow enforces these on every push and PR.
307
307
308
308
## Aggregate Counts
309
309
310
-
`README.md` declares aggregate counts (e.g. "16 skills, 9 rules, 3 templates, 27 snippets, 59 examples, and 26 showcase pieces"). The `validate-counts` job in `.github/workflows/validate.yml` enforces these substrings against the filesystem on every push and PR. Showcase pieces are counted separately from examples. When you add or remove content, update the README counts in the same commit.
310
+
`README.md` declares aggregate counts (e.g. "16 skills, 9 rules, 3 templates, 27 snippets, 64 examples, and 76 showcase pieces"). The `validate-counts` job in `.github/workflows/validate.yml` enforces these substrings against the filesystem on every push and PR. Showcase pieces are counted separately from examples. When you add or remove content, update the README counts in the same commit.
-**Cursor** — point Cursor at the checkout (or symlink `rules/` into your project). The `.mdc` rules apply automatically by glob scope; skills are referenced by name in chat.
60
-
-**Claude Code** — copy `skills/` and `rules/` into your project workspace, or keep this repo as a checkout that Claude Code references directly.
59
+
-**Cursor** — open your project with this checkout available and copy (or symlink) `rules/*.mdc` into your project's `.cursor/rules/`. The rules apply automatically by glob scope; skills are referenced by name in chat.
60
+
-**Claude Code** — install as a plugin, then run `/skills` to see all 16 skills:
Claude Code does not read Cursor `.mdc` rules. For the rules, add one line to your project's `CLAUDE.md` that imports the generated summary from a checkout: `@/path/to/Blender-Developer-Tools/claude/blender-rules.md`. Without the plugin, copy `skills/*` into your project's `.claude/skills/` instead.
61
68
-**Get Blender** — download **5.2 LTS** (primary target) or **4.5 LTS** (supported fallback) from [blender.org/download/lts](https://www.blender.org/download/lts/); current stable lives at [blender.org/download](https://www.blender.org/download/). The `blender` command below is that binary — on macOS it is inside the app bundle at `/Applications/Blender.app/Contents/MacOS/Blender`.
62
69
-**Run an example** — every example is a self-checking headless script (exit non-zero on failure, no GPU needed for the check):
63
70
@@ -1451,7 +1458,7 @@ the duplicates, then glTF ships 24 tris / 48 positions / 8 unique.
1451
1458
skills/<name>/SKILL.md - 16 skill files, YAML frontmatter, one canonical pattern each
-`type-annotate-props-and-defend-context`: flags `bpy.props` assignment form and unguarded `context.active_object`
1465
-
-`prefer-temp-override-over-context-copy`: flags `bpy.context.copy()` passed to operators (deprecated 4.x, removed 5.x)
1472
+
-`prefer-temp-override-over-context-copy`: flags `bpy.context.copy()` passed to operators (deprecated 3.2, removed 4.0)
1466
1473
-`use-foreach-set-for-bulk-data`: flags Python loops over `mesh.vertices` setting `co`, normals, or other per-element bulk data
1467
1474
-`validate-imported-mesh-scale`: flags glTF/FBX import then mesh work with no `transform_apply` and no unit-scale check
1468
1475
-`no-unapplied-modifiers-on-export`: flags export of objects with live modifiers when the export does not request evaluated geometry
1469
1476
-`use-correct-axis-rna-per-exporter`: flags `export_scene.gltf` calls that pass FBX `axis_forward` / `axis_up`, and `export_scene.fbx` calls that pass glTF `export_yup`
1470
1477
1471
-
Symlink or clone this repo, then point Cursor at it as a skills/rules source.
1478
+
Cursor: copy `rules/*.mdc` into `.cursor/rules/`. Claude Code: install the plugin (see Install) and import `claude/blender-rules.md` from your `CLAUDE.md`.
0 commit comments