From 9ede338c99f189851268ba3a2ac09d67f0b086fc Mon Sep 17 00:00:00 2001 From: TheDesignFounder Date: Fri, 16 Oct 2026 00:36:14 -0400 Subject: [PATCH 1/2] Add game artwork integration workflow with optional REA investigation --- .agents/skills/integrate-game-art/SKILL.md | 70 ++++++++++++++++++ .../references/rea-investigation.md | 27 +++++++ .../references/workflow-contract.md | 46 ++++++++++++ .cline/skills/integrate-game-art/SKILL.md | 70 ++++++++++++++++++ .../references/rea-investigation.md | 27 +++++++ .../references/workflow-contract.md | 46 ++++++++++++ .github/skills/integrate-game-art/SKILL.md | 70 ++++++++++++++++++ .../references/rea-investigation.md | 27 +++++++ .../references/workflow-contract.md | 46 ++++++++++++ README.md | 7 ++ clawhub/dreamlayer-image-workflows/SKILL.md | 1 + docs/cline-setup.md | 9 ++- docs/copilot-setup.md | 9 ++- packaging/openai/dreamlayer-skills-1.0.0.zip | Bin 31120 -> 36153 bytes .../skills/integrate-game-art/SKILL.md | 70 ++++++++++++++++++ .../references/rea-investigation.md | 27 +++++++ .../references/workflow-contract.md | 46 ++++++++++++ scripts/validate.py | 2 +- 18 files changed, 591 insertions(+), 9 deletions(-) create mode 100644 .agents/skills/integrate-game-art/SKILL.md create mode 100644 .agents/skills/integrate-game-art/references/rea-investigation.md create mode 100644 .agents/skills/integrate-game-art/references/workflow-contract.md create mode 100644 .cline/skills/integrate-game-art/SKILL.md create mode 100644 .cline/skills/integrate-game-art/references/rea-investigation.md create mode 100644 .cline/skills/integrate-game-art/references/workflow-contract.md create mode 100644 .github/skills/integrate-game-art/SKILL.md create mode 100644 .github/skills/integrate-game-art/references/rea-investigation.md create mode 100644 .github/skills/integrate-game-art/references/workflow-contract.md create mode 100644 plugins/dreamlayer/skills/integrate-game-art/SKILL.md create mode 100644 plugins/dreamlayer/skills/integrate-game-art/references/rea-investigation.md create mode 100644 plugins/dreamlayer/skills/integrate-game-art/references/workflow-contract.md diff --git a/.agents/skills/integrate-game-art/SKILL.md b/.agents/skills/integrate-game-art/SKILL.md new file mode 100644 index 0000000..6f08a1e --- /dev/null +++ b/.agents/skills/integrate-game-art/SKILL.md @@ -0,0 +1,70 @@ +--- +name: integrate-game-art +description: "Plan, obtain, validate, and integrate DreamLayer artwork into a playable game while preserving its mechanics. Use when a game needs background, character, UI, or sprite files; not for gameplay-only work or another image service." +--- + +# Integrate game art + +Inspect the game before requesting art: engine and import settings, logical world units, +collision bodies, pivots, sprite dimensions, alpha requirements, animation timing, camera, +and asset paths. Separate visual dimensions from physics dimensions. Keep a playable +geometry baseline and record the behavior that must survive the artwork swap. + +Read the bundled [workflow contract](references/workflow-contract.md) for supported clients, +authentication, billing, polling, download, and recovery. Installation supplies instructions; +it does not connect or authenticate an MCP server. Inspect the actual available tool schema. +If the connected client lacks download or sprite fields, use the supported client from that +contract, or retain bundled assets and report the limitation. + +## Plan and obtain + +- Inventory reusable artwork and its license/provenance first. A downloaded sample is not + a new generation. Code-authored scenery should be labeled separately from DreamLayer art. +- Produce a dry-run asset plan with role, output path, dimensions/aspect, reference, operation, + transparency, and estimated credits. Read live capabilities and balance before paid work. + Track the total authorized cap across all operations, including cutouts and animation. + Reserve an unresolved job's estimated charge until its canonical status resolves it. +- For image operations use `generate-or-edit-image`; for animation use + `sprite-sheet-from-reference`, when installed. Both follow the bundled contract. If a task + skill is absent, use the contract and actual public schemas instead of inventing fields. +- Save request, idempotency key, execution ID, and event cursor locally without credentials. + Resume existing jobs after interruptions. Download to a new path and verify the file before + marking an asset available. Never rerun generation to repair a download failure. + +## Integrate and verify + +Inspect each image. Check decoded format, dimensions, actual transparent pixels, visual +coherence, ground anchor/pivot, frame order, and per-frame timing. Prefer a reviewed still +frame when animation details drift; disclose the decision. Use the delivered timing array +when it differs from a rounded duration label, and record the discrepancy. + +Keep collision and timing code independent of texture size. Add a baseline/artwork toggle +when useful for comparison. Validate both modes with the same deterministic input sequence, +then play a complete loop in the actual browser or engine. Test controls, pause/restart, +small screens, and reduced motion for decorative animation. For Godot/Unity use their +installed import skills; do not claim an engine was tested because its import files exist. + +Record file digests, dimensions, upstream revision or generation execution ID, transformations, +historical costs separately from new charges, and any unverified behavior. + +## Runnable example, no paid calls + +The [Relay garden example](https://github.com/TheDesignFounder/dreamlayer-game-assets) +bundles DreamLayer robot frames and a geometry mode. With Node.js 22.19+ on the 22.x line (or another REA-supported version): + +```sh +git clone https://github.com/TheDesignFounder/dreamlayer-game-assets.git +cd dreamlayer-game-assets +npm ci +npm test +npm run validate:assets +npm run art:plan +npm start +``` + +Open `http://127.0.0.1:4177/demo/`. No viewer key or credits are needed. Its plan script +submits nothing and defaults to a zero-credit cap. New generation uses the authenticated +canonical workflow above. The example's read-only recovery script never resubmits a job. + +Only when the task actually needs artifact investigation, read +[the REA companion](references/rea-investigation.md). Ordinary game artwork does not require REA. diff --git a/.agents/skills/integrate-game-art/references/rea-investigation.md b/.agents/skills/integrate-game-art/references/rea-investigation.md new file mode 100644 index 0000000..757271b --- /dev/null +++ b/.agents/skills/integrate-game-art/references/rea-investigation.md @@ -0,0 +1,27 @@ +# Optional REA investigation + +Use Reverse Engineer Anything when a shipped, compiled, or minified artifact helps answer +a bounded behavior question. If readable project source already answers the question, +inspect it directly. DreamLayer is an artwork tool, not a REA analysis provider. + +Record origin, version/revision, redistribution permission, SHA-256, and the exact question. +Preserve original bytes and keep analysis Evidence private until sanitized. Distinguish +REA observations, the agent's interpretation, runtime verification, and later source checks. + +Relay garden uses a self-authored minified JavaScript target. It is a controlled example, +not a recovered commercial game and not a blind evaluation. REA 6.5.0 locates a Math.hypot +read, its enclosing function, and a caller relation. The agent interprets the artifact's +formula; numeric runtime tests establish the bounded equivalence. REA reports partial +coverage and unresolved facts, which must remain in the account. + +```sh +# Inside the example after npm ci; the pinned REA CLI needs no native analysis engine. +npm run investigate +npm test +``` + +Full local Evidence is written under `.local/`. The public excerpt is not an importable +Evidence record. Read the example's `docs/rea-workflow.md` for exact commands and boundaries. +For REA MCP setup use [REA's official installation guide](https://github.com/morluto/rea/blob/main/docs/installation.md). +Do not claim CLI execution proves MCP registration. Installing this skill registers neither +REA nor DreamLayer. Do not modify upstream REA for the example. diff --git a/.agents/skills/integrate-game-art/references/workflow-contract.md b/.agents/skills/integrate-game-art/references/workflow-contract.md new file mode 100644 index 0000000..bd6ce94 --- /dev/null +++ b/.agents/skills/integrate-game-art/references/workflow-contract.md @@ -0,0 +1,46 @@ +# DreamLayer workflow contract + +Use the installed DreamLayer MCP tools, or the pinned CLI when MCP is unavailable. +Read the actual tool schema before calling. Never pass fields a client does not expose. + +## Setup +Requires Node.js >=22.12 and a DreamLayer API key from https://platform.dreamlayer.io. +Install the supported sprite-capable beta: `npm install -g dreamlayer@0.4.0-beta.4`. +MCP: `npx -y @dreamlayer/mcp@0.4.0-beta.5`. Supply DREAMLAYER_API_KEY to the server process using the host's secret settings. Never commit keys or put them in prompts. +The stable npm tag remains 0.3.0. Do not claim it supports this complete workflow. + +## Before paid work +1. Read dreamlayer_capabilities and dreamlayer_balance (or CLI capabilities/balance --json). If either fails, resolve it before spending. +2. Confirm the requested operation is advertised. Ordinary completed image operations currently cost one credit each; obtain the live cost from capabilities. A multi-step edit and cutout costs two operations. +3. Use the user's already-authorized operation, number of outputs and credit budget. Ask only if missing. Never buy credits or expand the batch implicitly. +4. For file operations, verify input readability and a new output path before submitting. Upload once using dreamlayer_upload_image; preserve its input_asset_id. +5. Save a unique idempotency_key and the complete request locally before each generation. Do not store credentials in the job record. + +## Execute and recover +Select operation explicitly: text_to_image; image_to_image; background_remove; upscale; sprite_sheet. +All except text_to_image require input_asset_id. Generate returns execution_id, status, asset, question and last_event_id. +Preserve IDs/cursor after each response. For running work, call dreamlayer_execution or dreamlayer_events; do not generate a replacement after a timeout. +A needs_input result is a question, not a failed generation. Continue using conversation_id and respond. +For completed work, dreamlayer_download writes an absolute new local path. Never treat a returned asset URL as proof that the local file exists. +On a local download error, repair the destination and download the same execution. +File-based CLI retries upload a new asset; use status and download after uncertainty rather than rerunning the paid command. +Stop at insufficient credits, invalid request, unsupported operation, or an unresolved contract error. Keep recoverable state; do not loop paid retries. + +## Output acceptance +Inspect the saved image or preview. Check dimensions, transparency if requested, text spelling, reference fidelity and the intended use. Label uninspected outputs. +PNG output does not establish SVG/vector structure, pixel-perfect art, trademark clearance, print compliance, exact product fidelity or consistent animation. +API documentation: https://docs.dreamlayer.io/agent-api +Recovery: https://docs.dreamlayer.io/agent-api/jobs-and-events + +## CLI examples +```sh +dreamlayer capabilities --json +dreamlayer balance --json +dreamlayer generate "Original image brief" --aspect 1:1 --idempotency-key UNIQUE_SAVED_KEY --out concept.png --json +dreamlayer edit reference.png "Change the background to a simple studio scene" --idempotency-key UNIQUE_SAVED_KEY --out edited.png --json +dreamlayer cutout reference.png --idempotency-key UNIQUE_SAVED_KEY --out cutout.png --json +dreamlayer status EXECUTION_ID --json +dreamlayer download EXECUTION_ID --out recovered.png --json +``` +Placeholder IDs and keys must be replaced. Check CLI --help for supported flags; --max-credits is for sprite jobs. + diff --git a/.cline/skills/integrate-game-art/SKILL.md b/.cline/skills/integrate-game-art/SKILL.md new file mode 100644 index 0000000..6f08a1e --- /dev/null +++ b/.cline/skills/integrate-game-art/SKILL.md @@ -0,0 +1,70 @@ +--- +name: integrate-game-art +description: "Plan, obtain, validate, and integrate DreamLayer artwork into a playable game while preserving its mechanics. Use when a game needs background, character, UI, or sprite files; not for gameplay-only work or another image service." +--- + +# Integrate game art + +Inspect the game before requesting art: engine and import settings, logical world units, +collision bodies, pivots, sprite dimensions, alpha requirements, animation timing, camera, +and asset paths. Separate visual dimensions from physics dimensions. Keep a playable +geometry baseline and record the behavior that must survive the artwork swap. + +Read the bundled [workflow contract](references/workflow-contract.md) for supported clients, +authentication, billing, polling, download, and recovery. Installation supplies instructions; +it does not connect or authenticate an MCP server. Inspect the actual available tool schema. +If the connected client lacks download or sprite fields, use the supported client from that +contract, or retain bundled assets and report the limitation. + +## Plan and obtain + +- Inventory reusable artwork and its license/provenance first. A downloaded sample is not + a new generation. Code-authored scenery should be labeled separately from DreamLayer art. +- Produce a dry-run asset plan with role, output path, dimensions/aspect, reference, operation, + transparency, and estimated credits. Read live capabilities and balance before paid work. + Track the total authorized cap across all operations, including cutouts and animation. + Reserve an unresolved job's estimated charge until its canonical status resolves it. +- For image operations use `generate-or-edit-image`; for animation use + `sprite-sheet-from-reference`, when installed. Both follow the bundled contract. If a task + skill is absent, use the contract and actual public schemas instead of inventing fields. +- Save request, idempotency key, execution ID, and event cursor locally without credentials. + Resume existing jobs after interruptions. Download to a new path and verify the file before + marking an asset available. Never rerun generation to repair a download failure. + +## Integrate and verify + +Inspect each image. Check decoded format, dimensions, actual transparent pixels, visual +coherence, ground anchor/pivot, frame order, and per-frame timing. Prefer a reviewed still +frame when animation details drift; disclose the decision. Use the delivered timing array +when it differs from a rounded duration label, and record the discrepancy. + +Keep collision and timing code independent of texture size. Add a baseline/artwork toggle +when useful for comparison. Validate both modes with the same deterministic input sequence, +then play a complete loop in the actual browser or engine. Test controls, pause/restart, +small screens, and reduced motion for decorative animation. For Godot/Unity use their +installed import skills; do not claim an engine was tested because its import files exist. + +Record file digests, dimensions, upstream revision or generation execution ID, transformations, +historical costs separately from new charges, and any unverified behavior. + +## Runnable example, no paid calls + +The [Relay garden example](https://github.com/TheDesignFounder/dreamlayer-game-assets) +bundles DreamLayer robot frames and a geometry mode. With Node.js 22.19+ on the 22.x line (or another REA-supported version): + +```sh +git clone https://github.com/TheDesignFounder/dreamlayer-game-assets.git +cd dreamlayer-game-assets +npm ci +npm test +npm run validate:assets +npm run art:plan +npm start +``` + +Open `http://127.0.0.1:4177/demo/`. No viewer key or credits are needed. Its plan script +submits nothing and defaults to a zero-credit cap. New generation uses the authenticated +canonical workflow above. The example's read-only recovery script never resubmits a job. + +Only when the task actually needs artifact investigation, read +[the REA companion](references/rea-investigation.md). Ordinary game artwork does not require REA. diff --git a/.cline/skills/integrate-game-art/references/rea-investigation.md b/.cline/skills/integrate-game-art/references/rea-investigation.md new file mode 100644 index 0000000..757271b --- /dev/null +++ b/.cline/skills/integrate-game-art/references/rea-investigation.md @@ -0,0 +1,27 @@ +# Optional REA investigation + +Use Reverse Engineer Anything when a shipped, compiled, or minified artifact helps answer +a bounded behavior question. If readable project source already answers the question, +inspect it directly. DreamLayer is an artwork tool, not a REA analysis provider. + +Record origin, version/revision, redistribution permission, SHA-256, and the exact question. +Preserve original bytes and keep analysis Evidence private until sanitized. Distinguish +REA observations, the agent's interpretation, runtime verification, and later source checks. + +Relay garden uses a self-authored minified JavaScript target. It is a controlled example, +not a recovered commercial game and not a blind evaluation. REA 6.5.0 locates a Math.hypot +read, its enclosing function, and a caller relation. The agent interprets the artifact's +formula; numeric runtime tests establish the bounded equivalence. REA reports partial +coverage and unresolved facts, which must remain in the account. + +```sh +# Inside the example after npm ci; the pinned REA CLI needs no native analysis engine. +npm run investigate +npm test +``` + +Full local Evidence is written under `.local/`. The public excerpt is not an importable +Evidence record. Read the example's `docs/rea-workflow.md` for exact commands and boundaries. +For REA MCP setup use [REA's official installation guide](https://github.com/morluto/rea/blob/main/docs/installation.md). +Do not claim CLI execution proves MCP registration. Installing this skill registers neither +REA nor DreamLayer. Do not modify upstream REA for the example. diff --git a/.cline/skills/integrate-game-art/references/workflow-contract.md b/.cline/skills/integrate-game-art/references/workflow-contract.md new file mode 100644 index 0000000..bd6ce94 --- /dev/null +++ b/.cline/skills/integrate-game-art/references/workflow-contract.md @@ -0,0 +1,46 @@ +# DreamLayer workflow contract + +Use the installed DreamLayer MCP tools, or the pinned CLI when MCP is unavailable. +Read the actual tool schema before calling. Never pass fields a client does not expose. + +## Setup +Requires Node.js >=22.12 and a DreamLayer API key from https://platform.dreamlayer.io. +Install the supported sprite-capable beta: `npm install -g dreamlayer@0.4.0-beta.4`. +MCP: `npx -y @dreamlayer/mcp@0.4.0-beta.5`. Supply DREAMLAYER_API_KEY to the server process using the host's secret settings. Never commit keys or put them in prompts. +The stable npm tag remains 0.3.0. Do not claim it supports this complete workflow. + +## Before paid work +1. Read dreamlayer_capabilities and dreamlayer_balance (or CLI capabilities/balance --json). If either fails, resolve it before spending. +2. Confirm the requested operation is advertised. Ordinary completed image operations currently cost one credit each; obtain the live cost from capabilities. A multi-step edit and cutout costs two operations. +3. Use the user's already-authorized operation, number of outputs and credit budget. Ask only if missing. Never buy credits or expand the batch implicitly. +4. For file operations, verify input readability and a new output path before submitting. Upload once using dreamlayer_upload_image; preserve its input_asset_id. +5. Save a unique idempotency_key and the complete request locally before each generation. Do not store credentials in the job record. + +## Execute and recover +Select operation explicitly: text_to_image; image_to_image; background_remove; upscale; sprite_sheet. +All except text_to_image require input_asset_id. Generate returns execution_id, status, asset, question and last_event_id. +Preserve IDs/cursor after each response. For running work, call dreamlayer_execution or dreamlayer_events; do not generate a replacement after a timeout. +A needs_input result is a question, not a failed generation. Continue using conversation_id and respond. +For completed work, dreamlayer_download writes an absolute new local path. Never treat a returned asset URL as proof that the local file exists. +On a local download error, repair the destination and download the same execution. +File-based CLI retries upload a new asset; use status and download after uncertainty rather than rerunning the paid command. +Stop at insufficient credits, invalid request, unsupported operation, or an unresolved contract error. Keep recoverable state; do not loop paid retries. + +## Output acceptance +Inspect the saved image or preview. Check dimensions, transparency if requested, text spelling, reference fidelity and the intended use. Label uninspected outputs. +PNG output does not establish SVG/vector structure, pixel-perfect art, trademark clearance, print compliance, exact product fidelity or consistent animation. +API documentation: https://docs.dreamlayer.io/agent-api +Recovery: https://docs.dreamlayer.io/agent-api/jobs-and-events + +## CLI examples +```sh +dreamlayer capabilities --json +dreamlayer balance --json +dreamlayer generate "Original image brief" --aspect 1:1 --idempotency-key UNIQUE_SAVED_KEY --out concept.png --json +dreamlayer edit reference.png "Change the background to a simple studio scene" --idempotency-key UNIQUE_SAVED_KEY --out edited.png --json +dreamlayer cutout reference.png --idempotency-key UNIQUE_SAVED_KEY --out cutout.png --json +dreamlayer status EXECUTION_ID --json +dreamlayer download EXECUTION_ID --out recovered.png --json +``` +Placeholder IDs and keys must be replaced. Check CLI --help for supported flags; --max-credits is for sprite jobs. + diff --git a/.github/skills/integrate-game-art/SKILL.md b/.github/skills/integrate-game-art/SKILL.md new file mode 100644 index 0000000..6f08a1e --- /dev/null +++ b/.github/skills/integrate-game-art/SKILL.md @@ -0,0 +1,70 @@ +--- +name: integrate-game-art +description: "Plan, obtain, validate, and integrate DreamLayer artwork into a playable game while preserving its mechanics. Use when a game needs background, character, UI, or sprite files; not for gameplay-only work or another image service." +--- + +# Integrate game art + +Inspect the game before requesting art: engine and import settings, logical world units, +collision bodies, pivots, sprite dimensions, alpha requirements, animation timing, camera, +and asset paths. Separate visual dimensions from physics dimensions. Keep a playable +geometry baseline and record the behavior that must survive the artwork swap. + +Read the bundled [workflow contract](references/workflow-contract.md) for supported clients, +authentication, billing, polling, download, and recovery. Installation supplies instructions; +it does not connect or authenticate an MCP server. Inspect the actual available tool schema. +If the connected client lacks download or sprite fields, use the supported client from that +contract, or retain bundled assets and report the limitation. + +## Plan and obtain + +- Inventory reusable artwork and its license/provenance first. A downloaded sample is not + a new generation. Code-authored scenery should be labeled separately from DreamLayer art. +- Produce a dry-run asset plan with role, output path, dimensions/aspect, reference, operation, + transparency, and estimated credits. Read live capabilities and balance before paid work. + Track the total authorized cap across all operations, including cutouts and animation. + Reserve an unresolved job's estimated charge until its canonical status resolves it. +- For image operations use `generate-or-edit-image`; for animation use + `sprite-sheet-from-reference`, when installed. Both follow the bundled contract. If a task + skill is absent, use the contract and actual public schemas instead of inventing fields. +- Save request, idempotency key, execution ID, and event cursor locally without credentials. + Resume existing jobs after interruptions. Download to a new path and verify the file before + marking an asset available. Never rerun generation to repair a download failure. + +## Integrate and verify + +Inspect each image. Check decoded format, dimensions, actual transparent pixels, visual +coherence, ground anchor/pivot, frame order, and per-frame timing. Prefer a reviewed still +frame when animation details drift; disclose the decision. Use the delivered timing array +when it differs from a rounded duration label, and record the discrepancy. + +Keep collision and timing code independent of texture size. Add a baseline/artwork toggle +when useful for comparison. Validate both modes with the same deterministic input sequence, +then play a complete loop in the actual browser or engine. Test controls, pause/restart, +small screens, and reduced motion for decorative animation. For Godot/Unity use their +installed import skills; do not claim an engine was tested because its import files exist. + +Record file digests, dimensions, upstream revision or generation execution ID, transformations, +historical costs separately from new charges, and any unverified behavior. + +## Runnable example, no paid calls + +The [Relay garden example](https://github.com/TheDesignFounder/dreamlayer-game-assets) +bundles DreamLayer robot frames and a geometry mode. With Node.js 22.19+ on the 22.x line (or another REA-supported version): + +```sh +git clone https://github.com/TheDesignFounder/dreamlayer-game-assets.git +cd dreamlayer-game-assets +npm ci +npm test +npm run validate:assets +npm run art:plan +npm start +``` + +Open `http://127.0.0.1:4177/demo/`. No viewer key or credits are needed. Its plan script +submits nothing and defaults to a zero-credit cap. New generation uses the authenticated +canonical workflow above. The example's read-only recovery script never resubmits a job. + +Only when the task actually needs artifact investigation, read +[the REA companion](references/rea-investigation.md). Ordinary game artwork does not require REA. diff --git a/.github/skills/integrate-game-art/references/rea-investigation.md b/.github/skills/integrate-game-art/references/rea-investigation.md new file mode 100644 index 0000000..757271b --- /dev/null +++ b/.github/skills/integrate-game-art/references/rea-investigation.md @@ -0,0 +1,27 @@ +# Optional REA investigation + +Use Reverse Engineer Anything when a shipped, compiled, or minified artifact helps answer +a bounded behavior question. If readable project source already answers the question, +inspect it directly. DreamLayer is an artwork tool, not a REA analysis provider. + +Record origin, version/revision, redistribution permission, SHA-256, and the exact question. +Preserve original bytes and keep analysis Evidence private until sanitized. Distinguish +REA observations, the agent's interpretation, runtime verification, and later source checks. + +Relay garden uses a self-authored minified JavaScript target. It is a controlled example, +not a recovered commercial game and not a blind evaluation. REA 6.5.0 locates a Math.hypot +read, its enclosing function, and a caller relation. The agent interprets the artifact's +formula; numeric runtime tests establish the bounded equivalence. REA reports partial +coverage and unresolved facts, which must remain in the account. + +```sh +# Inside the example after npm ci; the pinned REA CLI needs no native analysis engine. +npm run investigate +npm test +``` + +Full local Evidence is written under `.local/`. The public excerpt is not an importable +Evidence record. Read the example's `docs/rea-workflow.md` for exact commands and boundaries. +For REA MCP setup use [REA's official installation guide](https://github.com/morluto/rea/blob/main/docs/installation.md). +Do not claim CLI execution proves MCP registration. Installing this skill registers neither +REA nor DreamLayer. Do not modify upstream REA for the example. diff --git a/.github/skills/integrate-game-art/references/workflow-contract.md b/.github/skills/integrate-game-art/references/workflow-contract.md new file mode 100644 index 0000000..bd6ce94 --- /dev/null +++ b/.github/skills/integrate-game-art/references/workflow-contract.md @@ -0,0 +1,46 @@ +# DreamLayer workflow contract + +Use the installed DreamLayer MCP tools, or the pinned CLI when MCP is unavailable. +Read the actual tool schema before calling. Never pass fields a client does not expose. + +## Setup +Requires Node.js >=22.12 and a DreamLayer API key from https://platform.dreamlayer.io. +Install the supported sprite-capable beta: `npm install -g dreamlayer@0.4.0-beta.4`. +MCP: `npx -y @dreamlayer/mcp@0.4.0-beta.5`. Supply DREAMLAYER_API_KEY to the server process using the host's secret settings. Never commit keys or put them in prompts. +The stable npm tag remains 0.3.0. Do not claim it supports this complete workflow. + +## Before paid work +1. Read dreamlayer_capabilities and dreamlayer_balance (or CLI capabilities/balance --json). If either fails, resolve it before spending. +2. Confirm the requested operation is advertised. Ordinary completed image operations currently cost one credit each; obtain the live cost from capabilities. A multi-step edit and cutout costs two operations. +3. Use the user's already-authorized operation, number of outputs and credit budget. Ask only if missing. Never buy credits or expand the batch implicitly. +4. For file operations, verify input readability and a new output path before submitting. Upload once using dreamlayer_upload_image; preserve its input_asset_id. +5. Save a unique idempotency_key and the complete request locally before each generation. Do not store credentials in the job record. + +## Execute and recover +Select operation explicitly: text_to_image; image_to_image; background_remove; upscale; sprite_sheet. +All except text_to_image require input_asset_id. Generate returns execution_id, status, asset, question and last_event_id. +Preserve IDs/cursor after each response. For running work, call dreamlayer_execution or dreamlayer_events; do not generate a replacement after a timeout. +A needs_input result is a question, not a failed generation. Continue using conversation_id and respond. +For completed work, dreamlayer_download writes an absolute new local path. Never treat a returned asset URL as proof that the local file exists. +On a local download error, repair the destination and download the same execution. +File-based CLI retries upload a new asset; use status and download after uncertainty rather than rerunning the paid command. +Stop at insufficient credits, invalid request, unsupported operation, or an unresolved contract error. Keep recoverable state; do not loop paid retries. + +## Output acceptance +Inspect the saved image or preview. Check dimensions, transparency if requested, text spelling, reference fidelity and the intended use. Label uninspected outputs. +PNG output does not establish SVG/vector structure, pixel-perfect art, trademark clearance, print compliance, exact product fidelity or consistent animation. +API documentation: https://docs.dreamlayer.io/agent-api +Recovery: https://docs.dreamlayer.io/agent-api/jobs-and-events + +## CLI examples +```sh +dreamlayer capabilities --json +dreamlayer balance --json +dreamlayer generate "Original image brief" --aspect 1:1 --idempotency-key UNIQUE_SAVED_KEY --out concept.png --json +dreamlayer edit reference.png "Change the background to a simple studio scene" --idempotency-key UNIQUE_SAVED_KEY --out edited.png --json +dreamlayer cutout reference.png --idempotency-key UNIQUE_SAVED_KEY --out cutout.png --json +dreamlayer status EXECUTION_ID --json +dreamlayer download EXECUTION_ID --out recovered.png --json +``` +Placeholder IDs and keys must be replaced. Check CLI --help for supported flags; --max-credits is for sprite jobs. + diff --git a/README.md b/README.md index fd90e9b..b91a4ce 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,7 @@ See [client setup](docs/client-setup.md) for Claude Code, Codex, Cursor, OpenCod | Ads and social posts | marketing-image-variations | Creative files, no ad publishing | | Repeated photo operations | batch-photo-editing | Per-file jobs with a total budget | | Sprite animations | sprite-sheet-from-reference | Beta ZIP, PNG frames, atlas and preview | +| Game artwork integration | integrate-game-art | Asset plan, provenance, baseline/art comparison, browser verification | | Godot / Unity | godot-sprite-import / unity-sprite-import | Local engine import examples | ## Cost and recovery @@ -48,3 +49,9 @@ Nothing is symlinked, so the layout survives Windows checkouts and archive downl [Support](mailto:Mackenzie@dreamlayer.io) · [Terms](https://dreamlayer.io/terms) · [Privacy](https://dreamlayer.io/privacy) + +## Playable example + +[Relay garden](https://github.com/TheDesignFounder/dreamlayer-game-assets) combines a real REA CLI investigation of a controlled minified game with reused DreamLayer robot artwork. Play with bundled files, compare geometry and artwork, and reproduce the movement tests without credits. + +Install the companion workflow with `npx skills add TheDesignFounder/dreamlayer-agent-plugin --skill integrate-game-art`. REA is optional for ordinary artwork tasks. diff --git a/clawhub/dreamlayer-image-workflows/SKILL.md b/clawhub/dreamlayer-image-workflows/SKILL.md index fe8d7ba..7870496 100644 --- a/clawhub/dreamlayer-image-workflows/SKILL.md +++ b/clawhub/dreamlayer-image-workflows/SKILL.md @@ -72,6 +72,7 @@ under `plugins/dreamlayer/skills/`. Read the matching one and follow it rather t | A bounded batch of the same edit across several photos | `batch-photo-editing` | | A sprite sheet from one reference | `sprite-sheet-from-reference` | | Importing a finished sprite ZIP into Godot 4 | `godot-sprite-import` | +| Integrating game artwork without changing mechanics | `integrate-game-art` | | Preparing a sprite ZIP for Unity 2D | `unity-sprite-import` | All of them share one contract: [`docs/workflow-contract.md`](https://github.com/TheDesignFounder/dreamlayer-agent-plugin/blob/main/docs/workflow-contract.md). diff --git a/docs/cline-setup.md b/docs/cline-setup.md index 19cc469..2226a01 100644 --- a/docs/cline-setup.md +++ b/docs/cline-setup.md @@ -4,7 +4,7 @@ Use DreamLayer when a task needs actual image files: an original image, a raster ## Install the skills -This repository carries the nine workflows in `.cline/skills/`, the project path Cline recommends and expects teams to commit. +This repository carries the ten workflows in `.cline/skills/`, the project path Cline recommends and expects teams to commit. ```sh git clone https://github.com/TheDesignFounder/dreamlayer-agent-plugin.git @@ -25,10 +25,10 @@ Confirm discovery from your project root: cline config skills ``` -Nine DreamLayer entries appear under `Enabled skills:` with their paths. Pass the section name, +Ten DreamLayer entries appear under `Enabled skills:` with their paths. Pass the section name, because plain `cline config` opens an interactive view and needs a terminal. In the IDE extension, open the Skills tab from the scale icon at the bottom of the Cline panel. -## The nine workflows +## The ten workflows | Workflow | Makes | | --- | --- | @@ -40,6 +40,7 @@ because plain `cline config` opens an interactive view and needs a terminal. In | batch-photo-editing | One edit, cutout or upscale applied across a list of files, with a budget | | sprite-sheet-from-reference | A sprite-sheet ZIP of transparent frames, atlas and preview | | godot-sprite-import | A runnable Godot 4 demo from a downloaded sprite ZIP | +| integrate-game-art | Integrate game artwork while preserving mechanics; includes a free browser example | | unity-sprite-import | Unity 2D import files and a frame player from a downloaded sprite ZIP | ## Connect the tools @@ -93,4 +94,4 @@ Sprite output is beta. A PNG does not establish vector structure, pixel-perfect ## Validated -Cline CLI 3.0.65 reported all nine workflows under `Enabled skills:` from `.cline/skills/` in a clean profile, with the generated README ignored, `cline skill add` installed the same nine to `.agents/skills/` and listed them as Cline skills, and `cline config mcp` listed the pinned stdio server after the settings file was written. No generation was run and no credits were spent. +Cline CLI 3.0.65 reported all ten workflows under `Enabled skills:` from `.cline/skills/` in a clean profile, with the generated README ignored, `cline skill add` installed the same nine to `.agents/skills/` and listed them as Cline skills, and `cline config mcp` listed the pinned stdio server after the settings file was written. No generation was run and no credits were spent. diff --git a/docs/copilot-setup.md b/docs/copilot-setup.md index 8759903..3b51000 100644 --- a/docs/copilot-setup.md +++ b/docs/copilot-setup.md @@ -4,7 +4,7 @@ Use DreamLayer when a task needs actual image files: an original image, a raster ## Install the skills -This repository already carries the nine workflows in `.github/skills/`, which Copilot reads as project skills. Copilot also reads `.agents/skills/` and `.claude/skills/`, and this repository generates `.agents/skills/` from the same source. +This repository already carries the ten workflows in `.github/skills/`, which Copilot reads as project skills. Copilot also reads `.agents/skills/` and `.claude/skills/`, and this repository generates `.agents/skills/` from the same source. ```sh git clone https://github.com/TheDesignFounder/dreamlayer-agent-plugin.git @@ -19,9 +19,9 @@ Confirm discovery from your project root: copilot skill list ``` -Nine DreamLayer entries appear under `Project skills:`. `copilot skill disable ` hides one you do not want. +Ten DreamLayer entries appear under `Project skills:`. `copilot skill disable ` hides one you do not want. -## The nine workflows +## The ten workflows | Workflow | Makes | | --- | --- | @@ -33,6 +33,7 @@ Nine DreamLayer entries appear under `Project skills:`. `copilot skill disable < | batch-photo-editing | One edit, cutout or upscale applied across a list of files, with a budget | | sprite-sheet-from-reference | A sprite-sheet ZIP of transparent frames, atlas and preview | | godot-sprite-import | A runnable Godot 4 demo from a downloaded sprite ZIP | +| integrate-game-art | Integrate game artwork while preserving mechanics; includes a free browser example | | unity-sprite-import | Unity 2D import files and a frame player from a downloaded sprite ZIP | ## Connect the tools @@ -83,4 +84,4 @@ Sprite output is beta. A PNG does not establish vector structure, pixel-perfect ## Validated -GitHub Copilot CLI 1.0.88 listed all nine workflows from `.github/skills/` in a clean profile with no sign-in, and `copilot mcp add` plus `copilot mcp list` registered the pinned server with the key masked in the output. No generation was run and no credits were spent. +GitHub Copilot CLI 1.0.88 listed all ten workflows from `.github/skills/` in a clean profile with no sign-in, and `copilot mcp add` plus `copilot mcp list` registered the pinned server with the key masked in the output. No generation was run and no credits were spent. diff --git a/packaging/openai/dreamlayer-skills-1.0.0.zip b/packaging/openai/dreamlayer-skills-1.0.0.zip index a12bf6c0f179e04943a72816f1c212d54e27b4ea..3504517f7abf5d65db26973560cb68eab692a450 100644 GIT binary patch delta 3444 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 U?gU{$Al{QTc>=xq5x-0S0kCgR8~^|S delta 225 zcmdlvi)q4V#tlhYo8Q_Pdrh|MkeY1O&OMpMR(Wz%kIdxEPCll~I+K6fs7#(`FF)C# zTVQg!n*a|36f9vpXFOT4GmJ^o3`nU=p4;ikq+&bSwo7sH8-EV43A$Z;OpEM+LRn0+ z+$K9lYJo-H14Zw70J%z&mq&xl)ndBtKe;YRcXD^D%;W{>EJ#-T4gpH2PJY$x$@D#X s^8a$#$@XnVOet|-=7cs+rifG^(^M?Lo0SdZE>R#nz|O$1s}RHk04PUHO8@`> diff --git a/plugins/dreamlayer/skills/integrate-game-art/SKILL.md b/plugins/dreamlayer/skills/integrate-game-art/SKILL.md new file mode 100644 index 0000000..6f08a1e --- /dev/null +++ b/plugins/dreamlayer/skills/integrate-game-art/SKILL.md @@ -0,0 +1,70 @@ +--- +name: integrate-game-art +description: "Plan, obtain, validate, and integrate DreamLayer artwork into a playable game while preserving its mechanics. Use when a game needs background, character, UI, or sprite files; not for gameplay-only work or another image service." +--- + +# Integrate game art + +Inspect the game before requesting art: engine and import settings, logical world units, +collision bodies, pivots, sprite dimensions, alpha requirements, animation timing, camera, +and asset paths. Separate visual dimensions from physics dimensions. Keep a playable +geometry baseline and record the behavior that must survive the artwork swap. + +Read the bundled [workflow contract](references/workflow-contract.md) for supported clients, +authentication, billing, polling, download, and recovery. Installation supplies instructions; +it does not connect or authenticate an MCP server. Inspect the actual available tool schema. +If the connected client lacks download or sprite fields, use the supported client from that +contract, or retain bundled assets and report the limitation. + +## Plan and obtain + +- Inventory reusable artwork and its license/provenance first. A downloaded sample is not + a new generation. Code-authored scenery should be labeled separately from DreamLayer art. +- Produce a dry-run asset plan with role, output path, dimensions/aspect, reference, operation, + transparency, and estimated credits. Read live capabilities and balance before paid work. + Track the total authorized cap across all operations, including cutouts and animation. + Reserve an unresolved job's estimated charge until its canonical status resolves it. +- For image operations use `generate-or-edit-image`; for animation use + `sprite-sheet-from-reference`, when installed. Both follow the bundled contract. If a task + skill is absent, use the contract and actual public schemas instead of inventing fields. +- Save request, idempotency key, execution ID, and event cursor locally without credentials. + Resume existing jobs after interruptions. Download to a new path and verify the file before + marking an asset available. Never rerun generation to repair a download failure. + +## Integrate and verify + +Inspect each image. Check decoded format, dimensions, actual transparent pixels, visual +coherence, ground anchor/pivot, frame order, and per-frame timing. Prefer a reviewed still +frame when animation details drift; disclose the decision. Use the delivered timing array +when it differs from a rounded duration label, and record the discrepancy. + +Keep collision and timing code independent of texture size. Add a baseline/artwork toggle +when useful for comparison. Validate both modes with the same deterministic input sequence, +then play a complete loop in the actual browser or engine. Test controls, pause/restart, +small screens, and reduced motion for decorative animation. For Godot/Unity use their +installed import skills; do not claim an engine was tested because its import files exist. + +Record file digests, dimensions, upstream revision or generation execution ID, transformations, +historical costs separately from new charges, and any unverified behavior. + +## Runnable example, no paid calls + +The [Relay garden example](https://github.com/TheDesignFounder/dreamlayer-game-assets) +bundles DreamLayer robot frames and a geometry mode. With Node.js 22.19+ on the 22.x line (or another REA-supported version): + +```sh +git clone https://github.com/TheDesignFounder/dreamlayer-game-assets.git +cd dreamlayer-game-assets +npm ci +npm test +npm run validate:assets +npm run art:plan +npm start +``` + +Open `http://127.0.0.1:4177/demo/`. No viewer key or credits are needed. Its plan script +submits nothing and defaults to a zero-credit cap. New generation uses the authenticated +canonical workflow above. The example's read-only recovery script never resubmits a job. + +Only when the task actually needs artifact investigation, read +[the REA companion](references/rea-investigation.md). Ordinary game artwork does not require REA. diff --git a/plugins/dreamlayer/skills/integrate-game-art/references/rea-investigation.md b/plugins/dreamlayer/skills/integrate-game-art/references/rea-investigation.md new file mode 100644 index 0000000..757271b --- /dev/null +++ b/plugins/dreamlayer/skills/integrate-game-art/references/rea-investigation.md @@ -0,0 +1,27 @@ +# Optional REA investigation + +Use Reverse Engineer Anything when a shipped, compiled, or minified artifact helps answer +a bounded behavior question. If readable project source already answers the question, +inspect it directly. DreamLayer is an artwork tool, not a REA analysis provider. + +Record origin, version/revision, redistribution permission, SHA-256, and the exact question. +Preserve original bytes and keep analysis Evidence private until sanitized. Distinguish +REA observations, the agent's interpretation, runtime verification, and later source checks. + +Relay garden uses a self-authored minified JavaScript target. It is a controlled example, +not a recovered commercial game and not a blind evaluation. REA 6.5.0 locates a Math.hypot +read, its enclosing function, and a caller relation. The agent interprets the artifact's +formula; numeric runtime tests establish the bounded equivalence. REA reports partial +coverage and unresolved facts, which must remain in the account. + +```sh +# Inside the example after npm ci; the pinned REA CLI needs no native analysis engine. +npm run investigate +npm test +``` + +Full local Evidence is written under `.local/`. The public excerpt is not an importable +Evidence record. Read the example's `docs/rea-workflow.md` for exact commands and boundaries. +For REA MCP setup use [REA's official installation guide](https://github.com/morluto/rea/blob/main/docs/installation.md). +Do not claim CLI execution proves MCP registration. Installing this skill registers neither +REA nor DreamLayer. Do not modify upstream REA for the example. diff --git a/plugins/dreamlayer/skills/integrate-game-art/references/workflow-contract.md b/plugins/dreamlayer/skills/integrate-game-art/references/workflow-contract.md new file mode 100644 index 0000000..bd6ce94 --- /dev/null +++ b/plugins/dreamlayer/skills/integrate-game-art/references/workflow-contract.md @@ -0,0 +1,46 @@ +# DreamLayer workflow contract + +Use the installed DreamLayer MCP tools, or the pinned CLI when MCP is unavailable. +Read the actual tool schema before calling. Never pass fields a client does not expose. + +## Setup +Requires Node.js >=22.12 and a DreamLayer API key from https://platform.dreamlayer.io. +Install the supported sprite-capable beta: `npm install -g dreamlayer@0.4.0-beta.4`. +MCP: `npx -y @dreamlayer/mcp@0.4.0-beta.5`. Supply DREAMLAYER_API_KEY to the server process using the host's secret settings. Never commit keys or put them in prompts. +The stable npm tag remains 0.3.0. Do not claim it supports this complete workflow. + +## Before paid work +1. Read dreamlayer_capabilities and dreamlayer_balance (or CLI capabilities/balance --json). If either fails, resolve it before spending. +2. Confirm the requested operation is advertised. Ordinary completed image operations currently cost one credit each; obtain the live cost from capabilities. A multi-step edit and cutout costs two operations. +3. Use the user's already-authorized operation, number of outputs and credit budget. Ask only if missing. Never buy credits or expand the batch implicitly. +4. For file operations, verify input readability and a new output path before submitting. Upload once using dreamlayer_upload_image; preserve its input_asset_id. +5. Save a unique idempotency_key and the complete request locally before each generation. Do not store credentials in the job record. + +## Execute and recover +Select operation explicitly: text_to_image; image_to_image; background_remove; upscale; sprite_sheet. +All except text_to_image require input_asset_id. Generate returns execution_id, status, asset, question and last_event_id. +Preserve IDs/cursor after each response. For running work, call dreamlayer_execution or dreamlayer_events; do not generate a replacement after a timeout. +A needs_input result is a question, not a failed generation. Continue using conversation_id and respond. +For completed work, dreamlayer_download writes an absolute new local path. Never treat a returned asset URL as proof that the local file exists. +On a local download error, repair the destination and download the same execution. +File-based CLI retries upload a new asset; use status and download after uncertainty rather than rerunning the paid command. +Stop at insufficient credits, invalid request, unsupported operation, or an unresolved contract error. Keep recoverable state; do not loop paid retries. + +## Output acceptance +Inspect the saved image or preview. Check dimensions, transparency if requested, text spelling, reference fidelity and the intended use. Label uninspected outputs. +PNG output does not establish SVG/vector structure, pixel-perfect art, trademark clearance, print compliance, exact product fidelity or consistent animation. +API documentation: https://docs.dreamlayer.io/agent-api +Recovery: https://docs.dreamlayer.io/agent-api/jobs-and-events + +## CLI examples +```sh +dreamlayer capabilities --json +dreamlayer balance --json +dreamlayer generate "Original image brief" --aspect 1:1 --idempotency-key UNIQUE_SAVED_KEY --out concept.png --json +dreamlayer edit reference.png "Change the background to a simple studio scene" --idempotency-key UNIQUE_SAVED_KEY --out edited.png --json +dreamlayer cutout reference.png --idempotency-key UNIQUE_SAVED_KEY --out cutout.png --json +dreamlayer status EXECUTION_ID --json +dreamlayer download EXECUTION_ID --out recovered.png --json +``` +Placeholder IDs and keys must be replaced. Check CLI --help for supported flags; --max-credits is for sprite jobs. + diff --git a/scripts/validate.py b/scripts/validate.py index e5520c5..15f2388 100644 --- a/scripts/validate.py +++ b/scripts/validate.py @@ -19,7 +19,7 @@ if 'node_modules' not in path.parts: json.loads(path.read_text()) config=json.loads((ROOT/'plugins/dreamlayer/.mcp.json').read_text()) assert config['mcpServers']['dreamlayer']['args']==['-y','@dreamlayer/mcp@0.4.0-beta.5'] -assert len(skills)==9 +assert len(skills)==10 clawhub=ROOT/'clawhub/dreamlayer-image-workflows/SKILL.md' text=clawhub.read_text() From 7bc11ad78e5238d5acec01dfd5ea584a5d371f87 Mon Sep 17 00:00:00 2001 From: TheDesignFounder Date: Fri, 16 Oct 2026 06:09:15 -0400 Subject: [PATCH 2/2] Refresh the game artwork example provenance --- .agents/skills/integrate-game-art/SKILL.md | 2 +- .cline/skills/integrate-game-art/SKILL.md | 2 +- .github/skills/integrate-game-art/SKILL.md | 2 +- README.md | 2 +- packaging/openai/dreamlayer-skills-1.0.0.zip | Bin 36153 -> 36176 bytes .../skills/integrate-game-art/SKILL.md | 2 +- 6 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.agents/skills/integrate-game-art/SKILL.md b/.agents/skills/integrate-game-art/SKILL.md index 6f08a1e..943b7f4 100644 --- a/.agents/skills/integrate-game-art/SKILL.md +++ b/.agents/skills/integrate-game-art/SKILL.md @@ -50,7 +50,7 @@ historical costs separately from new charges, and any unverified behavior. ## Runnable example, no paid calls The [Relay garden example](https://github.com/TheDesignFounder/dreamlayer-game-assets) -bundles DreamLayer robot frames and a geometry mode. With Node.js 22.19+ on the 22.x line (or another REA-supported version): +bundles an original DreamLayer environment, six matching game objects, and a geometry mode. With Node.js 22.19+ on the 22.x line (or another REA-supported version): ```sh git clone https://github.com/TheDesignFounder/dreamlayer-game-assets.git diff --git a/.cline/skills/integrate-game-art/SKILL.md b/.cline/skills/integrate-game-art/SKILL.md index 6f08a1e..943b7f4 100644 --- a/.cline/skills/integrate-game-art/SKILL.md +++ b/.cline/skills/integrate-game-art/SKILL.md @@ -50,7 +50,7 @@ historical costs separately from new charges, and any unverified behavior. ## Runnable example, no paid calls The [Relay garden example](https://github.com/TheDesignFounder/dreamlayer-game-assets) -bundles DreamLayer robot frames and a geometry mode. With Node.js 22.19+ on the 22.x line (or another REA-supported version): +bundles an original DreamLayer environment, six matching game objects, and a geometry mode. With Node.js 22.19+ on the 22.x line (or another REA-supported version): ```sh git clone https://github.com/TheDesignFounder/dreamlayer-game-assets.git diff --git a/.github/skills/integrate-game-art/SKILL.md b/.github/skills/integrate-game-art/SKILL.md index 6f08a1e..943b7f4 100644 --- a/.github/skills/integrate-game-art/SKILL.md +++ b/.github/skills/integrate-game-art/SKILL.md @@ -50,7 +50,7 @@ historical costs separately from new charges, and any unverified behavior. ## Runnable example, no paid calls The [Relay garden example](https://github.com/TheDesignFounder/dreamlayer-game-assets) -bundles DreamLayer robot frames and a geometry mode. With Node.js 22.19+ on the 22.x line (or another REA-supported version): +bundles an original DreamLayer environment, six matching game objects, and a geometry mode. With Node.js 22.19+ on the 22.x line (or another REA-supported version): ```sh git clone https://github.com/TheDesignFounder/dreamlayer-game-assets.git diff --git a/README.md b/README.md index b91a4ce..5921fbd 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,6 @@ Nothing is symlinked, so the layout survives Windows checkouts and archive downl ## Playable example -[Relay garden](https://github.com/TheDesignFounder/dreamlayer-game-assets) combines a real REA CLI investigation of a controlled minified game with reused DreamLayer robot artwork. Play with bundled files, compare geometry and artwork, and reproduce the movement tests without credits. +[Relay garden](https://github.com/TheDesignFounder/dreamlayer-game-assets) combines a real REA CLI investigation of a controlled minified game with an original DreamLayer environment and six matching game objects. The art pass used three credits; play with bundled files, compare geometry and artwork, and reproduce the movement tests without credits. Install the companion workflow with `npx skills add TheDesignFounder/dreamlayer-agent-plugin --skill integrate-game-art`. REA is optional for ordinary artwork tasks. diff --git a/packaging/openai/dreamlayer-skills-1.0.0.zip b/packaging/openai/dreamlayer-skills-1.0.0.zip index 3504517f7abf5d65db26973560cb68eab692a450..a1f25ed58002223758ad26b56de9043b628cd696 100644 GIT binary patch delta 2108 zcmV-C2*dZengY<80M3>6PT2;3r@#5=jIVTPv$6R9WSs4>yVAz@*TedKBs2cgTqtUoIEVPi zAA^53dUEDsT1T4g>+@jobBdHGo~%D=o0A@?8;rMIYV_yCd&uLU?Ds@{(yi$pk1@=? zuQaws(`Aa4{(KL|qE1t^aNz*U>7Di=>jPH#INx0d?=D(A!m7dN0Z!V{97&549W~#m z8VOM^^!*l)+|Joh_dZS3WsP%XwI$dm9qE5RGo{QyVBei4f3%)TUdAcJ4D*>kr%JnU zw4HJ6hU@k05p|`y;G9j!vTj3f3EL)n3iz@{)Z39fZ@`jq(_rLI8wtz24LKVPmq}+k z;vysm{zX$McETjwuP2iSO$-#J1q_7WRc}On5@S+Aq6usd?NY00wbNx)F|~pW;uqsI_mWo{(5lX zth?Yd7x~whkq#8eca(PP*LwZhjQuMqb($y6H%xTSN@|puVcBOSo%2)a)*{!Op(!js z`f&Cxn7-PgI8nSbfI!N|xsq4543mEeU`{#C9WSPL%4QtLDq{`ac!mdq>v}2YM*r)F zj{-4@Vs=9jeCHaNld(>ykwb7gbpws2QTGSgwAkH((hej@o7>NTPp$_X=2Y_h`*f5F zb4}EmI^j(u=Jb|+!An}QA^2ru4#>)q43zA}3(ayMdx|0`RU@<$ZV3QJq&a^{Kx?Um z3^3}zGM{KSMP%6<)DvFElpFp177<)XW}I-^N@kS?_&lBUkvu>xF6bXZ50OHi!9eWq z_|rwFA~Cz^fU{i;309oDx&(Y!-?_PGz3S$Su*yA~ zh_K-Y(PaVe>><*@onZ58XunOj?n8p1o-?5Cq`Vzu)r-J^J9$oeISP{yE;WBEq#kx0 zE6T0TZ2F-=HKVghk1(DdArTBc(YKnLriiI39ZR(for z)##t#CaVZ@=gLvG4*f7TGPTw#4>&bPDjIU_ve&z>eU?l&6tsZu0|Dqg#F^y*J^>Ha z^S)RLa%CH+YM;pAQ)zY3ykRA1nIUj%2fFN}+g8vAZtCb^JW{YjfM|bR7E4=gpcM== z&HeXe>CE~9=sQ(*m3d{uYR|IjpwtK}zk{=>b78>}B9V??2A#6P^k*?EmqDJQxu}9= zv>AKA%}bNU{p>&X_Vbc#(YxyRjhOG`8USL*xb*Ssu)%wmyEv^tNlz1b#uNiM(^E#J zbb_2fo_nNgYxuiW*K>b39x)M!m*B}^c0$-LjHrQ49N@o~NfE;hKsMs0RAg0J6z2_z zq6j}2xEm;!xS^E^tkIvqvqIazIG7Av z+(D8u+^RJ6P&Rl(`XqJ&ybA_mx$X|#~zB3E{A27Eu5A~Nh&MM?ClY!(sL5b6Q&b1 zIKihBnFru2C7&ydaHVibj;jIJpnb4@cLB!#(377qGXZ^*(=aA~ox2*sx5zT$x#|1l zPc{ZWinu5H1Z~URz%-DlKD1w8+IAFjsAs^`xF2Cn)I7D&FjDXNr!?%{Pm<| z9DaH8zQtMb#RJ1hS&(Bub8 z_44<0dpJp9OlaD{zU>I1|<@7Yaw`TEV<=Fj-|`tG~eZ{P0F%EE4sRuHrZ zW8{v;;9Djf7%gu&?#K7|Tc)e>yi{p!N8ZC3D?J9W(80_Oi_)WhqZsO9iU%8RIk)2= z(=Qb*xS70rbsa~x7lmmtctRP54VB;Wlw$hwJY2{B#WlE5Tw2@eqT#j*bbpYyBrB5) zUzi*g8NzaTsv>Rnz|#T`0uZ+2@&Mtx)E7PlWE7$F`0(t7gFW@LWBkHt^oNL{&BV+0 zCKUBc z12&UzDjbs!h)DwWJd^u8ER$M{9Fu8@4gqzOv50N~aFZa3R|3mOlOc&Dlbwl40>)31 zJ&GZd>`w@jT8tc%Es72SM3X#WfJNnQoK+cO8>IhB5*Mag+ad m9g~oTNdo$JlmB-$7EntC1^@s602lxm0Nw}y09=Fs0001&^bfHB delta 2080 zcmV+*2;cY6ngY3+0tX#qk{SPLE)+FPoI`x% zk3oMMJvnnRts~9$^?9)PIYmkoPu3r`%}I~c4aVCpHTrYnJ>+pv_Isi}>DF|Q#~5bc zR~lQR=`zJif4+xfQKu9%v z+Riw3!}WUhh`Lf;aLy)VS+}9Lgl&^O1$g`CLH(<%QX)to9jf7?1hMbLt%cQd% zaS@UO|DvfBJ7E&;*OSQu^7=DPM&dfzG{cdrX?=)c)YEWDD8S8nqyIrP-4swADU5%V z;|1kNm;OkZtLoG4xzKpItu7%8mYZiwG_xGfp^dC9_Hce4ftwNFJaT7xed`he#pMU?BE) z{OO|85N7bIg}bID4kj&l2lXZT=layZ>yI(?GyE{RkC!^mekBYCc(!@aF*xX4nDaCj z9#uE=*cqv3r8k6P>$Lb;!FPY;86`LT=~6JpVgbH#UEn;@(rDp;V}f*MG61Q~j5glg z8Yg*L)Mhfa7Zqz@`x9#TDCNl^Gm<1B_BS?dz}YT_1S`&6T>?I=@7&z8UUhRuSmmBg zMA-0y=(2!!_7LgdPO$lFXunRk?n8p1o-?5Cq`Vzu)r-J^J9$oeISP{yE;WA+QV%3R*z-fdKR#;>_{@pMZzz zd0#9Axv~vZwNK>mskAz1-mnt1%n-P>16_8~Z7b*lH+A$d9x2!%K(v1@i>0kL&mo%OFqDTvWj_ z+KfHm=A}vFe)b=G`*}&W=w0>uM$C6|4FEA@T>AKR*xPG>p6cMkC+I=OYr0{J0WZrM%2J24)EX0q=?}LARBR0DzYjqit~m< zQG_21+zxKA%qC_D*Gh3KmDvOLvt5VX;6j+N^R|n&F`OY<+|bGd*62^*S)pxU983l- z?jT7S?pG>}ER38W5&%i+xE1v9Qj*G{Fy=VNB8IC%ije(1^dVmFK4XTvtQujX+H_|d z{#Z{ikM^OA3C`G&X|#-qXUIl|OT=xfV-H11m%}p47Ea5gB$X9r_V$QV={X7J3DXH0 zoZwT6%meV1lFt=JxKg+z$JKyq&^}ndy8z?=*OQ+xGXZ&%(=aA~J>B;D7+QV~Fin?k zr?)AVA=&8vFeHECpT8#k=1ueZZ-3FD01SUUX_<3h-n<+he)zV&PFP3*=lj*2Qv3Zr z4GNB<)&Yn9d?*c$s17Xu!>`IuqwcKy#|V-itikKs?Cxft%r$tO@KhrULIUWUnbfQb$Pw3CmCZUV1QlVDOI zlOT#R0xeRLU{XMnAdC=`N?8yK0000000000qyZ(9zlv1?X