Agent skill

Sound Cues

by kevinpbuckley in kevinpbuckley/VibeUE

Create and modify SoundCue assets — add/connect nodes (mixer, random, delay, attenuation, modulator, etc.) and set audio properties (SoundCueService).

MITAuto-check passedGame Development

Install Sound Cues

skills CLI
$ npx skills add kevinpbuckley/VibeUE --skill sound-cues -a claude-code

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

GitHub CLI
$ gh skill install kevinpbuckley/VibeUE sound-cues --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/kevinpbuckley/VibeUE.git skills-src && mkdir -p .claude/skills && cp -r skills-src/Content/Skills/sound-cues .claude/skills/sound-cues && 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
sound-cues
GitHub stars
730
Token cost
~2.8k tokens
SKILL.md length
722 words
Files
2 (incl. scripts)
Skills in repo
39
Repo updated
First seen
Licence
MIT

At a glance

Create and modify SoundCue assets — add/connect nodes (mixer, random, delay, attenuation, modulator, etc.) and set audio properties (SoundCueService).

  • The user asks to create a Sound Cue
  • SKILL.md covers Service Access, Audio Flow Direction, Critical Rules and Workflows, plus 2 more sections
  • Build a SoundCue node graph
  • Wire audio playback logic

What it does

Sound Cues is an agent skill from kevinpbuckley/VibeUE. Create and modify SoundCue assets — add/connect nodes (mixer, random, delay, attenuation, modulator, etc.) and set audio properties (SoundCueService). Use when the user asks to create a Sound Cue, build a SoundCue node graph, or wire audio playback logic.

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts.

It sits in Game Development. It works with Python. The repository describes itself as: Unreal Engine Vibe Coding tool. The licence is MIT.

When your agent uses it

  • The user asks to create a Sound Cue
  • Build a SoundCue node graph
  • Wire audio playback logic

Example prompts

  • “/sound-cues”

Requirements

  • Python 3

What it can do on your machine

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

    Ships 1 file in scripts/, which the agent can run.

    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

Sound Cues loads about 2.8k tokens when it runs. Until then it costs about 67 tokens; SKILL.md has 722 words of instructions outside code blocks.

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

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); the scripts in this folder are not scanned.

SKILL.md

The full file from kevinpbuckley/VibeUE at commit dc051be, republished under its MIT licence (© kevinpbuckley). 722 words, ~2,765 tokens.

Download SKILL.mdSave it as .claude/skills/sound-cues/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
sound-cues
description
Create and modify SoundCue assets — add/connect nodes (mixer, random, delay, attenuation, modulator, etc.) and set audio properties (SoundCueService). Use when the user asks to create a Sound Cue, build a SoundCue node graph, or wire audio playback logic.
display_name
Sound Cue Editor
vibeue_classes
SoundCueService
unreal_classes
SoundCue, SoundNodeWavePlayer, SoundNodeRandom, SoundNodeMixer, SoundNodeConcatenator, SoundNodeModulator, SoundNodeAttenuation, SoundNodeLooping…
keywords
sound cue, sound node, wave player, random node, mixer, audio graph, sound design, SoundCue
related_skills
asset-management

🧠 Brains complement: IF an unreal-engine-skills-manager tool (external MCP) exists in this session, call it with {action: "load", skill: "audio-and-metasounds"} for UE domain knowledge on this topic — correct APIs, architecture, best practices — and treat it as the rubric for any review / "best practices" question. If no such tool is available (e.g. running under Claude Code or Codex without that MCP), skip this line entirely and proceed with this skill alone — do NOT attempt the call.

Wrong skill for MetaSound assets? If the user asked about MetaSound, MS_ assets, or UMetaSoundSource, load the metasounds skill instead (via GetSkills / AgentSkillToolset). SoundCue and MetaSound are completely separate systems — do not use SoundCueService for MetaSound tasks.

Sound Cue Editor Skill

Service Access

python
import unreal
svc = unreal.SoundCueService()

Audio Flow Direction

Audio flows FROM leaves TOWARD root.

