Live Co-DM

VerifiedSafe

Real-time co-DM for active TTRPG sessions, providing fast improv help, NPCs, twists, and pointing to voice tools.

Sby Skills Guide Bot
ContentIntermediate
7/22/2026
Claude Code
#ttrpg#game-mastering#improv#real-time#session-tools

Recommended for

Automated summary

A real-time co-DM assistant that, during an active Shattered Sea tabletop session, gives the game master fast and concise improvisation help drawn from the live transcript and current world state.

Strengths

  • Very fast startup through a single script that loads the tail of the live transcript plus world state from hot.md, deliberately skipping wiki init, lint and maintenance.
  • Table-ready output style: a name, three options, one stat line, a yes/and — brevity over completeness.
  • Explicitly protects player agency (offers options and consequences, never narrates PC choices) and defers all canon writes until after the game.
  • Cleanly routes recording, transcription and voice-profile work to dedicated sibling skills instead of running them itself.

Limitations

  • Tightly coupled to the Shattered Sea campaign and its vault layout (wiki/sessions/.live/, hot.md, ttrpg-wiki-query), so it is not portable as-is.
  • Assumes a live transcript and an up-to-date hot.md already exist; otherwise the context loader returns little usable material.
  • Does not record or transcribe audio — those tasks require the record-session-audio and transcribe-session-audio skills.
When to use it

Use it mid-session when the DM needs an immediate NPC, name, twist, or a reminder of what just happened at the table.

When not to use it

Don't use it for session prep, post-game recaps, canon ingestion into the wiki, or audio capture, which belong to separate skills.

Security analysis

Safe
Quality score84/100

The skill is an instruction document for a D&D co-DM assistant. The only execution is a local read-only Python script that loads session context and world state from the wiki directory. There is no network access, no credential handling, no destructive commands, no obfuscation, and no attempts to disable safety. Risk is minimal.

Findings
  • •Runs a bundled local Python script (`latest_session_context.py`) via bash; read-only context loader with no network, secrets, or destructive operations observed
How this analysis is made

Examples

Players go off-book
/co-dm — the players just walked out of the Knighton negotiation and want to sail straight into the fog bank. What happens next? Give me three options with consequences, quickly.
NPC on the spot
Live DM help: they just accosted a dockmaster. I need a name, a one-line mannerism, and one secret worth discovering — right now, keep it short.
What just happened
co-DM the session: read the tail of the live transcript, tell me in five bullets what just happened, and which faction clock in hot.md is closest to firing.

name: live-co-dm description: > Real-time co-DM for the Shattered Sea campaign while a session is actively being played. Invoke for: "co-DM the session", "live DM help", "improv help", "/co-dm". ALSO points the DM to the voice tools. For "record the session" use record-session-audio; for "transcribe the session" use transcribe-session-audio; for voice-profile setup/CRUD use manage-voice-profiles. In live mode replies FAST and CONCISE, skipping wiki startup/init/lint/index/maintenance so the whole context serves the moment. Full trigger list in the skill body.

Live Co-DM

When to use

Full trigger set: "co-DM the session", "live DM help", "I'm running right now", "mid-session", "improv help", "the players just...", "what happens next", "they went off-book", "I need an NPC/name/twist right now", "/live-dm", "/co-dm". ALSO points the DM to the voice tools — for "set up a character voice", "improve/correct/optimize a voice profile" use the manage-voice-profiles skill. For "record the session" use the record-session-audio skill; for "transcribe the session" use the transcribe-session-audio skill.

Sandbox rules (PC boundary, NPC agency, pressures not plots) are in CLAUDE.md. In live mode you deliberately skip most operational rules — see below. Grounding/agency non-negotiables are shared with .claude/skills/prep-session/references/co-dm.md.

This skill has two distinct users:

  • The agent (you), live at the table — give the DM fast, concise improv help.
  • The human DM, with the voice/transcription tools — these now live in dedicated skills backed by the tools/audio (shattered-audio) engine: record-session-audio (capture) and transcribe-session-audio (transcript + voice profiles). Point the DM there; don't run a 4h recording mid-improv.

Mode A — Live co-DM (your primary job)

