Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

TTRPG UI Toolkit

hay-kothay-kot26k downloads

Build interactive character sheets for D&D and other TTRPGs with health trackers, ability scores, skills, and spell slots.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates30

This plugin provides modern UI elements for playing tabletop RPGs like Dungeons and Dragons that provide building blocks for you to build a beautiful markdown driven character sheet.

I built this plugin because I was tired of working with PDFs and online tools to manage my characters. I wanted to keep my notes, spells, and character state (Spell Slots, HP, etc..) all in my notebook. I'm building this plugin to make that process easier.

[!WARNING] This plugin is in early development, things may be broken or change.

📖 Documentation

For complete documentation, examples, and guides, visit our documentation site:

📚 https://hay-kot.github.io/obsidian-ttrpg-ui-toolkit/

The documentation includes:

  • Quick Start Guide - Get up and running in minutes
  • Component Reference - Detailed docs for all components
  • Concepts & Guides - Understanding state storage, events, and dynamic content
  • Examples - Complete character sheet examples

Quick Example

Components are defined with YAML code blocks in any note. For example, a health tracker with hit dice:

```healthpoints
state_key: my-character-hp
health: 25
hitdice:
  dice: d8
  value: 3
```

An ability score block that other components (skills, spell components, templates) read from:

```ability
abilities:
  strength: 10
  dexterity: 15
  constitution: 14
  intelligence: 12
  wisdom: 13
  charisma: 8
```

Interactive state (HP, spell slots, consumables) persists across sessions in a JSON state file in your vault. See the Quick Start Guide for the full component list.

Development

Prerequisites

  • Node.js (v22+)
  • Task (task runner)

Setup

npm install
task dev:register   # once per machine, with Obsidian closed

The dev vault does not live in the repo. It lives in a fixed set of "slots" under ~/obsidian-dev/, and each clone of this repo claims one. task dev:register creates the slots and adds them to Obsidian's vault list, which is why Obsidian has to be closed -- it rewrites that file on quit. A backup is written next to it.

Slots exist because Obsidian resolves obsidian:// URIs by vault name and cannot register a vault on its own. A vault checked into the repo gives every clone a vault with the same name, so Obsidian silently opens whichever copy it saw first. Slots give each clone a distinct, permanent vault path instead.

The test notes stay in the repo under dev/notes/ and are symlinked into the slot, so notes you edit in Obsidian are edited in your working tree and show up in git status.

Dev Workflow

task dev           # Build and install the plugin into this clone's slot
task dev --watch   # Rebuild and install on file changes
task dev:open      # Open this clone's slot in Obsidian
task dev:status    # Show which clone holds each slot
task dev:release   # Give up this clone's slot

task dev claims a slot on first run, installs hot-reload into it, symlinks dev/notes/ in, and copies the build to the slot's plugin directory. Use --watch to rebuild on file changes; hot-reload picks each rebuild up without a restart.

Slots are claimed by writing the clone's path to <slot>/.claim. A claim whose clone no longer exists counts as free, so deleted clones release their slot on their own. Three slots are created by default; set DND_SLOT_COUNT (and DND_SLOT_ROOT) to change that.

To install to a real vault instead of a slot, set PLUGIN_DIR in a .env file:

# .env
PLUGIN_DIR=/path/to/your/vault/.obsidian/plugins/ttrpg-ui-toolkit

Testing

npm run test              # Run all tests
npm run test:watch        # Run tests in watch mode
npm run test -- path/to/file.test.ts  # Run a single test file

Other Commands

npm run format        # Format code with Prettier
npm run lint          # Lint with ESLint
npm run typecheck     # Run TypeScript type checking
task check            # Run all checks (format, lint, typecheck, test)
npm run docs:dev      # Start documentation dev server
HealthExcellent
ReviewSatisfactory
About
Create modern, markdown-driven character sheets with modular UI components for TTRPGs like Dungeons & Dragons. Persist interactive state (HP, spell slots, consumables) in your vault as JSON and compose components with simple YAML blocks to display health, abilities, spells, and trackers.
TTRPGDataMarkdown
Details
Current version
0.28.0
Last updated
Yesterday
Created
2 years ago
Updates
30 releases
Downloads
26k
Compatible with
Obsidian 1.13.0+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Sponsor
GitHub Sponsors
Author
hay-kothay-kothay-kot
GitHubhay-kot
  1. Community
  2. Plugins
  3. TTRPG
  4. TTRPG UI Toolkit

Related plugins

Charted Roots

Family tree visualization with GEDCOM/Gramps import and Canvas/PDF/Markdown export. Charts, maps, timelines, citations, fictional calendars. For genealogists, worldbuilders, and TTRPG campaigns.

Fantasy Statblocks

Create, manage and view a Fantasy Bestiary with Dungeons and Dragons style statblocks.

Linter

Format and style your notes. Linter can be used to format YAML tags, aliases, arrays, and metadata; footnotes; headings; spacing; math blocks; regular Markdown contents like list, italics, and bold styles; and more with the use of custom rule options.

Custom Frames

Turn web apps into panes using iframes with custom styling. Also comes with presets for Google Keep, Todoist and more.

Consistent Attachments and Links

Move note attachments and update links automatically.

Tracker

Track occurrences and numbers in your notes.

Outliner

Work with your lists like in Workflowy or Roam Research.

Flashcards

Anki integration.

Image Captions

Add captions to images with inline Markdown and link support. The caption format is compatible with the Commonmark spec and other Markdown applications.

Typewriter Mode

Typewriter scroll, writing focus, current line highlight, paragraph dimming, and more!