Skip to main content
Author: Scott Arciszewski (@tob-scott-a)

Overview

A Claude Code skill that draws Tarot cards using os.urandom() to inject entropy into vague or underspecified planning decisions. When a prompt is sufficiently ambiguous, or the user explicitly invokes fate, this skill shuffles a full 78-card Tarot deck using cryptographic randomness and draws 4 cards (which may appear reversed). Claude then interprets the spread and uses the reading to inform its approach.

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, not re-run same approach)

Tie-Breaking

When you genuinely cannot decide between equally valid approaches

How It Works

The Draw

The script uses os.urandom() for cryptographic randomness:
1

Build Deck

Builds a standard 78-card Tarot deck (22 Major Arcana + 56 Minor Arcana)
2

Shuffle

Performs a Fisher-Yates shuffle using rejection sampling (no modulo bias)
3

Draw Cards

Draws 4 cards from the top
4

Reversals

Each card independently has a 50% chance of being reversed

The Spread

The 4 card positions represent:
PositionRepresentsQuestion It Answers
1The ContextWhat is the situation really about?
2The ChallengeWhat obstacle or tension exists?
3The GuidanceWhat approach should be taken?
4The OutcomeWhere does this path lead?

Card Organization

Each of the 78 Tarot cards has its own markdown file:

Major Arcana

22 cards - The Fool through The WorldArchetypal forces, major life themes

Wands

14 cards - Ace through KingCreativity, action, will, passion

Cups

14 cards - Ace through KingEmotion, intuition, relationships

Swords

14 cards - Ace through KingIntellect, conflict, truth, clarity

Pentacles

14 cards - Ace through KingMaterial, practical, craft, resources

Quick Start

1

Run the Drawing Script

uv run {baseDir}/scripts/draw_cards.py
The script outputs JSON with 4 drawn cards, each with a file path relative to {baseDir}/
2

Read Card Meanings

Read each card’s meaning file to understand the draw
3

Interpret the Spread

Use the interpretation guide at {baseDir}/references/INTERPRETATION_GUIDE.mdKey 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
4

Apply to Task

Apply the interpretation to the task at hand

Example Session

User: "I dunno, just make it work somehow"

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 you NOT to use Tarot
  • A more specific skill (like ask-questions-if-underspecified) would better serve the user by gathering actual requirements

Error Handling

If the drawing script fails:
Report the error to the user and skip the reading. Do not invent cards or simulate a draw — the whole point is real entropy.
Note the missing file, interpret the card from its name and suit alone, and continue with the reading.
If the script cannot run, do not simulate a draw using your own “randomness.” Tell the user the draw failed.

Interpretation Guidelines

Key Interpretation 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

Rationalizations to Reject

RationalizationWhy Wrong
”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
”The reversed card means do nothing”Reversed means a different angle, not inaction
”Major Arcana overrides user requirements”User requirements always take priority over card readings
”I’ll keep drawing until I get what I want”One draw per decision point; accept the reading

Installation

/plugin install trailofbits/skills/plugins/let-fate-decide
This plugin is designed to add creative entropy to ambiguous planning situations. It should complement, not replace, thoughtful technical decision-making and user requirements gathering.

Build docs developers (and LLMs) love