Skip to content

fix(skills): correct four API claims that make agent code silently wrong - #410

Merged
TMHSDigital merged 1 commit into
mainfrom
fix/skill-accuracy-batch1
Oct 5, 2026
Merged

TMHSDigital merged 1 commit into
mainfrom
fix/skill-accuracy-batch1

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

Closes #353, #355, #388, #390.

Issue Was Now
#353 use-foreach-set rule Listed vertex "normal" and "index" as foreach_set targets; there was also a duplicated foreach_get line Names writable attributes only. States that read-only ones are a silent no-op, and how to read and write normals. claude/ regenerated: --check is clean, and the change falls outside the generated summary
#355 geometry-nodes-python GeometryNode.__subclasses__() (returns []; classes are lazy) dir(bpy.types) filter, with the reason
#388 engine-export-presets "pass the suffix and let the operator infer" Always pass export_format. Added export_format="GLB" to every glTF call in snippets/export_preset_{unity,godot,unreal}.py, snippets/gltf_draco_export.py, the pipeline template (×3) and the skill's code blocks
#390 drivers-and-app-handlers save count Full path as an ID-property key; counted in save_post Keyed by basename (≤63 chars). Counted in save_pre, so the count is in the file being saved

Evidence

Proven by live run (--factory-startup; binaries report 5.2.1 LTS and 4.5.11 LTS). Each result is identical on both versions unless the table shows two values.

Probe 5.2.1 4.5.11
dir(bpy.types) GeometryNode names (includes SetPosition) 274 223
Save-count example, 165-char path, save_as + save + reopen {'a_rather_long_production_shot_name_xxx…': 2}, persisted, no KeyError same
export_format="GLB" → .glb t_GLB.glb same
export_format="GLTF_SEPARATE" → .gltf .gltf + .bin same
No export_format, .gltf path t_None.glb (the bug the skill now warns about) same
vertices.foreach_set("normal", …) changes nothing True (no-op) True

By inspection only:

  • Snippet line counts are within the limit (Unreal preset 73/75).
  • export_format="GLB" matches the operator's existing default for these .glb call sites, so output is unchanged. The pipeline template and the export-preset examples run in CI smoke.

🤖 Generated with Claude Code

- use-foreach-set rule listed vertex "normal" and "index" as foreach_set
  targets; both are read-only and foreach_set on them is a silent no-op.
  It now names writable attributes and says how to read and write normals.
- geometry-nodes-python told agents to list node types with
  GeometryNode.__subclasses__(), which returns [] because bpy.types
  classes are created lazily. Use dir(bpy.types) instead.
- engine-export-presets said glTF infers the format from the filepath
  suffix. It does not: a .gltf path with no export_format writes .glb.
  The skill now says to always pass export_format, and every glTF call in
  the snippets, presets and pipeline template passes it.
- drivers-and-app-handlers' save-count example keyed an ID property by
  the full path (KeyError past 63 characters) and counted in save_post,
  after the file was written. It now keys by basename and uses save_pre.

Closes #353
Closes #355
Closes #388
Closes #390

Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@TMHSDigital

Copy link
Copy Markdown
Owner Author

CI evidence before merge: all checks pass ( 13 pass ). Blender Smoke on PR head: Blender 5.2.2 LTS / Blender 4.5.14 LTS. Summaries (happy path; falsifiers) per leg: 143 passed, 1 skipped, 0 failed;142 passed, 0 skipped, 0 failed;141 passed, 3 skipped, 0 failed;136 passed, 6 skipped, 0 failed;

@TMHSDigital
TMHSDigital merged commit ae57f0d into main Oct 5, 2026
13 checks passed
@TMHSDigital
TMHSDigital deleted the fix/skill-accuracy-batch1 branch October 5, 2026 00:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

rules: use-foreach-set-for-bulk-data still lists read-only 'normal' and 'index' as foreach_set targets (#330 incomplete)

1 participant