Let Fate Decide
Trail of BitsOfficialPublished by Trail of Bits
- Skill
- Role or persona
- Agent tooling
- CC-BY-SA-4.0
- Low risk
- Has scripts
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
let-fate-decide provides a structured, randomized approach to decision-making when users provide ambiguous, nonchalant, or playful prompts. By drawing a 12-house Zodiac Tarot spread, the agent generates a narrative framework to guide its next steps, helping to break analysis paralysis or resolve ties between multiple valid technical approaches. It is designed to be used as a creative lens for discovery and hypothesis generation, particularly in security and engineering contexts, rather than as a replacement for rigorous evidence-based verification.
What it does
- Performs a 12-house Zodiac Tarot spread using cryptographically secure randomness.
- Maps archetypal card meanings to technical contexts like audit stages, failure classes, and domain-specific challenges.
- Provides a structured narrative to help prioritize investigation paths or architectural decisions.
- Supports legacy modes for custom-sized card draws.
- Integrates with technical context lenses to translate abstract readings into actionable engineering tasks.
- Ensures reproducibility and transparency by outputting the full spread in JSON format.
When to use it
- When a user prompt is vague, ambiguous, or lacks specific requirements.
- When the user employs casual or nonchalant language like 'YOLO', 'whatever', or 'let fate decide'.
- When you need to break a tie between multiple reasonable technical approaches.
- When you need a creative, non-obvious angle for security discovery or hypothesis generation.
- When the user's tone is playful and precision is not the primary goal.
Advantages
- Injects genuine entropy into planning to avoid repetitive or biased decision-making.
- Provides a consistent, structured framework for interpreting ambiguous requests.
- Helps surface blind spots by forcing consideration of different archetypal perspectives.
- Maintains a clear separation between the creative 'reading' and the required technical evidence.
- Reduces the need for back-and-forth clarifying questions in casual interactions.
Usage examples
- “I don't know, just pick a way to test this API, let fate decide.”
- The agent draws the 12-house spread, interprets the cards through the 'Audit Pipeline' and 'Domain' lenses, and proposes a specific testing strategy based on the resulting narrative.
- “YOLO, how should I refactor this legacy module?”
- The agent performs a reading to identify potential risks and architectural priorities, then suggests a refactoring plan aligned with the cards' themes.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/trailofbits/let-fate-decide/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip let-fate-decide.zip -d .agents/skills
Documentation by Trail of Bits
Let Fate Decide
When the path forward is unclear, let the cards speak.
Quick Start
Resolve the drawing script from this SKILL.md's installed
location, not the shell's working directory. In the commands below, replace
<resolved-script-path> with that absolute path, keeping the quotes. Relative
links and JSON file paths resolve from the directory containing this SKILL.md.
Run the drawing script:
uv run --no-config "<resolved-script-path>"The script outputs JSON for the default 12 Houses of the Zodiac spread: 12 houses, each with 1 Major Arcana card and 2 Minor Arcana cards. Each house and card includes a
filepath relative to thisSKILL.md's directory.Read each house file and each card's meaning file to understand the draw. For faster reads, use
--contentto include house and card text directly in the JSON:uv run --no-config "<resolved-script-path>" --contentInterpret the spread using the interpretation guide
When the task belongs to a specialized technical workflow, use technical context lenses to translate the reading into an audit, verification, domain, failure-class, or stakeholder lens
Apply the interpretation to the task at hand
When to Use
Vague prompts: The user's request is ambiguous and multiple reasonable approaches exist
Explicit invocations: "I'm feeling lucky", "let fate decide", "dealer's choice", "surprise me", "whatever you think", "YOLO"
Casual delegation: "whatever", "up to you", "your call", "idk", "just do something", "wing it", "I trust you", "doesn't matter", "do what you want", "I don't care", "any approach works", "you pick"
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"
Shrug-like brevity: Very short prompts that fully delegate the decision without expressing a preference
Redraw requests: "Try again" or "draw again" when no actual system changes occurred (this means draw new cards, not re-run the same approach)
Tie-breaking: When you are about to arbitrarily pick between 2+ valid approaches, draw cards instead of silently choosing one
When NOT to Use
The user has given clear, specific instructions
The task has a single obvious correct approach
As the deciding authority for safety-critical work (security, data integrity, production deployments, release approval, incident response)
The user explicitly asks you NOT to use Tarot
The user's tone is precision-seeking rather than casual -- ask clarifying questions instead to gather actual requirements
Security and Correctness Use
This skill may be used inside a security, audit, or correctness pipeline as a creative lens for discovery: choosing which angle to inspect next, breaking analysis paralysis, generating hypotheses, or surfacing blind spots.
It is never sufficient by itself. In security and correctness contexts, the reading must be followed by ordinary engineering evidence: source review, tests, proofs, traces, reproduction steps, exploitability analysis, or other domain-appropriate verification. Do not treat a favorable card as permission to ship, suppress a finding, skip validation, or overrule a concrete risk.
How It Works
The Draw
The script uses secrets for cryptographic randomness:
Builds separate Major Arcana (22 cards) and Minor Arcana (56 cards) decks
Performs Fisher-Yates shuffles via
secrets.randbelow()(no modulo bias)Deals the default 12 Houses of the Zodiac spread
Each house receives 1 Major Arcana card followed by 2 Minor Arcana cards
Each of the 36 cards independently has a 50% chance of being reversed
The default spread records a conservative unordered-card entropy budget
exceeding 100 bits: roughly log2(C(22,12)) bits from Major Arcana selection,
log2(C(56,24)) bits from Minor Arcana selection (assuming
secrets.randbelow() is cryptographically secure), plus 36 reversal bits. The
exact values are computed and reported in the JSON output under entropy_bits.
The actual ordered assignment of cards to houses contains more entropy.
The Spread
The default spread is 12 Houses of the Zodiac:
| House | Represents | Question It Answers |
|---|---|---|
| 1 | Self | How should this work begin? |
| 2 | Resources | What values, assets, or constraints matter? |
| 3 | Communication | What needs to be clarified or connected? |
| 4 | Foundations | What context or dependency anchors the task? |
| 5 | Creativity | Where should experimentation or delight shape the work? |
| 6 | Practice | What quality, maintenance, or execution concern matters? |
| 7 | Partnership | Who or what must this integrate with? |
| 8 | Transformation | What risk, shared state, or deep change is present? |
| 9 | Exploration | What principle or broader strategy guides the path? |
| 10 | Calling | What delivery or long-term outcome is being served? |
| 11 | Community | What system, network, or shared aspiration is involved? |
| 12 | The Hidden | What blind spot, ending, or unconscious factor matters? |
Within each house, the Major Arcana card sets the archetypal theme and the two Minor Arcana cards provide practical detail.
For compatibility with older workflows, draw_cards.py --legacy returns the
previous 4-card hand, and draw_cards.py --legacy <count> returns a custom
hand of 1-78 cards. A positional count without --legacy is rejected, because
the new default spread has a fixed shape.
Reference Files
Each house's meaning is in its own markdown file under houses/. House files describe how the house applies across technical contexts including building new projects, vulnerability discovery, correctness verification, and common audit, verification, domain, failure-class, and stakeholder workflows.
Each card's meaning is in its own markdown file under 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 house file and each card file, then synthesize meaning. See the interpretation guide for the full interpretation workflow. For cross-domain translation, see technical context lenses.
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 12 houses; don't interpret cards in isolation
Map abstract meanings to concrete technical decisions
In security, audit, and correctness work, use the reading to choose an investigation path, then require evidence before accepting or dismissing any risk
Never output interpretation as a text-only turn. Include the interpretation alongside your next tool call (the action that implements the chosen option). Prefer
--contentso all 36 card meanings and all 12 house meanings are available from the draw output.
Example Session (House-Level Fragment)
A real reading synthesizes all 12 houses; the fragment below shows only what one house contributes so the format is clear. Do not stop after one house in actual use.
User: "I dunno, just make it work somehow"
[Draw cards]
1st House (Self): The Magician (upright), Five of Swords (reversed),
Ten of Pentacles (upright)
House contribution: The starting stance is resourceful and tool-rich
(Magician), but the practical details warn against combative edge-case work
(Five of Swords reversed) while still favoring maintainable craft
(Ten of Pentacles). This is one input into the overall reading; combine with
the remaining 11 houses before deciding on an approach.The named draw agent returns a more compact form for portent questions:
3 concise bullets covering the dominant theme, the main risk or blind spot,
and the recommended next action.
Error Handling
If the drawing script fails:
Script crashes with traceback: Report the error to the user and skip the reading. Do not invent cards or simulate a draw — the whole point is real entropy.
Card file not found: Note the missing file, interpret the card from its name and suit alone, and continue with the reading.
Never fake entropy: If the script cannot run, do not simulate a draw using your own "randomness." Tell the user the draw failed.
Rationalizations to Reject
| Rationalization | Why 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 |
| "The reading says the risk is fine" | Cards can suggest what to inspect; only evidence can dismiss a security or correctness concern |
Files
- ATTRIBUTION.mdAdded by AutoGineer939 B
- LICENSELicence file added by AutoGineer19.7 KiB
- SKILL.md10.0 KiB
- agents/openai.yaml236 B
- assets/trail-of-bits-mark.svg3.0 KiB
- cards/cups/ace-of-cups.md627 B
- cards/cups/eight-of-cups.md666 B
- cards/cups/five-of-cups.md603 B
- cards/cups/four-of-cups.md607 B
- cards/cups/king-of-cups.md511 B
- cards/cups/knight-of-cups.md478 B
- cards/cups/nine-of-cups.md634 B
- cards/cups/page-of-cups.md518 B
- cards/cups/queen-of-cups.md502 B
- cards/cups/seven-of-cups.md497 B
- cards/cups/six-of-cups.md496 B
- cards/cups/ten-of-cups.md536 B
- cards/cups/three-of-cups.md482 B
- cards/cups/two-of-cups.md500 B
- cards/major/00-the-fool.md563 B
- cards/major/01-the-magician.md648 B
- cards/major/02-the-high-priestess.md710 B
- cards/major/03-the-empress.md645 B
- cards/major/04-the-emperor.md651 B
- cards/major/05-the-hierophant.md685 B
- cards/major/06-the-lovers.md715 B
- cards/major/07-the-chariot.md704 B
- cards/major/08-strength.md689 B
- cards/major/09-the-hermit.md644 B
- cards/major/10-wheel-of-fortune.md723 B
- cards/major/11-justice.md664 B
- cards/major/12-the-hanged-man.md709 B
- cards/major/13-death.md702 B
- cards/major/14-temperance.md706 B
- cards/major/15-the-devil.md699 B
- cards/major/16-the-tower.md723 B
- cards/major/17-the-star.md653 B
- cards/major/18-the-moon.md759 B
- cards/major/19-the-sun.md722 B
- cards/major/20-judgement.md701 B
- cards/major/21-the-world.md731 B
- cards/pentacles/ace-of-pentacles.md458 B
- cards/pentacles/eight-of-pentacles.md486 B
- cards/pentacles/five-of-pentacles.md427 B
- cards/pentacles/four-of-pentacles.md436 B
- cards/pentacles/king-of-pentacles.md459 B
- cards/pentacles/knight-of-pentacles.md471 B
- cards/pentacles/nine-of-pentacles.md447 B
- cards/pentacles/page-of-pentacles.md465 B
- cards/pentacles/queen-of-pentacles.md452 B
- cards/pentacles/seven-of-pentacles.md461 B
- cards/pentacles/six-of-pentacles.md428 B
- cards/pentacles/ten-of-pentacles.md459 B
- cards/pentacles/three-of-pentacles.md468 B
- cards/pentacles/two-of-pentacles.md448 B
- cards/swords/ace-of-swords.md477 B
- cards/swords/eight-of-swords.md508 B
- cards/swords/five-of-swords.md498 B
- cards/swords/four-of-swords.md453 B
- cards/swords/king-of-swords.md518 B
- cards/swords/knight-of-swords.md615 B
- cards/swords/nine-of-swords.md597 B
- cards/swords/page-of-swords.md504 B
- cards/swords/queen-of-swords.md517 B
- cards/swords/seven-of-swords.md495 B
- cards/swords/six-of-swords.md494 B
- cards/swords/ten-of-swords.md612 B
- cards/swords/three-of-swords.md457 B
- cards/swords/two-of-swords.md497 B
- cards/wands/ace-of-wands.md461 B
- cards/wands/eight-of-wands.md443 B
- cards/wands/five-of-wands.md482 B
- cards/wands/four-of-wands.md461 B
- cards/wands/king-of-wands.md467 B
- cards/wands/knight-of-wands.md547 B
- cards/wands/nine-of-wands.md414 B
- cards/wands/page-of-wands.md449 B
- cards/wands/queen-of-wands.md466 B
- cards/wands/seven-of-wands.md525 B
- cards/wands/six-of-wands.md587 B
- cards/wands/ten-of-wands.md438 B
- cards/wands/three-of-wands.md464 B
- cards/wands/two-of-wands.md445 B
- houses/01-first-house.md1.4 KiB
- houses/02-second-house.md1.5 KiB
- houses/03-third-house.md1.3 KiB
- houses/04-fourth-house.md1.6 KiB
- houses/05-fifth-house.md1.5 KiB
- houses/06-sixth-house.md1.3 KiB
- houses/07-seventh-house.md1.3 KiB
- houses/08-eighth-house.md1.7 KiB
- houses/09-ninth-house.md1.4 KiB
- houses/10-tenth-house.md1.4 KiB
- houses/11-eleventh-house.md1.5 KiB
- houses/12-twelfth-house.md1.6 KiB
- references/INTERPRETATION_GUIDE.md7.2 KiB
- references/TECHNICAL_CONTEXT_LENSES.md4.6 KiB
- scripts/draw_cards.pyScript9.3 KiB
- scripts/pyproject.toml144 B
- scripts/test_draw_cards.pyScript14.1 KiB
cards/major/08-strength.md
Strength
Arcana: Major | Number: VIII
Upright
Courage, patience, and quiet influence. Strength tames not through force but through compassion and persistence. This card advises gentle determination -- the problem yields to steady, patient effort rather than brute force.
Reversed
Self-doubt, weakness, and insecurity. The reversed Strength card signals a loss of confidence or trying to force what requires finesse. Raw power without patience makes things worse.
In Technical Context
The brute-force solution will not work here. Apply patience: profile before optimizing, refactor incrementally, and persuade the team through working examples rather than arguments.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Declares allowed tools, Needs Python
Security
What our scanner noticed· Low risk
- Scripts that your agent may run
This skill includes scripts that your agent may run. Read them before you use it.
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- Trail of Bits
- Publisher
- Trail of Bits (Official)
- Source
- trailofbits/skills · plugins/let-fate-decide/skills/let-fate-decide · commit e4dd0bb
- Licence
- Creative Commons Attribution-ShareAlike 4.0 International (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Trail of Bits or Trail of Bits.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download let-fate-decide.zip