Generate and QA picture scenes for the SLP WH-question app.
Scanned 9/10/2026
Install to Claude Code
npx -y skills add theheavenlyd3mon/hermes-profiles --skill slp-scene-art --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Slp Scene Art?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/theheavenlyd3mon-slp-scene-art)More formats (shields.io, HTML) on the badges page.
---
name: slp-scene-art
description: 'Generate and QA picture scenes for the SLP WH-question app.'
---
# SLP Scene Art Pipeline
Canonical style contract lives in the repo: `~/Desktop/SLP-App/content/STYLE-SPEC.md`
(read it first — palette table, composition slots, QA gate). This skill is the
execution playbook around it. Pilot reference: `content/playground/scene.png`
(seed 20260804).
## Pipeline
1. `fal-ai-generation` skill script:
`python3 <skill>/scripts/fal_txt2img.py --width 1536 --height 1152 --seed <N> --out content/<scene-id>/scene.png --prompt "<template>"`
2. Prompt template (STYLE-SPEC §5): "Flat children's picture-book illustration
of <SCENE>, soft matte colors, clean bold rounded shapes, subtle paper
grain, calm low-clutter composition for a kids' learning app. <ELEMENT LIST
with color + position slot + relation; girl in red dress, boy in blue
shirt>. Wide shot, eye level, flat ground plane, elements clearly
separated, small soft shadows, no text, no words, no letters, no numbers
anywhere."
3. Vision-QA the PNG against STYLE-SPEC §6 before shipping; re-roll fresh seed
on any failure; record passing seed.
4. Drop a per-scene `README.md` with the anchor inventory (element, normalized
rect draft, relation proved, suggested WH-questions, distractor list) so
the questions.json author works from what was actually drawn.
## Pitfalls (session-verified)
- **Seedream 4.5 ignores requested pixel size on disk**: request 1536×1152,
file lands 2560×1920 (4:3, same as pilot on disk). The scene JSON
`image_size` records the REQUEST size (1536×1152) and hotspots are
normalized 0–1, so nothing breaks — don't "fix" either number.
- **Do not ship `<scene-id>/<scene-id>.json` until questions are final.**
ContentStore.sceneIDs() picks up any folder containing `<id>.json`
immediately (strict validation: exactly 5 questions, A–D choices at L1,
unique non-overlapping hotspot rects). Art-only folders are invisible to
the app — safe to land art first.
- **One accent hue per object.** Two red round objects break "where is the
red ball". Clothing may share a hue with one object (pilot precedent).
- **Negation phrases degrade Seedream output** — write positive directives
("blank white board") not "no text". Still, always keep the explicit
"no text, no letters, no numbers anywhere" tail; it works.
- **Relation pairs need headroom**: UNDER = visible gap above the animal,
IN = container rim clearly around the object, or the preposition question
becomes ambiguous. Re-roll, don't ship.
- **Probe calls cost money**: even a minimal-payload POST to fal.run renders
an image (~$0.04). Use it only as a balance probe when a 403 says
exhausted-balance.
- **Calm faces only**: small smiles, no open mouths/tears — autism-friendly
low-arousal rule from DESIGN.md.
## QA gate (must pass before kanban_complete)
All planned anchors present with correct color + relation · exactly one
object per accent hue · zero text/numerals anywhere (boards, books, banners,
blocks) · anchors non-overlapping with ≥40% quiet space · calm faces ·
style matches playground pilot family · per-scene README anchor notes written.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!