Back to Skills
    🦞

    mingli

    Mingli (命理) — Multi-system daily horoscope: Western astrology

    By @hiehoo
    View on GitHub
    SKILL.md
    ---
    name: mingli
    description: "Mingli (命理) — Multi-system daily horoscope: Western astrology (natal chart + transits), Ba-Zi / Four Pillars (Bát Tự), numerology, I Ching (Kinh Dịch). Kerykeion + astronomyapi.com. Telegram delivery."
    version: 2.0.0
    ---
    
    # Mingli 命理
    
    Multi-system divination skill: Western astrology (Placidus houses, precise aspects), Ba-Zi / Four Pillars (Ngu Hanh), numerology (LifePath + personal cycles), and I Ching (hexagram + SPARK). Delivered daily via Telegram cron or on-demand.
    
    ## Modes
    
    | Mode | Description | Trigger |
    |------|-------------|---------|
    | **Setup** | Register birth data, compute all charts | "set up my horoscope" |
    | **Daily** | Automated 4-system horoscope via cron | Cron schedule |
    | **On-demand** | Instant horoscope | "my horoscope", "horoscope now" |
    | **I Ching** | Hexagram reading (random or manual) | "cast I Ching", "throw hexagram" |
    | **Manage** | Pause/resume/change time | "pause horoscope", "change horoscope time" |
    
    ## Scripts
    
    ```bash
    # Western natal chart (kerykeion — houses, aspects, nodes)
    .claude/skills/.venv/bin/python3 .claude/skills/mingli/scripts/calculate-western-natal-chart-using-kerykeion.py \
      --date 2000-03-25 --time 12:00 --tz "Asia/Saigon" --lat 21.0245 --lon 105.84117 --name "User"
    
    # Ba-Zi Four Pillars + Western zodiac
    .claude/skills/.venv/bin/python3 .claude/skills/mingli/scripts/calculate-bazi.py \
      --date 1990-05-15 --time 14:30 --tz "Asia/Saigon"
    
    # Planetary positions (astronomyapi.com fallback for transit data)
    .claude/skills/.venv/bin/python3 .claude/skills/mingli/scripts/fetch-planetary-positions.py \
      --lat 10.8231 --lon 106.6297
    
    # Numerology — LifePath, Birthday, Attitude, Challenges, Pinnacles, Personal cycles
    .claude/skills/.venv/bin/python3 .claude/skills/mingli/scripts/calculate-numerology.py \
      --date 2000-03-25
    
    # I Ching hexagram casting
    .claude/skills/.venv/bin/python3 .claude/skills/mingli/scripts/cast-i-ching-hexagram.py --mode random
    .claude/skills/.venv/bin/python3 .claude/skills/mingli/scripts/cast-i-ching-hexagram.py \
      --mode manual --upper Kan --lower Kun --moving 2,1
    ```
    
    ## Setup Mode
    
    1. Ask for: **birth date** (YYYY-MM-DD), **birth time** (HH:MM), **birth city** (lat/lon + timezone)
    2. Ask for: **Telegram chat ID**, **preferred delivery time** + **timezone**
    3. Run all calculation scripts: natal chart, Ba-Zi, numerology
    4. Write results to `~/clawd/memory/horoscope-users.md` (include lat/lon, LifePath number)
    5. Create daily cron job
    6. Confirm: Western sign + ASC + Ba-Zi Day Master + LifePath + delivery schedule
    
    ## Daily Mode
    
    Cron triggers 4 scripts → all JSON fed to LLM → compose multi-system horoscope → Telegram.
    
    See `references/horoscope-prompt-template.md` for full agentTurn message.
    
    ## On-Demand Mode
    
    Trigger: "my horoscope", "horoscope now", "what's my horoscope today"
    
    Same flow, inline (not isolated session). Includes daily I Ching hexagram.
    
    ## I Ching Mode
    
    Trigger: "cast I Ching", "throw hexagram", "que Kinh Dich"
    
    - **Random cast:** 3-coin method, cryptographic randomness
    - **Manual input:** User provides upper/lower trigrams + moving lines
    - Output: primary hexagram, moving lines, transformed hexagram, SPARK summary
    
    ## Management Commands
    
    | Command | Action |
    |---------|--------|
    | "pause horoscope" | Disable cron job |
    | "resume horoscope" | Enable cron job |
    | "change horoscope time to 7am" | Update cron schedule |
    | "remove horoscope" | Delete cron job + memory entry |
    
    ## Cron Delivery
    
    One cron job per user: `horoscope-daily-{username}`
    
    ```json
    {
      "name": "horoscope-daily-{username}",
      "enabled": true,
      "schedule": { "kind": "cron", "expr": "0 {hour} * * *", "tz": "{timezone}" },
      "sessionTarget": "isolated",
      "payload": {
        "kind": "agentTurn",
        "message": "[prompt from references/horoscope-prompt-template.md]",
        "model": "claude-sonnet-4-20250514",
        "timeoutSeconds": 180,
        "deliver": true,
        "channel": "telegram",
        "to": "{telegram_chat_id}"
      },
      "isolation": { "postToMainPrefix": "Horoscope delivered", "postToMainMode": "summary" }
    }
    ```
    
    ## State Tracking
    
    File: `state/users.json` — maps usernames to cron job IDs.
    
    ## Error Handling
    
    - **kerykeion fails:** Fallback to `fetch-planetary-positions.py` (API-based, no houses)
    - **API down:** LLM generates horoscope from zodiac knowledge only
    - **Memory missing:** Prompt user to run setup first
    - **I Ching data missing:** Generate hexagram from embedded trigram math only
    
    ## References
    
    - `references/astronomyapi-reference.md` - API auth + endpoints
    - `references/zodiac-reference.md` - Western + Chinese zodiac tables, stems, branches
    - `references/horoscope-prompt-template.md` - LLM prompt for daily generation
    - `references/i-ching-64-hexagrams.json` - 64 hexagrams with Chinese/Vietnamese names
    
    ## Dependencies
    
    - **kerykeion** (pip) — natal chart, houses, aspects. Install: `pip install kerykeion`
    - **astronomyapi.com** — env: `ASTRONOMY_APP_ID`, `ASTRONOMY_APP_SECRET`
    - All other scripts: Python stdlib only