You are assisting a DM mid-session. Latency and concision beat completeness.

Startup (do exactly this — and nothing else)

  1. Run the fast context loader — this is your ONLY required read:
    python3 .claude/skills/live-co-dm/scripts/latest_session_context.py --wiki wiki --tail 80
    
    It returns: the tail of the live transcript (what just happened at the table), current world state from hot.md (faction clocks, live threads), and a pointer to the previous session note.
  2. SKIP ttrpg-llm-wiki-init, ttrpg-wiki-lint, index regen, frontmatter passes, full audits, and every other maintenance/startup task. Do not read the full vault. You are on the clock — the players are waiting.

During play

  • Answer in seconds, not paragraphs. A name, three bullet options, one stat line, a yes/and. The DM is reading you aloud-adjacent — be table-ready.
  • The live transcript at wiki/sessions/.live/session-NN/live_transcript.md is your memory of the current scene. Re-read its tail when the DM asks "what just happened".
  • Need one specific established fact (an NPC's secret, a location detail)? Use ttrpg-wiki-query for that single lookup — don't bulk-load.
  • Surface faction-clock pressure from hot.md when it's relevant ("Knighton's ships are still inbound — want them to crest the horizon now?"), but never fire a trigger without offering it as a choice.
  • Preserve agency. Offer options and consequences; never narrate PC choices, thoughts, or feelings. Flag invented detail as a proposal, not canon.
  • Defer all canon writes. No session recap, ingest, cross-linking, or page edits mid-session. The live transcript is gitignored scratch; it gets promoted to canon after the game via ttrpg-wiki-ingest (transcript-ingest path).

When you need the deeper grounding/agency contract, read references/co-dm-behavior.md.


Mode B — The DM's voice tools (you point, you don't run)

Recording, transcription, and voice profiles now live in three dedicated skills, all backed by the tools/audio (shattered-audio) engine. Route the DM there:

| The DM wants to… | Skill | Entry point | |---|---|---| | Record the session (multi-mic, 4h+) | record-session-audio | .claude/skills/record-session-audio/scripts/record.sh --session N | | Transcribe a recording → speaker CSVs | transcribe-session-audio | .claude/skills/transcribe-session-audio/scripts/transcribe.sh --session N | | Set up / list / delete / test a voice profile | manage-voice-profiles | .claude/skills/manage-voice-profiles/scripts/voices.sh <subcommand> | | Enroll an actor or character-voice persona | manage-voice-profiles | voices.sh enroll "Grigori" --actor "Nick" --record 30 | | Refresh a profile from real session audio | transcribe-session-audio | transcribe.sh --session N --save-profile "Name" --from-mic micKK |

Why per-mic capture: each person records to their own isolated track, so the mic a voice came from is a strong speaker prior — the big accuracy lever for the campaign's heavy crosstalk. Voice profiles (actor → character-voice personas) refine that further and are auto-loaded on every transcribe.

Self-correcting profiles: the [[session-ingest]] skill emits a speaker-map.md; shattered-audio retrain --speaker-map ... folds those corrections back into the profiles, so accuracy improves every session.


Bundled scripts (this skill only)

| Script | Role | Tested | |---|---|---| | latest_session_context.py | Fast mid-session context bundle | yes |

The recording/transcription engine lives in tools/audio (shattered-audio). Run its test suite with:

cd tools/audio && .venv/bin/python -m pytest

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/live-co-dm-mrwaka5b/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/live-co-dm-mrwaka5b' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/live-co-dm-mrwaka5b/download' --output '.skill-downloads/live-co-dm-mrwaka5b/SKILL.md.part' && mv '.skill-downloads/live-co-dm-mrwaka5b/SKILL.md.part' '.skill-downloads/live-co-dm-mrwaka5b/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/live-co-dm-mrwaka5b/SKILL.md' && test -s '.skill-downloads/live-co-dm-mrwaka5b/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/live-co-dm' && cp -R '.skill-downloads/live-co-dm-mrwaka5b' '.claude/skills/live-co-dm'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/live-co-dm-mrwaka5b'

openskills read 'live-co-dm-mrwaka5b'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/live-co-dm-mrwaka5b/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills