typedreammoon/dreamshader/dream-shader-verify
Claude Code and agent skill by typedreammoon/dreamshader
- community
Checking that the SKILL.md file is still in the repository.
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. Use when asked to verify, validate, check, build, compile, test or CI-gate .dss / .dsi / .dsp / .dsm / .dsf sources, or to find out whether a material still builds.
Install
npx vskill@latest install typedreammoon/dreamshader/dream-shader-verifySKILL.md
dream-shader-verify <file> | -All
The gate every other DreamShader skill ends with. The driver, .skill/dsc.ps1, wraps UnrealEditor-Cmd.exe <project> -run=DreamShader <verb> so a check is one command and one exit code.
Paths below are relative to the plugin root, Plugins/DreamShader/.
Three levels
| Verb | Goes as far as | Writes | Use it | |
|---|---|---|---|---|
check | parse, bind, lower, validate — everything before an asset | nothing | first, and after every edit: the fast gate | |
compile | the asset | the .uasset files (and a .dsp's render targets and registry files) | to prove the file builds | |
check -Shaders | the asset and its shaders, for the project's shader formats | the assets, as compile does | for a /// @custom body or a .dsp with HLSL passes — the only thing that compiles that HLSL |
Exit 0 success, 1 failure — the commandlet's own codes. Run from anywhere inside the project: the driver walks up for the .uproject and resolves the engine from its EngineAssociation.
Every run boots the editor — tens of seconds before DreamShader gets control. One run over many files costs about what one file does, so batch: edit everything, then check -All once.
| Argument | Effect | |
|---|---|---|
| (positional) | the source — absolute, or relative to the working directory. .dss .dsi .dsp .dsm .dsf; a .dsh is checked through the files that include it | |
-All | every source of every source root — the project's DShader/ and each enabled plugin's — except Packages/. compile builds .dsf first, the rest in path order | |
-Force | compile / check -Shaders: rebuild even when the source hash is unchanged. Without it an unchanged file logs Skipped … source hash is unchanged … and proves nothing | |
-CleanNew | delete the .uasset files this run created (they were not on disk before it), then prune the emptied folders | |
-DiagnosticsOut <file> | check: the diagnostics as JSON as well | |
-Platform SM6,SM5 / -Quality High / -Timeout 120 | check -Shaders: which formats and quality levels, and how long one material may take | |
-Project / -Engine | override the discovery; UE_ENGINE_ROOT works too | |
-Raw | the whole engine log instead of the DreamShader messages |
What you get back
A failure lists every error of the stage that failed, each with its position and code:
The pipeline stops between stages — parse, bind, lower, validate, emit — not at the first error: fix them all, then run again. A syntax error can hide the binder's errors behind it, so a second run may find more.
The thing to understand about compile
The commandlet writes real `.uasset` files. The interactive editor, for a ThinCustom material (the project default), does not: it keeps the product in memory (Ephemeral), and the source is the authoring surface. A file a headless run left on disk then wins: the editor rebuilds that material on disk instead of in memory (it logs so, and Tools ▸ DreamShader ▸ Make Ephemeral undoes it).
So -CleanNew: the driver records every .uasset under the Content folders of the project and its plugins before the run, and deletes only the ones that were not there before. An asset that existed and was rewritten is never deleted; when git tracks it, it is reported in red with the command that restores it:
That is not a driver bug: the source genuinely regenerated the asset, and only the user knows whether the new bytes should be kept. (A Graph-backend material and a material function are saved on every build in the editor too; for those, a rewrite is expected.)
Gotchas
- `-All` covers the plugins' sources too. Every enabled plugin with a
DShader/folder is a source root, so
compile -All rebuilds its materials into its own Content/ — files another repository owns. Compile single files while iterating; keep -All for check, or for a deliberate gate.
- A `.dsp` builds on UE 5.8+ only (
DSH8300below that). Besides the pipeline it writes a render target per
exported buffer, and an HLSL pass rewrites the project's DShader/.dreampass/ registry and snapshots — source files to commit, which the driver lists after the run.
- `check -Shaders` saves assets, because 2.0 has no transient asset; the driver reports them like
compile's. It drives the cook-target shader compilers (a commandlet does not render), so its HLSL errors come from the engine log.
- A green `compile -All` can have built nothing: an empty source list logs
DreamShader commandlet found no source files to compile. at Warning and exits 0. Look for Generated ….
- A flag's value is on or off, or the run does nothing. Straight to the commandlet,
-Forceand-Force=true
(1, yes, on) are on and -Force=false (0, no, off) is off; any other value, an empty one included, is DSH9110 and the command exits 1 without touching a file. The driver passes flags bare.
- The first bare token after `-run=DreamShader` is the verb, unconditionally — `-run=DreamShader Source=X
compile runs a verb called Source=X`.
- The editor bridge never runs inside a commandlet: no
diagnostics.json, no squiggles in VS Code. The log is
where a headless run's diagnostics are — and the driver prints them, each report whole.
- Use PowerShell, not Git Bash, for an asset path: Git Bash rewrites
/Game/Xinto
C:/Program Files/Git/Game/X.
Troubleshooting
| Symptom | Fix | |
|---|---|---|
EngineAssociation '…' is not registered. | pass -Engine <root> or set UE_ENGINE_ROOT | |
Could not find a .uproject at or above … | pass -Project | |
UnrealEditor-Cmd.exe not found at … | the engine root is wrong — it is the directory containing Engine/ | |
dsc: FAILED (exit 1) with no LogDreamShader line | re-run with -Raw; the failure was before DreamShader got control (a missing module, a crash at boot) | |
Skipped … source hash is unchanged … | add -Force | |
DreamShader compile requires a .dss, .dsi, .dsp, .dsm or .dsf file: … | you pointed at a .dsh or another file. A header builds nothing — compile a file that includes it | |
… (mount '/X/' is not the project or one of its plugins …) | the asset went to an engine or external mount; find and clean it by hand |
See also
- `Docs/tools/commandlet.md` — every verb and flag behind the driver
- `Docs/generation/ephemeral.md` — Ephemeral and Materialized
- `Docs/generation/caching.md` — the hash skip
-Forcebypasses - `dream-shader-diagnose` — resolving a code
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryChecking.skill/dream-shader-verify/SKILL.md
Popularity
- Repository stars
- 109
- Repository forks
- 21
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/typedreammoon/dreamshader/dream-shader-verify)