Test
v0.0.1Draw Tarot cards using cryptographic randomness to inject entropy into planning when prompts are vague or underspecified. Interprets a 4-card spread to guide...
Let Fate Decide
When the path forward is unclear, let the cards speak.
Based on the let-fate-decide plugin by theexpensiveexperience, licensed under CC BY-SA 4.0.
Quick Start
-
Run the drawing script:
python3 {baseDir}/scripts/draw_cards.py -
The script outputs JSON with 4 drawn cards, each with a
filepath relative to{baseDir}/ -
Read each card's meaning file to understand the draw
-
Interpret the spread using the guide at {baseDir}/references/INTERPRETATION_GUIDE.md
-
Apply the interpretation to the task at hand
When to Use
- Vague prompts: The user's request is ambiguous and multiple valid approaches exist
- Explicit invocations: "I'm feeling lucky", "let fate decide", "dealer's choice", "surprise me", "whatever you think"
- Yu-Gi-Oh energy: "Heart of the cards", "I believe in the heart of the cards", "you've activated my trap card", "it's time to duel"
- Nonchalant delegation: The user expresses indifference about the approach
- Redraw requests: "Try again" or "draw again" when no actual system changes occurred (draw new cards)
- Tie-breaking: When you genuinely cannot decide between equally valid approaches
When NOT to Use
- The user has given clear, specific instructions
- The task has a single obvious correct approach
- Safety-critical decisions (security, data integrity, production deployments)
- The user explicitly asks NOT to use Tarot
How It Works
The Draw
The script uses os.urandom() for cryptographic randomness:
- Builds a standard 78-card Tarot deck (22 Major Arcana + 56 Minor Arcana)
- Performs a Fisher-Yates shuffle using rejection sampling (no modulo bias)
- Draws 4 cards from the top
- Each card independently has a 50% chance of being reversed
The Spread
The 4 card positions represent:
- Position 1 — The Context: What is the situation really about?
- Position 2 — The Challenge: What obstacle or tension exists?
- Position 3 — The Guidance: What approach should be taken?
- Position 4 — The Outcome: Where does this path lead?
Card Files
Each card's meaning is in its own markdown file under {baseDir}/cards/:
cards/major/— 22 Major Arcana (archetypal forces)cards/wands/— 14 Wands (creativity, action, will)cards/cups/— 14 Cups (emotion, intuition, relationships)cards/swords/— 14 Swords (intellect, conflict, truth)cards/pentacles/— 14 Pentacles (material, practical, craft)
Interpretation
After drawing, read each card's file and synthesize meaning. See {baseDir}/references/INTERPRETATION_GUIDE.md for the full interpretation workflow.
Key rules:
- Reversed cards invert or complicate the upright meaning
- Major Arcana cards carry more weight than Minor Arcana
- The spread tells a story across all 4 positions; don't interpret cards in isolation
- Map abstract meanings to concrete technical decisions
Error Handling
- Script fails: Report the error to the user and skip the reading. Do not invent cards.
- Card file not found: Interpret the card from its name and suit alone; continue the reading.
- Never fake entropy: If the script cannot run, do not simulate a draw. Tell the user the draw failed.
Rationalizations to Reject
- "The cards said to, so I must" → Cards inform direction, they don't override safety or correctness
- "This reading justifies my pre-existing preference" → Be honest if the reading challenges your instinct
- "I'll keep drawing until I get what I want" → One draw per decision point; accept the reading
