Use Open Design as a shared, inspectable design workspace. Keep design generation and runtime implementation as separate phases: no runtime UI edits are allowed until the rendered concept is reviewed and approved.
-
Read darkbone-visual-language.md and open
exemplar-craft.html in a browser before anything else — they define
the craft bar (real palette, material recipes, game-feel checklist). Then read the relevant feature docs,
current overlay source, and design tokens. State the player-facing job of each screen. The generation
target is a gorgeous game artifact that matches the exemplar's craft level; preservation contracts bound
it, they do not define it.
-
Capture the live runtime before proposing a layout:
node .agents/skills/open-design-game-ui-concept/scripts/capture_meta_ui_design_audit.mjs \
--base-url=http://127.0.0.1:5173 \
--out-dir=.omc/artifacts/open-design-meta-ui-audit/<run>
Treat this as source-integrity evidence, not a best-effort gallery. The capture blocks on page/console
errors, broken rendered images, locale drift, viewport overflow, a missing primary surface, or zero visible
actions. It traverses nested Shadow DOM and the default run must extract all five expected character rigs.
-
Review representative captures at actual size. Evaluate first-glance comprehension, player fantasy, hierarchy, spatial use, component relationships, interaction distance, and detail polish. Read meta-ui-design-contract.md.
For a new Steam title shell, use the separate steam-title profile and read
steam-title-design-contract.md. Do not change the six-screen
defaults or reuse the six-screen artifact name.
-
Run open-design-game-ui-handoff. Build one complete handoff folder under
.handoff/<timestamp>-<feature>/. Include README.md, brief.md, DESIGN.md,
preservation-contract.json, source-manifest.json, the screenshot manifest, current-state WebP
screenshots, motion WebM/MP4 plus timestamped WebP keyframes, selected real assets, relevant docs, and the
source files that own the current UI.
-
Validate and zip it:
node .agents/skills/open-design-game-ui-concept/scripts/package_open_design_handoff.mjs \
--dir=.handoff/<timestamp>-<feature>
The packager rejects absolute or traversal references. Every screenshot, source file, config, character
asset, map/mask asset directory, and primary artifact declared by the manifests must resolve inside the
handoff and must be present in the resulting zip.
-
Import the folder into Open Design and start a Codex run. Read open-design-control.md first. This workflow is locked to Codex gpt-5.6-sol with ultra reasoning. Do not accept another model, a lower reasoning tier, or a request-level override.
-
Start the generation-evidence capture as soon as the run ID is returned. It must observe the live child process and then bind the successful result package to the immutable artifact revision:
node .agents/skills/open-design-game-ui-concept/scripts/capture_open_design_generation_evidence.mjs \
--run=<run-id> \
--artifact=<artifact.html> \
--out=.omc/artifacts/open-design-generation-evidence/<run-id>.json
The evidence is invalid unless the actual process command contains only gpt-5.6-sol model overrides and
only model_reasoning_effort=ultra reasoning overrides. Long thinking is not a failure; do not cancel a
healthy run merely because it takes several minutes. The listener waits up to two hours by default; use
--timeout-ms=<milliseconds> only when a documented run needs a different bound.
-
Resolve the generated artifact through Open Design's preview URL, then capture it:
node .agents/skills/open-design-game-ui-concept/scripts/capture_open_design_preview.mjs \
--preview-url=<immutable-preview-url> \
--contract-profile=<meta-ui|steam-title> \
--contract=.handoff/<timestamp>-<feature>/preservation-contract.json \
--generation-evidence=.omc/artifacts/open-design-generation-evidence/<run-id>.json \
--out-dir=.omc/artifacts/open-design-preview/<run>
The default --scenario-set=full is the acceptance gate; --scenario-set=defaults is smoke-only. The full
matrix adds detail, locked, insufficient-resource, loading, confirmation, result, and completion states,
plus keyboard, controller, hover, Escape/B, modal focus-trap, and reduced-motion probes to the 40 default
locale/viewport/screen renders.
Treat manifest.ok !== true as a failed design run. The capture gate independently checks the requested
screen/locale/state/responsive mode against visible DOM sentinels and localized primary actions, then checks
page/console errors, image loading, document overflow, ancestor clipping, label clipping, and actionable
overlap on every viewport. Phone and iPad additionally require every visible actionable target to be at
least 44x44 CSS px.
Full mode rejects filtered locales/screens/viewports, a mutable URL, a state set that does not cover the
preservation contract, or generation evidence that does not match the exact project, revision, file, and
artifact SHA-256. Keep the immutable projectId, preview revisionId, artifact SHA-256, contract SHA-256,
generation-evidence SHA-256, per-screenshot SHA-256, and preview manifest. Takeover approval must bind to
these exact values; a mutable URL or filename alone is insufficient.
-
Generate the Chinese owner review HTML with screenshot-review-artifact. Open both the Open Design GUI project and the review HTML. Any independent/blind review scoring uses codex exec -m gpt-5.6-sol -c model_reasoning_effort=high (anonymized labels); motion-bearing artifacts are scored on driven video/live evidence with per-candidate parity, never stills alone (see open-design-control.md Review Loop).
-
Iterate inside the same Open Design project. Keep the project, conversation, run, artifact file, handoff zip, model, reasoning, and review paths in the final manifest.
The deliverable for this skill is an owner-reviewable design artifact and evidence packet. Runtime takeover is a later task.