working-on-d2r — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited working-on-d2r (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The parser lives in plugins/d2r/d2s/. It's a WASM plugin that reads .d2s binary save files and emits ndjson to stdout. See docs/plugins.md for the plugin contract and working-on-plugins skill for section design guidance.
cd plugins/d2r && just test # D2R-specific tests
just test-go # Full Go test suite
just lint-go # Includes D2R with relaxed lint rulesThis parser targets v105 only (version byte 0x69). Classic LoD saves are not supported.
Expansion detection: v105+ saves do NOT set the LoD status bit (0x20) in the header. You must check header.Realm >= RealmLoD to gate mercenary and golem parsing. This is a common trap — the LoD bit check works for older saves but silently misparses v105.
Warlock class: Class index 7. Skill offset is 373 (not 281 — those are monster skills). Skills.txt extracted via CASC.
Item codes: Huffman-encoded in D2R (not ASCII like LoD). The Huffman tree is in d2s/huffman.go.
ISC (ItemStatCost): RotW ISC is IDENTICAL to vanilla D2R — zero property bit width changes. RotW added properties 365 (sB=6) and 366 (sB=8), plus items not in vanilla tables.
golangci-lint config has exclusions for plugins/d2r/:
err)These exclusions are intentional. Don't try to "fix" them.
reference/Diablo II Resurrected/Atmus.d2s — Level 74 Warlock, 45 items + 3 merc items.reference/olegbl-d2rmm/.../d2s/d2/items.ts — readItem() function.Game data tables are extracted from the D2R CASC archive:
reference/d2r-casc/ (gitignored, must copy locally)reference/d2r-rotw-excel/ (gitignored — Blizzard IP, NEVER check in)plugins/d2r/tools/casc-extract/ (uses CascLib, cloned at build time)devenv.nix adds cmake/gcc/zlib for building the extract toolcd plugins/d2r
just build-casc-extract
just casc-extract "data/global/excel/Skills.txt".d2i files (e.g. ModernSharedStashSoftCoreV2.d2i) — multi-section format with 64-byte headers per tab, same item format as d2s. Not yet implemented.
One plugin per game. The plugin detects save version internally. Only v105 for now.
plugins/d2r/
├── d2s/ # Parser source (header, attributes, skills, items, merc, corpse, golem)
├── parser/ # WASM entrypoint (main.go → stdin bytes → ndjson stdout)
├── data/ # Shared lookup tables (items, runewords, treasure classes)
├── tools/ # casc-extract tool
└── plugin.toml # Plugin metadata~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.