Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate, finalize, and validate a non-pixel-art full-screen visual reference for scene direction and evaluation, without producing a runtime asset.
.claude/skills/randallliuxin-screen-reference/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | -71% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -12% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 86% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 32% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 42% | 0% |
Use this Skill for a full-screen visual anchor for scene direction and visual evaluation. It is reference-only: it does not create a runtime Godot resource, has no godot_artifact, and must not enter worker runtime handoff. Do not compile it to Texture2D, AtlasTexture, or any other native runtime resource.
Do not request or produce pixel art. Do not use nearest-neighbor scaling to imitate pixel art. Raw visual material may come only from the selected image provider or an explicitly supplied user source/reference. Do not create art, placeholder images, colour blocks, SVGs, canvases, Godot drawings, or image assets with ad-hoc scripts.
Accept one request matching the shared Asset Skill request schema in .godotmaker/asset-runtime/schema/asset-skill-request.schema.json. Require asset_type to be screen-reference. references is optional. When it is present and non-empty, every { role, path } is a required visual input:
calling a provider;
canonical, style, or screen role in the prompt andsource-generation provenance;
mentioned only in text is not an attachment;
or the selected provider cannot attach it.
Use the configured provider named by the request or production brief. native, codex, gemini, and openai are binding selections: execute that documented path or STOP. Never silently switch providers. For codex, non-empty references require the image_gen call's referenced_image_paths argument.
This Skill can be invoked directly or by an orchestrator with the same contract. Do not read or write ASSETS.md, tags, stage state, generated indexes, or worker dispatch state. The /gm-asset manager later registers its validated generic result directly in the matching catalog row.
spec must declare the target size (WIDTHxHEIGHT) and aspect_ratio (WIDTH:HEIGHT). Build a prompt that names the game and screen purpose, camera/viewpoint, visible gameplay objects, approximate layout, HUD or UI safe regions, style language, target aspect/orientation, and each supplied reference role. Do not add labels, callouts, debug overlays, or unrequested objects.
For every accepted image, retain these deterministic paths:
.godotmaker/asset-generation/prompts/<asset_id>.txt;.godotmaker/asset-generation/sources/<asset_id>_source.png;.godotmaker/asset-generation/reports/<asset_id>_source.json;references/<asset_id>.png;.godotmaker/asset-generation/reports/<asset_id>_finalize.json.For openai and gemini, write a source-generation spec using reference_inputs for role-preserving references, then run:
bashpython tools/asset_source_generate.py --spec <spec.json>
The successful source report must identify the selected provider and model, actual reference attachment count, each reference role/path/hash, raw source, and prompt path. For native and codex, use their provider documents and write an equivalent JSON report before finalization. It must contain ok: true, asset_id, raw_source, raw_source_sha256, reference_attachment_count, and a generation object with tool: "image_gen". When references are supplied, that object must also record reference_attachment_argument: "referenced_image_paths" and the matching attachment count, and each reference_inputs item must preserve role, path, sha256, and attached: true. A missing report, provider failure, or absent attachment evidence is a STOP.
Finalize only the provider/user source with the existing controlled tool:
bashpython tools/asset_image_finalize.py \ --source .godotmaker/asset-generation/sources/<asset_id>_source.png \ --out references/<asset_id>.png \ --label <asset_id> \ --require-aspect <WIDTH:HEIGHT> \ --resize <WIDTHxHEIGHT> \ > .godotmaker/asset-generation/reports/<asset_id>_finalize.json
If aspect validation or finalization fails, STOP. Keep the captured finalize report as result evidence; the reference result has no runtime artifact and is registered as source_ready by the manager.
Return the shared generic result with one reference output, its deterministic raw source, no godot_type, and no runtime outputs. Run standalone_validation.compile_and_validate() before returning it; it replaces any caller-supplied validation claim and proves the stable final reference and raw source are readable PNG files. It begins from the shared result schema and checker, then proves the result.
json{ "asset_type": "screen-reference", "outputs": [{ "role": "reference", "name": "<asset_id>", "path": "references/<asset_id>.png" }], "sources": [{ "path": ".godotmaker/asset-generation/sources/<asset_id>_source.png", "layout": "single" }], "previews": [], "validation": { "passed": true, "levels": {"L0": true, "L1": true} } }
L2-L4 are not applicable because a screen reference has no Godot artifact and is never handed to a worker. Preserve the provider and finalize reports so the manager and private Eval can audit the production gates separately; L5 is not applicable and L6 is visual/semantic review.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-05 | fail→fail | 33,518 | 5,317 | -84% | 1 | 1 | 0% | 6,183 | 2,187 | -65% | 0 | 0 | — |
case-04 | pass→fail | 16,512 | 6,338 | -62% | 1 | 1 | 0% | 2,882 | 2,418 | -16% | 0 | 0 | — |
case-01 | fail→fail | 29,899 | 6,193 | -79% | 1 | 1 | 0% | 2,907 | 1,835 | -37% | 0 | 0 | — |
case-02 | fail→fail | 16,579 | 8,401 | -49% | 1 | 1 | 0% | 1,848 | 2,067 | +12% | 0 | 0 | — |
case-03 | fail→fail | 25,976 | 13,466 | -48% | 1 | 1 | 0% | 5,078 | 2,506 | -51% | 0 | 0 | — |
case-06 | pass→pass | 9,296 | 5,168 | -44% | 1 | 1 | 0% | 1,546 | 2,175 | +41% | 0 | 0 | — |
case-07 | pass→pass | 9,489 | 3,336 | -65% | 1 | 1 | 0% | 1,315 | 1,894 | +44% | 0 | 0 | — |
case-08 | fail→pass | 32,637 | 2,780 | -91% | 1 | 1 | 0% | 6,194 | 1,816 | -71% | 0 | 0 | — |
case-09 | fail→pass | 11,802 | 2,401 | -80% | 1 | 1 | 0% | 2,125 | 1,874 | -12% | 0 | 0 | — |
case-10 | fail→pass | 6,815 | 3,522 | -48% | 1 | 1 | 0% | 1,074 | 1,999 | +86% | 0 | 0 | — |
case-11 | fail→pass | 9,385 | 2,385 | -75% | 1 | 1 | 0% | 1,322 | 1,743 | +32% | 0 | 0 | — |
case-12 | fail→pass | 21,480 | 2,112 | -90% | 1 | 1 | 0% | 1,220 | 1,728 | +42% | 0 | 0 | — |
case-13 | fail→pass | 4,378 | 4,437 | +1% | 1 | 1 | 0% | 673 | 2,246 | +234% | 0 | 0 | — |
case-14 | fail→pass | 12,478 | 5,557 | -55% | 1 | 1 | 0% | 1,759 | 2,474 | +41% | 0 | 0 | — |
case-15 | fail→pass | 7,927 | 1,835 | -77% | 1 | 1 | 0% | 1,119 | 1,644 | +47% | 0 | 0 | — |
case-16 | fail→pass | 7,975 | 2,227 | -72% | 1 | 1 | 0% | 1,120 | 1,696 | +51% | 0 | 0 | — |
case-17 | fail→pass | 11,103 | 1,972 | -82% | 1 | 1 | 0% | 1,638 | 1,724 | +5% | 0 | 0 | — |
case-22 | fail→pass | 7,842 | 1,894 | -76% | 1 | 1 | 0% | 1,228 | 1,686 | +37% | 0 | 0 | — |
case-18 | fail→pass | 8,184 | 2,146 | -74% | 1 | 1 | 0% | 1,125 | 1,778 | +58% | 0 | 0 | — |
case-19 | fail→pass | 5,792 | 4,721 | -18% | 1 | 1 | 0% | 907 | 2,192 | +142% | 0 | 0 | — |
case-20 | fail→pass | 12,405 | 6,200 | -50% | 1 | 1 | 0% | 2,107 | 2,484 | +18% | 0 | 0 | — |
case-21 | fail→pass | 7,959 | 3,003 | -62% | 1 | 1 | 0% | 1,471 | 2,091 | +42% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 18 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +64 percentage points is the difference between those two pass rates over the 18 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.