A plugin for recording and tracking solo tabletop RPG sessions using a standardized notation system.
Solo TTRPG Notation is a lightweight text-based system for documenting your solo TTRPG sessions. It lets you:
- Record actions, oracle questions, and dice rolls in a consistent format
- Tag NPCs, locations, and story threads as they appear
- Track progress with clocks, tracks, and timers
- Review your campaign history with powerful browsing tools
All notation lives in code blocks within your markdown files, keeping your narrative text clean and readable.
Access all views from the left sidebar ribbon icons or the command palette:
- Campaign Dashboard (🎲) - Overview of all campaigns with statistics
- Tag Browser (🏷️) - Browse NPCs, Locations, Threads, and References
- Progress Tracker (🕐) - Visual clocks, tracks, and timers
- All Elements Reference (🗄️) - Complete searchable reference
- Random Events (🎲🎲) - All table lookups and generator results
- Meta Notes (📝) - Out-of-character notes organized by category
- Insert Campaign Template - Start a new campaign file
- Insert Session Template - Add a new session
- Insert Scene Template - Add a new scene
- Reindex Current Campaign - Refresh the current file's data
- Reindex All Campaigns - Refresh all campaign data
The plugin automatically tracks:
- NPCs and their mentions
- Locations visited
- Story threads (open/closed/abandoned)
- Progress trackers (clocks, tracks, timers, events)
- Table lookups and generator results
- Meta notes and reflections
Use the command palette (Ctrl/Cmd + P) and select "Insert Campaign Template". This creates:
---
type: solo_campaign
ruleset: Your System
genre: Fantasy
created: 2025-12-31
last_update: 2025-12-31
---
# Campaign Title
Campaign description...
## Session 1
*Date: 2025-12-31 | Duration: 2h*
### S1 *Opening scene*
Your adventure begins...
All notation goes inside code blocks (triple backticks). Outside the code blocks, write your narrative:
### S1 *Dark alley, midnight*
```
> Sneak past the guards
d: Stealth d6=4 vs TN 5 => Fail
=> My foot kicks a barrel. [E:AlertClock 1/6]
? Do they see me?
-> No, but... (d6=3)
=> They're suspicious. [N:Guard|watchful]
```
The guard's torch sweeps across the alley. I press myself against the wall.
```
> Wait for them to pass
tbl: d100=42 => "A distant scream distracts them"
=> Perfect timing. [Thread:Investigation|Open]
```Click the dice icon (🎲) in the left sidebar to open the Campaign Dashboard, or use the command palette to open any view.
| Symbol | Meaning | Example |
|---|---|---|
> |
Player action | > Attack the orc |
? |
Oracle question | ? Is the door locked? |
d: |
Mechanics/dice roll | d: Attack d20=15 vs AC 14 => Hit |
-> |
Oracle result | -> Yes, and... (d6=6) |
=> |
Consequence/outcome | => The door splinters open |
[N:Name] - First mention of an NPC
[N:Name|tags] - NPC with descriptive tags
[#N:Name] - Reference existing NPC
[#N:Name|tag] - Reference with additional context
[L:Place] - First mention of a location
[L:Place|tags] - Location with tags
[#L:Place] - Reference existing location
[#L:Place|tag] - Reference with context
[Thread:Name|Open] - New/active thread
[Thread:Name|Closed] - Resolved thread
[Thread:Name|Abandoned] - Dropped thread
[Clock:Name X/Y] - Danger/pressure (fills up = bad)
[Track:Name X/Y] - Progress (fills up = goal reached)
[Timer:Name X] - Countdown (reaches 0 = trigger)
[E:Name X/Y] - Event countdown
[PC:Name] - Simple PC mention
[PC:Name|warrior|hero] - PC with tags
[PC:Name|HP:12|Armor:3] - PC with stat-like tags
[PC:Name|warrior|HP:12] - PC with mixed tags
tbl: d100=42 => "A merchant arrives"
tbl: Weather=Rain => "Heavy downpour begins"
gen: Mythic => "Gratify Fears"
gen: MUNE => "And also... (Positive)"
Meta notes are out-of-character observations that don't appear in References:
(note: Remember the shopkeeper's hint)
(reflection: This scene dragged, need more action)
(house rule: Using advantage on group checks)
(reminder: Follow up on the missing sword)
(question: Did I mark XP for this session?)
Shows all campaigns with:
- Session and scene counts
- NPC, location, and thread statistics
- Active vs closed threads
- Progress tracker counts
- Click any campaign to open its file
Four tabs for browsing game elements:
NPCs Tab
- All characters encountered
- Tags and descriptive labels
- Mention count and last appearance
- Click to jump to first mention
Locations Tab
- All places visited
- Geographic tags
- Visit history
- Click to navigate to location
Threads Tab
- Story threads by status (Open/Closed/Abandoned)
- Color-coded badges
- Timeline of mentions
- Click to jump to thread origin
References Tab
- All uses of
[#N:Name]and[#L:Name] - Shows reference type (NPC/Location)
- Mention count and context
- Click to jump to reference
Visual representation of all progress elements:
Clocks - Fill as danger increases (e.g., Alert Clock, Enemy Reinforcements) Tracks - Fill as progress is made (e.g., Quest Progress, Relationship Building) Timers - Count down to zero (e.g., Time Until Dawn, Potion Duration) Events - Special countdown trackers
Filter by type, search by name, and click any tracker to jump to its latest mention.
Complete searchable database of everything in your campaigns:
- All NPCs, locations, threads, and trackers in one view
- Type filters (NPC, Location, Thread, Clock, Track, Timer)
- Full-text search
- Sort and browse by campaign
Chronological view of all randomization:
- Table lookups (
tbl:) - Generator results (
gen:) - Filter by type (Tables/Generators)
- Search by content
- Review your oracle consultation history
Your out-of-character notes organized by category:
- Notes - General observations
- Reflections - Session reviews
- House Rules - Custom mechanics
- Reminders - Things to follow up
- Questions - Unresolved queries
Filter by category and search across all notes.
Open Settings → Solo TTRPG Notation to configure:
- Enable/disable automatic indexing
- Control when files are parsed
- Use default templates or specify custom template files
- Customize campaign, session, and scene templates
- Choose progress bar style (bars, circles, or segments)
- Set theme (auto, light, or dark)
- Enable debug mode for troubleshooting
- View index statistics
- Force reindex all campaigns
One campaign per file - Each campaign file should contain all sessions for that campaign.
Consistent session numbering - Use ## Session 1, ## Session 2, etc. (the plugin looks for this format).
Scene IDs - Use ### S1, ### S2, etc. for simple scenes, or ### S1a, ### T2-S3 for more complex tracking.
Code blocks are required - All notation MUST be inside triple backtick code blocks. Narrative text goes outside.
First mention vs references - Use [N:Name] when first introducing an NPC, then [#N:Name] for later mentions.
Tags are optional - [N:Bob] and [N:Bob|merchant|friendly] both work. Tags help you remember context.
Update trackers - When a clock advances, write a new line: [Clock:Alert 2/6]. The plugin tracks the latest value.
- Start each session with the session template (date and duration)
- Write notation in code blocks as you play
- Add narrative outside code blocks after the scene
- Review the dashboard to see campaign statistics
- Use the Tag Browser to remember NPCs and locations
- Check Progress Tracker to see active clocks and tracks
- Make sure notation is inside code blocks (```)
- Check that session headers use
## Session Nformat - Use Reindex Current Campaign command to refresh
- Enable debug mode in settings to see parsing errors
- The plugin parses files on load and when modified
- Use the refresh button (↻) in any view
- Try Reindex All Campaigns from command palette
- Disable automatic indexing in settings
- Manually index campaigns when needed
- Use the file explorer to isolate campaign files
- Issues & Bugs: GitHub Issues
- Notation Spec: See Solo TTRPG Notation
- Examples: Check the
examples/folder for sample campaigns
This plugin implements the Solo TTRPG Notation system (v2.0).
The notation system is inspired by the Sigil Standard.
MIT License - Free to use and modify.
Happy solo gaming! 🎲
For developer documentation, see CONTRIBUTING.md in the GitHub repository.