Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add jerpint/woltspace --skill update-2026-03-13git clone --depth 1 https://github.com/jerpint/woltspaceWrote 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/jerpint/woltspace/update-2026-03-13)<a href="https://agentmods.dev/skills/jerpint/woltspace/update-2026-03-13"><img src="https://agentmods.dev/badge/skills/jerpint/woltspace/update-2026-03-13/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/jerpint/woltspace/update-2026-03-13"><img src="https://agentmods.dev/badge/skills/jerpint/woltspace/update-2026-03-13.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.00031 | $0.00984 |
| Opus 5 | $0.00015 | $0.00492 |
| Sonnet 5 | $0.00006 | $0.00197 |
| Haiku 4.5 | $0.00003 | $0.00098 |
Grade A, and why
update-2026-03-13 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 9d 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 — 124 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Update 2026-03-13: Session Registry Migration
This update replaces the scattered session metadata system with a centralized registry.
What changed:
- Session status (
sessions/*.json) and routing (session-routing/*.json) are now unified in.state/registry/*.json - One file per session with all metadata: status, routing, creature, model, timestamps, viewport
- New CLI tool:
session-reg(create/update/get/list/reconcile) core.py,run-session.sh,notify, andserver.jsall read/write the new format
What to do:
Run this migration to convert existing session data to the new format. Old files are left in place (they won't be read anymore, but kept for safety).
Migration Steps
- First, read and run the migration script below
- Verify it worked by running
session-reg list
Migration Script
#!/bin/bash
# Migrate old session files to the new registry format
STATE_DIR="${WOLT_STATE_DIR:-/workspace/wolts/.state}"
REGISTRY_DIR="$STATE_DIR/registry"
mkdir -p "$REGISTRY_DIR"
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
LIB_DIR="/workspace/woltspace/container/lib"
python3 - "$STATE_DIR" "$REGISTRY_DIR" <<'PYEOF'
import json, sys, os, time
from pathlib import Path
state_dir = Path(sys.argv[1])
registry_dir = Path(sys.argv[2])
sessions_dir = state_dir / "sessions"
routing_dir = state_dir / "session-routing"
migrated = 0
skipped = 0
# Gather all session names from both sources
names = set()
if sessions_dir.exists():
for f in sessions_dir.glob("*.json"):
names.add(f.stem)
if routing_dir.exists():
for f in routing_dir.glob("*.json"):
names.add(f.stem)
for name in sorted(names):
# Skip if already in registry
reg_path = registry_dir / f"{name}.json"
if reg_path.exists():
skipped += 1
continue
# Read old status file
status_data = {}
status_path = sessions_dir / f"{name}.json"
if status_path.exists():
try:
status_data = json.loads(status_path.read_text())
except Exception:
pass
# Read old routing file
routing_data = {}
routing_path = routing_dir / f"{name}.json"
if routing_path.exists():
try:
routing_data = json.loads(routing_path.read_text())
except Exception:
pass
# Build unified registry entry
entry = {
"name": name,
"wolt": routing_data.get("wolt", name.split("-")[0] if "-" in name else ""),
"creature": routing_data.get("creature", ""),
"model": "",
"status": status_data.get("status", "unknown"),
"created_at": status_data.get("started", routing_data.get("ts", int(time.time()))),
"finished_at": status_data.get("finished", None),
"exit_code": status_data.get("exit_code", None),
"dir": status_data.get("dir", ""),
"title": status_data.get("title", ""),
"prompt": status_data.get("prompt", ""),
"last_activity": status_data.get("finished", status_data.get("started", int(time.time()))),
"adapter": routing_data.get("adapter", ""),
"chat_id": str(routing_data.get("chat_id", "")),
"user_id": str(routing_data.get("user_id", "")),
"thread_ts": str(routing_data.get("thread_ts", "")),
"viewport_url": "",
"session_url": "",
}
# Write to registry
tmp = reg_path.with_suffix(".tmp")
tmp.write_text(json.dumps(entry, indent=2) + "\n")
tmp.rename(reg_path)
migrated += 1
print(f"migrated {migrated} sessions, skipped {skipped} (already in registry)")
PYEOF
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.
- 9d ago First seen · 124 lines · 31 tokens per session scan A 353e010f464a
update-2026-03-13 is a skill published in the GitHub repository jerpint/woltspace (11 stars, last pushed yesterday), licensed MIT. It adds 31 tokens to every session and 984 once invoked, about $0.0002 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
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
local-ai-agents
Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers Small Language Models (SLMs), the OpenAI-compatible local endpoint, sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud/local routing, and the…
next-cache-components-adoption
Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…
insight-error-page
Write or audit an insight-kind error page for the Next.js dev overlay. Use when creating a new errors/ .mdx page, auditing an existing one, or checking that a page matches the framework fix cards. Covers page structure, title alignment, FixCard cards with Copy prompt button, code snippets, terminology verification…
next-cache-components-optimizer
Drive a Next.js route to instant navigation by setting up an agentic loop, under Cache Components / PPR, on initial load (hard navigation) and client-side navigation (soft navigation). Encode the goal as a failing @next/playwright instant() e2e and work it to green, one verified route at a time; the shipped test then…
next-partial-prefetching-adoption
Turn on Partial Prefetching in a Next.js app and work through the insights it surfaces. Use when the user wants to enable or adopt Partial Prefetching, flip the partialPrefetching flag, opt routes in with export const prefetch = 'partial', audit Link prefetch={true} behavior, preserve existing prefetched UI with…