[WavePlayer] ──> [Random] ──> [Mixer] ──> [ROOT]
                                ^
                    [WavePlayer2] ──────┘
  • connect_nodes(parent, child, slot) means: child provides audio INTO parent at that input slot.
  • set_root_node(index) makes that node the final output (what you hear).

Critical Rules

⚠️ Bool Properties — b prefix stripped in Python

UE strips the b prefix from bool UPROPERTY names in Python:

C++ / UPROPERTYPython attribute
bSuccesssuccess
bIsRootNodeis_root_node
bLoopingis_looping
bStreamingis_streaming
⚠️ Node indices are positional and may shift

list_nodes() returns nodes in graph order — indices can change if new nodes are added. Always call list_nodes() to get current indices before connecting or modifying nodes.

⚠️ Quality Level node has a fixed slot count

add_quality_level_node creates a node whose input-slot count is governed by the project's audio quality levels (AudioQualitySettings), not by an argument — there is no num_inputs param. In a default/skeleton project this is often a single slot, so connect_nodes(..., slot=1) returns False. If a cue must select between sounds per scalability bucket, confirm the project defines multiple quality levels first; otherwise only slot 0 is wireable.

⚠️ New-cue defaults: volume_multiplier is 0.75, not 1.0

A freshly created empty cue reports volume_multiplier = 0.75 (the engine USoundCue default), pitch_multiplier = 1.0. Do not assert 1.0 for volume on a new cue — read it back instead.

⚠️ connect_nodes parameter order
python
# parent receives audio FROM child at slot
svc.connect_nodes(cue_path, parent_index, child_index, input_slot)

# CORRECT: WavePlayer(0) feeds into Random(1) at slot 0
svc.connect_nodes('/Game/MyCue', 1, 0, 0)

# WRONG: don't confuse child/parent order

Workflows

Create a Simple SoundCue
python
import unreal
svc = unreal.SoundCueService()

# Create the asset (optionally wire an initial WavePlayer)
r = svc.create_sound_cue('/Game/Audio/SC_Footstep', '')
assert r.success, r.message

# Add a WavePlayer node
r = svc.add_wave_player_node('/Game/Audio/SC_Footstep', '/Game/Audio/Footstep_01', -250, 0)
assert r.success

# Set it as the root (output)
nodes = svc.list_nodes('/Game/Audio/SC_Footstep')
svc.set_root_node('/Game/Audio/SC_Footstep', nodes[0].node_index)

# Save
svc.save_sound_cue('/Game/Audio/SC_Footstep')
Random from Multiple Waves
python
import unreal
svc = unreal.SoundCueService()
cue = '/Game/Audio/SC_Footsteps'

svc.create_sound_cue(cue, '')

# Add 3 wave players
for i, wave in enumerate(['/Game/Audio/Step_01', '/Game/Audio/Step_02', '/Game/Audio/Step_03']):
    svc.add_wave_player_node(cue, wave, -400, i * 150)

# Add a Random node to select one
svc.add_random_node(cue, -150, 150)

nodes = svc.list_nodes(cue)
# nodes[0..2] = WavePlayers, nodes[3] = Random
random_idx = next(i for i, n in enumerate(nodes) if 'Random' in n.node_class)
for i in range(3):
    svc.connect_nodes(cue, random_idx, i, i)  # each wave into random

svc.set_root_node(cue, random_idx)
svc.save_sound_cue(cue)
Mixer (parallel blend)
python
import unreal
svc = unreal.SoundCueService()
cue = '/Game/Audio/SC_Ambient'

svc.create_sound_cue(cue, '')
svc.add_wave_player_node(cue, '/Game/Audio/Wind', -400, 0)
svc.add_wave_player_node(cue, '/Game/Audio/Rain', -400, 150)
svc.add_mixer_node(cue, 2, -150, 75)   # 2 inputs

nodes = svc.list_nodes(cue)
wave0 = next(i for i, n in enumerate(nodes) if 'WavePlayer' in n.node_class and i == 0)
wave1 = next(i for i, n in enumerate(nodes) if 'WavePlayer' in n.node_class and i != wave0)
mixer = next(i for i, n in enumerate(nodes) if 'Mixer' in n.node_class)

svc.connect_nodes(cue, mixer, wave0, 0)
svc.connect_nodes(cue, mixer, wave1, 1)
svc.set_root_node(cue, mixer)
svc.save_sound_cue(cue)
Volume / Pitch / SoundClass
python
svc.set_volume_multiplier('/Game/Audio/SC_Explosion', 1.5)
svc.set_pitch_multiplier('/Game/Audio/SC_Explosion', 0.9)
svc.set_sound_class('/Game/Audio/SC_Explosion', '/Game/Audio/SC_SFX')

API Reference

Asset Lifecycle
MethodReturnsNotes
create_sound_cue(path, wave_path)FSoundCueResultwave_path='' for empty cue
duplicate_sound_cue(src_path, dst_path)FSoundCueResultcopy a cue to a new path
delete_sound_cue(path)booldeletes the asset from disk
get_sound_cue_info(path)FSoundCueInfonode count, root index, vol, pitch, duration
save_sound_cue(path)boolsaves to disk
Show full SKILL.md (338 more words)Show less
Node Creation — all return FSoundCueResult
MethodNode TypeSpecial params
add_wave_player_node(path, wave_path, x, y)Leaf — plays a SoundWavewave_path optional
add_random_node(path, x, y)Picks one child randomly—
add_mixer_node(path, num_inputs, x, y)Blends children in parallelnum_inputs 1–32
add_concatenator_node(path, num_inputs, x, y)Plays children in sequencenum_inputs 2–32
add_modulator_node(path, x, y)Random pitch/volume variance—
add_attenuation_node(path, x, y)Spatial attenuation (graph node)—
add_looping_node(path, x, y)Loops its child—
add_delay_node(path, x, y)Adds a delay before playing—
add_switch_node(path, x, y)Routes by integer parameter—
add_enveloper_node(path, x, y)Volume/pitch envelope over time—
add_distance_cross_fade_node(path, num_inputs, x, y)Crossfades by distancenum_inputs 2–32
add_branch_node(path, x, y, bool_param='')Routes by bool parameter; True(0) False(1) Unset(2)optional param name last
add_param_cross_fade_node(path, num_inputs, x, y)Crossfades by named float paramnum_inputs 2–32
add_quality_level_node(path, x, y)One input per quality levelslot count = project quality levels (see note)
Node Management
MethodReturnsNotes
list_nodes(path)TArray<FSoundCueNodeInfo>index, class, children, is_root_node
connect_nodes(path, parent, child, slot)boolchild feeds audio INTO parent
disconnect_node(path, parent_index, slot)boolbreak a single input link
set_root_node(path, index)boolsets cue output node
set_wave_player_asset(path, index, wave_path)boolreassign wave on existing node
remove_node(path, index)booldelete a node from the graph
move_node(path, index, x, y)boolreposition a node in the graph
get_node_property(path, index, prop_name)FStringread any node UPROPERTY
set_node_property(path, index, prop_name, value)boolwrite any node UPROPERTY
Cue-Level Settings
MethodReturnsNotes
set_volume_multiplier(path, vol)bool—
set_pitch_multiplier(path, pitch)bool—
set_sound_class(path, class_path)bool—
set_attenuation(path, att_path)boolatt_path='' to clear
get_attenuation(path)FStringreturns asset path or ''
set_concurrency(path, conc_path, clear=False)boolconc_path='' + clear=True to clear all
get_concurrency(path)TArray<FString>list of assigned concurrency asset paths
FSoundCueNodeInfo fields
python
n.node_index      # int — position in list_nodes array
n.node_class      # str — e.g. "SoundNodeWavePlayer"
n.node_title      # str — display name
n.pos_x, n.pos_y  # float — graph position
n.is_root_node    # bool — True if this node is SoundCue.FirstNode
n.child_indices   # list[int] — indices of connected children (-1 = unconnected slot)
SoundWave Utilities
MethodReturnsNotes
get_sound_wave_info(sw_path)FSoundWaveInfoduration, sample rate, channels, looping, streaming
import_sound_wave(file_path, asset_path)FSoundCueResultimport .wav/.mp3 from disk
set_sound_wave_property(sw_path, prop, value)boolset any UPROPERTY by name

