Agent skill

Unreal Niagara Editing

by Italink in Italink/UnrealClientProtocol

Edit Niagara systems, emitters, and scripts via UCP. An agent skill from Italink/UnrealClientProtocol.

MITAuto-check passedGame Development

Install Unreal Niagara Editing

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

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

GitHub CLI
$ gh skill install Italink/UnrealClientProtocol unreal-niagara-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-niagara-editing .claude/skills/unreal-niagara-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-niagara-editing
GitHub stars
127
Token cost
~3k tokens
SKILL.md length
767 words
Files
1
Skills in repo
24
Repo updated
First seen
Licence
MIT

At a glance

Edit Niagara systems, emitters, and scripts via UCP. An agent skill from Italink/UnrealClientProtocol.

  • Works in 5 steps: Literal Value (SetModuleInputValue) —… → Binding (SetModuleInputBinding) —… → Dynamic Input… → …
  • The user asks to create/modify particle effects
  • SKILL.md covers API Overview, Section Model, ScriptUsage Values and Parameter Namespaces, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Unreal Niagara Editing is an agent skill from Italink/UnrealClientProtocol. Edit Niagara systems, emitters, and scripts via UCP. Use when the user asks to create/modify particle effects, manage emitters, configure modules, set module inputs, edit Niagara script graphs, or any Niagara VFX operation.

Its SKILL.md is about 3k 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 create/modify particle effects
  • Manage emitters
  • Configure modules
  • Set module inputs

Example prompts

  • “/unreal-niagara-editing”

Workflow steps

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

  1. Literal Value (SetModuleInputValue) — stored as Rapid Iteration Parameter in Constants.EmitterName.ModuleName.InputName, no graph nodes
  2. Binding (SetModuleInputBinding) — ParameterMapGet reads another parameter (e.g. User.MyParam, Emitter.SpawnRate)
  3. Dynamic Input (SetModuleInputDynamicInput) — a DynamicInput script computes the value
  4. Data Interface — a NiagaraNodeInput provides a data interface object
  5. Default — module's built-in default, no override

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 json).

    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 Niagara Editing loads about 3k tokens when it runs. Until then it costs about 62 tokens; SKILL.md has 767 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~62
When it runs · the whole SKILL.md, loaded when a task matches
~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 Italink/UnrealClientProtocol at commit 7f0a56e, republished under its MIT licence (© Italink). 767 words, ~3,018 tokens.

