Agent skill

Kiln Refine Asset

by instruktlabs in instruktlabs/kiln

Refine an existing Kiln asset through bounded source reads, exact revision edits, and targeted image feedback.

MITAuto-check passedGame Development

Install Kiln Refine Asset

skills CLI
$ npx skills add instruktlabs/kiln --skill kiln-refine-asset -a claude-code

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

GitHub CLI
$ gh skill install instruktlabs/kiln kiln-refine-asset --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/instruktlabs/kiln.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/kiln-refine-asset .claude/skills/kiln-refine-asset && 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
kiln-refine-asset
GitHub stars
255
Token cost
~3.6k tokens
SKILL.md length
1,943 words
Files
3 (incl. references)
Skills in repo
7
Repo updated
First seen
Licence
MIT

At a glance

Refine an existing Kiln asset through bounded source reads, exact revision edits, and targeted image feedback.

  • Works in 5 steps: Copy the returned programRef exactly, or… → Obtain a before view when it resolves an… → Read relevant text with kiln_source({… → …
  • Proportion changes
  • SKILL.md covers Read, change, compare and Preserve intended structure
  • Calls node

What it does

Kiln Refine Asset is an agent skill from instruktlabs/kiln. Refine an existing Kiln asset through bounded source reads, exact revision edits, and targeted image feedback. Use for repairs, variants, or proportion changes.

Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/revision-and-views.md` and `references/revision-cli.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.

When your agent uses it

  • Proportion changes
  • Tasks that involve Game assets and audio

Example prompts

  • “/kiln-refine-asset”

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Copy the returned programRef exactly, or import a file with node kiln.mjs source asset.kiln.js. Built-in stores return short immutable…
  2. Obtain a before view when it resolves an uncertainty. Use returned exact part paths for targeted framing; the revision and view recipes…
  3. Read relevant text with kiln_source({ programRef, query: "partOrConstant" }). Search is literal and offsets count UTF-16 characters. Copy…
  4. Apply related { oldString, newString } replacements through kiln_edit. Keep the returned new reference. Shared constants and shared…
  5. Review the diff and returned images against the same question. Check render.ok independently of edit success. Repair a failed draft by its…

What it can do on your machine

Read from SKILL.md and the folder at commit 9e6dfe0. 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:

    • node

    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

Kiln Refine Asset loads about 3.6k tokens when it runs, and up to ~7.3k if it reads all its reference files. Until then it costs about 45 tokens; SKILL.md has 1,943 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~45
When it runs · the whole SKILL.md, loaded when a task matches
~3.6k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~7.3k

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 instruktlabs/kiln at commit 9e6dfe0, republished under its MIT licence (© instruktlabs). 1,943 words, ~3,615 tokens.

Download SKILL.mdSave it as .claude/skills/kiln-refine-asset/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
kiln-refine-asset
description
Refine an existing Kiln asset through bounded source reads, exact revision edits, and targeted image feedback. Use for repairs, variants, or proportion changes.
license
MIT
metadata.kiln-workflow
workspace
metadata.kiln-shared-references
references/revision-and-views.md

Refine a Kiln asset

Work from the saved program. A GLB alone does not contain editable Kiln JavaScript. Keep the user's requested change distinct from unrelated redesign.

Keep standalone assets standalone unless the user wants to associate them with a project. Creating a project is not a refinement prerequisite. Omission selects no project unless KILN_PROJECT is explicitly configured; projectId: null / CLI --no-project overrides that default. Supply the saved exact material pins through materialDependencies / --materials when needed, independently of projects.

For a project-backed asset, inspect its recorded project revision and material dependencies. A newer project profile can have different resource pins. Use the intended projectId / projectRevision explicitly for revisions and ensure its locked material resources are present. Configuration updates use kiln_project with the current expectedRevision; every supplied top-level field replaces its previous value, including the whole design object. Read and merge nested preferences before updating. After importing editable source and resources, node kiln.mjs asset ASSET_ID REVISION --rebuild --out baseline.glb uses the saved exporter settings and dependencies. This reports artifact hash equality and does not overwrite the original. Missing historical build settings require an explicit new authoring run.

To recover exact material pins, read the saved manifest.json resource, or run node kiln.mjs asset ASSET_ID REVISION --collection COLLECTION for the full manifest. Compact get/restore summaries omit dependency details. In build.dependencies, each kind: "kiln.material.v1" entry contains a material manifest: use its materialId as resourceId, and its revisionId for both revisionId and sha256. Verify those revisions with kiln_material or import their complete editable resources; do not replace missing pins with the current project's materials. Pass this pin array to later calls that evaluate a standalone restored source; a call that names the asset's projectId and projectRevision implies that revision's pins, and a pin the call names replaces the project's for the same resourceId.

When given a retained programRef, read it with kiln_source; the host owns its task/requirements binding. Report delivery separately from QA acceptance. If a bound saved asset needs host authorization to restore its requirements, report the migration diagnostic; do not drop the binding or treat copied metadata as authority.

For a collection asset, first call kiln_assets with action: "restore", collection, assetId, and revisionId. This imports its exact source into the current program store and returns a fresh programRef. A downloaded ZIP can be imported with node kiln.mjs import bundle.zip. A binary-only GLB has no source to restore.

For a collection asset, after reviewing the change, use kiln_save to create an immutable child revision with the new programRef, the original assetId, and parentRevision set to the exact revision you started from. Preserve the collection, name, relevant tags, and known model/harness attribution; describe the change. Pass the backdrop the accepted sheet used when it was not the default, so the preview matches what you reviewed. Never replace or delete the base: its prior revision remains intact, and concurrent children remain visible as branches. Return the new revision's download resources; copying to a different collection does not make a live link.

For CLI request files and image exports, use revision commands.

Read, change, compare

After saving the reviewed child revision, call kiln_present when available with its exact collection, asset ID, and revision ID. This opens an interactive view in supporting chat hosts. If the user wants to see it and the host only returns links, launch node kiln.mjs view --collection COLLECTION --asset ASSET_ID --revision REVISION_ID yourself in a persistent or background terminal when process launch is available, substituting the exact saved values. Provide its deep-linked loopback URL and use the harness's browser opener when available. Ask the user to start it only when the host cannot present or launch processes. Return actual download URLs when supplied; do not invent links or assume kiln:// resources are native chat attachments.

  1. Copy the returned programRef exactly, or import a file with node kiln.mjs source asset.kiln.js. Built-in stores return short immutable handles such as p_7c94a132b8e0; full SHA-256 references also work. Do not shorten a hash yourself. Submit source inline only when introducing a new draft to the store.
  2. Obtain a before view when it resolves an uncertainty. Use returned exact part paths for targeted framing; the revision and view recipes show source paging, custom cameras, and animation phases. Render paths are a bounded preview. Find absent or nested parts with kiln_inspect({ programRef, image: false, listParts: { query: "part name" } }); follow partListing.nextOffset on the same reference and query.
  3. Read relevant text with kiln_source({ programRef, query: "partOrConstant" }). Search is literal and offsets count UTF-16 characters. Copy anchors exactly, including whitespace. Each kiln_edit call accepts at most 20 replacements; for larger changes, send sequential batches using the new reference returned by each batch.
  4. Apply related { oldString, newString } replacements through kiln_edit. Keep the returned new reference. Shared constants and shared geometry can affect more than the selected part.
  5. Review the diff and returned images against the same question. Check render.ok independently of edit success. Repair a failed draft by its new reference rather than recreating the whole source.

For dimension changes, compare the before/after render results' bounds.size in metres, including axes the user asked to preserve. A changed radius, centerline or scale parameter does not prove the complete asset's dimensions. Report any remaining deviation instead of quoting the requested numbers as measured results.

Rendered kiln_edit results include preservation: a comparison against the original exported revision, or an explicit not_assessed reason. Review it before claiming an edit was localized. Changing one shared parameter can change every mesh even when most source text is untouched. comparison.animation independently reports changed exported channel targets, interpolation, key times and values; unchanged static geometry alone says nothing about preserved motion.

For edits that must preserve other components, call kiln_inspect on the new reference with compare: { programRef: OLD_REF }. This compares both exported revisions under the current host settings and reports geometry, material, rest transform and bounds changes. For protected components, add paths: [PART_PATH] inside compare: each comparison.subtrees entry covers that entire subtree independently of pagination. Review the requested axes; follow comparison.nextOffset for changes outside selected subtrees. Use image: false when only numeric review is needed. Source diffs alone do not establish preservation. Comparison does not decide whether a change satisfies the brief; unsupported structures fail explicitly. See revision comparison. Follow comparison.animation.nextOffset separately if animation changes are paged. In the final response, distinguish measured preservation, intentional changes, unexpected changes and unassessed properties. An unavailable comparison is not a pass; resolve unexpected changes or disclose them before claiming completion.

An edit renders by default and accepts the same capture object as kiln_render, including backdrop once a sheet on the default neutral grey has shown a part merging with it: light when that part is darker than the grey, dark when it is lighter. Use render: false when no image is needed. A missing or ambiguous anchor changes nothing; expand the anchor or use replaceAll: true only when every match should change. Long diffs may set diffTruncated; read more source instead of requesting a full-program echo by habit.

For a CLI workflow, read exact source with node kiln.mjs source RETURNED_REF --json (--query, --offset and --limit return the same anchored region as kiln_source) and write a JSON array of those replacement objects to edits.json. Run node kiln.mjs edit RETURNED_REF --edits edits.json (--json is accepted). This uses the same atomic editing operation and returns JSON with the new programRef, parentRef, counts and diff. CLI editing does not render; review the new reference with node kiln.mjs render NEW_REF --out revised.glb --views revised.png --json and read the image before saving. A failed edit keeps the original reference. Do not treat edit success as geometry or QA success.

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

Preserve intended structure

Direct mutation needs copyGeometry/.clone() or copyMaterial. Deformation helpers return independent geometry. Use kiln_discover with a natural-language query to find relevant helpers, then request their exact ids for contracts before changing a loft, sweep, UV workflow, or Boolean operation. Search results are suggestions; inspect limitations and ownership before applying them.

For a multipart replacement, preserve its actual parent root and connection frame; matching name suffixes do not make an assembly. Compare retained world transforms and geometry, not just part counts. For attached surface detail, check the exported mesh contact and final dimensions after reshaping; shared equations or control points alone do not prove attachment. Discovery offers optional editable-assembly and surface-detail recipes when these patterns fit.

When resizing an assembly while retaining its children, compare their before/after inventory too. A length-dependent loop can remove leaflets, slats or fasteners even when every remaining part stays attached. Preserve the requested count and attachment points; see the shared geometry recipes for repeated-part naming and fit.

Check the retained parts that connected to the replaced part, including their other ends and intermediate mounts. Unchanged geometry can become unsupported after its neighbor moves or disappears. Preserve the requested connection points; if that conflicts with a protected component, report the conflict rather than silently changing it or claiming that exact preservation proves a working joint.

For a suspected gap, kiln_inspect can measure exported triangle surfaces between two exact parts with measure.mode: "surface". Select the intended interface and read the completion status; zero distance alone does not establish sound attachment. See surface measurements and CLI inspection.

Check both intended ends of each changed brace, bar or support separately. Contact with a deck at one end does not establish contact with its post at the other. Derive replacement endpoints from the same local attachment points as their neighbors, then verify the exported surfaces. Also list nearby pairs that must remain separate: a supported panel or seat may touch its mount while needing a visible gap from the surrounding frame. Whole-assembly minimum distance and a connected-component report cannot distinguish these requirements.

When a brief specifies usable clearance, measure between the nearest functional surfaces, including teeth, bolt heads and inserts. A nominal plate spacing can remain unchanged while those details narrow the actual opening. Report nominal dimensions separately when they differ from the usable space.

Check the part in context before hiding neighbors. Isolation can reveal a surface but cannot prove its attachment. viewFidelity.materialFaithful: false leaves PBR appearance unverified. Animation and cutaway inspection should target the motion or occlusion in question, not add a fixed number of routine images. For CLI motion review, use node kiln.mjs animation RETURNED_REF --clip CLIP_NAME --phases 0,0.017,0.31,0.68,1 --views motion.png --json; add --render gpu when material fidelity matters. Compare poseBounds before and after the edit for requested ground clearance and travel, including protrusions. Sampled bounds do not prove continuous contact; include phases inside a geometric repeat, even when regular samples look identical. The motion reference covers phase units, cameras and separate frames.

After saving the reviewed child revision of a collection asset, export source and GLB from that same final reference. These file writes do not create a saved revision:

sh
node kiln.mjs source RETURNED_REF --out revised-v1.kiln.js
node kiln.mjs render RETURNED_REF --out revised-v1.glb --views revised-v1.png

Replace RETURNED_REF with the final reference returned by Kiln. Keep the workspace store and its mappings to retain earlier revisions.

CLI render --json returns a receipt with exact output paths and image fidelity, without embedded image bytes. Check ok and files before treating the export as complete; an image failure can follow a completed GLB write.

For matched before/after PNGs, save the capture object as cameras.json, then use node kiln.mjs render RETURNED_REF --capture cameras.json --views revised-view.png for each revision. The file contains only the capture object, uses the same MCP camera schema, and may request grid or separate output; separate writes revised-view.shot-01.png and so on. One shot produces a hero image. Export images directly; do not transcribe MCP image base64 into files.

Source export refuses overwrite. References persist in the configured local store; if one is missing elsewhere, import the saved file there. Report the change, the saved artifacts, the views reviewed, and unresolved issues.

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

Files

SKILL.md and 2 other files (references) in skills/kiln-refine-asset of instruktlabs/kiln.

  • SKILL.md
  • references/revision-and-views.md
  • references/revision-cli.md

Open the folder on GitHubat commit 9e6dfe0

Compare with similar skills

Kiln Refine 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.

Kiln Refine Asset compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Kiln Refine Asset this skillinstruktlabs/kiln255—~3.6kAutomated safety check: PassMIT
Unreal Material and VFX Workflowflopperam/unreal-engine-mcp1.1k—~927Automated safety check: PassNone
Fmodel Unpackpa001024/dna-builder137—~2.6kAutomated safety check: PassMIT
Make Imagesglifxyz/glif-mcp-server213—~931Automated safety check: PassMIT
Fal Assetsrehan-remade/universal-modder6.5k—~2kAutomated safety check: NotesMIT
Geometry Nodesarjun988/blender-skills283—~963Automated 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
  • Fmodel Unpack

    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…

    137 GitHub stars~2.6k tokensUpdated yesterday
    Game DevelopmentAuto-check passed
  • Make Images

    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…

    213 GitHub stars~931 tokensUpdated 2 days ago
    Game DevelopmentAuto-check passed
  • Fal Assets

    rehan-remade/universal-modder

    Generate game assets with fal (fal.ai) through the fal MCP server, the um fal CLI (REST) or fal api.

    6.5k GitHub stars~2k tokensUpdated today
    Game DevelopmentAuto-check: notes
  • Geometry Nodes

    arjun988/blender-skills

    Blender Geometry Nodes for procedural modeling, scatter systems, vegetation, buildings, pipes, cables, and reusable node groups.

    283 GitHub stars~963 tokensUpdated 3 mo ago
    Game DevelopmentAuto-check passed
  • Game Assets

    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…

    213 GitHub stars~831 tokensUpdated 2 days ago
    Game DevelopmentAuto-check passed

More from instruktlabs/kiln

  • Kiln Author Asset

    instruktlabs/kiln

    Create a procedural 3D asset with Kiln JavaScript, review useful camera views, refine saved source, and export a GLB.

    255 GitHub stars~4k tokensUpdated yesterday
    Auto-check passed
  • Kiln QA Asset

    instruktlabs/kiln

    Check a Kiln asset's geometry, views, export fidelity, and behavior in its destination project.

    255 GitHub stars~2.7k tokensUpdated yesterday
    Auto-check passed
  • Kiln Setup Workspace

    instruktlabs/kiln

    Configure and verify Kiln in an existing project or a new asset workspace for the selected coding agent.

    255 GitHub stars~3.5k tokensUpdated yesterday
    Auto-check passed
  • Kiln Batch Dispatch

    instruktlabs/kiln

    Run requested Kiln asset batches or compare coding-agent harnesses and models in isolated workspaces.

    255 GitHub stars~585 tokensUpdated yesterday
    Auto-check passed
  • Kiln Hosted

    instruktlabs/kiln

    Create, inspect, revise and deliver editable 3D assets through Kiln's connected hosted service, or reopen assets saved in that account.

    255 GitHub stars~1.2k tokensUpdated yesterday
    Auto-check passed
  • Kiln Compose Scene

    instruktlabs/kiln

    Compose existing assets into an exported scene or interactive proving environment, with deliberate placement, terrain, materials, integration checks and runtime qualification.

    255 GitHub stars~788 tokensUpdated yesterday
    Auto-check passed

Questions about Kiln Refine Asset

What does Kiln Refine Asset do?

Refine an existing Kiln asset through bounded source reads, exact revision edits, and targeted image feedback. Kiln Refine Asset is an agent skill from instruktlabs/kiln. Refine an existing Kiln asset through bounded source reads, exact revision edits, and targeted image feedback.

When should I use Kiln Refine Asset?

Kiln Refine Asset fits situations like: proportion changes; tasks that involve Game assets and audio.

How do I install Kiln Refine Asset in Claude Code?

Run `npx skills add instruktlabs/kiln --skill kiln-refine-asset -a claude-code`. Or copy the skill folder (skills/kiln-refine-asset in instruktlabs/kiln) into .claude/skills/kiln-refine-asset in your project. Claude Code loads it when a task matches its description.

How do I install Kiln Refine Asset in Codex?

Run `npx skills add instruktlabs/kiln --skill kiln-refine-asset -a codex`. Or copy the skill folder (skills/kiln-refine-asset in instruktlabs/kiln) into .agents/skills/kiln-refine-asset in your project. Codex loads it when a task matches its description.

Can I use Kiln Refine Asset 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 instruktlabs/kiln --skill kiln-refine-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-refine-asset, .gemini/skills/kiln-refine-asset, .github/skills/kiln-refine-asset and .opencode/skills/kiln-refine-asset in your project.

What does Kiln Refine Asset need to run?

Going by SKILL.md and its folder, Kiln Refine Asset needs the command-line tools its instructions call (node).

Does Kiln Refine Asset 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 Kiln Refine Asset 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 Kiln Refine Asset use?

Kiln Refine Asset is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Kiln Refine Asset use?

About 3.6k tokens (SKILL.md is roughly 14k 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 3.7k tokens, read only when the agent opens those files.

What are the alternatives to Kiln Refine Asset?

Skills that share tags, products or a category with Kiln Refine 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.

Who maintains Kiln Refine Asset?

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.