Running Ironsworn with Claude as Oracle
Survey of community Ironsworn tooling and a scoped design for a local `/ironsworn` Claude skill — rules-of-engagement + journal-append helpers, no dice automation.
Running Ironsworn with Claude as Oracle
TL;DR
A small local Claude skill is worth building. Scope: codify the rules-of-engagement (oracle-not-GM, one-move-at-a-time, dual-track journal) and provide journal-append helpers against the existing MDX in life. Do not automate dice — the dice moment is the point. Optionally vendor the @datasworn/ironsworn-classic JSON for faithful oracle pulls.
Context
Started running a solo Ironsworn (2018) campaign with Claude as oracle. Session journals live in life at /campaigns/nero. After session 1, the running prompt — pacing rules, journaling format, oracle stance — was getting long enough that turning it into a skill makes sense. Question: what already exists, and what’s the minimum useful build?
Findings
Community data is solved
rsek/datasworn ships official Ironsworn (1e) + Delve + Starforged content as JSON. Available as @datasworn/ironsworn-classic on npm. Dual-licensed: schemas MIT, content CC-BY-4.0. Includes moves, oracles, assets, with per-object source/license metadata. A /ironsworn skill could vendor a subset (oracles + move references) into assets/ and read locally — no network calls during play.
Precedent for RPG-as-Claude-skill exists, but it’s the wrong shape
nicmarti/skills-weaver defines 11 D&D-flavored skills (dice-roller, npc-generator, treasure-generator, monster-manual…) plus orchestrator agents (dungeon-master, rules-keeper). It’s a useful reference for file layout (markdown skills + Go CLI tools + agents for multi-step flow), but the philosophy is opposite to Ironsworn solo play: it treats Claude as the GM driving the session. For Ironsworn-as-oracle the agent layer is unwanted — the human drives narrative, the skill just reduces prompt overhead.
The user’s existing skill conventions
Local skills live in ~/claude-config/skills/<name>/SKILL.md, symlinked into ~/.claude/skills/. Frontmatter is name + description (the description doubles as the trigger heuristic). balance-quarter is the closest precedent: it reads/writes a single MDX in /projects/life, with a “grill protocol” that drives the interaction one question at a time. The same shape fits Ironsworn — read/write src/content/campaigns/<slug>.mdx, append a new # Session N block above the live snapshots, edit Sheet/Vows/Threads in place.
What the skill should not do
Auto-roll. The user is journaling dice by hand (4+3=7 vs 6,9 → Weak Hit. Mom +1 → +3.) and the moment of seeing the dice fall is half the reason for playing solo. A skill that rolls on the user’s behalf removes the only suspense the system generates. The skill should offer oracles (Action/Theme, Yes/No with odds, region tables) and format the journal — never substitute for the dice.
Recommendations
-
Build
/ironswornskill, minimum scope (effort: small) —~/claude-config/skills/ironsworn/SKILL.mdwith: (a) the rules-of-engagement block (oracle-not-GM, one-move-at-a-time, dual-track journal, terse, push back), (b) the journal-append protocol againstlife/src/content/campaigns/<slug>.mdx(new session block above snapshots; Sheet/Vows/Threads edited in place;~~strikethrough~~for resolved vows; bumpupdatedAt). No oracle data, no dice. Unblocks: stop pasting the running prompt every session. -
Vendor a datasworn subset (effort: small-medium) — drop
oracles.json+moves.jsonfor Ironsworn 1e into~/claude-config/skills/ironsworn/assets/. Skill reads from disk on “spark me” / “roll oracle”. Faithful Action/Theme/NPC tables instead of LLM-confabulated ones. Carry the CC-BY attribution in the SKILL.md. -
Skip the agent layer — no dungeon-master agent, no orchestrator. Ironsworn is human-driven by design; an agent that picks moves defeats the system.
-
Defer until session 3 — one session is too little signal. After 2–3 more sessions, the actual friction points (vow tracking? momentum bookkeeping? oracle calls?) will be visible. Build to the real pain, not the imagined one.
Open Questions
- Where should the oracle JSON sit if vendored —
assets/inside the skill, or a separate~/claude-config/data/datasworn/referenced from multiple skills? - Does the skill need to update
updatedAtin frontmatter automatically, or is a manual edit fine? - Should a
bondsblock be schema-enforced in the MDX or kept as free prose under## Sheet?
Code References
life/src/content/campaigns/nero.mdx— the journal artifact the skill operates onlife/src/content/config.ts:60—campaignscollection schema (createdAt, status, system, pc)~/.claude/skills/balance-quarter/SKILL.md— closest structural precedentrsek/datasworn— official JSON sourcenicmarti/skills-weaver— reference for skill layout (not philosophy)awesome-ironsworn— community tools index