Agent skill

Unreal Material Editing

by Italink in Italink/UnrealClientProtocol

Edit UE material node graphs and properties via text (ReadGraph/WriteGraph).

MITAuto-check passedGame Development

Install Unreal Material Editing

skills CLI
$ npx skills add Italink/UnrealClientProtocol --skill unreal-material-editing -a claude-code

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

GitHub CLI
$ gh skill install Italink/UnrealClientProtocol unreal-material-editing --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/Italink/UnrealClientProtocol.git skills-src && mkdir -p .claude/skills && cp -r skills-src/Skills/unreal-material-editing .claude/skills/unreal-material-editing && 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
unreal-material-editing
GitHub stars
127
Token cost
~4.2k tokens
SKILL.md length
1,437 words
Files
1
Skills in repo
24
Repo updated
First seen
Licence
MIT

At a glance

Edit UE material node graphs and properties via text (ReadGraph/WriteGraph).

  • Works in 6 steps: Define a struct with all helper… → Declare an instance immediately after… → Call functions via the instance:… → …
  • The user asks to add
  • SKILL.md covers API, Material Properties, Section Model and Text Format, plus 6 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Unreal Material Editing is an agent skill from Italink/UnrealClientProtocol. Edit UE material node graphs and properties via text (ReadGraph/WriteGraph). Use when the user asks to add, remove, or rewire material expression nodes, or change material properties like ShadingModel or BlendMode.

Its SKILL.md is about 4.2k 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 Game development. The repository describes itself as: Lightweight UE5 plugin that exposes Unreal Engine's reflection system over TCP+JSON — let AI agents call UFunctions, read/write UProperties, and inspect any UObject in a running… The licence is MIT.

When your agent uses it

  • The user asks to add
  • Rewire material expression nodes
  • Change material properties like ShadingModel

Example prompts

  • “/unreal-material-editing”

Workflow steps

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

  1. Define a struct with all helper functions as member methods.
  2. Declare an instance immediately after the closing brace: } InstanceName;
  3. Call functions via the instance: InstanceName.FunctionName(args).
  4. Struct methods can call other methods in the same struct freely.
  5. Multiple structs are allowed — each must have its own instance name.
  6. Prefer struct functions over #define macros — they support proper scoping, recursion-free multi-line logic, and the compiler gives better…

What it can do on your machine

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

    No scripts in the folder and no shell commands in SKILL.md (its code samples are hlsl).

    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

Unreal Material Editing loads about 4.2k tokens when it runs. Until then it costs about 60 tokens; SKILL.md has 1,437 words of instructions outside code blocks.

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

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 Italink/UnrealClientProtocol at commit 7f0a56e, republished under its MIT licence (© Italink). 1,437 words, ~4,209 tokens.

Download SKILL.mdSave it as .claude/skills/unreal-material-editing/SKILL.md (or your agent's skills folder).
name
unreal-material-editing
description
Edit UE material node graphs and properties via text (ReadGraph/WriteGraph). Use when the user asks to add, remove, or rewire material expression nodes, or change material properties like ShadingModel or BlendMode.

Material Editing

Material editing covers both material properties (ShadingModel, BlendMode, etc.) via the [Properties] section, and node graph (expression nodes and connections) via the [Material] section. Both use the same unified API.

Prerequisite: UE editor running with UCP plugin enabled.

API

CDO: /Script/UnrealClientProtocolEditor.Default__NodeCodeEditingLibrary

FunctionParamsDescription
OutlineAssetPathReturns available sections (Properties, Material, Composite:Name)
ReadGraphAssetPath, SectionReturns text. Empty Section = all. "Material" = main graph only.
WriteGraphAssetPath, Section, GraphTextOverwrite section. Auto-recompiles, relayouts, refreshes editor.

Material Properties

Use the [Properties] section to read/write material-level settings:

[Properties]
ShadingModel: MSM_DefaultLit
BlendMode: BLEND_Opaque
TwoSided: true
OpacityMaskClipValue: 0.333

Common properties:

PropertyExample Values
ShadingModelMSM_DefaultLit, MSM_Unlit, MSM_Subsurface, MSM_ClearCoat
BlendModeBLEND_Opaque, BLEND_Masked, BLEND_Translucent, BLEND_Additive
MaterialDomainMD_Surface, MD_DeferredDecal, MD_LightFunction, MD_PostProcess, MD_UI
TwoSidedtrue, false

Read with ReadGraph(AssetPath, "Properties"), write with WriteGraph(AssetPath, "Properties", text).

Section Model

SectionDescription
[Properties]Material-level properties (ShadingModel, BlendMode, etc.)
[Material]Complete main graph — all non-composite nodes, read/write as one unit
[Composite:Name]Composite subgraph (physically isolated)

The [Material] section contains the entire main graph. Output pins are expressed as graph output connections: > RGB -> [BaseColor].

Text Format

[Material]

N_4kVm2xRp8bNw3yLq9dJs MaterialExpressionTextureSample {Texture:"/Game/Textures/T_Wood_BC"}
  > RGB -> [BaseColor]
  > A -> N_7tHn5cWs1fPx6zMr0gKu.A

N_9aEo3jXv2hQy8bFt4iLw MaterialExpressionScalarParameter {ParameterName:"Roughness", DefaultValue:0.5}
  > -> N_7tHn5cWs1fPx6zMr0gKu.B

N_2dGq6lZx4jSa0cHv8kNy MaterialExpressionVectorParameter {ParameterName:"EmissiveColor", DefaultValue:{"R":1,"G":0.5,"B":0}}
  > -> N_5fIr7mBz3kTb1eJw9lOa.A

N_7tHn5cWs1fPx6zMr0gKu MaterialExpressionMultiply
  > -> [Roughness]

N_5fIr7mBz3kTb1eJw9lOa MaterialExpressionMultiply
  > -> [EmissiveColor]

N_0hKt8nDc5lUd2gLx6mPb MaterialExpressionConstant {R:5.0}
  > -> N_5fIr7mBz3kTb1eJw9lOa.B

N_3jMv0pFe7nWf4iNz8oCd MaterialExpressionTextureSample {Texture:"/Game/Textures/T_Wood_N"}
  > -> [Normal]

N_6lOx2rHg9pYh5kPb1qEf MaterialExpressionTime
  > -> N_8nQz4tJi0rAj7mRd3sFg.A

N_8nQz4tJi0rAj7mRd3sFg MaterialExpressionSine {Period:6.283185}
  > -> N_1pSb6vLk2tCl9oTf5uGh.B

N_1pSb6vLk2tCl9oTf5uGh MaterialExpressionMultiply
  > -> [WorldPositionOffset]

N_4rUd8xNm3vEn0qVh7wIj MaterialExpressionWorldPosition
  > -> N_1pSb6vLk2tCl9oTf5uGh.A

Note how Time and WorldPosition — source-only nodes with no inputs — both have > -> lines. Without these lines they would be deleted as orphans.

Nodes
  • N_<id>: node reference ID. Two forms:
    • Existing nodes: N_<base62> — a 22-character Base62-encoded GUID (e.g. N_4kVm2xRp8bNw3yLq9dJs). ReadGraph always outputs this form. Preserve these IDs when writing back — they are the node's stable identity.
    • New nodes: N_new<int> — temporary ID for nodes you are creating (e.g. N_new0, N_new1). The system assigns a real GUID after WriteGraph.
  • <ClassName>: UMaterialExpression class name (e.g. MaterialExpressionMultiply, MaterialExpressionConstant3Vector)
  • {...}: non-default properties, single line
Connections

Connections are declared on the source (output) node only. Each > line under a node declares where that node's output goes. There is no "reverse" declaration — if a node has no > lines, it has no outgoing connections.

  > OutputPin -> N_<target>.InputPin    # named output to named input
  > OutputPin -> [GraphOutput]          # named output to material output
  > -> N_<target>.InputPin              # single-output node to named input
  > -> N_<target>                       # single-output to single-input (both omitted)

CRITICAL — Orphan cleanup: After WriteGraph, any node not reachable from the material output pins is automatically deleted as an orphan. This means:

  • Every node must be part of a connected chain that reaches a [GraphOutput]. If you create a node but forget to write its > -> output connections, it will be silently deleted.
  • Source-only nodes (nodes with no inputs, only outputs — e.g. Time, ScreenPosition, ViewSize, TexCoord, WorldPosition, CameraPositionWS, VertexColor, constants) are especially prone to this. They must have > -> lines connecting their output to downstream nodes.
Multi-Output Nodes

Some nodes have multiple named outputs. Use the output name before ->:

NodeOutputs
MaterialExpressionScreenPositionViewportUV (float2, index 0), PixelPosition (float2, index 1)
MaterialExpressionTextureSampleRGB, R, G, B, A, RGBA
MaterialExpressionWorldPosition(single output, omit name)
MaterialExpressionViewSize(single output float2, omit name)

Example — ScreenPosition with named output:

N_4kVm2xRp8bNw3yLq9dJs MaterialExpressionScreenPosition
  > ViewportUV -> N_7tHn5cWs1fPx6zMr0gKu.A
Common Input Pin Names
Node TypeInput Pins
Single-input nodes (Sine, Cosine, Tangent, Abs, OneMinus, Frac, Floor, Ceil, Saturate, SquareRoot, Length, Normalize)Input (can be omitted)
ComponentMaskInput (can be omitted)
Binary math (Multiply, Add, Subtract, Divide)A, B
PowerBase, Exponent
DotProduct, CrossProduct, DistanceA, B
AppendVectorA, B
LinearInterpolateA, B, Alpha
ClampInput, Min, Max
IfA, B, AGreaterThanB, AEqualsB, ALessThanB
Arctangent2FastY, X
Graph Outputs

Material output pins are expressed as [PinName]:

  > RGB -> [BaseColor]
  > -> [Roughness]
  > -> [Normal]
  > -> [EmissiveColor]
  > -> [Opacity]
  > -> [OpacityMask]
  > -> [Metallic]
  > -> [WorldPositionOffset]
Common Expression Classes

Source-only nodes (no inputs — must always have > -> output lines or they will be deleted as orphans):

ClassNameOutputDescription
MaterialExpressionConstantfloat1Float constant (property: R)
MaterialExpressionConstant2Vectorfloat2Vector2 constant
MaterialExpressionConstant3Vectorfloat3Vector3 constant (property: Constant:(R=,G=,B=,A=))
MaterialExpressionConstant4Vectorfloat4Vector4 constant
MaterialExpressionScalarParameterfloat1Float parameter
MaterialExpressionVectorParameterfloat3Vector parameter
MaterialExpressionTexCoordfloat2Texture coordinates
MaterialExpressionTimefloat1Time value
MaterialExpressionScreenPositionfloat2 × 2Outputs: ViewportUV, PixelPosition
MaterialExpressionViewSizefloat2Viewport resolution in pixels
MaterialExpressionWorldPositionfloat3World position
MaterialExpressionVertexColorfloat4Vertex color (outputs: R, G, B, A, RGB)
MaterialExpressionCameraPositionWSfloat3Camera position
MaterialExpressionTextureObjectTextureTexture reference

Texture sampling:

ClassNameDescription
MaterialExpressionTextureSampleSample a texture (outputs: RGB, R, G, B, A, RGBA)
MaterialExpressionTextureSampleParameter2DTexture parameter

Math — binary:

ClassNameInputsUnconnected-default propertiesDescription
MaterialExpressionMultiplyA, BConstA, ConstB (float)A * B
MaterialExpressionAddA, BConstA, ConstB (float)A + B
MaterialExpressionSubtractA, BConstA, ConstB (float)A - B
MaterialExpressionDivideA, BConstA, ConstB (float)A / B
MaterialExpressionPowerBase, ExponentConstExponent (float)Base ^ Exponent
MaterialExpressionDotProductA, B(none)Dot(A, B) → float1
MaterialExpressionCrossProductA, B(none)Cross(A, B) → float3
MaterialExpressionDistanceA, B(none)Distance(A, B) → float1
MaterialExpressionAppendVectorA, B(none — both inputs required)Append(A, B) — concatenates dimensions. Max output is float4. float1+float1→float2, float2+float2→float4. float3+float2 or larger FAILS.

ConstA/ConstB are only available on the four basic arithmetic nodes (Multiply, Add, Subtract, Divide). They provide a scalar fallback when the corresponding input pin is unconnected. All other binary nodes require explicit input connections — use a MaterialExpressionConstant node to supply fixed values.

Math — unary (input: Input, can be omitted in connection):

ClassNameDescription
MaterialExpressionOneMinus1 - X
MaterialExpressionAbsAbsolute value
MaterialExpressionNormalizeNormalize → same dimension
MaterialExpressionLengthLength → float1
MaterialExpressionSquareRootsqrt
MaterialExpressionFracFractional part
MaterialExpressionFloorFloor
MaterialExpressionCeilCeiling
MaterialExpressionSaturateClamp to 0-1

Trig (input: Input; Period property: default 1 maps input range [0,1] to one full cycle. WARNING: Period:0 is BROKEN — it injects a float4 multiply that corrupts dimensions. For raw radians use Period:6.283185 (= 2π), which maps [0, 2π] to one full cycle):

ClassNameDescription
MaterialExpressionSinesin
MaterialExpressionCosinecos
MaterialExpressionTangenttan
MaterialExpressionArctangent2Fastatan2(Y, X) — inputs: Y, X

Interpolation & logic:

ClassNameDescription
MaterialExpressionLinearInterpolateLerp(A, B, Alpha)
MaterialExpressionClampClamp(Input, Min, Max)
MaterialExpressionIfIf(A, B, AGreaterThanB, AEqualsB, ALessThanB)
MaterialExpressionStaticSwitchParameterStatic bool parameter

Channel operations:

ClassNameDescription
MaterialExpressionComponentMaskMask channels (properties: R, G, B, A booleans)

Other:

ClassNameDescription
MaterialExpressionPannerUV panning
MaterialExpressionTransformTransform vector between spaces
MaterialExpressionCustomCustom HLSL code
MaterialExpressionMaterialFunctionCallCall a material function
MaterialExpressionSetMaterialAttributesSet material attributes
Show full SKILL.md (550 more words)Show less

Custom HLSL

For MaterialExpressionCustom, the Code property contains HLSL and InputNames defines custom inputs:

N_new0 MaterialExpressionCustom {Code:"float3 result = Input1 * Input2;\nreturn result;", OutputType:CMOT_Float3, InputNames:["A","B"]}
Defining Functions via Struct Wrapping

UE's Custom node does support function definitions — wrap them inside a struct. Direct top-level function definitions (float Foo(){...}) are rejected by the compiler, but struct member functions work:

hlsl
struct MyHelpers
{
    float Hash(float t)
    {
        return frac(sin(t * 613.2) * 614.8);
    }

    float2 Hash2D(float t)
    {
        return float2(
            frac(sin(t * 213.3) * 314.8) - 0.5,
            frac(sin(t * 591.1) * 647.2) - 0.5
        );
    }

    float3 Compute(float2 uv, float time)
    {
        float h = Hash(time);
        float2 offset = Hash2D(time);
        return float3(uv + offset, h);
    }
} Helpers;              // <-- instance name after closing brace

return Helpers.Compute(UV, Time);   // call via instance

Key rules:

  1. Define a struct with all helper functions as member methods.
  2. Declare an instance immediately after the closing brace: } InstanceName;
  3. Call functions via the instance: InstanceName.FunctionName(args).
  4. Struct methods can call other methods in the same struct freely.
  5. Multiple structs are allowed — each must have its own instance name.
  6. Prefer struct functions over #define macros — they support proper scoping, recursion-free multi-line logic, and the compiler gives better error messages.

