Scenario Unreal Expert
scenario-labs/skills
A skill your agent uses when an agent drives Unreal Engine 5.8 on a Mac for any task: Editor Python (the unreal module), headless UnrealEditor-Cmd -run=pythonscript jobs, Epic's Unreal MCP server…
Creates and wires Unreal Engine Enhanced Input assets through VibeUE's InputService: Input Actions, Mapping Contexts, key bindings, triggers and modifiers.
$ npx skills add kevinpbuckley/VibeUE --skill enhanced-input -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install kevinpbuckley/VibeUE enhanced-input --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/enhanced-input .claude/skills/enhanced-input && 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 "enhanced-input" agent skill from https://github.com/kevinpbuckley/VibeUE/tree/master/Content/Skills/enhanced-input into .claude/skills/enhanced-input/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enhanced-input", 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/enhanced-inputType 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 enhanced-input -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install kevinpbuckley/VibeUE enhanced-input --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/enhanced-input .agents/skills/enhanced-input && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "enhanced-input" agent skill from https://github.com/kevinpbuckley/VibeUE/tree/master/Content/Skills/enhanced-input into .agents/skills/enhanced-input/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enhanced-input", 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 enhanced-input -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install kevinpbuckley/VibeUE enhanced-input --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/enhanced-input .cursor/skills/enhanced-input && 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 "enhanced-input" agent skill from https://github.com/kevinpbuckley/VibeUE/tree/master/Content/Skills/enhanced-input into .cursor/skills/enhanced-input/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enhanced-input", 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/enhanced-input--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 enhanced-input -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install kevinpbuckley/VibeUE enhanced-input --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/enhanced-input .gemini/skills/enhanced-input && 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 "enhanced-input" agent skill from https://github.com/kevinpbuckley/VibeUE/tree/master/Content/Skills/enhanced-input into .gemini/skills/enhanced-input/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enhanced-input", 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 enhanced-inputInstalls 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 enhanced-input -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/enhanced-input .github/skills/enhanced-input && 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 "enhanced-input" agent skill from https://github.com/kevinpbuckley/VibeUE/tree/master/Content/Skills/enhanced-input into .github/skills/enhanced-input/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enhanced-input", 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 enhanced-input -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 enhanced-input --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/enhanced-input .opencode/skills/enhanced-input && 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 "enhanced-input" agent skill from https://github.com/kevinpbuckley/VibeUE/tree/master/Content/Skills/enhanced-input into .opencode/skills/enhanced-input/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enhanced-input", 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.
enhanced-inputCreates and wires Unreal Engine Enhanced Input assets through VibeUE's InputService: Input Actions, Mapping Contexts, key bindings, triggers and modifiers.
The skill documents the real Python method names on InputService, warning that the class docstring's MCP-style action ids, like action_create or mapping_list_contexts, are not callable method names and that a discovery call against them matches nothing. It lists the actual methods grouped by area: reflection calls such as discover_types and get_available_keys, action methods like create_action and configure_action, context methods like create_mapping_context, mapping methods such as add_key_mapping, and trigger and modifier methods for shaping how an input fires.
create_action takes a value type string from discover_types, such as Boolean, Axis1D, Axis2D or Axis3D. The skill also notes an optional complementary MCP tool, unreal-engine-skills-manager, that supplies additional Unreal domain knowledge when present in the session, but tells the agent to skip that call entirely and proceed with this skill alone when the tool is not available, such as under Claude Code or Codex.
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.
Unreal Enhanced Input Setup loads about 2.4k tokens when it runs. Until then it costs about 77 tokens; SKILL.md has 698 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). 698 words, ~2,447 tokens.
.claude/skills/enhanced-input/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: "enhanced-input"}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.
The InputService class docstring lists MCP-style action ids (action_create,
mapping_list_contexts, action_configure, ...). Those are not the Python method
names — discover_python_class(method_filter=...) matches nothing for them. The complete
real API is below; you rarely need a discovery call at all:
| Area | Methods |
|---|---|
| Reflection | discover_types(), get_available_keys(filter=""), get_available_modifier_types(), get_available_trigger_types() |
| Actions | create_action(name, path, value_type="Axis1D"), list_input_actions(), get_input_action_info(action_path) → info or None, configure_action(action_path, consume_input=True, trigger_when_paused=False, description=""), input_action_exists(action_path) |
| Contexts | create_mapping_context(name, path, priority=0), list_mapping_contexts(), get_mapping_context_info(context_path) → info or None, mapping_context_exists(context_path) |
| Mappings | get_mappings(context_path), add_key_mapping(context_path, action_path, key_name), remove_mapping(context_path, mapping_index), key_mapping_exists(context_path, action_path) |
| Modifiers | add_modifier(context_path, mapping_index, modifier_type), remove_modifier(context_path, mapping_index, modifier_index), get_modifiers(context_path, mapping_index) |
| Triggers | add_trigger(context_path, mapping_index, trigger_type, properties_json=""), add_action_trigger(action_path, trigger_type, properties_json="") → JSON, remove_trigger(context_path, mapping_index, trigger_index), get_triggers(context_path, mapping_index) |
create_action value types are the strings discover_types() returns: "Boolean"
(alias "Digital"), "Axis1D", "Axis2D", "Axis3D". The create_* folder may be a bare
folder ("Input" goes under /Game) or start with its mount point (/Game/..., a plugin root);
/Engine, /Script and /Temp are refused, and so is an invalid asset name (empty, a space,
.), each with the reason in error_message. Modifiers and triggers are
addressed by index on the mapping, so get_mappings / get_modifiers /
get_triggers first, then add/remove by index.
| Struct | WRONG | CORRECT |
|---|---|---|
InputTypeDiscoveryResult | value_types | action_value_types |
KeyMappingInfo | key | key_name |
InputModifierInfo | modifier_type | type_name or display_name |
InputTriggerInfo | trigger_type | type_name or display_name |
| Value Type | Use Case |
|---|---|
Boolean | Simple press/release (Jump, Fire) |
Axis1D | Single axis (Throttle, Zoom) |
Axis2D | Two axes (Move, Look) |
Axis3D | Three axes (3D manipulation) |
Keyboard: SpaceBar, LeftShift, W, A, S, D, F1, Enter, Escape, BackSpace...
Mouse: LeftMouseButton, RightMouseButton, MouseScrollUp
Gamepad: Gamepad_FaceButton_Bottom, Gamepad_LeftThumbstick, Gamepad_LeftTrigger, Gamepad_RightTrigger
Paired axes (use these for Axis2D bindings): Mouse2D (mouse look), Gamepad_Left2D / Gamepad_Right2D (analog sticks)
Verify any other name with get_available_keys("thumb") (substring filter) instead of guessing.
Triggers: Pressed, Released, Down, Hold, Tap, Pulse
Modifiers: Negate, DeadZone, Scalar, SwizzleAxis (also: Smooth, SmoothDelta, ScaleByDeltaTime — use get_available_modifier_types() for the full set)
import unreal
result = unreal.InputService.create_action("Jump", "/Game/Input", "Boolean")
if result.success:
unreal.EditorAssetLibrary.save_asset(result.asset_path)import unreal
result = unreal.InputService.create_mapping_context("Default", "/Game/Input", 0)
unreal.EditorAssetLibrary.save_asset(result.asset_path)import unreal
context_path = "/Game/Input/IMC_Default"
action_path = "/Game/Input/IA_Jump"
unreal.InputService.add_key_mapping(context_path, action_path, "SpaceBar")
unreal.EditorAssetLibrary.save_asset(context_path)import unreal
context_path = "/Game/Input/IMC_Default"
action_path = "/Game/Input/IA_Fire"
unreal.InputService.add_key_mapping(context_path, action_path, "LeftMouseButton")
# Get mapping index
mappings = unreal.InputService.get_mappings(context_path)
mapping_index = len(mappings) - 1
# Add trigger/modifier using mapping index
unreal.InputService.add_trigger(context_path, mapping_index, "Pressed")
unreal.InputService.add_modifier(context_path, mapping_index, "DeadZone")
unreal.EditorAssetLibrary.save_asset(context_path)properties_json sets the new trigger's settings, by C++ name or snake_case
(HoldTimeThreshold or hold_time_threshold, bIsOneShot or is_one_shot). Only the
settings the trigger's Details panel shows can be set: runtime state such as HeldDuration,
LastValue or bShouldAlwaysTick is refused ("not a trigger setting"), and a number outside
the property's ClampMin/ClampMax is refused with the allowed range (hold_time_threshold
must be >= 0). An unknown name, a refused setting or a bad value fails the call and adds
nothing. add_action_trigger puts the trigger on the Input Action itself, so it applies to
every mapping of the action; it returns PIE_ACTIVE while a play session runs (stop PIE
first). Neither saves the asset, and a running PIE session keeps its copy of the triggers:
restart PIE to see a change.
import unreal
# Hold 0.4 s before the charged attack fires, once per hold
unreal.InputService.add_trigger("/Game/Input/IMC_Default", 0, "Hold",
'{"hold_time_threshold": 0.4, "is_one_shot": true}')
# A quick tap on the action itself, for every key bound to it
result = unreal.InputService.add_action_trigger("/Game/Input/IA_Dash", "Tap",
'{"tap_release_time_threshold": 0.25}')
print(result) # {"success": true, "trigger_index": 0, ...} or an error_code
unreal.EditorAssetLibrary.save_asset("/Game/Input/IA_Dash")import unreal
mappings = unreal.InputService.get_mappings("/Game/Input/IMC_Default")
for m in mappings:
print(f"Action: {m.action_name}, Key: {m.key_name}")
info = unreal.InputService.get_input_action_info("/Game/Input/IA_Jump")
if info:
print(f"Action: {info.action_name}, ValueType: {info.value_type}")import unreal
types = unreal.InputService.discover_types()
print(f"Value Types: {types.action_value_types}")
print(f"Modifiers: {types.modifier_types}")
print(f"Triggers: {types.trigger_types}")
keys = unreal.InputService.get_available_keys()execute_python_code)scripts/setup_input.txt — create an Input Action + Mapping Context and bind a key.Test input-driven gameplay WITHOUT remapping game assets or OS-level SendKeys — inject directly into the running PIE session (no OS window focus needed):
import unreal
# Enhanced Input action, QUEUED for the next input tick and released on the one after.
# X/Y/Z map to the value type. Read the result in a later call: nothing ticks while this one runs.
print(unreal.InputService.inject_action("/Game/Input/IA_Fire", 1.0))
# Hold an action for 1.5 s of real time (a guard, a charge, a Hold trigger); returns at once.
print(unreal.InputService.inject_action_for("/Game/Input/IA_Block", 1.5))
print(unreal.InputService.stop_injection("/Game/Input/IA_Block")) # release early
# Raw key through Slate to the game viewport: "tap" (default), "down", "up", or "hold".
print(unreal.InputService.inject_key("SpaceBar"))
print(unreal.InputService.inject_key("RightMouseButton", "hold", 1.5))All return JSON with success/error_code (PIE not running, NO_LOCAL_PLAYER /
NO_PLAYER_CONTROLLER while PIE or a client's join is still starting — retry on a later call —,
unknown key, BAD_DURATION outside 0.05 to 60 s). inject_action reports queued: true: it was
queued, not yet applied. The action calls take pie_instance to pick a PIE world: -1, the default,
is the first PIE world with a local player (the lowest instance number), and replies report the
instance actually used. A hold is one hold per action and PIE world whatever the path spelling, so
stop_injection finds it either way; holding a held key again extends it (extended: true); ending
PIE drops every hold. See the pie-testing skill for the full verification loop.
© 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/enhanced-input of kevinpbuckley/VibeUE.
Open the folder on GitHubat commit dc051be
Unreal Enhanced Input Setup 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 |
|---|---|---|---|---|---|---|
| Unreal Enhanced Input Setup this skillkevinpbuckley/VibeUE | 726 | — | ~2.4k | Automated safety check: Pass | MIT | |
| Scenario Unreal Expertscenario-labs/skills | 931 | — | ~6.4k | Automated safety check: Pass | MIT | |
| Unreal BridgeTornLux/UnrealBridge | 305 | — | ~8.4k | Automated safety check: Notes | MIT | |
| Unreal Blueprint Authoringflopperam/unreal-engine-mcp | 1.1k | — | ~1.6k | Automated safety check: Pass | None | |
| UMG Material MCPwinyunq/UnrealMotionGraphicsMCP | 210 | — | ~913 | Automated safety check: Pass | MIT | |
| Unreal Engine MCPEpicGames/unreal-engine-skills-for-claude-code-plugin | 332 | — | ~1.8k | Automated safety check: Pass | MIT |
scenario-labs/skills
A skill your agent uses when an agent drives Unreal Engine 5.8 on a Mac for any task: Editor Python (the unreal module), headless UnrealEditor-Cmd -run=pythonscript jobs, Epic's Unreal MCP server…
TornLux/UnrealBridge
Execute Python scripts inside a running Unreal Engine 5.3+ editor via TCP bridge.
flopperam/unreal-engine-mcp
Walks an agent through creating and editing Unreal Engine Blueprints with the Flopperam MCP's bp_* tools, from inspection to commit and verification.
winyunq/UnrealMotionGraphicsMCP
Creates, edits and compiles Unreal Engine 5.8 material assets as one HLSL Custom node through the UMG MCP bridge, instead of editing .uasset files directly.
EpicGames/unreal-engine-skills-for-claude-code-plugin
Drives a live Unreal Editor through the unreal-mcp server: spawn actors, edit Blueprints, materials and sequences, change properties and trigger Live Coding.
pa001024/dna-builder
This skill documents how to use the fmodel-mcp toolkit (a CUE4Parse-based .NET CLI plus a thin Python MCP server) to inspect and export Unreal Engine game assets — pak files, textures, meshes…
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, edits and inspects Unreal Engine UserDefinedEnums and UserDefinedStructs through Python, including adding values or members and reading internal versus display names.
Categories
Creates and wires Unreal Engine Enhanced Input assets through VibeUE's InputService: Input Actions, Mapping Contexts, key bindings, triggers and modifiers. The skill documents the real Python method names on InputService, warning that the class docstring's MCP-style action ids, like action_create or mapping_list_contexts, are not callable method names and that a discovery call against them matches nothing. It lists the actual methods grouped by area: reflection calls such as discover_types and get_available_keys, action methods like create_action and configure_action, context methods like create_mapping_context, mapping methods such as add_key_mapping, and trigger and modifier methods for shaping how an input fires.
Unreal Enhanced Input Setup fits situations like: creating an Input Action or Input Mapping Context in Unreal Engine; binding a key to a gameplay action through VibeUE; adding a trigger or modifier to an existing input mapping.
Run `npx skills add kevinpbuckley/VibeUE --skill enhanced-input -a claude-code`. Or copy the skill folder (Content/Skills/enhanced-input in kevinpbuckley/VibeUE) into .claude/skills/enhanced-input in your project. Claude Code loads it when a task matches its description.
Run `npx skills add kevinpbuckley/VibeUE --skill enhanced-input -a codex`. Or copy the skill folder (Content/Skills/enhanced-input in kevinpbuckley/VibeUE) into .agents/skills/enhanced-input 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 enhanced-input -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/enhanced-input, .gemini/skills/enhanced-input, .github/skills/enhanced-input and .opencode/skills/enhanced-input in your project.
SKILL.md names no scripts, command-line tools or credentials: Unreal Enhanced Input Setup is instructions for the agent only. Our summary lists: The VibeUE Unreal Engine plugin with its InputService.
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.
Unreal Enhanced Input Setup 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.4k tokens (SKILL.md is roughly 9.8k 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 Unreal Enhanced Input Setup: Scenario Unreal Expert (scenario-labs/skills, 931 stars), Unreal Bridge (TornLux/UnrealBridge, 305 stars), Unreal Blueprint Authoring (flopperam/unreal-engine-mcp, 1.1k stars) and UMG Material MCP (winyunq/UnrealMotionGraphicsMCP, 210 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 726 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.