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.
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.
(Identical to the prior Alex method — content unchanged, just scoped to lens output.)
Aries→Mars · Taurus→Venus · Gemini→Mercury · Cancer→Moon · Leo→Sun · Virgo→Mercury · Libra→Venus · Scorpio→Mars · Sagittarius→Jupiter · Capricorn→Saturn · Aquarius→Saturn · Pisces→Jupiter
For each priority point (Sun, Moon, Ascendant, MC, chart ruler, stellium rulers, planets in domicile, angular planets):
kind: chain.Then classify the chart into one of:
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.
For every planet inside an identified loop/terminal/gateway, emit a kind: condition claim with dignity state + house + angularity + retrograde/combust flags if relevant.