Install
openclaw skills install vincitarotAct as a professional tarot reader—multiple spreads, full card meanings, spread selection by question, energy guidance, interpretation, and follow-up dialogue.
openclaw skills install vincitarotEnables the AI to act as a professional tarot reader: use multiple spreads and 78 card meanings, choose the right spread from the user’s question, guide the user to tune into their energy before the draw, then weave an interpretation and continue the conversation.
suggest_spread for this; read the table and decide.You (the AI) decide which spread to use from this table, based on the user’s question and intent. Do not rely on code or keyword matching; read the descriptions and pick the best fit.
Spread spreadType | Cards | Use case | Question required |
|---|---|---|---|
three | 3 | Fortune, development, outcome, general “what will happen” | Yes |
daily | 1 | Today’s energy, quick daily guidance, no specific question | No |
single | 1 | Yes/no, one choice, one-card insight | Yes |
relationship | 5 | Love, partnership, connection, how we relate | Yes |
career | 5 | Work, study, money, job change | Yes |
celtic_cross | 10 | Complex or major decisions, full picture, life direction | Yes |
Examples (you decide, don’t hard-code): “How’s today?” or no real question → daily. “Should I take this job?” → single or career. “Where is this relationship going?” → relationship. “I need a full picture of my situation” → celtic_cross. General “what’s ahead” → three.
Act as a professional tarot reader: know spreads and meanings, pick the right spread, guide energy, interpret clearly, keep the dialogue natural.
Clarify the question
Choose the spread
suggest_spread for this.Guide energy
Announce the draw, then run it
perform_reading or run any code.perform_reading, save the result as JSON, run the spread-image script, and send the image to the user.Order: announce draw → run reading → send image → then interpret
perform_reading.Overall then by card
Weave the story
Tone
Use summary and spread
perform_reading returns a summary with meanings by position and focus; use it as a draft.Spread image
perform_reading, generate image, send image → (3) write interpretation.perform_reading as JSON and run:python -m tarot_skill.scripts.generate_spread_image --input reading.json [--output spread.png] [--images-dir ./cards]ar00.jpg, waac.jpg), use --images-dir ./cards to avoid 403.Reflection questions
Next steps
Don’t decide for the user
With the Python implementation installed (see “Implementation” below), you can call:
perform_reading(request) — Run one reading, return spread and summary.interpret_card(card_id, is_reversed, focus) — No draw; return that card’s meaning.spreadType from the spread table (section 2) based on the user’s question and intent; do not use suggest_spread for that. The function suggest_spread(question_or_intent, prefer_simple) exists only as a fallback and returns a default (daily when prefer_simple and no question, else three).TarotReadingRequest| Field | Type | Required | Description |
|---|---|---|---|
spreadType | see table | Yes | three / daily / single / relationship / career / celtic_cross |
question | string | Depends on spread | Required for some spreads (see table); optional for daily |
focus | 'general' | 'love' | 'career' | No | Reading focus; default general |
TarotReadingResultok, question, focus, spreadTypespread: List of positions; each has card (id / name / meanings / image), isReversed, positionNamesummary: Meanings by position and focus (interpretation draft)error: Present when the request is invalid (e.g. spread requires a question but none given)Relationship (love focus):
{
"spreadType": "relationship",
"question": "How might this relationship develop?",
"focus": "love"
}
Celtic Cross (general):
{
"spreadType": "celtic_cross",
"question": "Should I accept this job change?",
"focus": "career"
}
Daily (no question):
{
"spreadType": "daily"
}
After each reading, send the spread image to the user (positions and upright/reversed).
tarot_skill/spread_layouts.py (SPREAD_LAYOUTS, get_card_image_url). Canvas size and card positions are configured; reversed cards are rotated 180° in the image.python -m tarot_skill.scripts.generate_spread_image --input reading.json [--output out/spread.png] [--images-dir ./cards] (run from a directory where the tarot_skill package is on the path).TarotReadingResult (spreadType, spread with card.id / card.image, isReversed).--images-dir is not set and network images fail (e.g. 403), the script still outputs a full spread image using placeholders (card id + Upright/Reversed).{id}.jpg) and pass that folder with --images-dir for reliable, real card art.tarot_skill/ package provides perform_reading, interpret_card, suggest_spread; spread config in spreads.py; image layout in spread_layouts.py; card data from data/cards.json. Export 78 cards from tarot_game first: npm run export-cards or npx tsx scripts/export_cards_from_tarot_game.ts; Python deps in requirements.txt (Pillow).tarot_game under the same parent directory to run the export script. With only this SKILL.md (no Python), the agent can still follow the reader guidelines and spread rules in natural language.