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.
Check a Kiln asset's geometry, views, export fidelity, and behavior in its destination project.
$ npx skills add instruktlabs/kiln --skill kiln-qa-asset -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install instruktlabs/kiln kiln-qa-asset --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/instruktlabs/kiln.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/kiln-qa-asset .claude/skills/kiln-qa-asset && 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 "kiln-qa-asset" agent skill from https://github.com/instruktlabs/kiln/tree/main/skills/kiln-qa-asset into .claude/skills/kiln-qa-asset/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kiln-qa-asset", 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/instruktlabs/kiln/tree/main/skills/kiln-qa-assetType 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 instruktlabs/kiln --skill kiln-qa-asset -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install instruktlabs/kiln kiln-qa-asset --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/instruktlabs/kiln.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/kiln-qa-asset .agents/skills/kiln-qa-asset && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "kiln-qa-asset" agent skill from https://github.com/instruktlabs/kiln/tree/main/skills/kiln-qa-asset into .agents/skills/kiln-qa-asset/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kiln-qa-asset", 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 instruktlabs/kiln --skill kiln-qa-asset -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install instruktlabs/kiln kiln-qa-asset --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/instruktlabs/kiln.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/kiln-qa-asset .cursor/skills/kiln-qa-asset && 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 "kiln-qa-asset" agent skill from https://github.com/instruktlabs/kiln/tree/main/skills/kiln-qa-asset into .cursor/skills/kiln-qa-asset/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kiln-qa-asset", 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/instruktlabs/kiln.git --path skills/kiln-qa-asset--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 instruktlabs/kiln --skill kiln-qa-asset -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install instruktlabs/kiln kiln-qa-asset --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/instruktlabs/kiln.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/kiln-qa-asset .gemini/skills/kiln-qa-asset && 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 "kiln-qa-asset" agent skill from https://github.com/instruktlabs/kiln/tree/main/skills/kiln-qa-asset into .gemini/skills/kiln-qa-asset/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kiln-qa-asset", 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 instruktlabs/kiln kiln-qa-assetInstalls 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 instruktlabs/kiln --skill kiln-qa-asset -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/instruktlabs/kiln.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/kiln-qa-asset .github/skills/kiln-qa-asset && 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 "kiln-qa-asset" agent skill from https://github.com/instruktlabs/kiln/tree/main/skills/kiln-qa-asset into .github/skills/kiln-qa-asset/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kiln-qa-asset", 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 instruktlabs/kiln --skill kiln-qa-asset -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install instruktlabs/kiln kiln-qa-asset --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/instruktlabs/kiln.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/kiln-qa-asset .opencode/skills/kiln-qa-asset && 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 "kiln-qa-asset" agent skill from https://github.com/instruktlabs/kiln/tree/main/skills/kiln-qa-asset into .opencode/skills/kiln-qa-asset/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kiln-qa-asset", 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.
kiln-qa-assetCheck a Kiln asset's geometry, views, export fidelity, and behavior in its destination project.
Kiln QA Asset is an agent skill from instruktlabs/kiln. Check a Kiln asset's geometry, views, export fidelity, and behavior in its destination project. Use for delivery review, loading, materials, animation, collision, or runtime defects.
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/engine-handoff.md` and `references/integration-checks.md`).
It sits in Game Development, covering Game assets and audio. It works with Model Context Protocol. The repository describes itself as: Build and revise procedural 3D assets with your coding agent. Local MCP server, CLI and TypeScript engine with rendered review, editable source and GLB export. The licence is MIT.
Read from SKILL.md and the folder at commit 9e6dfe0. 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.
No scripts in the folder and no shell commands in SKILL.md.
From 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.
Kiln QA Asset loads about 2.7k tokens when it runs, and up to ~8.5k if it reads all its reference files. Until then it costs about 49 tokens; SKILL.md has 1,508 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 instruktlabs/kiln at commit 9e6dfe0, republished under its MIT licence (© instruktlabs). 1,508 words, ~2,728 tokens.
.claude/skills/kiln-qa-asset/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Match the checks to the requested delivery. A source build, an image review, a GLB export, and a working asset in a game are different pieces of evidence.
Standalone assets need no project to be reviewed, saved or exported. Do not create a project or impose pack-wide budgets for QA alone. Preserve the intended project selection and exact material dependencies; use projectId: null / CLI --no-project when a configured default would attach unrelated work. Verify editable standalone deliveries in an independent workspace too, with all declared material resources available.
For project deliveries, verify both editable and runtime packages. Import the editable ZIP into an independent workspace, rebuild saved revisions using their recorded settings and exact material dependencies, and compare artifact hashes. The runtime ZIP is delivery-only and cannot substitute for source/resources. Referenced concept images and original acquisition archives are not embedded in the project ZIP. Test the intended consumer independently. Browser Measure samples under concurrent CPU/GPU workload are exploratory; record the workload and reserve an isolated session before accepting a performance budget. GPU-required image review must show actual GPU fidelity, not a CPU fallback or the interactive viewport alone.
Read the export profile guide (references/export-profiles.md in the kiln-author-asset skill) when reviewing delivery files. Verify the selected converter separately from the editable/runtime profile. Runtime GLBs must preserve native playback without the sidecar; provenance checks use the sidecar filename and exact byte hash. Keep the canonical editable asset for source and full Kiln review data, and measure actual loading and rendering performance separately.
Read validation/build findings and export warnings. MCP render and inspection results are compact by default: the verdict, the blocking findings and the finding counts come first, repeated findings are grouped by code with the repair text once, and rules that were not requested are left out; decide from that compact result, and ask detail: "full" of kiln_render, kiln_edit or kiln_screenshot_animation only when every instance of a grouped finding or every rule record matters, with retainedReport.path (.kiln/review/<operation>/evaluation.json, pretty-printed) holding the rest; detail: "lean" keeps only the verdict, blockers and metrics. kiln_validate only checks source; render and inspect the actual geometry when that is the task. Choose broad or part-specific views that reveal the suspected defect. Copy the returned programRef exactly for every view, whether it is a short p_ handle or a full SHA-256 reference; request source text only when a repair needs it. A handle identifies a revision in its store; use full source and artifact hashes for integrity evidence.
Distinguish expected open sheets from invalid solid topology. geometryDiagnostics reports boundary edges, non-manifold edges, orientation conflicts and degenerates; it does not prove absence of self-intersection. A capped loft, shell-like surface, or sampled field is not automatically a manufacturing-grade solid.
An intentional boundary can use markOpenShell(part, 'specific reason'). Read the
overlap report's acknowledgment and reason; this is an explicit measurement limit,
not a clean result. Closed components are unioned before measuring overlap;
unsupported inward shells or component budgets remain unmeasured. Hidden subtrees
are excluded from category QA, while hiddenNodes accounts for their triangles.
SWEEP_SELF_INTERSECTION observes tight station curvature or intersecting
consecutive rings in a sweep/loft. Inspect the station and radius evidence. A
_PARTIAL finding or _UNCHECKED warning means the bounded local analysis did not
finish; even a completed check does not cover distant segments. Review the rest
when those contacts matter. Eased animation is exported as standard cubic sampler
data; inspect intermediate poses, and treat quaternion q and -q endpoints as
the same rotation when reading loop closure.
The part-overlap observer (GEO_PART_SELF_INTERSECTION) tests the most-overlapping pairs first. _TRUNCATED means pairs went untested for budget (pairsNotReached); _UNMEASURED groups parts it could not measure, such as open shells, by reason. Neither is a finding of overlap; check those pairs with measure or focused views when they matter. Overlap skips different levels only within the same sibling LOD chain; independent chains can appear together at different levels. Connectivity retains its LOD0 baseline and leaves out visible parts labeled LOD1 and above. An asset has tiers only when its brief asked for them; each set of sibling tiers carries one defineLod declaration with its screen-coverage thresholds, or the build fails with LOD_SET. Check the thresholds against the brief's switch distances. The written GLB carries each set as one MSFT_lod chain; headline triangles and bounds are LOD0's, and levelsOfDetail lists every level's triangles and path. Default sheets draw LOD0; review each lower level with a shot whose subject is its path and visibility: "isolate", and read each chain's drawn for the level every view drew. Findings with disposition: "observe" on joins you intended, such as a leg passing into its rail or an open curveToMesh end buried in another part, are informational while the report's disposition passes; review the pairs you did not intend.
For an assembly, identify the required contact pairs and the required separation
pairs. Review both ends of supports against their intended neighbors with focused
views and kiln_inspect surface measurements, following intermediate fittings
back to the body. A supported cable can end at an unmounted fitting; a bar can
touch one neighbor while its other end floats. Review named separation findings
against those intended connections even when other contact checks pass. Zero surface distance
can mean intersection; it is appropriate evidence for neither a required gap
nor a sound mechanical fitting by itself. Select the actual interface parts,
not the entire assembly. Report unmeasured joints explicitly. surfacePairs subjects
are exact listParts paths, such as /Park%20Bench[0]/Bench[0]/Mesh_Seat[0] for
createPart("Seat", ...) under createRoot("Bench") in an asset named Park Bench,
or unambiguous node names as measure takes (Mesh_Seat there, since createPart
names its mesh Mesh_<name>); a missing or shared name fails its own
pair and lists candidate paths.
Read capture.backdrop in image results: views are on a neutral grey unless a capture asked for dark or light, and a silhouette judged on the wrong assumption about the backdrop is not evidence. Check material and camera fidelity independently. A fallback image may still answer a geometry question, but it cannot establish faithful PBR appearance. Keep unresolved export or material findings visible in the delivery report.
Do not darken albedo to compensate for review lighting; preserve the intended material colour and check material-faithful GPU views and the destination renderer.
For Blender, Unity or FBX, read the engine handoff guide before choosing import settings or trying the experimental exporter. Check the actual target importer and render pipeline; a successful Kiln preview alone does not establish destination compatibility.
Use the project's existing loader and renderer. Read the integration checks for manifests, frames, composition options, and limits.
Confirm scale alongside existing objects, forward direction, ground contact, placement, and useful viewing distance. Check textures and lighting in the destination renderer. Exercise relevant animation, interaction, and collision; sample intermediate poses when checking motion. For web projects use the actual browser view, and for native projects use the destination runtime.
Animation review returns poseBounds in world metres for each requested phase,
including the selected subject when a shot names one. Compare those bounds with
the requested ground plane or movement envelope. These measure drawable geometry
before camera isolation, not physical contacts or a continuous swept volume.
Repeated geometry needs phases inside a repeat as well as between keys: quarter
turns of a 16-lug wheel all show the same alignment. Include irregular phases
and inspect the moving subject; identical sampled bounds do not prove constant
ground clearance. Report the range actually measured.
For a requested repeating animation, also read loopClosure. It measures local
translation, quaternion orientation and scale at zero and the clip duration,
independently of selected image phases. open identifies endpoint gaps; incomplete
cannot certify closure. Quaternion sign changes alone are not gaps. A one-shot
opening or attack need not return to its initial pose. closed establishes only
endpoint continuity, not smooth velocity, convincing motion or working contacts.
loopIntent reports createClip(name, duration, tracks, { loop }): loop must
close (an open declared loop also warns LOOP_NOT_CLOSED), once may stay open,
and unspecified cannot tell the two apart, so declare intent when a brief says
whether a clip repeats. The GLB carries it as animations[].extras.kilnLoopIntent.
For several moving contacts or attachments, pass measureParts with up to 16
exact {name} or {path} selectors. Each phase returns poseBounds.parts in
that order, independently of the camera, each with its world origin; empty
subtrees such as locators have bounds:null, so check a locator by its origin.
Check the intended contact parts together. A low scene minimum can come from a
floor or one foot and says nothing about the others; lack of penetration does
not establish support. Bounds still do not prove balance, friction or contact.
CLI uses --measure-parts parts.json with the same selector array.
Reproduce defects before fixing them. Correct placement/loader/lighting problems in integration code; change asset source for a geometry or rig defect. Recheck the affected behavior after a repair.
Report the exact artifacts tested, what you ran and saw, repaired defects, and checks left unperformed. Validation, visualQa: not_assessed, an AABB overlap test, or a low triangle count is not a substitute for visual or runtime verification.
© instruktlabs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (references) in skills/kiln-qa-asset of instruktlabs/kiln.
Open the folder on GitHubat commit 9e6dfe0
Kiln QA Asset 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 |
|---|---|---|---|---|---|---|
| Kiln QA Asset this skillinstruktlabs/kiln | 255 | — | ~2.7k | Automated safety check: Pass | MIT | |
| Unreal Material and VFX Workflowflopperam/unreal-engine-mcp | 1.1k | — | ~927 | Automated safety check: Pass | None | |
| Fmodel Unpackpa001024/dna-builder | 137 | — | ~2.6k | Automated safety check: Pass | MIT | |
| Make Imagesglifxyz/glif-mcp-server | 213 | — | ~931 | Automated safety check: Pass | MIT | |
| Fal Assetsrehan-remade/universal-modder | 6.5k | — | ~2k | Automated safety check: Notes | MIT | |
| Geometry Nodesarjun988/blender-skills | 283 | — | ~963 | 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.
pa001024/dna-builder
This skill documents how to use the fmodel-mcp toolkit (a CUE4Parse-based .NET CLI plus a thin Python MCP server) to inspect and export Unreal Engine game assets — pak files, textures, meshes…
glifxyz/glif-mcp-server
Make new still images from a brief with Glif and save them to a folder: concept art, a series of variations, mockups, posters, illustrations, wallpapers, reference boards or any picture that isn't…
rehan-remade/universal-modder
Generate game assets with fal (fal.ai) through the fal MCP server, the um fal CLI (REST) or fal api.
arjun988/blender-skills
Blender Geometry Nodes for procedural modeling, scatter systems, vegetation, buildings, pipes, cables, and reusable node groups.
glifxyz/glif-mcp-server
Make art and media for a game you are building with Glif: character reference sheets, consistent characters, pixel-art sprite sheets with animation cycles, seamless and PBR textures, 3D models, item…
instruktlabs/kiln
Refine an existing Kiln asset through bounded source reads, exact revision edits, and targeted image feedback.
instruktlabs/kiln
Create a procedural 3D asset with Kiln JavaScript, review useful camera views, refine saved source, and export a GLB.
instruktlabs/kiln
Configure and verify Kiln in an existing project or a new asset workspace for the selected coding agent.
instruktlabs/kiln
Run requested Kiln asset batches or compare coding-agent harnesses and models in isolated workspaces.
instruktlabs/kiln
Create, inspect, revise and deliver editable 3D assets through Kiln's connected hosted service, or reopen assets saved in that account.
instruktlabs/kiln
Compose existing assets into an exported scene or interactive proving environment, with deliberate placement, terrain, materials, integration checks and runtime qualification.
Works with
Categories
Check a Kiln asset's geometry, views, export fidelity, and behavior in its destination project. Kiln QA Asset is an agent skill from instruktlabs/kiln. Check a Kiln asset's geometry, views, export fidelity, and behavior in its destination project.
Kiln QA Asset fits situations like: delivery review; runtime defects.
Run `npx skills add instruktlabs/kiln --skill kiln-qa-asset -a claude-code`. Or copy the skill folder (skills/kiln-qa-asset in instruktlabs/kiln) into .claude/skills/kiln-qa-asset in your project. Claude Code loads it when a task matches its description.
Run `npx skills add instruktlabs/kiln --skill kiln-qa-asset -a codex`. Or copy the skill folder (skills/kiln-qa-asset in instruktlabs/kiln) into .agents/skills/kiln-qa-asset 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 instruktlabs/kiln --skill kiln-qa-asset -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/kiln-qa-asset, .gemini/skills/kiln-qa-asset, .github/skills/kiln-qa-asset and .opencode/skills/kiln-qa-asset in your project.
SKILL.md names no scripts, command-line tools or credentials: Kiln QA Asset is instructions for the agent only.
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.
Kiln QA Asset is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 5.8k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Kiln QA Asset: Unreal Material and VFX Workflow (flopperam/unreal-engine-mcp, 1.1k stars), Fmodel Unpack (pa001024/dna-builder, 137 stars), Make Images (glifxyz/glif-mcp-server, 213 stars) and Fal Assets (rehan-remade/universal-modder, 6.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
instruktlabs (a GitHub organization) maintains it in instruktlabs/kiln, which has 255 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 10, 2026.
Source: instruktlabs/kiln on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.