<< All versions

Skill v1.0.0

currentAutomated scan100/100
flopperam/unreal-engine-mcp/blueprint-authoring
──Details
PublishedOctober 26, 2026 at 07:28 AM
Content Hashsha256:24efe362b8139014...
Git SHAe62abead437d
──Files
Files (1 file, 6.2 KB)
SKILL.md6.2 KBactive
SKILL.md · 115 lines · 6.2 KB

version: "1.0.0" name: blueprint-authoring description: > Blueprint authoring workflow for the Flopperam Unreal Engine MCP. Covers the full create, author, commit, verify cycle using the narrow bp_* tool surface. Use when creating or editing Blueprints, adding variables/components/events/functions, wiring graphs, or debugging compile errors.


Blueprint Authoring Workflow

The Blueprint Authoring Cycle

orient (bp_brief / bp_inspect) → probe (bp_dry_run) → create (bp_create) → author (narrow writes) → commit (bp_commit) → verify (bp_inspect / pie_test_bp)

Skip steps for trivial edits — a single-variable tweak on an already-read BP goes straight from bp_variable to bp_commit.

Step 1: Orient (Read Before Write)

At least one read-class tool MUST fire before any write. This satisfies the write guard.

  • bp_brief(blueprint_path) — compact one-call overview (parent, components, variables, graphs, dispatchers). Use FIRST.
  • bp_inspect({queries: [...]}) — 21 targeted ops: overview, get_variables, get_functions, get_nodes, get_connections, export_spec, health_check, etc. Batched — every op in one call shares loaded BP cache.
  • bp_export(blueprint_path) — full GraphSpec JSON dump for cloning or diffing.
  • search_assets — find unknown Blueprint paths by name/prefix.

Step 2: Probe (Optional, Recommended for Complex Work)

  • bp_dry_run(op=check_intent, intent=[...]) — fast static validation. Catches bogus class paths, wrong K2_ function names, unsupported variable types BEFORE an apply cycle.
  • bp_dry_run(op=check_spec, blueprint_path, spec_json) — runs the composer's real dry-run (non-destructive, snapshot + rollback). Returns blockers + warnings.

Step 3: Create Asset

  • bp_create(op=from_parent, blueprint_path, parent_class, components?, variables?, interfaces?) — create Actor/Pawn/Character/Component/Object BP with inline bootstrap.
  • bp_create(op=from_actor, actor_label, package_path, name) — bake a placed level actor into a new BP.
  • bp_create(op=interface|enum|struct) — create BPIs / Enums / Structs.

Step 4: Author (Narrow Writes)

All narrow writes defer compile — stack many, then commit once.

Variables

bp_variable({blueprint_path, variables: [...]}) — batched CRUD.

Type vocabulary: bool, int, int64, float, double, string, name, text, byte, Vector, Rotator, Transform, Color, LinearColor, object refs (/Script/Engine.Actor), BP class refs, enums, containers (Array<T>, Set<T>, Map<K,V>).

Field gotchas:

  • read_only (NOT blueprint_read_only — extra underscore is silently ignored)
  • default_value or default (NOT value — silently ignored)
  • category only (NOT cat or display_category)

Components

bp_component({blueprint_path, components: [...]}) — batched CRUD with inline property writes (collision, transforms, mesh refs, attach sockets).

Graphs

bp_graph({blueprint_path, graphs: [...]}) — function/macro/event graph CRUD. Auto-creates FunctionEntry + FunctionResult nodes — reference via $entry.<pin> / $result.<param>.

Nodes

bp_nodes({blueprint_path, graph, nodes: [...]}) — batched add/remove on ONE graph.

~40 node types: event, custom_event, function_call, variable_get, variable_set, branch, sequence, cast, make_struct, break_struct, spawn_actor, input_action, timeline, math, comparison, select, for_each_loop, switch_*, make_array, format_text, call_dispatcher, bind_dispatcher.

Declare stable_id for each node, reference with $stable_id from bp_wire.

Wiring

bp_wire({blueprint_path, graph, edges: [...], defaults: [...], pin_ops: [...]}) — batched exec + data edges + pin defaults + pin ops.

ALWAYS include exec AND data edges in ONE call — partial wiring is the #1 failure mode.

Edge format: $<stable_id>.<pin> for new nodes, $<32-char-hex-guid>.<pin> for existing un-tagged nodes.

Enhanced Input

bp_input({actions: [...], bindings: [...], bind?: {...}}) — create IAs + IMCs + key mappings + modifiers + triggers in ONE call.

Class-Level Settings

bp_class({blueprint_path, operations: [...]}) — reparent, add_interface, set_cdo_property (dot-notation like "CharacterMovement.MaxWalkSpeed").

Step 5: Commit

bp_commit(blueprint_path) — single compile + auto-layout + health report.

Returns: compile_status, errors[], warnings[], orphan_pins, dangling_exec_chains, unreachable_nodes.

  • UpToDateWithWarnings is NOT success — investigate every warning.
  • Multi-commit across fix passes is normal (author → commit → read errors → narrow fix → commit again).

Step 6: Verify

  • bp_brief / bp_inspect for structural confirmation
  • pie_test_bp for runtime-behavioral verification (30+ assertion types)
  • A compile-clean BP that fails PIE is the #1 silent-bug source

Hard Rules

  • Read before write — at least one read-class tool must fire first
  • Batch arrays — variables[], components[], graphs[], nodes[], edges[], operations[] are designed for one call with many items
  • One bp_wire call per graph for the initial wiring pass (exec + data together)
  • One bp_commit per target BP per authoring pass
  • snake_case node types — event, function_call, variable_get, branch, spawn_actor
  • Pure functions have NO exec pins — variable_get, math, K2_GetActorLocation, make_struct, break_struct, Array_Length
  • Function inputs are OUTPUT pins on FunctionEntry — reference via $entry.<ParamName>, do NOT create variable_get
  • Latent nodes (Delay, RetriggerableDelay) only work in EventGraphs
  • `math` node is SCALAR-ONLY — use KismetMathLibrary function_calls for Vector/Rotator math
  • `function_call` class field is `class` (NOT scope — silently ignored)
  • `comparison` op is lowercase — equal, not_equal, greater, less (NOT PascalCase)

Compound Escape Hatches

  • bp_author(blueprint_path, spec_json) — full GraphSpec one-shot when you have the complete spec
  • repair_blueprint(blueprint_path) — rescue corrupted BPs (duplicate graphs, orphan nodes, broken references)
  • bp_skills({topics: [...]}) — load skill docs before first use of unfamiliar tools (batch 3-8 topics)
All versions