natal-reading
解读已算好的本命盘,写成以读者为先的报告,审计明细单独成文;每条结论按容许度加权,宽相位不当主线讲。
- 分组
- 占星
- 版本
- 0.8.4
- 许可证
- AGPL-3.0-or-later
安装
/plugin install astrology@misoto22然后这样调用:
/astrology:natal-reading接收已算好的本命盘,写成给人读的报告,机器细节另存一份审计文件。解读从上升及其古典主星、日夜主星的状态、以及最紧的几个相位入手。容许度是有分量的:0.5 度的四分相和 7 度的四分相不是同一句话,把两者等同看待就是在断言盘面没有承载的东西。落在星座首末一度的星体会被单独标出——几分钟的时间误差就会让它换星座,所有依赖它的结论都是有条件的。因星历缺失没算出的星体记为计算缺口,绝不写成「你盘里没有」。
什么时候会触发
CI 实际用来评测这个技能的 prompt——所以它们不会和技能的真实行为脱节。
会触发
- 解读一下 natal_林青.json 这张本命盘。
- 我星盘已经算好了,上升双鱼是什么意思,主星落在哪里重要吗?
- 这张盘里哪几个相位最紧,说明什么?
- 解读这张星盘,再出一张可以分享的水墨风单页。
不会触发
- 我 1999-10-30 下午两点半上海出生,帮我看星盘。
- 我和他的盘合一下看看合不合。
- 解读一下我的紫微命盘。
- 根据这张星盘,说说我 2027 年会遇到什么。
Read one complete natal artifact and write natal_reading_<name>.md plus natal_reading_evidence_<name>.md. Interpret; never recalculate. The first is a reader report; the second is a separate evidence artifact.
Before writing either file, read and follow references/editorial-policy.md. It defines the localization, data-card, and separate-evidence boundary rules this plugin's readings share.
Route and source gate
- Raw birth details belong to
natal-chartfirst. - Two people belong to
synastryand thensynastry-reading. - Transits, progressions, returns, dated events, and forecasts are outside this release.
Accept one of:
- An
astrology.natal-chartJSON artifact at schema version 1 with a valid canonical checksum. - Its verified Markdown rendering together with the matching JSON. Markdown alone is not a machine source.
Validate with the vendored scripts/validate_natal.py. Stop on checksum mismatch, unsupported schema or version, missing house cusps, a position without a house, an aspect naming a body that appears nowhere, or partial lots. Name the exact defect and route raw details back to natal-chart; never patch or infer a field.
Build an evidence ledger first
Assign stable raw evidence ids before writing prose:
[B-<body>]for every position, carrying sign, degree, house, retrograde state, dignities and critical-degree flag.[A-<angle>]for each of the four angles and the derived points.[X-<left>-<kind>-<right>]for each aspect, with its exact orb.[L-<lot>]for each lot, and[S-sect]for the sect and its basis.[LIM-<code>]for every recorded limitation.
Use this ledger to build the evidence artifact's heading-based claim map. Do not expose its ids in the reader report.
Interpretation discipline
- Say "in this tradition," "is commonly read as," or "suggests." Never present astrological interpretation as scientific fact, certainty, diagnosis, or fate.
- Start from the ascendant, its ruler, the sect light, and the tightest aspects. A single placement does not establish a pattern.
- Weight an aspect by its orb. A 7° square is not the same claim as a 0.5° one, and a report that treats them alike is asserting more than the chart carries.
- Treat a critical-degree placement as explicitly fragile: a body in the first or last degree of a sign changes sign on a small time error, so any conclusion resting on it is conditional on the birth minute being exact.
- Report retrograde as a recorded state, not a verdict on the person.
- Say that classical dignities are used and modern rulerships deliberately are not, once, where dignities are first discussed.
- Read a limitation as a gap in the calculation, never as an absence in the person. A chart short five asteroids is not a chart without them.
- Do not infer personality disorders, health conditions, fertility, lifespan, wealth amount, moral character, gender, sexuality, or inevitable relationship outcomes.
- Give practical actions as low-risk reflection prompts, not commands to make medical, legal, financial, employment, or relationship decisions.
Required report order
Keep exactly these five reader-report sections, using the structure in references/output-template.md:
- Ascendant and the chart's shape
- The sect light and its condition
- Tightest aspects, strengths and tensions
- Angles, lots, and reflection
- Model data card
Lead with the person's lived pattern rather than a method disclaimer. Develop the pattern, its countervailing tension, and its practical expression to the depth references/editorial-policy.md sets for a single-system natal reading with many positions — thirteen bodies, four angles, six lots and forty-odd aspects do not compress into a four-placement band.
Write the separate evidence artifact after the reader report. Include source status and checksum, the backend actually used, every position and aspect with exact orbs, sect and its basis, all lots, every limitation, and a claim map mirroring the reader report's five headings.
Optional ink-wash poster
Offer a poster only when the person asks for a visual, shareable, or printable report. It never replaces the reader report or the evidence artifact.
Read shared/divination-report/poster-contract.md, write the payload as data only, and render it:
python3 shared/divination-report/render_poster.py --data POSTER_PAYLOAD.json --out natal_poster_NAME.html
Fill meta.system_label with the tradition and house system, put the ascendant, sect light and its condition in core_metrics, and use distribution for the element or modality balance with value carrying the true count. Put every recorded limitation in conflicts.rows; a poster that hides a missing body is a failed poster. Set footer.evidence_link to the evidence artifact filename. Never write the HTML yourself and never edit the template for one reading.
Write safely
Create UTF-8 Markdown only after validation and evidence indexing. Use portable source names in natal_reading_<name>.md and natal_reading_evidence_<name>.md; preserve the display name inside both files. Do not overwrite a different report pair. When a same-name pair already exists, reuse it only if both record the same source checksum; otherwise append the first eight checksum characters to both names.
Report the reader-report path, evidence-artifact path, source JSON path, and the poster path when one was made. Do not create new chart JSON, alter the source artifact, or invoke the calculator after a valid hand-off.
See references/examples.md for a hand-off, a critical-degree treatment, and a corrupt-source refusal.