Agent skill

Fmodel Unpack

by pa001024 in 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…

MITAuto-check passedGame Development

Install Fmodel Unpack

skills CLI
$ npx skills add pa001024/dna-builder --skill fmodel-unpack -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install pa001024/dna-builder fmodel-unpack --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/pa001024/dna-builder.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/fmodel-unpack .claude/skills/fmodel-unpack && rm -rf skills-src

Use ~/.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/

Facts

Skill name
fmodel-unpack
GitHub stars
136
Token cost
~2.6k tokens
SKILL.md length
1,018 words
Files
4 (incl. scripts, references)
Skills in repo
14
Repo updated
First seen
Licence
MIT

At a glance

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…

  • Works in 6 steps: Configure for the game (the central step) → Verify the provider → Locate the asset (search) → …
  • Unpacking/extracting assets from a UE game (e.g
  • SKILL.md covers Overview, When to use this skill, Prerequisites and Step 1 — Configure for the…, plus 7 more sections
  • Runs Python scripts from its folder; calls uv and dotnet

What it does

Fmodel Unpack is an agent skill from 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, animations, materials, and raw package JSON. Use it when unpacking/extracting assets from a UE game (e.g. Duet Night Abyss / "Duet: Night Abyss"), writing or troubleshooting config.json for a new title, or driving the fmodel-cli subcommands / fmodel MCP tools.

Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including scripts and reference files (for example `references/cli-reference.md`, `references/game-configs.md` and `scripts/fmodel.py`).

It sits in Game Development, covering MCP servers and Game assets and audio. It works with Model Context Protocol, .NET, Python and Unreal Engine. The repository describes itself as: 二重螺旋构筑模拟器 Duet Night Abyss Builder. The licence is MIT.

When your agent uses it

  • Unpacking/extracting assets from a UE game (e.g
  • Tasks that involve MCP servers
  • Tasks that involve Game assets and audio

Example prompts

  • “Duet: Night Abyss”
  • “/fmodel-unpack”

Requirements

  • Python 3

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Configure for the game (the central step)
  2. Verify the provider
  3. Locate the asset (search)
  4. Inspect before exporting (read / inspect)
  5. Export
  6. (Optional) Expose as MCP tools

What it can do on your machine

Read from SKILL.md and the folder at commit 0a808c9. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • uv
    • dotnet

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use uv, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Fmodel Unpack loads about 2.6k tokens when it runs, and up to ~4.6k if it reads all its reference files. Until then it costs about 117 tokens; SKILL.md has 1,018 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~117
When it runs · the whole SKILL.md, loaded when a task matches
~2.6k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.6k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from pa001024/dna-builder at commit 0a808c9, republished under its MIT licence (© pa001024). 1,018 words, ~2,641 tokens.

Download SKILL.mdSave it as .claude/skills/fmodel-unpack/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
fmodel-unpack
description
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, animations, materials, and raw package JSON. Use it when unpacking/extracting assets from a UE game (e.g. Duet Night Abyss / "Duet: Night Abyss"), writing or troubleshooting config.json for a new title, or driving the fmodel-cli subcommands / fmodel_* MCP tools.

fmodel-unpack

Overview

fmodel-mcp is a minimal, headless alternative to the FModel GUI for ripping assets out of Unreal Engine games. It is not a fork of FModel — it wraps the underlying CUE4Parse library directly so an assistant (or a script) can search, read, and export UE assets without clicking through the FModel window.

It is split into two layers on purpose:

  • Cli/ — the only component that links to CUE4Parse. A single self-contained fmodel-cli.exe exposing subcommands (status, search, read, inspect, export-tex, export-mesh, export-mesh-uf, export-anim, export-raw, list) that all print one JSON object to stdout. Usable standalone for ad-hoc scripts.
  • Server/ — a thin FastMCP (Python, stdio) server that invokes the CLI as a subprocess and exposes each subcommand as an MCP tool (fmodel_*).

All asset knowledge lives in CUE4Parse; this toolkit only marshals arguments and parses JSON. That means the CLI can be evolved independently of any LLM integration.

The repo checkout used here is ..\fmodel-mcp. The CLI is already built at ..\fmodel-mcp\Cli\bin\publish\fmodel-cli.exe.

When to use this skill

Trigger this skill when any of the following appear:

  • "Extract / unpack / rip assets from <UE game>" (e.g. Duet Night Abyss, Expedition 33).
  • "Set up config.json for a game so I can read its paks."
  • "Export this texture / mesh / animation / material from the game files."
  • Driving the fmodel_* MCP tools, or invoking fmodel-cli.exe directly.
  • Troubleshooting "paks dir not found", mount-point mismatches, Oodle download, AES, or .usmap mapping errors.

Prerequisites

  • .NET runtime — not needed for the self-contained fmodel-cli.exe (runtime is embedded). Only needed if running the framework-dependent .dll via dotnet exec.
  • Internet on first run — fmodel-cli downloads the Oodle decompression DLL (oo2core_9_win64.dll on Windows) on demand from the OodleUE GitHub release. The DLL is not redistributable and is gitignored. After the first successful run it sits next to the exe and is reused.
  • For the MCP server: Python ≥ 3.11 and uv (uv sync in Server/).
  • The game's paks present on disk (.pak / .utoc / .ucas).

Note on versions: Cli/FModelCli.csproj targets net10.0. The README still mentions net9.0 in places (and Server/src/server.py defaults its fallback DLL path to Debug/net9.0/...). This mismatch is harmless — the server prefers the published bin/publish/fmodel-cli.exe first. Always prefer the published exe; only fall back to a Debug .dll build if you deliberately made one.

Step 1 — Configure for the game (the central step)

Copy config.json.example to config.json next to the CLI binary (Cli/bin/publish/config.json) or point the FMODEL_MCP_CONFIG env var at an absolute path. Config lookup order inside the CLI: FMODEL_MCP_CONFIG → <baseDir>/config.json → <repoRoot>/config.json → a fake <EDIT-ME> placeholder (which surfaces a "paks dir not found" error if nothing is set).

Config keys:

KeyMeaningNullable
PaksDirDirectory holding the game's *.pak / *.utoc / *.ucasNo
OutputDirWhere exports land (mirrors FModel's Output/Exports/ role)No
UeVersionCUE4Parse enum, e.g. GAME_UE4_27, GAME_UE5_4No
MappingsFilePath to a .usmap file (often required for correct property names)Yes
AesKeyEncryption key as hex string (omit for unencrypted games)Yes
MountPointContent mount, e.g. EM for Duet Night Abyss, Sandfall for E33. Used to rewrite /Game/X → <MountPoint>/Content/X. Defaults to Sandfall if absent.Yes

Detailed, copy-paste configs (Duet Night Abyss, Expedition 33) and where each value comes from (FModel AppSettings.json) are in references/game-configs.md.

Step 2 — Verify the provider

Run status first. If it errors, almost everything else will too.

pwsh
# via the MCP tool
fmodel_status()

# or directly
..\fmodel-mcp\Cli\bin\publish\fmodel-cli.exe status

Expected shape:

json
{
    "ok": true,
    "paksDir": "...",
    "outputDir": "...",
    "ueVersion": "GAME_UE4_27",
    "mappings": "....usmap",
    "mappingsLoaded": true,
    "files": 123456
}

files is the number of indexed package entries — a non-zero count means paks mounted and Oodle + AES + mappings all applied.

search takes a glob over package paths (the same keys CUE4Parse indexes). Rules: ** matches any number of path components, * matches a single component, ? matches one character. Case-insensitive.

pwsh
fmodel-cli.exe search "**/MI_*"            # material instances
fmodel-cli.exe search "**/MI_Curator*"     # exact-ish
fmodel-cli.exe search "EM/Content/Characters/**/*" 1000

Returns { ok, pattern, count, truncated, matches:[...] }. truncated is true when the optional limit (default 200) was hit.

Show full SKILL.md (411 more words)Show less

Step 4 — Inspect before exporting (read / inspect)

  • read <path> → full FModel-style JSON of every UObject in the package. Verbose; good for blueprints / mesh metadata.
  • inspect <path> → a compressed material view: parent, blendMode, twoSided, opacityMaskClipValue, plus textures / scalars / vectors parameter lists. Use this to discover which texture assets a material wires up before exporting them.

Step 5 — Export

SubcommandProducesNotes
export-tex <path>OutputDir/.../<name>.pngUTexture2D decoded via SkiaSharp
export-mesh <path>...psk / ...pskxSkeletal/StaticMesh as ActorX
export-mesh-uf <path>....uemodelUEFormat mesh
export-anim <path>....ueanimUEFormat anim (keeps per-bone scale)
export-raw <path>....jsonFull indented JSON dump to disk

Export paths mirror the package path under OutputDir (slashes become separators). For Blender rigging, pair export-mesh-uf (.uemodel) with export-anim (.ueanim) — both are UEFormat and share a consistent bind pose when imported via the UEFormat Blender addon. The plain export-mesh (PSK) + export-anim (UEFormat) combo can drift on bone-scale animations (e.g. the giant Paintress in E33).

Verify with list [prefix] (does not need the provider):

pwsh
fmodel-cli.exe list "EM/Content/Characters"

Full subcommand signatures, return JSON shapes, and the path-normalization rules are in references/cli-reference.md. A convenience wrapper (scripts/fmodel.py) locates the published exe and runs any subcommand from a plain shell.

Step 6 — (Optional) Expose as MCP tools

pwsh
cd ..\fmodel-mcp\Server
uv sync

Then register the server in your MCP client config (WorkBuddy ~/.workbuddy/mcp.json or Claude Code ~/.claude.json):

json
{
    "mcpServers": {
        "fmodel": {
            "command": "uv",
            "args": ["run", "--project", "D:\\dev\\fmodel-mcp\\Server", "python", "src/server.py"]
        }
    }
}

Override the CLI binary with FMODEL_CLI_BIN=/abs/path/fmodel-cli.exe if needed. Tool names map 1:1: fmodel_status, fmodel_search, fmodel_read, fmodel_inspect_material, fmodel_export_texture, fmodel_export_mesh, fmodel_export_mesh_uf, fmodel_export_anim, fmodel_export_raw, fmodel_list_exports.

Path normalization (critical gotcha)

NormalizePath accepts several input forms and always returns a mount-relative package path without extension and without the FModel .0 index:

  • EM/Content/Characters/Foo ✔
  • EM/Content/Characters/Foo.uasset ✔ (extension stripped)
  • EM/Content/Characters/Foo.0 ✔ (trailing index stripped)
  • /Game/Characters/Foo → rewrites to <MountPoint>/Content/Characters/Foo ✔

So a /Game/... path only resolves correctly if MountPoint is set in config. For Duet Night Abyss, MountPoint must be "EM" — without it, /Game/... paths wrongly resolve to Sandfall/Content/... and read/export will fail to find the package.

Troubleshooting

  • "paks dir not found" / 0 files → PaksDir wrong, or no config.json resolved (set FMODEL_MCP_CONFIG). Check status output.
  • Oodle error on first run → no internet to fetch oo2core_9_win64.dll. Manually drop the matching Oodle DLL next to fmodel-cli.exe (from OodleUE).
  • Empty / wrong property names → game needs MappingsFile (.usmap). Point MappingsFile at the correct version-specific usmap; confirm mappingsLoaded: true in status.
  • Decryption failures → encrypted paks need AesKey (hex). Duet Night Abyss ships one; leave AesKey: null only for unencrypted titles.
  • read/export "package not found" → path used the /Game/ form but MountPoint is wrong/unset, or the path still has an extension/.0 index. Use the mount-relative form or fix MountPoint.

© pa001024, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files (scripts, references) in .agents/skills/fmodel-unpack of pa001024/dna-builder.

  • SKILL.md
  • references/cli-reference.md
  • references/game-configs.md
  • scripts/fmodel.py

Open the folder on GitHubat commit 0a808c9

Compare with similar skills

Fmodel Unpack 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.

Fmodel Unpack compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Fmodel Unpack this skillpa001024/dna-builder136—~2.6kAutomated safety check: PassMIT
Vibeuekevinpbuckley/VibeUE726—~5.2kAutomated safety check: PassMIT
MCP Server BuildershareAI-lab/learn-claude-code78k5 repos~1.2kAutomated safety check: PassMIT
Context7 MCP Skillholon-run/uxc116—~564Automated safety check: PassMIT
Unreal Asset Import and Exportkevinpbuckley/VibeUE726—~6.5kAutomated safety check: PassMIT
Zizkadb ReleaseZIZKA-AI-SL/ZizkaDB125—~399Automated safety check: PassCustom licence

Similar skills

  • Vibeue

    kevinpbuckley/VibeUE

    Unreal Engine 5 development using the VibeUE Python API. An agent skill from kevinpbuckley/VibeUE.

    726 GitHub stars~5.2k tokensUpdated 2 days ago
    Game DevelopmentAuto-check passed
  • MCP Server Builder

    shareAI-lab/learn-claude-code

    Walks through building MCP servers in Python or TypeScript that expose tools, resources and prompts to Claude, with templates, registration and testing.

    78k GitHub starsUsed in 5 repos~1.2k tokens
    Agent WorkflowsAuto-check passed
  • Context7 MCP Skill

    holon-run/uxc

    Query up-to-date library documentation and code examples using Context7 MCP.

    116 GitHub stars~564 tokensUpdated 24 days ago
    Agent WorkflowsAuto-check passed
  • Unreal Asset Import and Export

    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.

    726 GitHub stars~6.5k tokensUpdated 2 days ago
    Game DevelopmentAuto-check passed
  • Zizkadb Release

    ZIZKA-AI-SL/ZizkaDB

    Bumps versions, runs pre-push verification, and publishes ZizkaDB SDK and MCP packages.

    125 GitHub stars~399 tokensUpdated 2 days ago
    DevOps & CloudAuto-check passed
  • MCP Authoring

    OtoDock/oto-dock

    Author an MCP package for OtoDock: the manifest.json fields and their rules, the package layout, what the installer refuses or drops, credentials and instances, skills bundled with an MCP, and the…

    190 GitHub stars~1.3k tokensUpdated 2 days ago
    Agent WorkflowsAuto-check: notes

More from pa001024/dna-builder

All 14 skills in this repo
  • Bun Webview Test

    pa001024/dna-builder

    使用 Bun 1.4 内置的 Bun.WebView 无头浏览器对前端页面(Vue/Vite 等)做端到端冒烟与交互测试。当需要加载页面、真实点击、读取 DOM/应用状态、做断言、截图归档,或对本地开发服务器/静态站点做零依赖的浏览器级验证、可视化巡检、交互回归测试时,应使用本技能。

    136 GitHub stars~1.2k tokensUpdated yesterday
    Auto-check passed
  • Ue4 Pak Mod

    pa001024/dna-builder

    制作与调试 Unreal Engine 4.27 游戏的 pak 模组(模型/网格/资产换皮,如《二重螺旋》Duet Night Abyss)。两条路线:编辑器烘焙(Blender 自由改模型 → UE4.27 cook → pak)与二进制替换(改写已烘焙 .uasset 的导出名/载荷)。当需要「把 A 的模型换成 B 的模型」「让模型能自由导入 Blender…

    136 GitHub stars~2.5k tokensUpdated yesterday
    Auto-check passed
  • Build Creator

    pa001024/dna-builder

    给 dna-builder 里任意角色从零推一套「最优构筑」(BD)的通用方法论:读角色机制 → 辅助候选排列组合 → buff 组(含光环型海妖 / 角色专属如大冲击)→ 定计算方向 → 魔灵与潜质 → 必带 MOD → 用 autoBuild 跑一遍并剔除不合理件 → 消融实验。当需要「给某个角色配一套最优 BD」「这个角色带什么辅助/队友最强」「跑一下 XX…

    136 GitHub stars~3.6k tokensUpdated yesterday
    Auto-check passed
  • Perf Hotspot Profiling

    pa001024/dna-builder

    用 V8 CPU profile 定位 JS/TS 热点函数,并用「同进程交替 A/B + best(min) 统计量 + checksum 锚点」的微基准方法安全地做性能优化。当需要优化计算热点、怀疑某函数耗时占比高、想评估某个优化(含 Wasm/SIMD 等加速路径)是否真有收益、或要建立可回归的性能基准时使用。

    136 GitHub stars~1k tokensUpdated yesterday
    Auto-check passed
  • For Beginer

    pa001024/dna-builder

    《二重螺旋》新手开荒指南(校对至 1.6 版本)。含分阶段开荒流程(历练 35 前 / 35~45 / 45~60 / 60 后)、前期角色与武器获取清单、角色获取循环(深渊→周本→密函商店)、魔之楔六大系列与金 Mod 升级口径、减负活动、灾厄武器四把(棘刺绝响 / 无止无休 / 权火将熄 / 血染织羽)的两条刷取路线与 1.6 配队(暗队 /…

    136 GitHub stars~2.1k tokensUpdated yesterday
    Auto-check passed
  • Admin Management Page

    pa001024/dna-builder

    在 dna-builder 里新增一个 /admin 后台管理页(侧边栏菜单 + 路由 + REST 封装 + 统计卡/筛选卡/表格/分页 + 详情弹窗),并在本地实测验证。当需要给后台加新的管理页面、或改动 src/admin/ 下的页面结构时使用。

    136 GitHub stars~890 tokensUpdated yesterday
    Auto-check passed

Questions about Fmodel Unpack

What does Fmodel Unpack do?

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…. Fmodel Unpack is an agent skill from pa001024/dna-builder.NET CLI plus a thin Python MCP server) to inspect and export Unreal Engine game assets — pak files, textures, meshes, animations, materials, and raw package JSON.

When should I use Fmodel Unpack?

Fmodel Unpack fits situations like: unpacking/extracting assets from a UE game (e.g; tasks that involve MCP servers; tasks that involve Game assets and audio.

How do I install Fmodel Unpack in Claude Code?

Run `npx skills add pa001024/dna-builder --skill fmodel-unpack -a claude-code`. Or copy the skill folder (.agents/skills/fmodel-unpack in pa001024/dna-builder) into .claude/skills/fmodel-unpack in your project. Claude Code loads it when a task matches its description.

How do I install Fmodel Unpack in Codex?

Run `npx skills add pa001024/dna-builder --skill fmodel-unpack -a codex`. Or copy the skill folder (.agents/skills/fmodel-unpack in pa001024/dna-builder) into .agents/skills/fmodel-unpack in your project. Codex loads it when a task matches its description.

Can I use Fmodel Unpack in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add pa001024/dna-builder --skill fmodel-unpack -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/fmodel-unpack, .gemini/skills/fmodel-unpack, .github/skills/fmodel-unpack and .opencode/skills/fmodel-unpack in your project.

What does Fmodel Unpack need to run?

Going by SKILL.md and its folder, Fmodel Unpack needs Python for the scripts in its folder and the command-line tools its instructions call (uv and dotnet). Our summary lists: Python 3.

Does Fmodel Unpack access the network?

SKILL.md contains no URLs. Its commands use uv, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Fmodel Unpack safe to install?

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.

What licence does Fmodel Unpack use?

Fmodel Unpack is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Fmodel Unpack use?

About 2.6k 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. Its references folder adds about 1.9k tokens, read only when the agent opens those files.

What are the alternatives to Fmodel Unpack?

Skills that share tags, products or a category with Fmodel Unpack: Vibeue (kevinpbuckley/VibeUE, 726 stars), MCP Server Builder (shareAI-lab/learn-claude-code, 78k stars), Context7 MCP Skill (holon-run/uxc, 116 stars) and Unreal Asset Import and Export (kevinpbuckley/VibeUE, 726 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Fmodel Unpack?

pa001024 (a GitHub user) maintains it in pa001024/dna-builder, which has 136 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 8, 2026.

Source: pa001024/dna-builder on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.