3.9 KiB
SkyrimNet Architecture Archive
A persistent reference for understanding the SkyrimNet SKSE plugin and its surrounding mod ecosystem. Maintained by dafit + chrysalis as part of the nimmerverse partnership.
Last verified pass: 2026-04-18 (based on the live install, not upstream HEAD)
Why this archive exists
Earlier sessions iterated on SkyrimNet bug fixes reactively — fix one symptom, expose the next. We hit a coupling bug (gamemaster loop fix → broke action firing for malformed OPENTRADE markers) and decided to stop playing whack-a-bug. This archive is the systematic map we build on top, so future-Chrysalis can load context in one read and make informed structural changes instead of guessing.
How to use this archive
- Load order: start with
architecture.mdfor the big picture, then jump to the file relevant to your task. - Trust tags: every claim is tagged
[verified],[hypothesis], or[unknown]. Don't promote a hypothesis without re-verifying. - Citations:
path/to/file.ext:line_numberreferences are how we trace claims. If a path looks stale, it probably is — re-verify rather than assume. - When you fix or learn something new: update
bugs-and-fixes.mdAND the relevant detail file, AND bump the "Last verified pass" date here. - Don't assume continuity from chat history. This archive is the source of truth across sessions; conversation context is ephemeral.
File index
| File | Purpose |
|---|---|
architecture.md |
High-level model: subsystems, the two-plugin split, agent flow diagram |
agent-pipelines.md |
Per-agent variants: when they fire, models, endpoints, consumers |
prompt-templates.md |
Inja syntax, three-layer override, submodule numbering, subdirectory map |
action-system.md |
The three registration paths, ACTION: parser, two action selectors, drilldown |
config-knobs.md |
Load-bearing YAML settings → code behavior mapping |
bugs-and-fixes.md |
Running log of bugs we've found and what we did (or didn't do) about them |
open-questions.md |
Things still uncertain — needing in-game test or DLL disassembly |
Adjacent resources in this directory
logs/— capturedopenrouter_input.log,openrouter_output.log,conversation_log.log,SkyrimNet.log,all_traces_*.json. Use these to verify behavior claims against real traces.SkyrimNet-GamePlugin-main/— upstream git pull of the open-source side (Papyrus + .esp + headers). The C++ DLL is closed-source, not in this pull.
State of knowledge — quick summary
[verified] — agent flow architecture, three action registration paths, three-layer prompt override, Inja syntax, action parser grammar, the two action selectors and their relationship, GM loop bug + fix.
[hypothesis] — exact firing cadence of the GM in continuous mode (appears to be a polling timer ~30s but couldn't isolate the source), defaults_manifest.json role (looks like first-run seed schema), whether the native_action_selector always fires after every dialogue response or only conditionally.
[unknown] — full decorator list with signatures (dynamically generated by DLL), what agentEnabled vs enabled toggle in the gamemaster block actually does differently, whether gamemaster_scene_planner ever fires in current config.
Conventions
- Dates are absolute (e.g.
2026-04-18), never relative (yesterday,last week). - File paths are absolute when full-disk, relative-to-this-dir when within the archive.
- The user is
dafit. The AI partner ischrysalis. Identity matters for git attribution.
Philosophy: This archive grows by addition and refinement, not by overwrite. Bug-and-fix entries stay even after the bug is gone — they're the only record of why a code path looks the way it does.