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.
Create and modify SoundCue assets — add/connect nodes (mixer, random, delay, attenuation, modulator, etc.) and set audio properties (SoundCueService).
$ npx skills add kevinpbuckley/VibeUE --skill sound-cues -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install kevinpbuckley/VibeUE sound-cues --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/kevinpbuckley/VibeUE.git skills-src && mkdir -p .claude/skills && cp -r skills-src/Content/Skills/sound-cues .claude/skills/sound-cues && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "sound-cues" agent skill from https://github.com/kevinpbuckley/VibeUE/tree/master/Content/Skills/sound-cues into .claude/skills/sound-cues/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sound-cues", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/kevinpbuckley/VibeUE/tree/master/Content/Skills/sound-cuesType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add kevinpbuckley/VibeUE --skill sound-cues -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install kevinpbuckley/VibeUE sound-cues --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kevinpbuckley/VibeUE.git skills-src && mkdir -p .agents/skills && cp -r skills-src/Content/Skills/sound-cues .agents/skills/sound-cues && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "sound-cues" agent skill from https://github.com/kevinpbuckley/VibeUE/tree/master/Content/Skills/sound-cues into .agents/skills/sound-cues/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sound-cues", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kevinpbuckley/VibeUE --skill sound-cues -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install kevinpbuckley/VibeUE sound-cues --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kevinpbuckley/VibeUE.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/Content/Skills/sound-cues .cursor/skills/sound-cues && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "sound-cues" agent skill from https://github.com/kevinpbuckley/VibeUE/tree/master/Content/Skills/sound-cues into .cursor/skills/sound-cues/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sound-cues", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/kevinpbuckley/VibeUE.git --path Content/Skills/sound-cues--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add kevinpbuckley/VibeUE --skill sound-cues -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install kevinpbuckley/VibeUE sound-cues --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kevinpbuckley/VibeUE.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/Content/Skills/sound-cues .gemini/skills/sound-cues && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "sound-cues" agent skill from https://github.com/kevinpbuckley/VibeUE/tree/master/Content/Skills/sound-cues into .gemini/skills/sound-cues/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sound-cues", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install kevinpbuckley/VibeUE sound-cuesInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add kevinpbuckley/VibeUE --skill sound-cues -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/kevinpbuckley/VibeUE.git skills-src && mkdir -p .github/skills && cp -r skills-src/Content/Skills/sound-cues .github/skills/sound-cues && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "sound-cues" agent skill from https://github.com/kevinpbuckley/VibeUE/tree/master/Content/Skills/sound-cues into .github/skills/sound-cues/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sound-cues", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kevinpbuckley/VibeUE --skill sound-cues -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install kevinpbuckley/VibeUE sound-cues --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kevinpbuckley/VibeUE.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/Content/Skills/sound-cues .opencode/skills/sound-cues && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "sound-cues" agent skill from https://github.com/kevinpbuckley/VibeUE/tree/master/Content/Skills/sound-cues into .opencode/skills/sound-cues/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sound-cues", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
sound-cuesCreate 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. 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.
Read from SKILL.md and the folder at commit dc051be. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/, which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from kevinpbuckley/VibeUE at commit dc051be, republished under its MIT licence (© kevinpbuckley). 722 words, ~2,765 tokens.
.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.🧠 Brains complement: IF an
unreal-engine-skills-managertool (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, orUMetaSoundSource, load themetasoundsskill instead (viaGetSkills/ AgentSkillToolset). SoundCue and MetaSound are completely separate systems — do not useSoundCueServicefor MetaSound tasks.
import unreal
svc = unreal.SoundCueService()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).b prefix stripped in PythonUE strips the b prefix from bool UPROPERTY names in Python:
| C++ / UPROPERTY | Python attribute |
|---|---|
bSuccess | success |
bIsRootNode | is_root_node |
bLooping | is_looping |
bStreaming | is_streaming |
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.
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.
volume_multiplier is 0.75, not 1.0A 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# 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 orderimport 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')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)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)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')| Method | Returns | Notes |
|---|---|---|
create_sound_cue(path, wave_path) | FSoundCueResult | wave_path='' for empty cue |
duplicate_sound_cue(src_path, dst_path) | FSoundCueResult | copy a cue to a new path |
delete_sound_cue(path) | bool | deletes the asset from disk |
get_sound_cue_info(path) | FSoundCueInfo | node count, root index, vol, pitch, duration |
save_sound_cue(path) | bool | saves to disk |
FSoundCueResult| Method | Node Type | Special params |
|---|---|---|
add_wave_player_node(path, wave_path, x, y) | Leaf — plays a SoundWave | wave_path optional |
add_random_node(path, x, y) | Picks one child randomly | — |
add_mixer_node(path, num_inputs, x, y) | Blends children in parallel | num_inputs 1–32 |
add_concatenator_node(path, num_inputs, x, y) | Plays children in sequence | num_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 distance | num_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 param | num_inputs 2–32 |
add_quality_level_node(path, x, y) | One input per quality level | slot count = project quality levels (see note) |
| Method | Returns | Notes |
|---|---|---|
list_nodes(path) | TArray<FSoundCueNodeInfo> | index, class, children, is_root_node |
connect_nodes(path, parent, child, slot) | bool | child feeds audio INTO parent |
disconnect_node(path, parent_index, slot) | bool | break a single input link |
set_root_node(path, index) | bool | sets cue output node |
set_wave_player_asset(path, index, wave_path) | bool | reassign wave on existing node |
remove_node(path, index) | bool | delete a node from the graph |
move_node(path, index, x, y) | bool | reposition a node in the graph |
get_node_property(path, index, prop_name) | FString | read any node UPROPERTY |
set_node_property(path, index, prop_name, value) | bool | write any node UPROPERTY |
| Method | Returns | Notes |
|---|---|---|
set_volume_multiplier(path, vol) | bool | — |
set_pitch_multiplier(path, pitch) | bool | — |
set_sound_class(path, class_path) | bool | — |
set_attenuation(path, att_path) | bool | att_path='' to clear |
get_attenuation(path) | FString | returns asset path or '' |
set_concurrency(path, conc_path, clear=False) | bool | conc_path='' + clear=True to clear all |
get_concurrency(path) | TArray<FString> | list of assigned concurrency asset paths |
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)| Method | Returns | Notes |
|---|---|---|
get_sound_wave_info(sw_path) | FSoundWaveInfo | duration, sample rate, channels, looping, streaming |
import_sound_wave(file_path, asset_path) | FSoundCueResult | import .wav/.mp3 from disk |
set_sound_wave_property(sw_path, prop, value) | bool | set any UPROPERTY by name |
Common set_sound_wave_property property names:
| PropertyName | Type | Example value |
|---|---|---|
bLooping | bool | "true" |
bStreaming | bool | "true" |
VolumeMultiplier | float | "1.5" |
PitchMultiplier | float | "0.9" |
SubtitlePriority | float | "100.0" |
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)r.success # bool
r.asset_path # str
r.message # str — human-readable status or errorexecute_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
SKILL.md and 1 other file (scripts) in Content/Skills/sound-cues of kevinpbuckley/VibeUE.
Open the folder on GitHubat commit dc051be
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Sound Cues this skillkevinpbuckley/VibeUE | 730 | — | ~2.8k | Automated safety check: Pass | MIT | |
| Image to Three.js Modelimg2threejs/img2threejs | 18k | 1 repos | ~8.2k | Automated safety check: Pass | Apache-2.0 | |
| 2D Map and Scene Generator0x0funky/agent-sprite-forge | 4.4k | — | ~2.9k | Automated safety check: Pass | MIT | |
| Bambu Studio AIheyixuan2/bambu-studio-ai | 223 | — | ~4.3k | Automated safety check: Pass | MIT | |
| Spine AnimationGenielabsOpenSource/spine-animation-ai | 521 | — | ~17k | Automated safety check: Pass | CC-BY-NC-4.0 | |
| Unreal BridgeTornLux/UnrealBridge | 306 | — | ~8.4k | Automated safety check: Notes | MIT |
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.
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.
heyixuan2/bambu-studio-ai
End-to-end 3D printing for Bambu Lab printers. An agent skill from heyixuan2/bambu-studio-ai.
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).
TornLux/UnrealBridge
Execute Python scripts inside a running Unreal Engine 5.3+ editor via TCP bridge.
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.
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.
kevinpbuckley/VibeUE
Creates and edits Unreal Engine Animation Montages through AnimMontageService: sections, slots, segments, branching points, notifies and blend settings.
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.
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.
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.
kevinpbuckley/VibeUE
Creates and wires Unreal Engine Enhanced Input assets through VibeUE's InputService: Input Actions, Mapping Contexts, key bindings, triggers and modifiers.
Works with
Categories
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).
Sound Cues fits situations like: the user asks to create a Sound Cue; build a SoundCue node graph; wire audio playback logic.
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.
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.
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.
SKILL.md names no scripts, command-line tools or credentials: Sound Cues is instructions for the agent only. Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
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.
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.
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.
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.