Material Instances

Material instance parameter editing uses SetObjectProperty from the unreal-object-operation skill, not NodeCode. NodeCode is for editing the parent material's node graph.

Workflow

  1. Outline — see what sections exist
  2. ReadGraph("Properties") — check current material settings
  3. ReadGraph("Material") — get the full node graph
  4. Modify — edit properties and/or nodes
  5. WriteGraph("Properties", text) — update settings
  6. WriteGraph("Material", text) — update graph (auto-recompiles)

Key Rules

  1. Preserve node IDs — existing nodes have N_<base62> IDs that encode their GUID. Always keep them unchanged when writing back. Use N_new<int> only for genuinely new nodes.
  2. [Material] is the complete main graph — no per-output-pin splitting.
  3. ReadGraph before WriteGraph — always read first.
  4. All operations support Undo (Ctrl+Z).
  5. Incremental diff — only changed nodes/connections are modified.
  6. Every node needs output connections — nodes without > -> lines that aren't reachable from material outputs will be deleted as orphans. This is especially important for source-only nodes (constants, Time, ScreenPosition, ViewSize, etc.).
  7. Connections are output-side only — you declare where a node's output goes by writing > -> lines under it. There is no way to declare an incoming connection on the target side.
  8. Track dimensions through the graph — UE material nodes have strict type rules. Binary math nodes broadcast (float1 op floatN → floatN). AppendVector concatenates dimensions with a max of float4. ComponentMask reduces dimensions. DotProduct and Length always output float1. When building complex graphs, mentally track the dimension at each node to avoid overflow at AppendVector. See the Dimension Rules section below.
  9. Verify all node IDs before writing — every N_<id> referenced in > -> connection lines must be defined as a node line in the same graph. Referencing an undefined ID will silently drop that connection.
  10. Pin name rule — single-input nodes (Sine, Cosine, Abs, Saturate, OneMinus, ComponentMask, Length, etc.) use Input as their pin name or omit it entirely. NEVER use .A or .B for single-input nodes — those names only exist on binary nodes (Multiply, Add, DotProduct, etc.).

