| name | rpg-tools |
| description | Solo RPG mechanical tools for dice rolling, tarot draws, oracles, name generation, character/location/memory management, and story retrieval. Use when the user asks to roll dice, draw tarot cards, consult oracles, generate names, load characters or locations, track memories, or pull from story collections during RPG sessions. |
RPG Tools
Mechanical tools for solo RPG sessions. Run scripts from scripts/.
Tool Categories
Instant Tools - Work immediately, no data files needed:
dice.py - Dice rolling
tarot.py - Tarot draws
oracle.py - Multi-system oracle
Campaign Tools - Require JSON data files in specific directories:
namegen.py - Name generation (needs namesets/)
characters.py - Character profiles (needs characters/)
locations.py - Location profiles (needs locations/)
stories.py - Story collections (needs stories/)
memories.py - Memory tracking (needs memories/)
log.py - Campaign event log (needs campaign/log.json)
campaign.py - Campaign management (needs campaign/config.json)
Instant Tools
Dice Rolling
Roll20-compatible notation with full modifier support.
python scripts/dice.py "2d6+5"
python scripts/dice.py "4d6kh3"
python scripts/dice.py "2d20kh1+5"
python scripts/dice.py "8d6!"
python scripts/dice.py "4dF"
python scripts/dice.py "6d10>=7"
Supports: kh/kl (keep), dh/dl (drop), r/rr (reroll), ! (exploding), !! (compounding), !p (penetrating), comparison operators for success counting.
Tarot
Draw cards for oracular guidance.
python scripts/tarot.py
python scripts/tarot.py 3
python scripts/tarot.py 5
Max 10 cards per draw. Full 78-card deck (Major + Minor Arcana).
Oracle
Multi-system oracle for injecting randomness. Provides raw symbolic material for creative interpretation.
python scripts/oracle.py axis
python scripts/oracle.py omni
python scripts/oracle.py tarot [n]
python scripts/oracle.py rune [n]
python scripts/oracle.py iching
python scripts/oracle.py fate [likelihood]
python scripts/oracle.py prompt
See Using the Oracle for guidance on when to use each oracle type.
Campaign Tools
These tools require JSON data files. See guides for schemas and examples.
Name Generation
Requires namesets/*.json
python scripts/namegen.py list
python scripts/namegen.py full --nameset ice-age-names
python scripts/namegen.py full --nameset NAME --count 5
Characters
Requires characters/*.json
python scripts/characters.py list
python scripts/characters.py list --short
python scripts/characters.py get NAME
python scripts/characters.py get NAME --depth full
python scripts/characters.py get NAME --section powers
python scripts/characters.py sections NAME
python scripts/characters.py update NAME --field full.motivation --value "New goal" --reason "Story event"
Filter options: --faction, --subfaction, --tag, --location, --branch
Locations
Requires locations/*.json
python scripts/locations.py list
python scripts/locations.py list --tag settlement
python scripts/locations.py tree
python scripts/locations.py get NAME --depth full
python scripts/locations.py connections NAME
Filter options: --tag, --parent, --type
Stories
Requires stories/*.json
python scripts/stories.py meta --campaign NAME
python scripts/stories.py random --campaign NAME
python scripts/stories.py random --campaign NAME --theme loss --mood melancholic
python scripts/stories.py show --campaign NAME --story STORY_ID
Filter options: --collection, --theme, --mood, --era
Memories
Requires memories/*.json
python scripts/memories.py list --campaign NAME
python scripts/memories.py random --campaign NAME
python scripts/memories.py search "query" --campaign NAME
python scripts/memories.py character NAME
python scripts/memories.py location NAME
Filter options: --character, --location, --type, --tag, --era, --session, --intensity, --perspective
Campaign Log
Requires campaign/log.json
python scripts/log.py add "Event summary" --date Y3.D45
python scripts/log.py add "Event" --date-loose "after the festival"
python scripts/log.py add "Major event" --importance critical --branch main
python scripts/log.py add "Event" --characters "juno:defining,tam:present"
python scripts/log.py list
python scripts/log.py list --branch main
python scripts/log.py list --character juno
python scripts/log.py list --from Y3.D1 --to Y3.D100
python scripts/log.py show log-00001
python scripts/log.py delete log-00001
Key options: --date, --date-loose, --branch, --characters, --locations, --importance, --tags, --session, --json
Filter options: --branch, --character, --location, --importance, --tag, --from, --to, --limit, --verbose
Campaign Management
Requires campaign/config.json
python scripts/campaign.py init "Campaign Name"
python scripts/campaign.py show
python scripts/campaign.py branch list
python scripts/campaign.py branch switch main
python scripts/campaign.py branch create arc-two "The Second Arc" --from main
python scripts/campaign.py state show
python scripts/campaign.py state show --character juno
python scripts/campaign.py state set juno location "The Spire" --reason "Traveled north"
python scripts/campaign.py changelog show
python scripts/campaign.py changelog show --character juno --limit 5
Key options: --json, --reason (required for state changes)
Session Workflow
Guides for before and after play:
Optional modifiers:
Creating Campaign Data
Guides for creating your own JSON data files: