Unreal Material and VFX Workflow
flopperam/unreal-engine-mcp
Walks an Unreal Engine MCP agent through building materials, Niagara particle systems, Chaos destruction, and curve assets with inspect-then-edit steps.
Rewrite DreamShaderLang 1.x sources (.dsm / .dsf / .dsh) as 2.0 .dss with dsc migrate, which proves each rewrite builds the same graph before it writes anything.
$ npx skills add TypeDreamMoon/DreamShader --skill dream-shader-migrate -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install TypeDreamMoon/DreamShader dream-shader-migrate --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/TypeDreamMoon/DreamShader.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.skill/dream-shader-migrate .claude/skills/dream-shader-migrate && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "dream-shader-migrate" agent skill from https://github.com/TypeDreamMoon/DreamShader/tree/main/.skill/dream-shader-migrate into .claude/skills/dream-shader-migrate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dream-shader-migrate", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/TypeDreamMoon/DreamShader/tree/main/.skill/dream-shader-migrateType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add TypeDreamMoon/DreamShader --skill dream-shader-migrate -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install TypeDreamMoon/DreamShader dream-shader-migrate --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TypeDreamMoon/DreamShader.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.skill/dream-shader-migrate .agents/skills/dream-shader-migrate && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "dream-shader-migrate" agent skill from https://github.com/TypeDreamMoon/DreamShader/tree/main/.skill/dream-shader-migrate into .agents/skills/dream-shader-migrate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dream-shader-migrate", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add TypeDreamMoon/DreamShader --skill dream-shader-migrate -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install TypeDreamMoon/DreamShader dream-shader-migrate --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TypeDreamMoon/DreamShader.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.skill/dream-shader-migrate .cursor/skills/dream-shader-migrate && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "dream-shader-migrate" agent skill from https://github.com/TypeDreamMoon/DreamShader/tree/main/.skill/dream-shader-migrate into .cursor/skills/dream-shader-migrate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dream-shader-migrate", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/TypeDreamMoon/DreamShader.git --path .skill/dream-shader-migrate--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add TypeDreamMoon/DreamShader --skill dream-shader-migrate -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install TypeDreamMoon/DreamShader dream-shader-migrate --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TypeDreamMoon/DreamShader.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.skill/dream-shader-migrate .gemini/skills/dream-shader-migrate && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "dream-shader-migrate" agent skill from https://github.com/TypeDreamMoon/DreamShader/tree/main/.skill/dream-shader-migrate into .gemini/skills/dream-shader-migrate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dream-shader-migrate", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install TypeDreamMoon/DreamShader dream-shader-migrateInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add TypeDreamMoon/DreamShader --skill dream-shader-migrate -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/TypeDreamMoon/DreamShader.git skills-src && mkdir -p .github/skills && cp -r skills-src/.skill/dream-shader-migrate .github/skills/dream-shader-migrate && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "dream-shader-migrate" agent skill from https://github.com/TypeDreamMoon/DreamShader/tree/main/.skill/dream-shader-migrate into .github/skills/dream-shader-migrate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dream-shader-migrate", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add TypeDreamMoon/DreamShader --skill dream-shader-migrate -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install TypeDreamMoon/DreamShader dream-shader-migrate --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TypeDreamMoon/DreamShader.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.skill/dream-shader-migrate .opencode/skills/dream-shader-migrate && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "dream-shader-migrate" agent skill from https://github.com/TypeDreamMoon/DreamShader/tree/main/.skill/dream-shader-migrate into .opencode/skills/dream-shader-migrate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dream-shader-migrate", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
dream-shader-migrateRewrite DreamShaderLang 1.x sources (.dsm / .dsf / .dsh) as 2.0 .dss with dsc migrate, which proves each rewrite builds the same graph before it writes anything.
Dream Shader Migrate is an agent skill from TypeDreamMoon/DreamShader. Rewrite DreamShaderLang 1.x sources (.dsm / .dsf / .dsh) as 2.0 .dss with dsc migrate, which proves each rewrite builds the same graph before it writes anything. Use when asked to migrate, upgrade, port or convert 1.x DreamShader sources, a .dsm or .dsf file, or a whole DShader tree to the 2.0 language.
Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Game Development, covering Shaders. It works with Unreal Engine. The repository describes itself as: Unreal Engine Material DSL. Use Dream Shader Lang Write Unreal Material. Simple · Fast · Full syntax · HLSL GLSL Lang Support. The licence is MIT.
Read from SKILL.md and the folder at commit 1a5dfab. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pwshFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Dream Shader Migrate loads about 1.6k tokens when it runs. Until then it costs about 81 tokens; SKILL.md has 871 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from TypeDreamMoon/DreamShader at commit 1a5dfab, republished under its MIT licence (© TypeDreamMoon). 871 words, ~1,635 tokens.
.claude/skills/dream-shader-migrate/SKILL.md (or your agent's skills folder).<file> | -All | -Root <name>Turn 1.x sources into .dss without changing what they build. dsc migrate does the rewriting and the
proving; this skill is the order to run it in and what to do with what it reports.
Nothing forces a migration — the legacy front end keeps building 1.x sources through the same compiler.
Migrate when the user wants what only a .dss has: real expressions and control flow, #include, material
instances beside the material, comments that survive dsc fmt. Full reference:
Docs/tools/migrate.md.
Paths below are relative to the plugin root, Plugins/DreamShader/.
1 — See what will change. Every 1.x leniency the rewrite has to spell out is also a diagnostic on the 1.x
source, so a check of the .dsm lists them — the legacy-rule codes DSH5275–DSH5292, warnings and
infos — without writing anything:
pwsh -File Plugins/DreamShader/.skill/dsc.ps1 check DShader/Materials/M_Foo.dsm2 — Prove the rewrite, write nothing.
pwsh -File Plugins/DreamShader/.skill/dsc.ps1 migrate DShader/Materials/M_Foo.dsm -CheckFor a whole tree, migrate -All -Check (every 1.x source under the project's own roots, Packages/ excluded —
a plugin's root is left out) or migrate -Root <name> -Check (one root, by its display name or its plugin's
name). Batch: one run over many files costs one editor boot, the same as one file. (-DryRun is the same as
-Check.)
A file is refused before anything is rewritten unless it builds as 1.x first. Then it is proved: no comment is
lost (DSH9092) and the text builds as 2.0 (DSH9097) — either failure writes nothing. Two more checks are
warnings, which do not stop the write: the graph of the new text is compared with the old one node by node
(DSH9098 names the first node that differs), and the asset must keep its path — the export gets a
/// @name when the file's place would name another one, and DSH9098 says so when it cannot.
3 — Read every DSH9098. It is not noise: each one is a real difference between the two graphs. Decide
with the user whether the 2.0 behaviour is acceptable — typically it is a 1.x artefact (a node declared
narrower than it is, an explicit .x into a float pin). An error stops that file; the table below says what
to do.
4 — Migrate.
pwsh -File Plugins/DreamShader/.skill/dsc.ps1 migrate DShader/Materials/M_Foo.dsmThis writes M_Foo.dss beside the old file and moves M_Foo.dsm to
Saved/DreamShader/Migrated/Sources/<root>/<path> (numbered .1, .2, … rather than overwriting an older
backup) — outside the source tree, and outside version control. A .dsh is rewritten in place, and stays a
.dsh. -Out <dir> writes the .dss files under another directory,
mirroring the tree, and leaves the 1.x files where they are: the way to look at the result first.
5 — Check the result.
pwsh -File Plugins/DreamShader/.skill/dsc.ps1 check DShader/Materials/M_Foo.dsscheck builds no asset, which is what you want here: the .dss names the same asset the .dsm did, so a
compile would rewrite it on disk. The editor rebuilds it from the new source on its next load.
6 — Report the files written, the DSH9098 differences and the decision taken on each, and remind the
user to commit the .dss and the deletion of the .dsm together — a commit with only one of them leaves the
asset with no source, or with two.
| Code | Cause | Fix |
|---|---|---|
DSH9090 | the source has #if lines — only the branch taken today would survive | resolve the condition by hand first |
DSH9091 | an import names a source root in front of its path | write the import relative to the file's own root, or migrate that file by hand |
DSH9097 | the migrated text does not build — a construct the migrator does not handle, or a 1.x leniency with no 2.0 spelling. The rejected text is kept under Saved/DreamShader/Migrated/Rejected/ and the diagnostics point into it | fix the 1.x source, migrate again |
DSH9099 | the .dss already exists, or a file could not be written or moved. The 1.x file is never deleted unless the .dss was written | move the existing .dss aside, or check permissions |
DSH9095 | the file is not a .dsm, .dsf or .dsh | — |
| (a 1.x error) | the 1.x file does not build as it is, so there is nothing to prove the rewrite against | fix it first — dream-shader-diagnose |
.dsh may hold both dialects. -All takes every
1.x file, headers first. A header with no 1.x declarations left is skipped (DSH9093).-All. A plugin's source root is read-only to -All; name it with -Root.-NoBackup. It lands under Saved/, which nothing commits,
so the backup is local to this machine..dss looks like afterwards is in reference/dss.md: Function and
GraphFunction become /// @custom functions with the body verbatim, a Namespace function N::F becomes
N_F with /// @name N::F, a VirtualFunction becomes /// @asset + extern, mix / fract / mod /
vec3 become lerp / frac / fmod / float3.dream-shader-optimize's job, under the
same rule — behaviour must not change.Docs/tools/migrate.md — the full rewrite table, rule by ruleDocs/language-v2/index.md — the 2.0 languagedream-shader-verify — check and compiledream-shader-decompile — for an asset that has no source at all© TypeDreamMoon, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .skill/dream-shader-migrate of TypeDreamMoon/DreamShader.
Open the folder on GitHubat commit 1a5dfab
Dream Shader Migrate next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Dream Shader Migrate this skillTypeDreamMoon/DreamShader | 106 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Unreal Material and VFX Workflowflopperam/unreal-engine-mcp | 1.1k | — | ~927 | Automated safety check: Pass | None | |
| UMG Material MCPwinyunq/UnrealMotionGraphicsMCP | 210 | — | ~913 | Automated safety check: Pass | MIT | |
| Game DeveloperJeffallan/claude-skills | 12k | — | ~1.5k | Automated safety check: Pass | MIT | |
| Scenario Unreal Materialsscenario-labs/skills | 946 | — | ~4.6k | Automated safety check: Pass | MIT | |
| Gamedev Shadersericrisco/rsc-harness | 180 | — | ~3.6k | Automated safety check: Pass | MIT |
flopperam/unreal-engine-mcp
Walks an Unreal Engine MCP agent through building materials, Niagara particle systems, Chaos destruction, and curve assets with inspect-then-edit steps.
winyunq/UnrealMotionGraphicsMCP
Creates, edits and compiles Unreal Engine 5.8 material assets as one HLSL Custom node through the UMG MCP bridge, instead of editing .uasset files directly.
Jeffallan/claude-skills
Covers game programming in Unity and Unreal Engine: ECS design, physics, multiplayer networking, shaders and profiling toward a 60 FPS target.
scenario-labs/skills
A skill your agent uses when a UE5 task involves materials or textures: a master material and instances for a kit, Substrate or legacy, Blendable vs Adaptive GBuffer, glass, emissive screens…
ericrisco/rsc-harness
A skill your agent uses when authoring or debugging a shader, material, VFX, or full-screen post-process in a game engine — Godot 4.x .gdshader, Unity 6 URP/HDRP, Unreal 5.x Materials, effect…
winyunq/UnrealMotionGraphicsMCP
Builds and edits Unreal Engine UMG interfaces through the Unreal Motion Graphics MCP, covering widget trees, HLSL materials, Sequencer animations and readback checks.
TypeDreamMoon/DreamShader
Write a new DreamShader source from a plain-language description — a material, material function, layer, material instance or Custom Pass pipeline — then check and compile it headlessly to prove it…
TypeDreamMoon/DreamShader
Export an existing Unreal material, material function, layer, layer blend, material instance or Custom Pass pipeline back into DreamShaderLang source headlessly, so a hand-built material graph or…
TypeDreamMoon/DreamShader
Resolve a DreamShader compile error or warning — look its DSH code up, explain the cause, and fix the source — or find out why a DreamShader material silently comes out wrong.
TypeDreamMoon/DreamShader
Clean up a machine-written DreamShader source — a decompiled or migrated .dss (or a 1.x .dsm / .dsf export) — into one a person would have written, without changing what it builds, and prove the…
TypeDreamMoon/DreamShader
Check and compile DreamShader sources headlessly — one file or the whole DShader tree — without opening the Unreal editor, and read back every diagnostic with its file, line and code.
Works with
Categories
Rewrite DreamShaderLang 1.x sources (.dsm / .dsf / .dsh) as 2.0 .dss with dsc migrate, which proves each rewrite builds the same graph before it writes anything. Dream Shader Migrate is an agent skill from TypeDreamMoon/DreamShader.dss with dsc migrate, which proves each rewrite builds the same graph before it writes anything.
Dream Shader Migrate fits situations like: asked to migrate; convert 1.x DreamShader sources; A whole DShader tree to the 2.0 language.
Run `npx skills add TypeDreamMoon/DreamShader --skill dream-shader-migrate -a claude-code`. Or copy the skill folder (.skill/dream-shader-migrate in TypeDreamMoon/DreamShader) into .claude/skills/dream-shader-migrate in your project. Claude Code loads it when a task matches its description.
Run `npx skills add TypeDreamMoon/DreamShader --skill dream-shader-migrate -a codex`. Or copy the skill folder (.skill/dream-shader-migrate in TypeDreamMoon/DreamShader) into .agents/skills/dream-shader-migrate in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add TypeDreamMoon/DreamShader --skill dream-shader-migrate -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dream-shader-migrate, .gemini/skills/dream-shader-migrate, .github/skills/dream-shader-migrate and .opencode/skills/dream-shader-migrate in your project.
Going by SKILL.md and its folder, Dream Shader Migrate needs the command-line tools its instructions call (pwsh).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Dream Shader Migrate is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.6k tokens (SKILL.md is roughly 6.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Dream Shader Migrate: Unreal Material and VFX Workflow (flopperam/unreal-engine-mcp, 1.1k stars), UMG Material MCP (winyunq/UnrealMotionGraphicsMCP, 210 stars), Game Developer (Jeffallan/claude-skills, 12k stars) and Scenario Unreal Materials (scenario-labs/skills, 946 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
TypeDreamMoon (a GitHub user) maintains it in TypeDreamMoon/DreamShader, which has 106 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 9, 2026.
Source: TypeDreamMoon/DreamShader on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.