se-dev-game-code
Allows reading the decompiled C# code of Space Engineers version 1
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Allows reading the decompiled C# code of Space Engineers version 1
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Mod development for Space Engineers version 1. Search mod code for examples and patterns.
Plugin development for Space Engineers version 1. Search plugin code from PluginHub (client) and MagnetarHub (server) for examples and patterns.
In-game (programmable block, aka PB) script development for Space Engineers version 1. Search script code for examples and patterns.
Allows reading the decompiled C# code of the Space Engineers Dedicated Server
Torch plugin development for Space Engineers version 1. Search TorchAPI/Torch source code, plugin API, managers, commands, and server UI patterns.
High level overview of Space Engineers (version 1) related development. Start here to understand the ecosystem (game client, dedicated server, Pulsar, Magnetar, Torch, PluginHub, MagnetarHub, Quasar) and to route to the right se-dev-* skill for in-game scripts, mods, plugins, the Magnetar PluginSdk, and decompiled code/handbook reference.
| name | se-dev-game-code |
| description | Allows reading the decompiled C# code of Space Engineers version 1 |
| license | MIT |
| allowed-tools | Read, Bash(*Prepare.bat*), Bash(*prepare.sh*), Bash(*Clean.bat*), Bash(*clean.sh*), Bash(*test_search_game_code.bat*), Bash(*test_graphify_game_code*), Bash(*graphify-check.sh*), Bash(*GraphifyCheck.bat*), Bash(*uv run search_game_code.py *), Bash(*uv run index_code.py *), Bash(command -v graphify*), Bash(graphify*), Bash(*GRAPHIFY_MAX_GRAPH_BYTES*), Bash(*busybox* grep *), Bash(*busybox* find *), Bash(*busybox* cat *), Bash(*busybox* head *), Bash(*busybox* tail *), Bash(*busybox* ls*), Bash(*busybox* wc *), Bash(*busybox* sort *), Bash(*busybox* uniq *), Bash(*busybox* tree*) |
Allows reading the decompiled C# code of Space Engineers version 1.
⚠️ CRITICAL: Commands run in a UNIX shell. Use bash syntax. On Windows this is BusyBox; on Linux use the native shell.
Examples:
test -f file.txt && echo existsls -la | head -10if exist file.txt (echo exists) - This will NOT workActions:
Prepare.bat on Windows, prepare.sh on Linux)search_game_code.pytest_search_game_code.batCheck these patterns in order - first match wins:
| Priority | Pattern | Example | Route |
|---|---|---|---|
| 1 | Empty or bare invocation | se-dev-game-code | Show this help |
| 2 | Prepare keywords | se-dev-game-code prepare, se-dev-game-code setup, se-dev-game-code init | prepare |
| 3 | Bash/shell keywords | se-dev-game-code bash, se-dev-game-code grep, se-dev-game-code cat | bash |
| 4 | Search keywords | se-dev-game-code search, se-dev-game-code find class, se-dev-game-code lookup | search |
| 5 | Test keywords | se-dev-game-code test, se-dev-game-code verify, se-dev-game-code check | test |
Host system must have the following on PATH:
ilspycmd)⚠️ CRITICAL: Before running ANY commands, read CommandExecution.md to avoid common mistakes that cause command failures.
If Prepare.DONE file is missing in this folder, you MUST run one-time preparation steps first. See prepare action.
After preparation the skill folder contains a Data junction/symlink. Actual data lives outside the skill folder so it is preserved across Clean.bat / Prepare.bat / prepare.sh cycles.
skills/se-dev-game-code/
├── Data/ (junction/symlink → per-user persistent game-code data)
│ ├── .git/ local Git repository tracking decompiled sources
│ ├── .gitignore ignores CodeIndex/, Content/, __pycache__, *.py[cod], *.bak, *.log
│ ├── game_version.txt recorded SE_VERSION / CLIENT_BUILD_NUMBER / SERVER_BUILD_NUMBER
│ ├── Decompiled/ decompiled C# sources, organised per assembly (committed)
│ ├── Content/ textual game content (NOT committed - regenerated)
│ └── CodeIndex/ CSV indexes (NOT committed - regenerated)
├── Bin64/ (junction/symlink → game's Bin64, removed after preparation)
└── ... skill scripts and documentation
The Data folder is a junction/symlink to the per-user persistent game-code data directory (%USERPROFILE%\.se-dev\game-code on Windows, ~/.se-dev/game-code on Linux). Treat Data/Decompiled, Data/Content and Data/CodeIndex exactly as before.
Preparation builds a separate Graphify graph for decompiled game code under
Data/Decompiled (or SE_DEV_GAME_CODE_GRAPH_ROOT). Prepare installs Graphify on
Python 3.12 with the fast native Rust Leiden clustering backend and, when that backend
is available (needs uv), builds the graph automatically in ~1-2 minutes. Where the
fast backend cannot be provisioned it falls back to the slow single-core clustering
(~10-30 minutes) and stays opt-in with SE_DEV_GRAPHIFY=1 (ask the user first);
SE_DEV_GRAPHIFY=0 disables it. Read these on demand — skip them for normal search work:
Health check and query test (only meaningful once a graph is built):
bash ../se-dev/graphify-check.sh Data/Decompiled --deep # is the graph usable?
./test_graphify_game_code.sh # run a few graph queries
The Data folder is a local Git repository. Every successful preparation creates a commit of the decompiled C# sources whose message is the game's version label, e.g. 1.208.015 b4.
This means:
git checkout any past commit inside Data/ to inspect or diff against an older build.Data/game_version.txt. If they differ (or file is missing), Decompiled/, Content/ and CodeIndex/ are wiped and fresh decompilation runs.Data/ to see exactly what changed.Repository uses an internal author/email (se-dev-skills@localhost) so commits work even on machines without a configured global Git identity.
prepare.sh# Find class declarations
uv run search_game_code.py class declaration MyCubeBlock
# Find method signatures
uv run search_game_code.py method signature UpdateBeforeSimulation
# Find class hierarchy
uv run search_game_code.py class children MyTerminalBlock
# Count results before viewing (useful for large result sets)
uv run search_game_code.py class usage MyEntity --count
# Limit number of results
uv run search_game_code.py class usage MyEntity --limit 10
# Paginate through results
uv run search_game_code.py class usage MyEntity --limit 10 --offset 0
uv run search_game_code.py class usage MyEntity --limit 10 --offset 20
Always check game code when:
For building your own utility scripts to work with indexes and decompiled code:
Textual part of the game's Content is copied into Data/Content folder for free text search:
Data/CodeIndex/content_index.csv maps every textual content file to the decompiled C#
source files that reference it. Columns: rel_path (path relative to Data/Content/)
and usage (path of a C# source file in Data/Decompiled/ that references it). Each
content file appears once per usage, so you can filter and page by rel_path to see
all C# code that loads or references a given content file. Files with no known usages
have a single row with empty usage column.
Data/Decompiled folder search only inside C# source files (.cs) in general. If you work on transpiler or preloader patches, then also search in IL code (.il) files.Data/Content folder search files appropriate for the task. See ContentTypes.md for list of types.Data/Decompiled folder. Decompiled game source tree must be there if preparation succeeded.Data/Content folder. Copied game content must be there if preparation succeeded.Follow detailed instructions in:
Original source of this skill: https://github.com/CometWorks/skills