Skip to content

Commit fc48228

Browse files
docs: version new-example prompt with VISUAL-STYLE and contact-sheet gate
Track the agent prompt in-repo (was gitignored), pin the calibration set to armature-bend / damped-track-aim / bmesh-gear, and require reading generated HTML alt and callout text — not only gallery.json — after regen. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 98e86a0 commit fc48228

2 files changed

Lines changed: 131 additions & 2 deletions

File tree

‎.gitignore‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@ ehthumbs.db
3333

3434
# Local planning docs (not published)
3535
docs/site-upgrade-plan.md
36-
docs/new-example-prompt.md
37-
3836
# Landing-page build outputs (generated at deploy time by scripts/site/build_site.py;
3937
# docs/gallery/ stays committed)
4038
docs/index.html

‎docs/new-example-prompt.md‎

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
# Prompt: Create a new Blender example
2+
3+
Copy everything below this line into the agent.
4+
5+
---
6+
7+
Create, ship, and merge one original, runnable example for this repository. The bar is
8+
not "a working example"; it is an example strong enough to anchor the gallery on its own.
9+
10+
First, review `CLAUDE.md`, `AGENTS.md`, `ROADMAP.md`, `examples/gallery.json`,
11+
`docs/VISUAL-STYLE.md`, and several existing examples—study the strongest ones, not
12+
just the nearest one. Use them to understand the repository's current conventions,
13+
integration points, visual standard, and test structure. Check all existing examples
14+
before choosing a subject so your contribution does not duplicate or slightly
15+
repackage something already covered.
16+
17+
Before editing, inspect the Git state. Start from an up-to-date `main`, preserve unrelated
18+
work, and create a focused feature branch. Never force-push or bypass hooks. Do not include
19+
secrets, temporary renders, caches, or unrelated files.
20+
21+
Subject selection. Prefer the ROADMAP candidate pool if it has entries; otherwise choose
22+
freely. Whatever the source, the subject must pass all of these tests before you write
23+
code:
24+
25+
- It witnesses a real, load-bearing API contract—something with observable behavior
26+
that can drift, not a convenience wrapper or a tutorial topic. The strongest subjects
27+
are ones AI-generated Blender code commonly gets wrong: object-mode versus edit-mode
28+
data lifetimes, evaluated versus original data, ordering constraints, references that
29+
dangle after CustomData reallocation, APIs renamed or restructured between 4.5 LTS
30+
and 5.1.
31+
- Its check can fail for a real reason. Before trusting any assertion, prove it catches
32+
the failure it claims to catch: temporarily break the contract (skip the pose, swap
33+
the buffer, use the legacy path) and confirm the check exits non-zero, then restore
34+
it. An assertion that cannot fail witnesses nothing. State in the README what failure
35+
each check would catch.
36+
- Its correctness is independently derivable. The best checks compare Blender's output
37+
against a closed-form or independently computed expectation (re-implemented math, a
38+
round-trip through a raw buffer, a known geometric invariant), not against a value
39+
captured from a previous run of the same code.
40+
- Its render is legible as proof. Someone glancing at the thumbnail should be able to
41+
infer what contract is being demonstrated. If the render would look the same whether
42+
the API worked or not, redesign the scene until failure would be visible.
43+
44+
Where an API diverges between 4.5 and 5.1, asserting each side's actual contract is part
45+
of the witness—version-gate explicitly and document the divergence rather than papering
46+
over it. If you discover an undocumented hazard while authoring (a crash, a dangling
47+
reference, an ordering constraint), that discovery belongs in the code comments and
48+
README; it is often more valuable than the original subject.
49+
50+
The example must:
51+
52+
- run headlessly in Blender 5.1 and Blender 4.5 LTS;
53+
- perform deterministic checks of a real Blender API contract and exit non-zero on
54+
failure, with numeric tolerances chosen deliberately and printed on success so CI
55+
logs carry the measured values;
56+
- default to a fast check-only run and optionally render its own gallery image;
57+
- follow repository conventions and relevant Blender safety rules;
58+
- include concise documentation explaining what it teaches, what each check witnesses,
59+
what failure it would catch, and any version-gated divergence between 4.5 and 5.1;
60+
- produce a deliberate, well-framed render rather than a mockup, primitive dump, or
61+
placeholder.
62+
63+
Complete every integration required for a shipped example. Infer the exact current
64+
shape from neighboring examples and repository configuration, including the example
65+
directory, README, gallery metadata and assets, plugin manifest, smoke workflow,
66+
top-level README, and generated gallery pages. After regenerating the gallery with
67+
`python scripts/build_gallery.py`, read the **generated** output character by
68+
character — not only `examples/gallery.json` source fields. Open
69+
`docs/gallery/index.html` and `docs/gallery/<name>/index.html` and inspect the
70+
rendered `<img alt>` text and the witnesses callout for duplicated words, truncation,
71+
and generator artifacts (the previous `teaches.split(".")[0]` bug truncated alts at
72+
dotted API paths like `bmesh.ops`; source JSON looked fine). Keep the ROADMAP
73+
candidate pool in sync: remove the shipped subject, and add any promising subjects
74+
you identified but did not build. Do not hand-edit release-owned version fields or
75+
generated pages; use the repository's generator.
76+
77+
Run the new example's check-only path on both supported Blender versions, render and
78+
visually inspect its final image, regenerate the gallery, and run all relevant repository
79+
validation. If Blender 4.5 is unavailable locally, say so precisely and use the repository's
80+
4.5 CI job—do not substitute another version and report it as 4.5. If the render path
81+
requires an engine or device unavailable locally (Cycles on a GPU-less host), say so and
82+
identify exactly which paths were exercised only in CI or by inspection. Fix every
83+
failure you introduce.
84+
85+
Treat visual quality as a shipping gate with the same rigor as the checks. Conform to
86+
`docs/VISUAL-STYLE.md` explicitly (Standard view transform, dark studio stage, AREA
87+
key/fill/rim/wedge, designed hero materials, framing, 1280×720 → hero/preview webp).
88+
Inspect the actual rendered pixels at full size and as the gallery thumbnail.
89+
Iterate—the first render is a draft, not a candidate. Revise until the subject and
90+
demonstrated API contract are immediately readable, the composition is intentional,
91+
important geometry is not clipped, highlights are not blown out, lights or helper
92+
objects are not visible unintentionally, and materials, lighting, background, and
93+
camera feel designed rather than left at Blender defaults.
94+
95+
Contact-sheet gate (required before shipping the still): place the new hero beside
96+
the pinned calibration set — currently `armature-bend`, `damped-track-aim`,
97+
`bmesh-gear` — and compare stage darkness, wedge warmth, subject fill, saturation,
98+
and thumbnail legibility side by side. Do not ship until the new image holds up in
99+
that lineup—not merely "looks fine alone." Update this named set in this prompt
100+
whenever a new example outclasses one of them. One successful render command is not
101+
proof that the image is good, and neither is the second. Report that the
102+
contact-sheet comparison was done against those three references.
103+
104+
After implementation and local verification:
105+
106+
1. Review the complete diff and remove accidental churn or temporary files.
107+
2. Commit the focused change with a conventional, release-worthy `feat:` subject that
108+
explains why the example belongs in the repository.
109+
3. Push the feature branch and open a pull request against `main` with a concise summary,
110+
the API contract witnessed, what failure each check catches (and proof you falsified
111+
it once), visual notes, and an exact test plan. Label explicitly what was proven by
112+
live run versus established by inspection only.
113+
4. Watch every attached PR check, including validation, manifest/count checks, ecosystem
114+
drift, security checks, and Blender 4.5/5.1 smoke jobs. Investigate and fix failures
115+
within this change's scope, push fixes, and repeat until all checks pass.
116+
5. Review PR comments and requested changes. Apply valid feedback and re-run affected
117+
checks. Do not merge with unresolved failures or requested changes.
118+
6. Once the PR is mergeable and green, merge it using the repository's normal merge
119+
strategy and delete the remote feature branch.
120+
7. Wait for any automated release/version-sync commit triggered by the merge, then
121+
fast-forward local `main` to `origin/main`, and verify main HEAD is green including
122+
all post-merge jobs (release, validate, drift, pages deploy). Do not hand-edit
123+
release-owned version fields.
124+
8. Confirm the final working tree is clean and report the PR URL, merge commit, resulting
125+
version (if released), measured check values, and checks completed.
126+
127+
Do not stop at a proposal or ask me to choose the topic. Explore, choose, implement,
128+
verify, ship, merge, synchronize, and report the completed result. Only stop for a real
129+
blocker that requires user action, such as authentication, an unavailable required
130+
runtime with no CI substitute, a merge policy requiring approval, or unrelated local
131+
changes that cannot be safely preserved.

0 commit comments

Comments
 (0)