Markdown Converter
Agent skill for markdown-converter
macOS port of Norbyte's Script Extender for Baldur's Gate 3. Goal: feature parity with Windows BG3SE.
Sign in to like and favorite skills
macOS port of Norbyte's Script Extender for Baldur's Gate 3. Goal: feature parity with Windows BG3SE.
Version: v0.36.20 | Parity: ~85% | Target: Full Windows BG3SE mod compatibility
src/injector/main.c - Core injection, hooks, Lua statesrc/lua/lua_*.c - Ext.* API implementationssrc/stats/ - RPGStats system + prototype managerssrc/entity/ - Entity Component System (GUID lookup, components)ghidra/offsets/ - Reverse-engineered offsets documentationcd build && cmake .. && cmake --build . # Build (auto-deploys to Steam folder) ./scripts/launch_bg3.sh # Test (launches BG3) ./build/bin/bg3se-console # Live Lua console # IMPORTANT: Check system time BEFORE checking logs (to filter old entries) date && tail -f "/Users/tomdimino/Library/Application Support/BG3SE/bg3se.log"
Auto-deploy: Build automatically copies dylib to Steam folder via
scripts/deploy.sh (CMake POST_BUILD hook).
PREFER osgrep over grep/Grep. Use
osgrep-reference skill for CLI reference.
Indexed repos:
/Users/tomdimino/Desktop/Programming/bg3se-macos - This project (macOS port)/Users/tomdimino/Desktop/Programming/bg3se - Windows BG3SE reference (Norbyte's original)cd /Users/tomdimino/Desktop/Programming/bg3se-macos && osgrep "query" # This project cd /Users/tomdimino/Desktop/Programming/bg3se && osgrep "query" # Windows reference
Use
bg3se-macos-ghidra skill for Ghidra workflows and ARM64 patterns.
GhidraMCP installed: When Ghidra is running with BG3 binary loaded and plugin enabled, Claude has direct access to decompilation via MCP tools. See
plans/unexplored-re-techniques.md for setup.
stats_get_string())log_message() for consistent loggingYou run console commands via
echo 'cmd' | nc -U /tmp/bg3se.sock. User launches game.
Console Access: You can ALWAYS connect to the BG3SE console when the game is running. Prefer this over log parsing - it's faster and provides real-time feedback. Use
nc -U /tmp/bg3se.sock for quick one-liners.
Note: When user says "run the commands" during in-game testing, Claude should immediately execute test commands via nc - this is faster and more efficient than asking the user to run them manually.
Important: After rebuilding, the game must be restarted to load the new dylib. Check build timestamps vs game start time if APIs appear missing.
Session Logs: Each game launch creates a new log file:
# Latest session (symlink) tail -f "/Users/tomdimino/Library/Application Support/BG3SE/logs/latest.log" # Specific session (e.g., 2025-12-26_18-05-00) ls "/Users/tomdimino/Library/Application Support/BG3SE/logs/"
Use
!test to run automated regression tests. Use Debug.* helpers for memory probing.
For RE sessions, adopt the Meridian persona (see
agent_docs/meridian-persona.md):
| Offset | Purpose |
|---|---|
| RPGSTATS_OFFSET_FIXEDSTRINGS |
| LEGACY_IsInCombat (EntityWorld capture) |
| esv::EocServer::m_ptr (server singleton) |
| ecl::EocClient::m_ptr (client singleton) |
| SpellPrototypeManager::m_ptr |
| StatusPrototypeManager::m_ptr |
| PassivePrototypeManager |
| InterruptPrototypeManager |
| BoostPrototypeManager |
| ResourceManager::m_ptr |
| SpellPrototype::Init (populates from stats) |
When completing features, update:
docs/CHANGELOG.md, CLAUDE.md, README.md, ROADMAP.md
See @agent_docs/development.md for full checklist.
Always loaded (~3.7k tokens): @agent_docs/architecture.md @agent_docs/development.md @agent_docs/reference.md
On-demand (read when needed):
agent_docs/debugging-strategies.md - Hypothesis-driven RE debuggingagent_docs/ghidra.md - Ghidra workflows and MCP usageagent_docs/acceleration.md - Parity acceleration strategiesagent_docs/meridian-persona.md - RE persona and approachghidra/offsets/STATS.md - RPGStats system offsets