pie-testing
Start, stop, and query Play-In-Editor (PIE) sessions for runtime testing of Blueprints, gameplay logic, widgets, AI, and any in-game behavior. Use when the user asks you to "play", "test", "run", "PIE", "start/stop the game", or otherwise needs a live game world to validate changes.
pinned to #87ec7e6updated 2 weeks ago
Ask your AI client: “install skills/pie-testing”.
Requires the metahub MCP server installed in your client. Set up MCP.
mh install skills/pie-testingmetahub onboarded this repo on the author's behalf.
If you own github.com/kevinpbuckley/VibeUE on GitHub, claim the listing to take over publishing. Your claim preserves the existing eval history and badges; only the curator label is replaced with verified-publisher on your next publish.
Stars
472
Last commit
2 weeks ago
Latest release
published
- #ai
- #ai-tools
- #automation
- #blueprint
- #claude
- #copilot
- #cursor
- #game-development
- #gamedev
- #landscape
- #mcp
- #mcp-server
- #model-context-protocol
- #niagara
- #open-source
- #python
- #ue5
- #unreal-engine
- #unreal-engine-plugin
- #vibe-coding
About this skill
Pulled from SKILL.md at publish time.
> 🧠 **Brains complement:** IF an `unreal-engine-skills-manager` tool (external MCP) exists in this session, call it with `{action: "load", skill: "automation-and-testing"}` 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.
Evaluation report
WarningsAutomated checks the publisher passed at publish time — structure, docs, safety, and whether the artifact behaves as claimed.87ec7e6· 2 weeks ago
Kind-specific
31Skill: SKILL.md present
found at Content/Skills/pie-testing/SKILL.md · frontmatter source: SKILL.md
Skill: body content present
620 words · 4,639 chars · 6 sections · 3 code blocks
Skill: triggers declaredwarn
No `trigger` phrases in SKILL.md frontmatter
Add `trigger:` lines so Claude knows when to activate this skill — e.g. `when building MCP servers` or `for diagram creation`.
Skill: allowed-tools scope
no allowed-tools restriction (Claude may use anything)
Release history
1- releasecurrent87ec7e6warn2 weeks ago
Contents
🧠 Brains complement: IF an
unreal-engine-skills-managertool (external MCP) exists in this session, call it with{action: "load", skill: "automation-and-testing"}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.
Play-In-Editor (PIE) Testing Skill
PIE is the only way to validate runtime behavior — Blueprint logic, AI ticking, animation, input, widget interaction, gameplay events. Without starting PIE, your "fix" is unverified.
PIE control — engine EditorAppToolset
Generic PIE start/stop/status is owned by Unreal 5.8's native EditorToolset.EditorAppToolset,
invoked through call_tool (run describe_toolset on it for exact action names/params):
| Action | Description |
|---|---|
StartPIE | Start PIE if not already running. Succeeds (no-op) if already running. |
StopPIE | End the current PIE session. Succeeds if stopped or already stopped. |
IsPIERunning | True if PIE or Simulate-In-Editor is active. |
CaptureViewport | Screenshot the active viewport (use to visually verify runtime state). |
call_tool(toolset="EditorToolset.EditorAppToolset", tool="IsPIERunning")
call_tool(toolset="EditorToolset.EditorAppToolset", tool="StartPIE")
call_tool(toolset="EditorToolset.EditorAppToolset", tool="StopPIE")
PIE start/stop/query is not on
WidgetServiceanymore for general testing — use the engine toolset above.WidgetServicestill owns the widget-in-PIE validation helpers below.
Standard Test Loop
# 1. Make sure you're starting from a clean state
call_tool(toolset="EditorToolset.EditorAppToolset", tool="StopPIE") # no-op if not running
# 2. Start the session (uses the editor's current PIE settings — default map, viewport)
call_tool(toolset="EditorToolset.EditorAppToolset", tool="StartPIE")
# 3. Let the test run / inspect log output (LogsToolset) / interact via other services
# 4. Stop when done
call_tool(toolset="EditorToolset.EditorAppToolset", tool="StopPIE")
Validating widgets in PIE — WidgetService
VibeUE keeps a small set of widget-in-PIE helpers on unreal.WidgetService (run them via
execute_python_code). These spawn and inspect live widget instances once PIE is running:
import unreal
# After StartPIE, spawn a widget instance into the running viewport
handle = unreal.WidgetService.spawn_widget_in_pie("/Game/UI/WBP_HUD", 0)
# Read a live property off the running instance
val = unreal.WidgetService.get_live_property(handle, "HealthText", "Text")
# Tear it down before stopping PIE
unreal.WidgetService.remove_widget_from_pie(handle)
unreal.WidgetService.is_pie_running() also still exists and is handy from inside Python; for
tool-level control prefer the engine EditorAppToolset actions above.
Gotchas
- PIE start is asynchronous.
StartPIEreturns immediately afterRequestPlaySessionis queued. The world isn't actually playing until the editor processes the request on its next tick. If you need to act inside the running world, give it a tick or pollIsPIERunning. - Already-running is treated as success.
StartPIEsucceeds if a PIE session already exists — it does NOT restart. Stop first if you need a fresh session. StopPIEtears down the world viaRequestEndPlayMap. Spawned PIE widget instances should be removed withWidgetService.remove_widget_from_pie(handle)before stopping.- Save before starting. Dirty asset changes are NOT picked up by PIE unless saved/compiled. Always
compile_blueprint(...)before launching PIE to test Blueprint changes. - Don't leave PIE running between tasks. Subsequent edits (recompiles, asset moves, hot reload) can fail or behave oddly while a PIE world is alive. Call
StopPIEbefore returning control to the user.
When to use PIE
- Verifying a Blueprint event fires (combine with log inspection — see
LogsToolset) - Validating gameplay logic (damage, scoring, state transitions)
- Testing widgets in their real runtime context (combine with
umg-widgetsskill'sspawn_widget_in_pie) - Reproducing user-reported runtime bugs
When NOT to use PIE
- Pure asset/editor validation (use
compile_blueprint,find_assets, etc.) - Static introspection (use
get_nodes_in_graph,get_node_pins) - Anything you can verify without a live world — PIE is slow, save it for genuine runtime checks.
Reviews
No reviews yet. Be the first.
Related
Gpt Researcher
An autonomous agent that conducts deep research on any data using any LLM providers
Browser Use
🌐 Make websites accessible for AI agents. Automate tasks online with ease.
Frontend Slides
Create beautiful slides on the web using Claude's frontend skills
mh install skills/pie-testing