si-live — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited si-live (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.
Interactive Spirit Island board-state tool. Eliminates typed shorthand from the table workflow: the web UI writes data/current-game.json; skills (si-at-the-table, si-post-game) read the same file.
cd apps/web && npm install.The server needs to run outside the Claude Code process — Claude's skills are stdin/stdout and can't host a long-lived web server. Brett launches it once per session:
./scripts/si-live-start.shOpens two processes:
http://127.0.0.1:7777 — owns data/current-game.json writes.http://127.0.0.1:5173 — proxies /api to the backend.Brett opens the frontend URL in a browser, sets up the game (adversary, spirits, board), and clicks through state updates. The backend persists to data/current-game.json debounced.
Phase A (current — file read): every skill that needs live board state (si-at-the-table, si-post-game) reads data/current-game.json directly. Schema is documented at crates/si-common/src/schema.rs.
Phase B (planned — MCP): the si-mcp binary exposes get_game_state, compute_innate_threshold, compute_draw_probability, etc. as MCP tools. Skills switch to MCP calls instead of file reads. File-read remains the fallback.
si-at-the-table detects the state file is stale or missing and wants to prompt launch.Do not auto-launch on every Claude invocation — Brett runs the tool when he wants it up. If the state file is missing or stale, tell Brett to run ./scripts/si-live-start.sh; don't try to spawn it yourself.
See crates/si-common/src/schema.rs for the authoritative types. Key shapes:
GameState: { version, round, phase, setup, pools, spirits, board_state, log }Spirit: { energy, card_plays, presence_on_board, presence_on_track_energy, presence_on_track_cardplay, elements_this_turn, hand, discard, forgotten, played_this_turn, growth_options }Board: { lands: { "<id>": Land } }Land: { terrain, coastal, explorers, towns, cities, dahan, blight, tokens }Tracks are represented as remaining-covered-slot arrays. The head of the array is the next slot that will be revealed. Starting Energy/CP come from presence_energy_track[0] / presence_cardplay_track[0] — this is the invariant si-rules-check relies on.
si-rules-check — validate proposed plays against starting state + growth options.si-at-the-table — read the live state + return Rei-format option trade analysis.si-post-game — pull end-state from data/current-game.json and append to playlog.si-wiki-fetch — authoritative source for spirit/card/adversary data.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.