Download SKILL.mdSave it as .claude/skills/unreal-niagara-editing/SKILL.md (or your agent's skills folder).
name
unreal-niagara-editing
description
Edit Niagara systems, emitters, and scripts via UCP. Use when the user asks to create/modify particle effects, manage emitters, configure modules, set module inputs, edit Niagara script graphs, or any Niagara VFX operation.

Niagara Editing

Niagara editing uses three complementary paths: NiagaraOperationLibrary for structural operations, NodeCode for graph/property reading and writing, and ObjectOperationLibrary for detailed UObject property access.

Prerequisite: UE editor running with UCP plugin enabled.

API Overview

NiagaraOperationLibrary (structural operations)

CDO: /Script/UnrealClientProtocolEditor.Default__NiagaraOperationLibrary

UObject path parameters (System, Emitter, Script, etc.) are auto-resolved by UCP — pass the object path as a string and UCP converts it to the UObject pointer.

FunctionParamsDescription
AddEmitterSystem(path), SourceEmitter(path), NameAdd emitter to system
RemoveEmitterSystem(path), EmitterNameRemove emitter from system
ReorderEmitterSystem(path), EmitterName, NewIndexReorder emitter
AddUserParameterSystem(path), ParamName, TypeName, DefaultValueAdd User parameter
RemoveUserParameterSystem(path), ParamNameRemove User parameter
AddModuleSystemOrEmitter(path), ScriptUsage, ModuleScript(path), IndexAdd module to stack
RemoveModuleSystemOrEmitter(path), ScriptUsage, ModuleNodeGuidRemove module
MoveModuleSystemOrEmitter(path), ScriptUsage, ModuleNodeGuid, NewIndexReorder module
SetModuleEnabledSystemOrEmitter(path), ScriptUsage, ModuleNodeGuid, bEnabledEnable/disable module
GetModulesSystemOrEmitter(path), ScriptUsageList modules with name/guid/enabled/scriptPath
SetModuleInputValueSystemOrEmitter(path), ScriptUsage, ModuleNodeGuid, InputName, ValueSet input to literal (Rapid Iteration)
SetModuleInputBindingSystemOrEmitter(path), ScriptUsage, ModuleNodeGuid, InputName, LinkedParamNameBind input to parameter
SetModuleInputDynamicInputSystemOrEmitter(path), ScriptUsage, ModuleNodeGuid, InputName, DynamicInputScript(path)Set dynamic input
ResetModuleInputSystemOrEmitter(path), ScriptUsage, ModuleNodeGuid, InputNameReset to default
GetModuleInputsSystemOrEmitter(path), ScriptUsage, ModuleNodeGuidList inputs with name/type/mode/value
AddRendererEmitter(path), RendererClassNameAdd renderer
RemoveRendererEmitter(path), RendererIndexRemove renderer
MoveRendererEmitter(path), RendererIndex, NewIndexReorder renderer
AddEventHandlerEmitter(path)Add event handler
RemoveEventHandlerEmitter(path), UsageIdStringRemove event handler
AddSimulationStageEmitter(path)Add simulation stage
RemoveSimulationStageEmitter(path), StageIdStringRemove simulation stage
MoveSimulationStageEmitter(path), StageIdString, NewIndexReorder simulation stage
AddGraphParameterScript(path), ParamName, TypeNameAdd parameter to script graph
RemoveGraphParameterScript(path), ParamNameRemove parameter
RenameGraphParameterScript(path), OldName, NewNameRename parameter
CreateScratchPadScriptSystemOrEmitter(path), ScriptName, Usage, ModuleUsageBitmaskCreate a ScratchPad (Local Module) script
NodeCode (graph + properties reading/writing)

CDO: /Script/UnrealClientProtocolEditor.Default__NodeCodeEditingLibrary

FunctionParamsDescription
OutlineAssetPathList available sections
ReadGraphAssetPath, SectionRead section content as text
WriteGraphAssetPath, Section, GraphTextWrite section content back

Section Model

System Asset (UNiagaraSystem)
SectionTypeDescription
[SystemProperties]PropertiesWarmup, bounds, determinism, scalability, LWC, render defaults
[Emitters]PropertiesEmitter list with names, enabled state, ObjectPath
[UserParameters]PropertiesUser. namespace exposed parameters
[ScratchPadScripts]PropertiesLocal Module scripts with name, Usage, ModuleUsageBitmask, ObjectPath
[SystemSpawn]GraphSystem spawn stage module chain
[SystemUpdate]GraphSystem update stage module chain
Emitter Object (UNiagaraEmitter, accessed via ObjectPath from [Emitters])
SectionTypeDescription
[EmitterProperties]PropertiesSimTarget, bLocalSpace, bounds, allocation, inheritance
[ParticleAttributes]Properties (read-only)Compiled particle attributes list
[Renderers]PropertiesRenderer list with class, ObjectPath
[EventHandlers]PropertiesEvent handler configs
[SimulationStages]PropertiesSimulation stage list
[EmitterSpawn]GraphEmitter spawn stage
[EmitterUpdate]GraphEmitter update stage
[ParticleSpawn]GraphParticle spawn stage
[ParticleUpdate]GraphParticle update stage
[ParticleEvent:EventId]GraphEvent handler graph
[SimulationStage:StageId]GraphCustom simulation stage graph
Standalone Script (UNiagaraScript)
SectionTypeDescription
[Module]GraphModule script graph
[Function]GraphFunction script graph
[DynamicInput]GraphDynamic input script graph

ScriptUsage Values

Use these strings for ScriptUsage parameter:

SystemSpawn, SystemUpdate, EmitterSpawn, EmitterUpdate, ParticleSpawn, ParticleUpdate, ParticleEvent, SimulationStage, Module, Function, DynamicInput

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

Parameter Namespaces

NamespaceScopeWritable In
System.System-level attributesSystem stages
Emitter.Emitter-level attributesEmitter stages
Particles.Particle attributesParticle stages
Module.Module input parametersModule internal
User.User-exposed parametersRuntime settable
Engine.Engine values (DeltaTime, etc.)Read-only
Local.Module.Module-local temporariesModule internal
Transient.Cross-module temporariesCurrent stage
Constants.Rapid iteration parametersEditor-set values

Module Input Setting Methods

Modules can have their inputs set in four ways:

  1. Literal Value (SetModuleInputValue) — stored as Rapid Iteration Parameter in Constants.EmitterName.ModuleName.InputName, no graph nodes
  2. Binding (SetModuleInputBinding) — ParameterMapGet reads another parameter (e.g. User.MyParam, Emitter.SpawnRate)
  3. Dynamic Input (SetModuleInputDynamicInput) — a DynamicInput script computes the value
  4. Data Interface — a NiagaraNodeInput provides a data interface object
  5. Default — module's built-in default, no override

Workflow

Exploring a System
json
// 1. Get system structure
{"object":"...NodeCodeEditingLibrary","function":"Outline","params":{"AssetPath":"/Game/FX/NS_Fountain"}}

// 2. Read emitter list
{"object":"...NodeCodeEditingLibrary","function":"ReadGraph","params":{"AssetPath":"/Game/FX/NS_Fountain","Section":"Emitters"}}

// 3. Deep-dive into an emitter (use ObjectPath from step 2)
{"object":"...NodeCodeEditingLibrary","function":"Outline","params":{"AssetPath":"/Game/FX/NS_Fountain.NS_Fountain:Fountain"}}
Modifying Module Stack
json
// Add a module
{"object":"...NiagaraOperationLibrary","function":"AddModule","params":{"EmitterPath":"...Fountain","ScriptUsage":"ParticleSpawn","ModuleAssetPath":"/Niagara/Modules/AddVelocity","Index":1}}

// Set module input to a value
{"object":"...NiagaraOperationLibrary","function":"SetModuleInputValue","params":{"EmitterPath":"...Fountain","ScriptUsage":"ParticleSpawn","ModuleGuid":"...","InputName":"Velocity","Value":"(X=0,Y=0,Z=100)"}}

// Bind module input to User parameter
{"object":"...NiagaraOperationLibrary","function":"SetModuleInputBinding","params":{"EmitterPath":"...Fountain","ScriptUsage":"ParticleSpawn","ModuleGuid":"...","InputName":"Velocity","LinkedParamName":"User.InitialVelocity"}}
Editing a Module Script's Internal Graph
ReadGraph("/Game/FX/Modules/MyModule", "Module")
→ Text representation of the node graph

WriteGraph("/Game/FX/Modules/MyModule", "Module", <modified text>)
→ Diff result
Modifying Renderer Properties
json
// Get renderer list
{"object":"...NodeCodeEditingLibrary","function":"ReadGraph","params":{"AssetPath":"...Fountain","Section":"Renderers"}}

// Read detailed renderer properties via reflection
{"object":"...ObjectOperationLibrary","function":"DescribeObject","params":{"ObjectPath":"...SpriteRenderer_0"}}

// Set renderer property
{"object":"...ObjectOperationLibrary","function":"SetObjectProperty","params":{"ObjectPath":"...SpriteRenderer_0","PropertyName":"Material","JsonValue":"\"/Game/Materials/M_Particle\""}}

Node Types in Graph Sections

Encoded NameUClassDescription
FunctionCall:<ScriptPath>UNiagaraNodeFunctionCallModule/function call (asset module)
FunctionCall:ScratchPad:<Name>UNiagaraNodeFunctionCallScratchPad (Local Module) reference
AssignmentUNiagaraNodeAssignmentInline assignment
CustomHlslUNiagaraNodeCustomHlslCustom HLSL code
ParameterMapGetUNiagaraNodeParameterMapGetRead from parameter map
ParameterMapSetUNiagaraNodeParameterMapSetWrite to parameter map
NiagaraOpUNiagaraNodeOpMath operation (OpName property)
NiagaraNodeInputUNiagaraNodeInputInput node
NiagaraNodeOutputUNiagaraNodeOutputOutput node
Working with ScratchPad (Local Module) Scripts

ScratchPad scripts are inline module/function/dynamic-input scripts embedded within a System or Emitter. They appear in [ScratchPadScripts] and are referenced in graphs as FunctionCall:ScratchPad:<Name>.

json
// 1. Read ScratchPad list from source system
{"object":"...NodeCodeEditingLibrary","function":"ReadGraph","params":{"AssetPath":"/Game/FX/NS_Source","Section":"ScratchPadScripts"}}

// 2. Create matching ScratchPad scripts in target system
{"object":"...NiagaraOperationLibrary","function":"CreateScratchPadScript","params":{"SystemOrEmitter":"/Game/FX/NS_Target","ScriptName":"MyModule","Usage":"Module","ModuleUsageBitmask":56}}

// 3. Read source ScratchPad internal graph (use ObjectPath from step 1)
{"object":"...NodeCodeEditingLibrary","function":"ReadGraph","params":{"AssetPath":"/Game/FX/NS_Source.NS_Source:MyModule","Section":"Module"}}

// 4. Write to target ScratchPad (use ObjectPath from step 2)
{"object":"...NodeCodeEditingLibrary","function":"WriteGraph","params":{"AssetPath":"/Game/FX/NS_Target.NS_Target:MyModule","Section":"Module","GraphText":"..."}}

// 5. Now write stage graphs — FunctionCall:ScratchPad:MyModule auto-resolves to target system's script

Important Notes

  • GUID Preservation: When editing graphs with WriteGraph, preserve existing node #guid values to ensure correct diff matching.
  • Emitters are embedded: Emitters inside a System are copies, not references. Access them via ObjectPath from the [Emitters] section.
  • ParticleAttributes are read-only: They are derived from compiled scripts. To add/remove particle attributes, add/remove modules that write to Particles. namespace.
  • Prefer OperationLibrary for module stack changes: Use AddModule/RemoveModule/SetModuleInput instead of WriteGraph for System/Emitter stage graphs, as these APIs correctly handle Rapid Iteration parameters and Override node management.

© 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-niagara-editing of Italink/UnrealClientProtocol.

Open the folder on GitHubat commit 7f0a56e

Compare with similar skills

Unreal Niagara 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 Niagara Editing compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Unreal Niagara Editing this skillItalink/UnrealClientProtocol127—~3kAutomated 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 Niagara Editing

What does Unreal Niagara Editing do?

Edit Niagara systems, emitters, and scripts via UCP. An agent skill from Italink/UnrealClientProtocol. Unreal Niagara Editing is an agent skill from Italink/UnrealClientProtocol. Edit Niagara systems, emitters, and scripts via UCP.

When should I use Unreal Niagara Editing?

Unreal Niagara Editing fits situations like: the user asks to create/modify particle effects; manage emitters; configure modules; set module inputs.

How do I install Unreal Niagara Editing in Claude Code?

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

How do I install Unreal Niagara Editing in Codex?

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

Can I use Unreal Niagara 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-niagara-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-niagara-editing, .gemini/skills/unreal-niagara-editing, .github/skills/unreal-niagara-editing and .opencode/skills/unreal-niagara-editing in your project.

What does Unreal Niagara Editing need to run?

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

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

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

About 3k tokens (SKILL.md is roughly 12k 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 Niagara Editing?

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