Getting it into your agent
There is no command for this one: it runs only inside a plugin, and the catalogue could not identify which plugin ships it. The source is linked below.
Wrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/tdimino/bg3se-macos/bg3se-macos-ghidra)<a href="https://agentmods.dev/skills/tdimino/bg3se-macos/bg3se-macos-ghidra"><img src="https://agentmods.dev/badge/skills/tdimino/bg3se-macos/bg3se-macos-ghidra/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/tdimino/bg3se-macos/bg3se-macos-ghidra"><img src="https://agentmods.dev/badge/skills/tdimino/bg3se-macos/bg3se-macos-ghidra.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00153 | $0.01267 |
| Opus 5 | $0.00077 | $0.00633 |
| Sonnet 5 | $0.00031 | $0.00253 |
| Haiku 4.5 | $0.00015 | $0.00127 |
Grade A, and why
bg3se-macos-ghidra scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 133 lines — stays where its author put it; the contents beside it link to each section on GitHub.
BG3 Script Extender macOS + Ghidra Development
Project Locations
| Project | Path |
|---|---|
| bg3se-macos | /Users/tomdimino/Desktop/Programming/bg3se-macos |
| bg3se (Windows ref) | /Users/tomdimino/Desktop/Programming/bg3se |
Quick Start
# Build
cd /Users/tomdimino/Desktop/Programming/bg3se-macos/build
cmake .. && cmake --build .
# Test
./scripts/launch_bg3.sh
tail -f ~/Library/Application\ Support/BG3SE/bg3se.log
# Ghidra (headless, optimized)
./ghidra/scripts/run_analysis.sh <script.py>
Key Constraints (macOS)
- Cannot hook main binary - Hardened Runtime blocks
__TEXThooks - CAN hook libOsiris.dylib - 1,013 exported symbols
- ARM64 ABI - x8 register for structs >16 bytes
- No GetRawComponent - Must traverse ECS manually
See macos-patterns.md for detailed differences.
Module Structure
src/
├── injector/main.c # Core (~2900 lines): hooks, Osi.*, Lua state
├── entity/ # ECS: guid_lookup, component_lookup, arm64_call
├── lua/ # Ext.* APIs: stats, debug, osiris, json
├── osiris/ # Osiris types, functions, custom_functions
├── stats/ # RPGStats, GlobalStringTable
├── console/ # Socket server, file-based console
└── input/ # CGEventTap keyboard capture
API Surface (v0.22.0)
| Namespace | Status | Notes |
|---|---|---|
Osi.* |
95% | Dynamic metatable, Query/Call/Event |
Ext.Osiris |
95% | RegisterListener, NewCall/Query/Event |
Ext.Stats |
95% | Property read/write |
Ext.Entity |
50% | Get, GetComponent, GetAllEntitiesWithComponent |
Ext.Events |
75% | 7 events |
Ext.Timer |
100% | Complete |
Ext.Debug |
100% | Memory introspection |
Not implemented: Ext.Net, Ext.UI, Ext.Level, Client Lua State
Key Offsets
| Symbol | Address/Offset |
|---|---|
esv::EocServer::m_ptr |
0x10898e8b8 |
| EntityWorld | EocServer+0x288 |
RPGStats::m_ptr |
base+0x89c5730 |
RPGStats.FixedStrings |
+0x348 |
| GlobalStringTable | base+0x8aeccd8 |
What ships with it
5 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 133 lines · 153 tokens per session scan A 02c523f73c80
bg3se-macos-ghidra is a skill published in the GitHub repository tdimino/bg3se-macos (59 stars, last pushed 1mo ago), licensed MIT. It adds 153 tokens to every session and 1,267 once invoked, about $0.0008 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
ctf-rev
Solve CTF reverse engineering challenges using systematic analysis to find flags, keys, or passwords. Use for crackmes, binary bombs, key validators, obfuscated code, algorithm recovery, or any challenge requiring program comprehension to extract hidden information.
deep-analysis
Performs focused, depth-first investigation of specific reverse engineering questions through iterative analysis and database improvement. Answers questions like "What does this function do?", "Does this use crypto?", "What's the C2 address?", "Fix types in this function". Makes incremental improvements (renaming…
pyghidra-scripting
Write and run Python (PyGhidra) code inside the Ghidra session that ReVa's MCP server is already attached to, using the five ReVa scripting tools — run-script, list-scripts, read-script, write-script, edit-script. Use this whenever the user asks to execute Python against the current program, reach for the Ghidra Flat…
binary-triage
Performs initial binary triage by surveying memory layout, strings, imports/exports, and functions to quickly understand what a binary does and identify suspicious behavior. Use when first examining a binary, when user asks to triage/survey/analyze a program, or wants an overview before deeper reverse engineering.
il2cpp-decompiler
Static analysis for Unity IL2CPP games via il2cpp-decompiler-agent MCP (listdumps, loadproject, searchsymbols, getclassinfo, decompilemethod). Use when runtime is IL2CPP, GameAssembly.dll is involved, or remakes like Who's Your Daddy Remake. Always MCP-first — do not start with Il2CppStudio CLI.
reverse-engineering-workbench
Coordinate EVOKORE reverse-engineering work across Ghidra-style static analysis, semantic recovery, and debugger-guided triage. Use when opening an unfamiliar binary, planning a decompilation workflow, or choosing between static and dynamic analysis paths.