Common set_sound_wave_property property names:

PropertyNameTypeExample value
bLoopingbool"true"
bStreamingbool"true"
VolumeMultiplierfloat"1.5"
PitchMultiplierfloat"0.9"
SubtitlePriorityfloat"100.0"
FSoundWaveInfo fields
python
info.asset_path    # str
info.duration      # float — seconds
info.sample_rate   # int — Hz
info.num_channels  # int — 1=mono, 2=stereo
info.looping       # bool  (note: NOT is_looping — UE strips the 'b' only)
info.streaming     # bool  (note: NOT is_streaming)
FSoundCueResult fields
python
r.success      # bool
r.asset_path   # str
r.message      # str — human-readable status or error

Sample scripts (run via execute_python_code)

  • scripts/create_sound_cue.txt — create a SoundCue (optionally from a wave) and add nodes.

© kevinpbuckley, 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 1 other file (scripts) in Content/Skills/sound-cues of kevinpbuckley/VibeUE.

  • SKILL.md
  • scripts/create_sound_cue.txt

Open the folder on GitHubat commit dc051be

Compare with similar skills

Sound Cues 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.

Sound Cues compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Sound Cues this skillkevinpbuckley/VibeUE730—~2.8kAutomated safety check: PassMIT
Image to Three.js Modelimg2threejs/img2threejs18k1 repos~8.2kAutomated safety check: PassApache-2.0
2D Map and Scene Generator0x0funky/agent-sprite-forge4.4k—~2.9kAutomated safety check: PassMIT
Bambu Studio AIheyixuan2/bambu-studio-ai223—~4.3kAutomated safety check: PassMIT
Spine AnimationGenielabsOpenSource/spine-animation-ai521—~17kAutomated safety check: PassCC-BY-NC-4.0
Unreal BridgeTornLux/UnrealBridge306—~8.4kAutomated safety check: NotesMIT

Similar skills

  • Image to Three.js Model

    img2threejs/img2threejs

    Rebuilds the object in a reference image as a procedural, animation-ready Three.js model written entirely in code, using staged sculpting with quality checks.

    18k GitHub starsUsed in 1 repo~8.2k tokens
    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 5 days ago
    Game DevelopmentAuto-check passed
  • Bambu Studio AI

    heyixuan2/bambu-studio-ai

    End-to-end 3D printing for Bambu Lab printers. An agent skill from heyixuan2/bambu-studio-ai.

    223 GitHub stars~4.3k tokensUpdated 22 days ago
    Game DevelopmentAuto-check passed
  • Spine Animation

    GenielabsOpenSource/spine-animation-ai

    Create Spine 2D skeletal animations from pre-existing character assets (separated body-part PNGs, atlas spritesheet, or a full character image).

    521 GitHub stars~17k tokensUpdated 1 mo ago
    Game DevelopmentAuto-check passed
  • Unreal Bridge

    TornLux/UnrealBridge

    Execute Python scripts inside a running Unreal Engine 5.3+ editor via TCP bridge.

    306 GitHub stars~8.4k tokensUpdated 10 days ago
    Game DevelopmentAuto-check: notes
  • 2D Sprite Generator

    0x0funky/agent-sprite-forge

    Produces game-ready 2D characters, creatures, props, icons and effects as master stills, sheets or clips, and exports frames for common game engines.

    4.4k GitHub stars~3.6k tokensUpdated 5 days ago
    Game DevelopmentAuto-check passed

More from kevinpbuckley/VibeUE

