astrology-lens-rulership-chains

/home/avalon/.hermes/skills/astrology/astrology-lens-rulership-chains/SKILL.md · raw

Astrology Lens — Rulership Chains (Alex Method)

A lens, not a full reading. The compose layer calls this with a chart and gets back structured findings. Prose synthesis is the compose layer's job, not this skill's.

Lens contract

Input: chart JSON from astral-chart-api (placements + houses + aspects).

Output (structured, append-only to a lens_outputs[] array in the compose pipeline):

{
  "lens": "rulership-chains",
  "version": "1.0.0",
  "claims": [
    {"kind": "chain", "of": "Sun", "path": ["Sun in Libra", "Venus in Scorpio", "Mars in Leo", "Sun in Libra"], "note": "Sun-Venus-Mars loop"},
    {"kind": "loop", "members": ["Sun", "Venus", "Mars"], "weight": "main-engine"},
    {"kind": "gateway", "planet": "Mars", "feeds": ["Moon", "Ascendant"]},
    {"kind": "terminal-domicile", "planet": null},
    {"kind": "mutual-reception", "pair": null},
    {"kind": "condition", "planet": "Sun", "state": "fall (in Libra)"},
    {"kind": "aspect-on-topology", "aspect": "Mars square Pluto 1.2°", "effect": "conditions gateway planet"}
  ],
  "citations": [],
  "graph_classification": "Type 1 — single dominant loop with Ascendant extension"
}

Do not emit prose. The compose layer will pick which claims to surface.

Method

(Identical to the prior Alex method — content unchanged, just scoped to lens output.)

Hard rules

Traditional sign rulers

Aries→Mars · Taurus→Venus · Gemini→Mercury · Cancer→Moon · Leo→Sun · Virgo→Mercury · Libra→Venus · Scorpio→Mars · Sagittarius→Jupiter · Capricorn→Saturn · Aquarius→Saturn · Pisces→Jupiter

Dignities

Algorithm

For each priority point (Sun, Moon, Ascendant, MC, chart ruler, stellium rulers, planets in domicile, angular planets):

  1. Note placement.
  2. Find ruler of placement sign.
  3. Follow that ruler's placement.
  4. Repeat until: terminal domicile, mutual reception, closed loop, or merge into existing identified loop.
  5. Record as kind: chain.

Then classify the chart into one of:

Aspect integration

Sort all major aspects (conj/opp/sq/tri/sex) by orb. Promote aspects within 3° and any aspect involving Sun/Moon/Asc/MC/chart-ruler/loop-member/gateway/terminal. For each promoted aspect emit a claim of kind: aspect-on-topology describing whether it sits inside a loop, bridges loops, hits a gateway, modifies a terminal, or is an outer-planet aspect to a loop member.

Condition

For every planet inside an identified loop/terminal/gateway, emit a kind: condition claim with dignity state + house + angularity + retrograde/combust flags if relevant.

Priority order for the claims list

  1. main loops (largest weight first)
  2. terminal domicile planets
  3. mutual receptions
  4. gateway planets and what they feed
  5. Sun/Moon/Asc/MC chains
  6. aspects on topology
  7. conditions of key planets

Fast UI/topology adapter

For Astral Hermes waiting-state visuals, compute a deterministic fast topology before any LLM prose. This adapter is not a replacement for the full lens; it is the data primitive the full lens can later enrich.

Recommended contract:

{
  "lens": "rulership-chains-fast",
  "version": "0.1",
  "traditional": true,
  "chains": [
    {
      "seed": "Sun",
      "path": [
        {"body":"Sun", "sign":"Libra", "ruler":"Venus"},
        {"body":"Venus", "sign":"Scorpio", "ruler":"Mars"}
      ],
      "termination": {"type":"loop", "members":["Sun","Venus","Mars"]}
    }
  ],
  "loops": [],
  "gateways": [],
  "dominant": null,
  "storyboard": [
    {"kind":"step", "focusBody":"Sun", "focusSign":"Libra", "nextBody":"Venus", "caption":"Sun in Libra answers to Venus."}
  ]
}

Fast algorithm:

  1. Normalize chart placements into body → sign/longitude/house/speed.
  2. Use traditional ruler table only.
  3. Trace priority seeds: Sun, Moon, Ascendant, MC, chart ruler, then optional stellium/angular rulers.
  4. Stop each path at terminal domicile, mutual reception, closed loop, or merge into a known loop.
  5. Classify loops/gateways/terminal planets.
  6. Emit storyboard-ready focus fields (focusBody, focusSign, nextBody) without prose beyond short captions.

Keep this path O(seeds × planets), client-safe, and immediate after chart JSON exists. Deeper dignity/aspect interpretation remains owned by the full lens/compose layer.

No-chart engine/storyboard variant

For secondary animations that explain the chart without showing the wheel, reuse the same fast topology but render it as an engine/wiring diagram:

Session references:

Pitfalls

Verification before returning