Tarot Practice
pendingby Todd Waits
A tarot plugin for daily practice. Draw single or multiple cards with intention using randomness seeded by your words. Full mobile support.
Tarot Practice
Bringing necessary imprecision to digital mystical arts since 2025
A feature-rich Obsidian plugin for daily tarot practice. Draw cards with intention using true randomness seeded by your words and the exact moment of the draw.
Documentation
- ๐ Template Variables - Complete variable reference
- ๐ Template Examples - Common template patterns
- ๐ Spread Templates - Spread-specific examples
- ๐งญ Usage Guide - Detailed usage instructions
- โ๏ธ Settings Reference - Complete settings documentation
- ๐ Changelog - Version history and release notes
For Developers:
- ๐จ Development Workflow - Bug fixes, releases, and branching
- ๐งช Testing - Test suite documentation
- ๐ง Development Notes - Architecture and context
Philosophy
Digital tarot tools often feel hollow because they lack the intentionality present in physical practice. This plugin bridges that gap by using your intention and the precise moment of drawing to seed the randomness - making each draw feel participatory rather than mechanical.
Quick Start
- Install plugin (Settings โ Community Plugins โ Browse)
- Run command: "Draw daily tarot" (โP or Ctrl+P)
- Enter your intention when prompted
- Card appears in today's note
That's it! Customize settings later in Settings โ Tarot Practice.
Features
- ๐ด Multi-deck support - Tarot, runes, Lenormand, I Ching, playing cards, or custom decks
- ๐ผ๏ธ Card images - Display images in readings using vault-based storage
- ๐ฏ Daily & inline draws - Single or multiple cards with intention-based randomness
- ๐ Built-in spreads - Five traditional layouts plus custom spread creation
- ๐ค Spread sharing - Import/export custom spreads as JSON or ZIP with templates
- ๐ Draw history - Track all readings with statistics and export to JSON/CSV
- ๐ฒ Deck preparation - Traditional shuffle (1-7x) with intention-influenced cut
- ๐ Handlebars templates - Fully customizable output formatting
- ๐ Reversal support - Optional reversed cards with configurable probability
- ๐ฆ ZIP deck import - Install complete decks with images in one click
- ๐ฑ Cross-platform - Works on desktop, iOS, and Android
Additional decks: Download from obsidian-tarot-decks repository
Installation
Status: Currently pending review for Obsidian Community Plugins directory (PR-9473). Use manual installation for now.
Manual Installation
- Download
main.js,manifest.json, andstyles.cssfrom the latest release - Create folder
YourVault/.obsidian/plugins/tarot-practice/ - Copy files into that folder
- Reload Obsidian (or restart)
- Enable "Tarot Practice" in Settings โ Community Plugins
Development Installation
git clone https://github.com/w8s/obsidian-tarot-practice.git
cd obsidian-tarot-practice
npm install
npm run build
Copy main.js, manifest.json, and styles.css to your vault's plugin folder: YourVault/.obsidian/plugins/tarot-practice/
Usage
Daily Practice
Run "Draw daily tarot" (click sparkles icon โจ or use command palette)
- Enter your intention
- Card appears in today's note
- Location controlled by Settings โ Daily Practice
Quick settings: Number of cards (default: 1), daily note path, insert location
Spread Draws
Run "Draw tarot spread" โ Select spread โ Enter intention
Pro tip: Assign a hotkey in Settings โ Hotkeys for instant access!
Built-in spreads:
- Single Card
- Three Card - Past/Present/Future
- Three Card - Situation/Action/Outcome
- Five Card - Week Ahead (Mon-Fri)
- Celtic Cross (10 cards)
Custom spreads: Click "Create Custom Spread" to define your own positions and meanings.
See Usage Guide for detailed examples and workflows.
Settings
Configure in Settings โ Tarot Practice:
Deck Management
- Default deck - Choose which deck to use for all spreads
- Remember per spread - Remember deck choice for each spread type
- Install deck - Add custom decks from JSON files
- View deck details - See card list and metadata
- Remove deck - Delete custom decks
- Export example - Download template deck for creating your own
Deck Preparation
- Shuffle count (1-7, default: 3) - How many times to shuffle
- Cut deck (On/Off, default: On) - Intention-based cutting after shuffle
Daily Practice
- Number of cards (1-78, default: 1) - Cards to draw for daily practice
- Daily note settings - Auto-create, path pattern, insert location
- Heading name - Insert under specific heading (auto-created if missing)
Templates
- Daily/Inline/Multiple templates - Choose built-in or custom file
- Template base folder - Where custom templates are stored
- Actions: View, Edit, Reset to default
Reversals
- Enable reversals (On/Off) - Allow reversed cards
- Reversal chance (0-100%, default: 50%) - Probability of reversal
- Indicators - Custom text for upright/reversed
Spreads
- Manage built-in and custom spreads
- Import/export spreads as JSON or ZIP files
- Bundle custom templates with spread exports
- Customize shuffle/cut settings per spread
- Override templates for specific spreads
See Settings Reference for complete options and defaults.
Custom Decks
The plugin supports any divination system! Create JSON decks for:
- Oracle cards
- Runes (Elder Futhark, Anglo-Saxon, etc.)
- Lenormand or Kipper cards
- Playing cards
- I Ching hexagrams
- Ogham staves
- Any custom system
Additional Decks
Download free public domain decks from the obsidian-tarot-decks repository:
- Elder Futhark Runes (24) - Norse divination, 2nd-8th century CE
- Petit Lenormand (36) - French cartomancy, early 1800s
- Playing Cards (52) - Standard deck divination, medieval Europe
- I Ching (64) - Ancient Chinese oracle, 3000+ years old
Installation: Download the ZIP file and import via Settings โ Deck Management โ "Add deck". ZIP packages include card images for enhanced readings.
Creating Your Own Deck
Two formats supported:
-
ZIP package (recommended) - Includes deck definition + images
- Automatic image extraction to your vault
- Card images display in readings using
![[image]]syntax - Optional source URL for re-downloading if images are deleted
-
JSON file - Deck definition only (no images)
- Lightweight option for text-only readings
- Can add image paths to external files later
Getting started:
- Settings โ Deck Management โ "Export example deck"
- Edit the JSON file with your cards and metadata
- For ZIP format: Create
cards/folder with images, add deck.json in root - Install via Settings โ Deck Management โ "Add deck"
Complete deck creation guide: See Creating Decks for JSON structure, ZIP packaging, validation rules, and best practices.
Templates
Templates use Handlebars syntax with 20+ variables for customizing draw output.
Quick Reference
Deck info: {{deck_name}}, {{deck_id}}, {{deck_type}}, {{deck_card_count}}, {{deck_supports_reversals}}
Images: {{card.image}}, {{card.imageUrl}}, {{deck_back_image}}, {{deck_back_image_url}}
Spread info: {{spread_name}}, {{spread_description}}, {{intention}}
Cards: {{card_count}}, {{cards}} (array for loops)
Date/time: {{date}}, {{time}}, {{datetime}} (supports Moment.js formats)
Metadata: {{shuffle_count}}, {{was_cut}}, {{cut_position}}, {{cut_variance}}
Optional: {{querent.name}}, {{querent.notePath}} (when reading for someone else)
Spread Example (with loop)
## {{spread_name}} - {{date}}
**Intention:** {{intention}}
{{#if querent}}**Querent:** {{querent.name}}{{/if}}
{{#each cards}}
**{{this.position.label}}:** {{this.name}} {{this.orientation}}
{{#if this.position.description}}_{{this.position.description}}_{{/if}}
{{/each}}
*Deck: {{shuffle_count}} shuffles{{#if was_cut}}, cut at {{cut_position}}{{/if}}*
See complete documentation:
- Template Variables - All available variables with examples
- Template Examples - Copy-paste ready templates
- Spread Templates - Spread-specific formatting
Roadmap
v1.8.1 (Current):
- โ Spread import/export - Share custom spreads as JSON or ZIP files
- โ Template bundling - Export spreads with custom templates included
v1.8.0 (Released):
- โ ZIP deck installation (import complete decks with images)
- โ Vault-based image storage with wikilink support
- โ sourceUrl for deck image restoration
v1.9.0+ (Planned):
- Different shuffle styles (overhand, riffle, Hindu)
- Reading history and analytics
See CHANGELOG.md for version history and GitHub Issues for detailed feature plans.
License
MIT
Credits
Built with:
- rng-with-intention - Intention-seeded randomness library
- Obsidian API - Plugin development framework
- Handlebars - Templating engine
Special thanks to the Obsidian community for feedback and inspiration.
May your draws be insightful and your intentions clear. โจ
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.