hypercross acf1b2cf95 docs(skills): add consistency and perception steps
run-session now checks the outcome against established facts and
narrates only what the PC can perceive, with retconning as a last resort.
2026-09-13 16:50:22 +08:00
2026-09-13 16:41:08 +08:00
2026-09-13 16:41:08 +08:00
2026-09-13 16:41:08 +08:00

solo-journaling

A workspace for solo TTRPG journaling with an AI GM. You describe what your character does; the agent consults the oracle, narrates the outcome, and writes it all to a session log.

How it works

  • You talk, the agent writes. All files are produced by the agent. You never need to edit anything by hand.
  • The oracle is a d6. Yes/and, yes, yes/but, no/but, no, no/and. See docs/oracle.md.
  • Games are packages. Each game under games/ ships its rules, spark tables, character backgrounds, and tool scripts. See docs/games.md.
  • Campaigns are play state. Each campaign under campaigns/ holds the PC, the world, the clocks, and the session logs, and names the game it runs.

Getting started

pnpm install
pnpm journal games
pnpm journal new-campaign my-campaign --game generic

Then tell the agent to start a session. It reads AGENTS.md for how to run things.

Layout

AGENTS.md              how the agent runs a session
docs/oracle.md         oracle and table mechanics
docs/games.md          the game package contract
games/<id>/            a game: rules, tables, characters, scripts
campaigns/<name>/      play data: premise, PC, world, state, sessions
packages/oracle/       dice, oracle, and CSV table engine
packages/cli/          the `journal` command

Commands

pnpm journal roll sparks --campaign my-campaign
pnpm journal oracle "Is the door locked?" --complicate --campaign my-campaign
pnpm journal background --campaign my-campaign   # a command from the generic game
pnpm journal dice 2d6+1
pnpm journal tables --campaign my-campaign
pnpm journal check --campaign my-campaign
pnpm journal games

Tables are looked up in the campaign first, then in its game, so a campaign can override a single table without copying the rest.

S
Description
No description provided
Readme
186 KiB
Languages
JavaScript 100%