Dimension Rules

UE material compiler enforces strict dimension rules. Track the float-width through your node chain:

OperationOutput dimension
Multiply/Add/Subtract/Divide(floatN, floatN)floatN
Multiply/Add/Subtract/Divide(float1, floatN)floatN (broadcast)
AppendVector(floatA, floatB)float(A+B), max float4
ComponentMask with K channels enabledfloatK
DotProduct(floatN, floatN)float1
CrossProduct(float3, float3)float3
Length(floatN)float1
Distance(floatN, floatN)float1
Normalize(floatN)floatN
Sine/Cosine/Tangent(floatN)floatN
Abs/OneMinus/Saturate/Frac/Floor/Ceil(floatN)floatN
Arctangent2Fast(float1, float1)float1

Common pitfall: passing a float2 through Multiply(float2, float2) still yields float2, but then AppendVector(float2, float2) yields float4. Another AppendVector with that float4 will fail to compile.

Error Handling

  • Check diff object in response for changes applied.
  • Unknown expression class: "Unknown expression class: ...".
  • Pin not found: "Input 'X' not found on N_... (ClassName). Available: [...]".

© Italink, 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 Skills/unreal-material-editing of Italink/UnrealClientProtocol.

Open the folder on GitHubat commit 7f0a56e

Compare with similar skills

Unreal Material Editing 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.

Unreal Material Editing compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Unreal Material Editing this skillItalink/UnrealClientProtocol127—~4.2kAutomated safety check: PassMIT
Godot Gdscript Patterns925236118/AlphaAgent10310 repos~5kAutomated safety check: PassMIT
Sprite Genaldegad/sprite-gen2.7k—~4.9kAutomated safety check: PassApache-2.0
2D Map and Scene Generator0x0funky/agent-sprite-forge4.4k—~2.9kAutomated safety check: PassMIT
Fantasy Framework Development Guideqq362946/Fantasy1.4k—~5.8kAutomated safety check: PassCustom licence
Dev StoryDonchitos/Claude-Code-Game-Studios26k—~2.4kAutomated safety check: NotesMIT

Similar skills

  • Godot Gdscript Patterns

    925236118/AlphaAgent

    Master Godot 4 GDScript patterns including signals, scenes, state machines, and optimization.

    103 GitHub starsUsed in 10 repos~5k tokens
    Game DevelopmentAuto-check passed
  • Sprite Gen

    aldegad/sprite-gen

    Generates images and game sprites through GPT or Grok with guided provider choices, separate saved defaults, automatic cleanup and optional curation.

    2.7k GitHub stars~4.9k tokensUpdated yesterday
    Game DevelopmentAuto-check passed
  • 2D Map and Scene Generator

    0x0funky/agent-sprite-forge

    Plans and builds 2D game maps and scenes, from tilemaps and parallax backgrounds to HD-2D plates, with collision checks, a playable HTML preview and Tiled, Godot or LDtk export.

    4.4k GitHub stars~2.9k tokensUpdated 4 days ago
    Game DevelopmentAuto-check passed
  • Development and review guide for the Fantasy C# distributed game server framework: ECS, FTask, routing, service discovery, config and databases.

    1.4k GitHub stars~5.8k tokensUpdated 2 days ago
    Game DevelopmentAuto-check passed
  • Dev Story

    Donchitos/Claude-Code-Game-Studios

    Implement a story: ADR guidelines, right programmer agent, code plus test.

    26k GitHub stars~2.4k tokensUpdated 3 days ago
    Game DevelopmentAuto-check: notes
  • Asset Pipeline

    rehan-remade/universal-modder

    Turn generated or hand-made art into exactly what a game engine loads.

    6.5k GitHub stars~2k tokensUpdated today
    Game DevelopmentAuto-check passed

More from Italink/UnrealClientProtocol

All 24 skills in this repo
  • Unreal Client Protocol

    Italink/UnrealClientProtocol

    Interact with the running Unreal Engine editor via TCP bridge.

    127 GitHub stars~1.7k tokensUpdated 1 mo ago
    Auto-check passed
  • Unreal Actor Editing

    Italink/UnrealClientProtocol

    Manage actors in UE levels via UCP. An agent skill from Italink/UnrealClientProtocol.

    127 GitHub stars~3.4k tokensUpdated 1 mo ago
    Auto-check passed
  • Unreal Asset Operation

    Italink/UnrealClientProtocol

    Query and manage UE assets via UCP. An agent skill from Italink/UnrealClientProtocol.

    127 GitHub stars~4.4k tokensUpdated 1 mo ago
    Auto-check passed
  • Unreal Blueprint Editing

    Italink/UnrealClientProtocol

    Edit UE Blueprint node graphs via text (ReadGraph/WriteGraph).

    127 GitHub stars~1.7k tokensUpdated 1 mo ago
    Auto-check passed
  • Unreal Large Blueprint Analysis

    Italink/UnrealClientProtocol

    Systematically analyze and translate large UE Blueprints (10+ functions) into C++ or other targets.

    127 GitHub stars~2.6k tokensUpdated 1 mo ago
    Auto-check passed
  • Unreal Live Coding

    Italink/UnrealClientProtocol

    Trigger Live Coding compilation via UCP. An agent skill from Italink/UnrealClientProtocol.

    127 GitHub stars~1k tokensUpdated 1 mo ago
    Auto-check passed

Questions about Unreal Material Editing

What does Unreal Material Editing do?

Edit UE material node graphs and properties via text (ReadGraph/WriteGraph). Unreal Material Editing is an agent skill from Italink/UnrealClientProtocol. Edit UE material node graphs and properties via text (ReadGraph/WriteGraph).

When should I use Unreal Material Editing?

Unreal Material Editing fits situations like: the user asks to add; rewire material expression nodes; change material properties like ShadingModel.

How do I install Unreal Material Editing in Claude Code?

Run `npx skills add Italink/UnrealClientProtocol --skill unreal-material-editing -a claude-code`. Or copy the skill folder (Skills/unreal-material-editing in Italink/UnrealClientProtocol) into .claude/skills/unreal-material-editing in your project. Claude Code loads it when a task matches its description.

How do I install Unreal Material Editing in Codex?

Run `npx skills add Italink/UnrealClientProtocol --skill unreal-material-editing -a codex`. Or copy the skill folder (Skills/unreal-material-editing in Italink/UnrealClientProtocol) into .agents/skills/unreal-material-editing in your project. Codex loads it when a task matches its description.

Can I use Unreal Material Editing 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 Italink/UnrealClientProtocol --skill unreal-material-editing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/unreal-material-editing, .gemini/skills/unreal-material-editing, .github/skills/unreal-material-editing and .opencode/skills/unreal-material-editing in your project.

What does Unreal Material Editing need to run?

SKILL.md names no scripts, command-line tools or credentials: Unreal Material Editing is instructions for the agent only.

Does Unreal Material Editing 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 Unreal Material Editing 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 Unreal Material Editing use?

Unreal Material Editing 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 Unreal Material Editing use?

About 4.2k tokens (SKILL.md is roughly 17k 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 Unreal Material Editing?

Skills that share tags, products or a category with Unreal Material Editing: Godot Gdscript Patterns (925236118/AlphaAgent, 103 stars), Sprite Gen (aldegad/sprite-gen, 2.7k stars), 2D Map and Scene Generator (0x0funky/agent-sprite-forge, 4.4k stars) and Fantasy Framework Development Guide (qq362946/Fantasy, 1.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Unreal Material Editing?

Italink (a GitHub user) maintains it in Italink/UnrealClientProtocol, which has 127 GitHub stars. The repository holds 24 skills in this directory. The repository was last updated on August 28, 2026.

Source: Italink/UnrealClientProtocol on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.