msw-behaviourtree skill for Claude Code: build MapleStory Worlds behavior trees
Makes Claude build and check MapleStory Worlds .behaviourtree files, using node IDs read from your own project.
- Installs
- 10.1K
- on skills.sh
- Stars
- 38
- on GitHub
- Files
- 4
- besides SKILL.md
- Updated
- Oct 2026
- last repo commit
msw-behaviourtree makes Claude write the full node graph of a .behaviourtree file for a MapleStory Worlds (MSW) project: root, composite, decorator and action nodes, Blackboard variables and node properties. First it runs a bundled Node script that scans your project and writes .behaviourDocs/bt-spec.md, a catalog of your custom node IDs and property names. It triggers on requests such as create behaviourtree or BT node graph, and on Korean phrases such as 비헤이비어 트리 만들어. It needs Node.js and an MSW project, and it ships inside a plugin whose hooks are covered under safety.
Good for
- MapleStory Worlds creators who want Claude to build behavior trees
- Developers with custom ActionNode, DecoratorNode or CompositeNode mLua scripts
- English and Korean speakers: SKILL.md lists trigger phrases in both
Install msw-behaviourtree
Claude Code
- 1
Copy this prompt.
Install the msw-behaviourtree skill in Claude Code. Run this command: /plugin marketplace add msw-git/msw-ai-coding-plugins-official /plugin install msw-maker-base-skill@msw-ai-coding-plugins-official Then check that it loaded and tell me how to use it.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Node.js.
The README says to install the repository as a plugin source and enable msw-maker-base-skill for MSW projects. The plugin's own instructions tell Claude to load msw-general and msw-ui-system first, so the skills CLI route, which installs only this skill, skips that setup. Pick one route, not both. The skill runs a Node script, so it needs Node.js.
Built from the package data we hold. Not yet tested by us. Source.
What's in the skill
When it loads
Authors MSW `.behaviourtree` files end-to-end and maintains the project-specific authoring spec (`.behaviourDocs/bt-spec.md`). Scans every `.codeblock` whose paired `.mlua` extends `ActionNode`/`DecoratorNode`/`CompositeNode` to build a compact catalog of custom action/decorator/composite UUIDs, propertyKey names, and version-stamped MODNativeType strings. Then generates the full tree: RootNode → Nodes graph, Blackboard variables, nodeProperties wiring, and self-validates parent/child consistency. Triggers: 'create behaviourtree', 'new BT', 'add a behaviour tree', 'BT node graph', '비헤이비어 트리 만들어', '.behaviourtree 생성', 'SequenceNode SelectorNode', 'Blackboard variable', 'definitionId codeblock', 'startNodeId', 'build BT spec', 'refresh bt-spec', 'generate behaviourtree catalog', 'BT 스펙 생성', 'bt-spec.md 만들어', 'rescan BT nodes'.
Sections in SKILL.md
- 🚦 Execution order (follow this sequence)
- 0. Build / refresh the project spec (bt-spec.md)
- 1. Collect input from the user
- 2. Mint UUIDs
- 3. Resolve every definitionId
- 4. Build the Blackboard
- 4.5 Resolve node property values
- 5. Assemble Nodes
- 6. nodePosition format
- 7. Write and validate
- 📂 Files in / consumed by this skill
- 🔁 Edit workflow (existing file)
Key facts
- Installs on skills.sh
- 10,061 as of 2026-11-02
- What is inside
- 5 files including SKILL.md: scripts/build-spec.cjs, references/node-catalog.md, skeleton-full.json and skeleton-minimal.json
- Last repo commit
- 2026-10-06
What it includes
Runs a Node script that catalogs your custom node IDs and properties
Runs scripts/build-spec.cjs, which scans .codeblock files whose paired .mlua extends ActionNode, DecoratorNode or CompositeNode and writes .behaviourDocs/bt-spec.md. Rebuild it after node or property changes or a CoreVersion bump.
Try: “Build the BT spec for this project, then create a Patrol behaviour tree.”
Runs code ·
Step 0: build bt-spec.mdConfirms name, save path, tree shape, custom nodes and Blackboard variables
Claude asks (via AskUserQuestion) when anything is unclear. If a custom node you name is not in bt-spec.md, it stops and asks instead of inventing a UUID.
Read ·
Step 1: collect inputGenerates one file ID and one ID per node
Runs a one-line node command that prints crypto.randomUUID() for the file and each node.
Runs code ·
Step 2: mint UUIDsMaps each node to its definitionId and btNodeType
Built-in composites use their own name, custom nodes use the value from bt-spec.md. Types are 0 for action, 1 for composite and 2 for decorator.
Read ·
Step 3: resolve definitionIdBuilds the Blackboard and each node's nodeProperties
Copies type strings verbatim from bt-spec.md, resolves property types from the paired .mlua file, and points *Key properties at Blackboard variable names.
Read ·
Steps 4 and 4.5: Blackboard and propertiesBuilds the graph under strict parent and child rules
One start node, composites own multiple children, decorators wrap exactly one child and chain when they apply to the same action, and actions are leaves.
Write ·
Step 5: assemble nodesLays the tree out downward with float coordinates
The RootNode anchor stays at 0,0, the start node sits at y -200 or lower, and decorators carry no position.
Write ·
Step 6: nodePositionWrites the file, then runs a checklist and a JSON parse check
The checklist covers IDs, parent and child consistency, version strings and no empty arrays. It parses the result with a short node command.
Runs code ·
Step 7: write and validateChanges an existing .behaviourtree file without breaking IDs
Reads the whole file first, keeps the wrapper UUID, updates parent and child lists together, re-runs Step 0 if node definitions may have changed, and re-runs the checklist.
Write ·
Edit workflow
From the official docs
Permissions
Medium risk
Claude writes files in your MSW project, and the plugin route adds hooks that run scripts, write AGENTS.md and CLAUDE.md, and log your tool calls. Back up your project and read the hooks before enabling the plugin.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
The plugin writes AGENTS.md and CLAUDE.md in your project
On session start, inject-agents-md.cjs copies the plugin's AGENTS.md into the project root, replacing it when the content differs, and adds an @AGENTS.md import to CLAUDE.md (creating the file if missing). Back up an existing AGENTS.md first. github.com
The plugin runs 9 hook scripts on 6 events
hooks.json registers 9 hook scripts on 6 events. SessionStart: mlua-session-start.cjs starts the mlua LSP daemon in the background when it finds a RootDesk folder, and inject-agents-md.cjs (next item). UserPromptSubmit: skill-router-reminder.cjs adds the same fixed routing reminder to every prompt. PreToolUse: skill-read-guard.cjs refuses Bash reads such as cat, head or grep on the plugin's skill .md files, and structured-file-guard.cjs refuses reads, edits and shell commands on .model and .ui files. PostToolUse on Edit, Write and MultiEdit: mlua-diagnose-post-tool-use.cjs runs the mlua checker on edited .mlua files and returns a block decision with the errors when it finds any, and a second hook calls the msw-maker-mcp tool maker_refresh_workspace. PostToolUse on Read and Skill, and the InstructionsLoaded event: skill-log.cjs logs skill reads to .mswai/logs/skill.log. PostToolUse on every tool: mcp-log.cjs (below). SessionEnd: mlua-session-end.cjs stops the LSP daemon. Use the skills CLI route in the install box if you do not want hooks. github.com
The plugin runs a downloaded package with npx -y
The mlua checks start a background daemon at session start and run again after each .mlua edit. resolve-cmd.cjs looks first for a local copy (env override, the workspace .mswai/runtime folder, the ai-cli vendored copy, mlua-lsp on PATH). If none is found and npx exists, it runs npx -y @maplestoryworlds/mlua-lsp@1.1.4, which downloads that package from the npm registry. github.com
The plugin logs every MCP call to .mswai/logs
mcp-log.cjs runs after every tool call and, for MCP tools from any server, appends one line to .mswai/logs/mcp.log in your project with the tool name, the full arguments and the full response (cut only if MCP_LOG_MAX_OUTPUT_BYTES is set). lsp.log and skill.log are written to the same folder. Our advice: add .mswai/ to .gitignore, because the log can hold anything your MCP servers return. github.com
The plugin blocks direct reads of .model and .ui files
structured-file-guard.cjs refuses Read, Edit, Write and shell commands on .model and .ui files and tells Claude to use the builders. Setting MSW_STRUCTURED_FILE_GUARD_DISABLE=1 turns it off. skill-read-guard.cjs also refuses Bash reads such as cat or grep on the plugin's skill .md files (MSW_SKILL_READ_GUARD_DISABLE=1 turns it off). github.com
Technical details
| Turning on read-only | No read-only mode. The skill writes .behaviourtree files and bt-spec.md. |
|---|---|
| Sign-in and keys | SKILL.md names no account or API key. |
| Data retention | Plugin hooks append logs under .mswai/logs/ in your project (skill.log, mcp.log, lsp.log). |
| Scopes |
|
Questions
What does msw-behaviourtree do?
It makes Claude write and validate .behaviourtree files for MapleStory Worlds projects. Claude reads your project's custom node scripts first, so the node IDs and properties come from your files and are not invented.
How do I install msw-behaviourtree?
Use the install box at the top of this page. Our advice: take the plugin route, because the plugin's own instructions tell Claude to load msw-general and msw-ui-system first and the skills command installs only this skill.
Is it official, made by Nexon?
The repo does not say so. It is published by a personal GitHub account named MSW-Git (account type User, no company or description on the profile). The repo name contains "official" and the README calls it the public release source for MSW maker skills, but nothing in the repo names Nexon as the publisher. marketplace.json lists the owner as MSW-Git with an outlook.kr email address. Our advice: treat it as a third-party toolkit for Nexon's platform unless Nexon confirms otherwise.
Do I need the rest of the MSW plugin?
SKILL.md does not call another skill. The plugin's AGENTS.md, which the plugin copies into your project, says msw-general and msw-ui-system must be in context on every turn. It also lists the other base skills in a domain table.
Does it need Node.js?
Yes. The spec builder is a Node script and SKILL.md says it requires Node.js on PATH. The script throws if Environment/config is missing and you do not pass --coreVersion.
When do I rebuild bt-spec.md?
SKILL.md says to rebuild it the first time in a project, after any BT node codeblock or .mlua property change, after a CoreVersion bump, or when validation flags a definitionId, property or version mismatch.
Is msw-behaviourtree safe to install?
The skill runs one bundled Node script and writes files in your MSW project. The plugin route adds hooks that run scripts on every session and write AGENTS.md and CLAUDE.md into the project. See the safety section and back up your project first.
Can I use it in the Claude app?
Our advice: no. This page offers no Claude app upload because the skill runs a Node script against local project files. Use Claude Code.
Information
updated Nov 2, 2026
- Repository
- msw-git/msw-ai-coding-plugins-official
- Folder
plugins/msw-maker-base-skill/skills/msw-behaviourtree
Sources
Docs, issue trackers and discussions this page is built from.
Show all 17Hide
- README · github.com
- marketplace.json · github.com
- plugin AGENTS.md · github.com
- msw-behaviourtree on skills.sh · skills.sh
- msw-behaviourtree SKILL.md · github.com
- build-spec.cjs · github.com
- MSW-Git GitHub profile · github.com
- hooks.json · github.com
- inject-agents-md.cjs · github.com
- resolve-cmd.cjs · github.com
- mcp-log.cjs · github.com
- structured-file-guard.cjs · github.com
- skill-router-reminder.cjs · github.com
- mlua-diagnose-post-tool-use.cjs · github.com
- skill-log.cjs · github.com
- skill-read-guard.cjs · github.com
- mlua-session-start.cjs · github.com