| 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*) |
SE Dev Game Code Skill
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 exists
- ✅
ls -la | head -10
- ❌
if exist file.txt (echo exists) - This will NOT work
Actions:
- prepare: Run the one-time preparation (
Prepare.bat on Windows, prepare.sh on Linux)
- bash: Run UNIX shell commands via busybox
- search: Run code searches using
search_game_code.py
- test: Test this skill by running
test_search_game_code.bat
Routing Decision
Check 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 |
Requirements
Host system must have the following on PATH:
- Python 3.11 or newer
- git command line client (used to version each decompiled game build)
- dotnet SDK (for installing
ilspycmd)
Getting Started
⚠️ 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.
Folder Layout
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.
Graphify Graph
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
./test_graphify_game_code.sh
Local Versioning of Decompiled Sources
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:
- All previously decompiled game versions are preserved in local Git history. You can
git checkout any past commit inside Data/ to inspect or diff against an older build.
- Game updates are detected automatically by comparing binaries' embedded version constants with
Data/game_version.txt. If they differ (or file is missing), Decompiled/, Content/ and CodeIndex/ are wiped and fresh decompilation runs.
- This makes it easy to update plugins, mods and scripts for compatibility with new game releases: diff the relevant source between two commits inside
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.
Essential Documentation
- CommandExecution.md - ⚠️ READ THIS FIRST - Windows command execution details; on Linux keep bash syntax and use
prepare.sh
Code Search Documentation
Quick Search Examples
uv run search_game_code.py class declaration MyCubeBlock
uv run search_game_code.py method signature UpdateBeforeSimulation
uv run search_game_code.py class children MyTerminalBlock
uv run search_game_code.py class usage MyEntity --count
uv run search_game_code.py class usage MyEntity --limit 10
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:
- You're unsure about game's internal APIs and how to interface with them.
- Inner workings of Space Engineers is unclear.
Custom Scripting
For building your own utility scripts to work with indexes and decompiled code:
Game Content Data
Textual part of the game's Content is copied into Data/Content folder for free text search:
- Language translations, including string IDs
- Block and other entity definitions
- Default blueprints and scenarios
- See ContentTypes.md for full list of content types
Content Index
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.
General Rules
- In
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.
- In
Data/Content folder search files appropriate for the task. See ContentTypes.md for list of types.
- Do not search for decompiled game code outside
Data/Decompiled folder. Decompiled game source tree must be there if preparation succeeded.
- Do not search for game content data outside
Data/Content folder. Copied game content must be there if preparation succeeded.
Action References
Follow detailed instructions in:
Remarks
Original source of this skill: https://github.com/CometWorks/skills