Agent skill

Dream Shader Migrate

by TypeDreamMoon in 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.

MITAuto-check passedGame Development

Install Dream Shader Migrate

skills CLI
$ npx skills add TypeDreamMoon/DreamShader --skill dream-shader-migrate -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install TypeDreamMoon/DreamShader dream-shader-migrate --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
dream-shader-migrate
GitHub stars
106
Token cost
~1.6k tokens
SKILL.md length
871 words
Files
1
Skills in repo
6
Repo updated
First seen
Licence
MIT

At a glance

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.

  • Asked to migrate
  • SKILL.md covers Do this, What can stop a file, Gotchas and See also
  • Calls pwsh
  • Convert 1.x DreamShader sources

What it does

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.

When your agent uses it

  • Asked to migrate
  • Convert 1.x DreamShader sources
  • A whole DShader tree to the 2.0 language

Example prompts

  • “/dream-shader-migrate”

What it can do on your machine

Read from SKILL.md and the folder at commit 1a5dfab. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • pwsh

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~81
When it runs · the whole SKILL.md, loaded when a task matches
~1.6k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from TypeDreamMoon/DreamShader at commit 1a5dfab, republished under its MIT licence (© TypeDreamMoon). 871 words, ~1,635 tokens.

Download SKILL.mdSave it as .claude/skills/dream-shader-migrate/SKILL.md (or your agent's skills folder).
name
dream-shader-migrate
description
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.

dream-shader-migrate <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/.

Do this

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:

bash
pwsh -File Plugins/DreamShader/.skill/dsc.ps1 check DShader/Materials/M_Foo.dsm

2 — Prove the rewrite, write nothing.

bash
pwsh -File Plugins/DreamShader/.skill/dsc.ps1 migrate DShader/Materials/M_Foo.dsm -Check

For 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.

bash
pwsh -File Plugins/DreamShader/.skill/dsc.ps1 migrate DShader/Materials/M_Foo.dsm

This 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.

bash
pwsh -File Plugins/DreamShader/.skill/dsc.ps1 check DShader/Materials/M_Foo.dss

check 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.

Show full SKILL.md (359 more words)Show less

What can stop a file

CodeCauseFix
DSH9090the source has #if lines — only the branch taken today would surviveresolve the condition by hand first
DSH9091an import names a source root in front of its pathwrite the import relative to the file's own root, or migrate that file by hand
DSH9097the 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 itfix the 1.x source, migrate again
DSH9099the .dss already exists, or a file could not be written or moved. The 1.x file is never deleted unless the .dss was writtenmove the existing .dss aside, or check permissions
DSH9095the 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 againstfix it first — dream-shader-diagnose

Gotchas

  • A shared header waits. Migrating one file takes a header with it only when nothing else includes that header; a shared one stays 1.x — which is fine, because a .dsh may hold both dialects. -All takes every 1.x file, headers first. A header with no 1.x declarations left is skipped (DSH9093).
  • Plugin sources are not in -All. A plugin's source root is read-only to -All; name it with -Root.
  • The old file is moved, not deleted — unless -NoBackup. It lands under Saved/, which nothing commits, so the backup is local to this machine.
  • What a .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.
  • A migrated file is still machine-written. It builds the same graph, which is the guarantee; making it read like hand-written 2.0 is dream-shader-optimize's job, under the same rule — behaviour must not change.

See also

© TypeDreamMoon, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .skill/dream-shader-migrate of TypeDreamMoon/DreamShader.

Open the folder on GitHubat commit 1a5dfab

Compare with similar skills

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.

Dream Shader Migrate compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Dream Shader Migrate this skillTypeDreamMoon/DreamShader106—~1.6kAutomated safety check: PassMIT
Unreal Material and VFX Workflowflopperam/unreal-engine-mcp1.1k—~927Automated safety check: PassNone
UMG Material MCPwinyunq/UnrealMotionGraphicsMCP210—~913Automated safety check: PassMIT
Game DeveloperJeffallan/claude-skills12k—~1.5kAutomated safety check: PassMIT
Scenario Unreal Materialsscenario-labs/skills946—~4.6kAutomated safety check: PassMIT
Gamedev Shadersericrisco/rsc-harness180—~3.6kAutomated safety check: PassMIT

Similar skills

  • 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.

    1.1k GitHub stars~927 tokensUpdated 3 mo ago
    Game DevelopmentAuto-check passed
  • UMG Material MCP

    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.

    210 GitHub stars~913 tokensUpdated 2 mo ago
    Game DevelopmentAuto-check passed
  • Game Developer

    Jeffallan/claude-skills

    Covers game programming in Unity and Unreal Engine: ECS design, physics, multiplayer networking, shaders and profiling toward a 60 FPS target.

    12k GitHub stars~1.5k tokensUpdated 7 days ago
    Game DevelopmentAuto-check passed
  • Scenario Unreal Materials

    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…

    946 GitHub stars~4.6k tokensUpdated today
    Game DevelopmentAuto-check passed
  • Gamedev Shaders

    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…

    180 GitHub stars~3.6k tokensUpdated today
    Game DevelopmentAuto-check passed
  • UMG MCP Authoring

    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.

    210 GitHub stars~2.6k tokensUpdated 2 mo ago
    Game DevelopmentAuto-check passed

More from TypeDreamMoon/DreamShader

  • Dream Shader Create

    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…

    106 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed
  • Dream Shader Decompile

    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…

    106 GitHub stars~2.9k tokensUpdated yesterday
    Auto-check passed
  • Dream Shader Diagnose

    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.

    106 GitHub stars~1.7k tokensUpdated yesterday
    Auto-check passed
  • Dream Shader Optimize

    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…

    106 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed
  • Dream Shader Verify

    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.

    106 GitHub stars~2.1k tokensUpdated yesterday
    Auto-check passed

Works with

Questions about Dream Shader Migrate

What does Dream Shader Migrate do?

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.

When should I use Dream Shader Migrate?

Dream Shader Migrate fits situations like: asked to migrate; convert 1.x DreamShader sources; A whole DShader tree to the 2.0 language.

How do I install Dream Shader Migrate in Claude Code?

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.

How do I install Dream Shader Migrate in Codex?

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.

Can I use Dream Shader Migrate in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Dream Shader Migrate need to run?

Going by SKILL.md and its folder, Dream Shader Migrate needs the command-line tools its instructions call (pwsh).

Does Dream Shader Migrate access the network?

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.

Is Dream Shader Migrate safe to install?

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.

What licence does Dream Shader Migrate use?

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.

How many tokens does Dream Shader Migrate use?

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.

What are the alternatives to Dream Shader Migrate?

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.

Who maintains Dream Shader Migrate?

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.