一键导入
concept-art
Compose concept-art briefs from the project's GDD and run the generate→review→lock/regen loop on a persistent concept board (docs/concept-art/board.md).
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Compose concept-art briefs from the project's GDD and run the generate→review→lock/regen loop on a persistent concept board (docs/concept-art/board.md).
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Check recent Godot code changes against the project's GDD + design pillars for alignment.
Author/update a Godot project's GDD as a docs/gdd/ Obsidian folder (index + section notes).
Fetch a YouTube video as readable markdown (title, channel, description, clean transcript). WebFetch can't read YouTube — this wraps a tested yt-dlp pipeline.
Scaffold a new Godot scene + script following this project's existing layout + conventions.
Debug Godot 4.x errors, crashes, and Godot-3→4 API confusion.
Godot 4.x GDScript architecture patterns + naming/typing conventions.
| name | concept-art |
| description | Compose concept-art briefs from the project's GDD and run the generate→review→lock/regen loop on a persistent concept board (docs/concept-art/board.md). |
| model | sonnet |
| allowed-tools | Read, Write, Edit, Glob, Bash, AskUserQuestion, Skill |
| argument-hint | [focus, e.g. 'origin pet', 'chassis silhouettes', 'round 2'] |
Turn a project's GDD into concept-art briefs, generate against them, and run the
review → lock/reject → regen loop on a persistent concept board. This skill is generic;
the project supplies the content (its docs/gdd/ notes) and the image backend (its
.claude/imagegen/ profile, consumed via the gen-art skill).
final destination) — raw
generation output is disposable and usually gitignored.Load context. Glob docs/gdd/ and read the visual-direction / theme / subject-schema
notes (whatever the project names them). Read docs/concept-art/board.md if it exists —
its existence means this is a continuing round, and its verdicts are input, not history.
No docs/gdd/ at all → this project isn't GDD-driven; say so and stop.
Determine the round.
🔁 iterate / ❌ rejected / new subjects enter the matrix, and each
brief names what it inherits ("C3 round-1 rejected: read as anthro → this round forces
quadruped stance, adds negative"). Locked concepts are done — never re-generate them
without being asked.Build the brief matrix — rows = subjects, columns = register variants (2–3 deliberate deltas within the GDD's stated register, so a round answers a question: "warmer vs cooler", "minimal vs mid fidelity"). Each cell = one brief per references/brief-template.md. Cap a round at roughly 6–12 generations — a bigger matrix means you're not sure what question you're asking.
Confirm the matrix with the user before generating. Show the table (subjects × variants + what each tests). The user may cut, add, or re-scope. Never fire generations unconfirmed.
Route each brief through gen-art (invoke it as a skill — it discovers the project's
imagegen profile and owns the backend mechanics):
/gen-fulfill on the hub); write the board entries as 🟡 proposed (ticket queued).manual, tell the user they're ready for outside generation, and stop after the board write.Write the board at docs/concept-art/board.md per
references/board-template.md — one entry per concept (stable
C# ID), the brief, image paths + backend/quality, status 🟡 proposed.
Review pass. Present results grouped by the question each variant tested. Capture the
user's verdicts — ✅ locked / ❌ rejected (reason mandatory — the reason is the next
round's input) / 🔁 iterate (+ what to change). Write verdicts to the board. Copy locked
images to the project's tracked destination (the profile's dest_final or equivalent).
Close the round. Summarize: verdicts, what the round settled about the register, and the
suggested next-round matrix (from the 🔁/❌ deltas). If a verdict settles something the
GDD leaves gate-deferred, say so — updating the GDD is the write-gdd skill's job, not a
silent side-effect here.
Bilingual (VN/EN) — match the language the user writes.
🟡 proposed · ✅ locked · ❌ rejected + reason · 🔁 iterate + delta.
A rejected entry without a reason is a bug — it starves the next round.C# per falsifiable question, not per subject. A cell keeps its
C# across rounds; rounds append attempts under it. When one subject legitimately fans into
simultaneous variants in the same round (e.g. a fidelity ladder over the same creature),
each variant is its own cell with its own ID — verdicts must be independently lockable — and
the board groups them under a shared subject heading.--dry-run (or a user asking to "see the briefs first") = do steps 1–4
and 6, no generation. Entries carry their real intended lane (the round fires on it once
confirmed) with status 🟡 proposed (dry-run). This must work with zero backend configured —
only in that case is the lane itself manual.