← Unreal Engine Skills for CodexCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Unreal Engine Skills for Codex
Snapshot Sep 30, 2026 · 23:17 UTC · version 0.1.7
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Use this skill when creating, editing, or reviewing an Unreal Engine Agent Skill, a named bundle of instructions registered with the unreal-mcp server (distinct from Codex's client-side skills). Trigger when the user wants to add or change a skill that the in-editor agent will load. Concrete triggers: 'create a new Agent Skill', 'add a skill for X workflow', 'edit/update this skill', 'review my skill', 'make a Python skill class', 'create a skill UAsset', 'register a skill so Codex picks it up'; writing or editing a `SKILL.md` inside a UE plugin's `Skills/` or `Python/skills/` folder; defining a Python skill class registered with the skill registry; calling `CreateSkill`, `ListSkills`, or `GetSkills` MCP tools; designing a skill's name, description, or instruction body. SKIP for: authoring a toolset, invoking an existing skill at runtime (use unreal-mcp), editing client-side Codex skills, or generic uses of the word 'skill'.",
"included_files": [],
"name": "unreal-skill",
"skill_md_contents": "---\r\nname: unreal-skill\r\ndescription: \"Use this skill when creating, editing, or reviewing an Unreal Engine Agent Skill, a named bundle of instructions registered with the unreal-mcp server (distinct from Codex's client-side skills). Trigger when the user wants to add or change a skill that the in-editor agent will load. Concrete triggers: 'create a new Agent Skill', 'add a skill for X workflow', 'edit/update this skill', 'review my skill', 'make a Python skill class', 'create a skill UAsset', 'register a skill so Codex picks it up'; writing or editing a `SKILL.md` inside a UE plugin's `Skills/` or `Python/skills/` folder; defining a Python skill class registered with the skill registry; calling `CreateSkill`, `ListSkills`, or `GetSkills` MCP tools; designing a skill's name, description, or instruction body. SKIP for: authoring a toolset, invoking an existing skill at runtime (use unreal-mcp), editing client-side Codex skills, or generic uses of the word 'skill'.\"\n---\r\n\r\n# Unreal Skill\r\n\r\nYou are authoring an Unreal Engine Agent Skill: a named, reusable bundle of instructions that packages essential knowledge the agent either doesn't know or needs to pay close attention to. A skill can provide general best practices in a domain, guidance on a specific workflow, or a mix of both.\r\n\r\n## Principles\r\n\r\nA good skill is:\r\n\r\n**Novel**: The content should be things the agent doesn't already know or can't learn by using tools. If the agent could figure it out by calling a tool, don't put it in a skill.\r\n\r\n**Collegial**: Write like you're briefing a knowledgeable colleague, not authoring documentation. Assume the reader understands Unreal. Give them what they need to act, not a full explanation of how everything works.\r\n\r\n**Flexible**: Skills can include conceptual explanations, step-by-step instructions, or a mix. Use whichever form makes the guidance clearest for the task.\r\n\r\n**Durable**: Don't embed property names, tool names, or other details that change over time. Skills that reference specific API names break silently when those names change.\r\n\r\n**Agnostic**: Don't reference orchestration systems, role names, model names, or anything about how the agent is wired up. Skills should work regardless of the surrounding infrastructure.\r\n\r\n**Parsimonious**: Every token costs context. Put them where they matter most and cut anything that isn't essential or evergreen. If a sentence wouldn't be missed, remove it.\r\n\r\n## Before You Write\r\n\r\nWork through these questions before writing anything.\r\n\r\n**1. Does the skill already exist?** Call `ListSkills` via MCP to see all registered skills in the project, then `GetSkills` on anything relevant. If the capability is already covered, point the user to the existing skill rather than creating a new one.\r\n\r\n**2. Choose the implementation path.** Two paths exist and the choice depends on where the skill lives:\r\n\r\n- **Python class**: The right choice when the skill is part of a code plugin. It lives alongside the plugin's Python toolsets, is version-controlled with the plugin, and is registered automatically when the plugin loads.\r\n- **UAsset**: The right choice when the skill is project-specific and doesn't belong in a plugin. Create it directly in the Content Browser using `CreateSkill` via MCP. No code required.\r\n\r\n## Structure\r\n\r\nEvery Unreal skill has two fields.\r\n\r\n**Description**: Loaded at discovery time, before the skill's full instructions are read. One or two sentences that clearly describe what the skill covers and when it applies.\r\n\r\n**Instructions**: The skill's payload. The actual guidance the agent follows when the skill is active. Apply the principles above: focus on what tools can't teach and cut anything not essential.\r\n\r\nThe agent discovers and dispatches tools at runtime through the unreal-mcp meta-tools (`list_toolsets`, `describe_toolset`, `call_tool`), so write instructions that assume the agent will find the tools it needs rather than naming a fixed toolset list.\r\n\r\n## Python Skills\r\n\r\nA Python skill is a `UAgentSkill` subclass defined in a Python file inside a plugin. Use this path when the skill belongs to a code plugin and should be version-controlled with the plugin.\r\n\r\n### Authoring\r\n\r\nDecorate the class with `@agent_skill` and inherit from `unreal.AgentSkill`. The two fields from the Structure section map to class attributes:\r\n\r\n- The class docstring becomes the `Description`. Keep it to one or two sentences.\r\n- `instructions` is a class attribute string containing the guidance loaded when the skill activates.\r\n\r\n```python\r\nimport unreal\r\n\r\nfrom toolset_registry.agent_skill import agent_skill\r\n\r\n_INSTRUCTIONS = (\r\n 'Do X before Y, because Z.\\n'\r\n 'Always verify the result after performing the operation.\\n'\r\n)\r\n\r\n@agent_skill\r\nclass MySkill(unreal.AgentSkill):\r\n \"\"\"Provides guidance on doing X in Unreal Engine.\r\n Apply this skill whenever the user wants to accomplish X.\"\"\"\r\n\r\n instructions = _INSTRUCTIONS\r\n```\r\n\r\n### Registration\r\n\r\nSkills register themselves on import. Unless directed otherwise, place skill files in a `skills/` subfolder within the plugin's Python package, import each one explicitly in that subfolder's `__init__.py`, and ensure `init_unreal.py` imports the `skills` package.\r\n\r\n### Reloading\r\n\r\nAfter editing a Python skill, reload the plugin's package before verifying. The editor won't pick up changes otherwise. Enable Remote Execution in **Edit → Project Settings → Plugins → Python → Enable Remote Execution**, then run:\r\n\r\n```bash\r\npython Engine/Plugins/Experimental/ToolsetRegistry/Content/Python/toolset_registry/tests/reload_remote.py your_plugin\r\n```\r\n\r\n## UAsset Skills\r\n\r\nA UAsset skill is a `UAgentSkill` instance saved as a Content Browser asset. Use this path for project-specific skills that don't belong in a plugin and require no code.\r\n\r\n### Authoring\r\n\r\nUse `AgentSkillToolset` via MCP. Start by calling `ListSkills` to see what exists, then either create or update:\r\n\r\n**Creating**: Call `CreateSkill` with:\r\n- `FolderPath`: Content Browser folder, e.g. `/Game/Skills/`\r\n- `AssetName`: PascalCase name, e.g. `MyWorkflowSkill`\r\n- `Description`: one or two sentences (see Structure above)\r\n- `Details`: a `FAgentSkillDetails` with `Instructions`\r\n\r\n**Updating**: Call `UpdateSkill` with:\r\n- `SkillPath`: full path to the skill, e.g. `/Game/Skills/MyWorkflowSkill.MyWorkflowSkill_C`\r\n- `Description`: revised description\r\n- `Details`: revised `FAgentSkillDetails`\r\n\r\n## Reviewing Your Work\r\n\r\nBefore handing off, verify the skill looks right by calling `GetSkills` on its path. Then read the description and instructions together as the agent will see them:\r\n\r\n- **Description**: Does it clearly say when this skill applies? Would an agent reading only the description know whether to activate it for a given task?\r\n- **Instructions**: Do they teach something the agent couldn't learn from the tools? Are they brief enough to be worth the context cost?\r\n"
}SHA-256 of public snapshot: e3c4b908eaf17d49099f86df77052c5e6cde93381b61e3becf4b38c6abe5d6b8