All 39 skills in this repo
  • Unreal Animation Bone Editor

    kevinpbuckley/VibeUE

    Previews, validates and bakes bone-rotation edits on Unreal Engine AnimSequences, enforcing a coordinate space and a constraint-checked preview-validate-bake loop.

    730 GitHub stars~1.3k tokensUpdated 4 days ago
    Auto-check passed
  • Unreal Animation Montage

    kevinpbuckley/VibeUE

    Creates and edits Unreal Engine Animation Montages through AnimMontageService: sections, slots, segments, branching points, notifies and blend settings.

    730 GitHub stars~3.6k tokensUpdated 4 days ago
    Auto-check passed
  • Unreal AnimSequence Editor

    kevinpbuckley/VibeUE

    Creates and edits AnimSequence keyframes and bone tracks in Unreal Engine through AnimSequenceService, following an inspect, preview, validate and bake workflow with correct bone-space handling.

    730 GitHub stars~3.2k tokensUpdated 4 days ago
    Auto-check passed
  • Unreal Asset Import and Export

    kevinpbuckley/VibeUE

    Imports files into Unreal Engine, exports textures, reads the Content Browser selection and checks open assets via VibeUE, plus mesh reimport material fixes.

    730 GitHub stars~6.5k tokensUpdated 4 days ago
    Auto-check passed
  • Unreal Engine Settings Control

    kevinpbuckley/VibeUE

    Changes Unreal Engine console variables, scalability levels and raw INI values through VibeUE's Python API, now that registered settings moved to the engine's own toolset.

    730 GitHub stars~1.3k tokensUpdated 4 days ago
    Auto-check passed
  • Unreal Enhanced Input Setup

    kevinpbuckley/VibeUE

    Creates and wires Unreal Engine Enhanced Input assets through VibeUE's InputService: Input Actions, Mapping Contexts, key bindings, triggers and modifiers.

    730 GitHub stars~2.4k tokensUpdated 4 days ago
    Auto-check passed

Works with

Questions about Sound Cues

What does Sound Cues do?

Create and modify SoundCue assets — add/connect nodes (mixer, random, delay, attenuation, modulator, etc.) and set audio properties (SoundCueService). Sound Cues is an agent skill from kevinpbuckley/VibeUE.) and set audio properties (SoundCueService).

When should I use Sound Cues?

Sound Cues fits situations like: the user asks to create a Sound Cue; build a SoundCue node graph; wire audio playback logic.

How do I install Sound Cues in Claude Code?

Run `npx skills add kevinpbuckley/VibeUE --skill sound-cues -a claude-code`. Or copy the skill folder (Content/Skills/sound-cues in kevinpbuckley/VibeUE) into .claude/skills/sound-cues in your project. Claude Code loads it when a task matches its description.

How do I install Sound Cues in Codex?

Run `npx skills add kevinpbuckley/VibeUE --skill sound-cues -a codex`. Or copy the skill folder (Content/Skills/sound-cues in kevinpbuckley/VibeUE) into .agents/skills/sound-cues in your project. Codex loads it when a task matches its description.

Can I use Sound Cues 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 kevinpbuckley/VibeUE --skill sound-cues -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sound-cues, .gemini/skills/sound-cues, .github/skills/sound-cues and .opencode/skills/sound-cues in your project.

What does Sound Cues need to run?

SKILL.md names no scripts, command-line tools or credentials: Sound Cues is instructions for the agent only. Our summary lists: Python 3.

Does Sound Cues 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 Sound Cues 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Sound Cues use?

Sound Cues 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 Sound Cues use?

About 2.8k 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.

What are the alternatives to Sound Cues?

Skills that share tags, products or a category with Sound Cues: Image to Three.js Model (img2threejs/img2threejs, 18k stars), 2D Map and Scene Generator (0x0funky/agent-sprite-forge, 4.4k stars), Bambu Studio AI (heyixuan2/bambu-studio-ai, 223 stars) and Spine Animation (GenielabsOpenSource/spine-animation-ai, 521 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Sound Cues?

kevinpbuckley (a GitHub user) maintains it in kevinpbuckley/VibeUE, which has 730 GitHub stars. The repository holds 39 skills in this directory. The repository was last updated on October 7, 2026.

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