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