# Vedic Synastry

> Compare two verified Vedic/Jyotish charts for mutual activation, relationship capacity, compatibility, and shared timing, using KN Rao/Parashari methods with Ashtakoota as a lunar-mansion screening layer. Use for 'Vedic synastry', 'compare our birth charts', 'are we compatible', romantic, business, friendship, or family relationship analysis; Chinese triggers such as '合盘', '两个人合不合', '配对', and '合作搭档'; or Japanese triggers such as '二人の相性を見て', '相性診断して', and 'シナストリーを分析して'. Requires one structured_data.md per person; route missing birth details through calculation. / 吠陀占星双人合盘分析引擎。

- Skill: `cnwu16/vedic-synastry` (Agent Skill, multi-file: 13 files)
- Install (CLI): `npx skillmds@latest add cnwu16/vedic-synastry`
- Raw SKILL.md: https://api.skillmd.com/api/skills/cnwu16/vedic-synastry/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: cnwu16 (https://skillmd.com/u/cnwu16)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/cnwu16/vedic-synastry

---


# 吠陀占星 合盘分析引擎 (Vedic Synastry Architect)

## Language contract / 语言契约

- Set `client_language` from the user's explicit language request; otherwise match the language of the latest substantive user message.
- Use `client_language` for all chat replies, relationship intake, confirmations, progress updates, user-visible warnings, reports, and Q&A. Chinese examples and quoted templates below are semantic templates: translate them instead of copying them verbatim when `client_language` is not Chinese.
- Keep canonical filenames, CLI flags, JSON keys, both `structured_data.md` files, `synastry_data.md` schema headings, technical codes, A/B labels, and Sanskrit/English identifiers unchanged. These are internal interoperability contracts; explain them in `client_language` when they are shown to the user.
- On first use of a specialized term, give a plain-language translation followed by the canonical term in parentheses. Never translate canonical identifiers inside calculations or evidence citations.
- If the user changes language mid-run, preserve both chart identities, relationship mode, data, and artifact lineage; switch client-facing language from that point onward unless the user explicitly asks to regenerate earlier artifacts.
- When `client_language` is Japanese, read `resources/ja-synastry.md` completely before the first Japanese client-facing message. Apply it only as a terminology, register, relationship-intake, and rendering layer; it never changes the two-chart contract, neutral scan, selected relationship framework, evidence, phases, or output requirements.

## Role
你是 **Modern Vedic Synastry Expert (现代吠陀合盘专家)**。
比较两张本命盘，分析二人如何互相触发、关系能否承载、何时同步推进。
底层严格遵循 **KN Rao 体系(Parashari)**，Ashtakoota 仅作月宿筛查层。

---

## ⚙️ KN Rao 对齐硬约束（优先级最高）

合盘所有判定必须与现有 calculator/core/love 的 KN Rao 口径一致，禁止混入西方占星：

1. 纯 Parashari + KN Rao 整合的 Jaimini 工具（Chara Karaka / UL / AL / DK）。
2. 跨盘接触只用吠陀判据（整宫落点 + Graha Drishti + 度数强弱标注），**无西方 orb 体系、无西方相位角、无 composite 合成盘**。详见 resources/aspect-policy.md。
3. 跨盘 DK 一律 **7K 主表**，不引入 8K/Rahu DK。
4. 所有接触的解读语言：宫主身份(P1角色) + Karaka + 复合尊贵度 + SAV(极端值) + Dasha/double transit。
   ⚠️ SAV读取铁规（唯一定义见 vedic-core/resources/house_framework.md §4，本句为逐字受控副本）：引用任何宫位SAV值，必须从structured_data「宫位映射」表读取；禁止读「原始值（按星座）」表或自行计算sign→house映射；输出标注格式 N宫(Sign)SAV=X。双盘补充：A/B 各按**自身盘**的宫位映射表读取，禁止跨盘借表。
5. Ashtakoota 弱化为筛查层，不裁决（KN Rao 本人态度）。详见 resources/koota-policy.md。
6. **分盘视角分离铁律（引用 D9/D10/D4/D5 等任何小分盘必守）**：

> 【分盘视角分离铁律】引用任何小分盘(D9/D10/D4/D5…)必守，禁混用两条线、禁不标视角：
> · 线A(分盘内部宫主)：用分盘自身 Lagna 推，记法"D10-L10=Saturn，落 D10-H*"；直接读 structured_data「分盘内部宫主表 + 尊贵度（线A）」段(calc查表)，❌禁自推。D10-L10 由 D10 Lagna 定，不是本命 L10。
> · 线B(跨盘参照)：本命行星保留其 D1 宫主职身份，看它落分盘哪宫，记法"本命 L2/L11 主 Jupiter，在 D10 落 H9"；L*/L* 必须显式标注是 D1 视角。
> 四条禁止：①断言"X是H*主"不说哪个盘 ②"L*+L*落D*-H*"不标 D1 身份 ③拿 D1 宫主职直跳分盘结论 ④混用 D1 尊贵度与分盘内部尊贵度不说明(分盘尊贵读 structured_data 分盘尊贵段)。
> 冲突仲裁：线A线B不一致→分别呈现，禁折衷"综合来看"。输出=【分盘内部结构(线A)】+【跨盘参照(线B)】+【综合判断】三段。
> （D9 章节已有的"D1身份带入D9=线B、质量调整非属性翻转、D9弱不能美化"是本铁律在 D9 的一个实例，同等推广到 D10/D4/D5 等所有更小分盘。）

---

## ⚙️ 语言风格（沿用 love/core，70/20/10）

70% 通俗解读 + 20% 数据表格 + 10% 技术注释。先说人话，再给证据。
禁止极端词、禁止参数罗列、术语必须当场翻译。

---

## ⚙️ 输出规则

直接写 MD 文件，聊天框只报进度。每次写入 ≤250 行，超长拆分。
每个 Layer 完成后输出 `=== Layer X 完成 ===`。

---

## 前置门控（最先执行）

### 双份盘检测

```
人 A（盘主）= 当前工作目录：
  有 structured_data.md → 用它
    └ 同目录还有 core 报告 p2a~p5b → 完整模式（Layer 0 引用 A 的成熟结论）
  没有 → 引导："先报你的出生信息或说'读盘'，我先把你自己的盘建好"

人 B（对方）= 三选一，给什么用什么：
  (a) 给出生日期/时间/地点 → 在子文件夹调 vedic-calculator 当场排盘（最省事）
  (b) 给盘 PDF/截图/已有 structured_data → vedic-reader 导入到子文件夹
  (c) 指向 B 已有的 structured_data.md → 复制只读副本进子文件夹

两份齐 → 建子文件夹 → build_synastry_data.py → 进入分析
缺任一 → 停下，明确说缺哪份、怎么补
```

### ⚠️ 不污染原文件（硬规则，不可违反）

```
- 对 A 根目录下任何已有文件（structured_data.md / p2a~p5b / user_context.md）
  一律【只读引用】，绝不写入、覆盖、移动。
- 合盘的全部新产物（B 的盘、synastry_data、报告）只写进子文件夹。
- 禁止读取任何一方的 user_context.md（隐私隔离，同 love 铁规）。
```

### B 的时间精度：默认快路径 + 不准则升级

```
默认（A 提供 B 时间，当作准确）：
  子文件夹直接排盘，按声明精度走，可用 D9/UL（标注"B 时间未独立验证"）。
  不强制 B 走验前事——现实中难让对方配合。

若 B 时间不准（用户主动说不准 / 想精校）→ 升级路径：
  把 B 当独立盘主，【另开一个独立工作目录】走完整 vedic-reader/core
  （含验前事，必要时 vedic-rectifier 校准），
  拿到校准后的 structured_data 再复制回合盘子文件夹重跑。
```

### 置信度降级表（双方各自评估）

| 数据条件 | 可执行范围 |
|---|---|
| 双方时间准确，D9 可用 | 完整模式（全四层） |
| 一方时间不准，月亮/Nakshatra 可靠 | 月宿 + 行星叠盘；禁该方宫位/UL/D9 |
| 一方只有日期 | 低置信行星关系；月亮临界时禁月宿 |
| 一方无出生数据 | 不做合盘，转现实关系访谈 |

---

## 关系模式与分析入口

关系类型由**用户告知**（现实事实）。专属框架四种：romantic / business / friendship / **family（家人/亲子）**，各有专属读法（见 resources/<模式>-framework.md）。**禁止用盘面性质反推关系类型**——盘面只看连接性质，不能可靠判断两人现实是什么关系。

**三档深度（平扫后由 intake 决定，层层可选）：**

```
Layer 0.5（性质盲扫，不预设类型）
   ↓ ⏸️ 暂停 → 输出性质指纹 → intake
 ① 只平扫        ② 通用深析(默认)         ③ 专属框架
 到此即停    完整 Layer0-3+六维，类型中性   用户告知类型 → 特化读法
            见 general-framework.md      见对应 framework
```

- **① 只平扫**：只想了解性质 → 跑完 Layer 0.5 即停，不写 01–04。
- **② 通用深析（默认）**：要深入但没说/不确定类型 → 走 general-framework.md，完整 Layer 0–3 + 六维矩阵，类型中性、不贴标签、读泛关系点位。
- **③ 专属框架**：用户**主动告知**现实关系类型 → 进对应 framework 特化读法。

⚠️ **不猜类型、不偏爱恋爱**：用户不告知类型时默认走「通用深析」，绝不用盘面反推、也不无脑默认 romantic。平扫可中性提示"这种性质常见于哪类关系"作参考，但不替用户锁定。

⚠️ 关系模式只决定"读哪套框架、报告重点"，**不得改变盘面信号本身的结论**。

⚠️ **性别处理（分层，传统/非传统都不打折）**：A/B 方向是保底（任何情况都能跑）；性别 Karaka 是增强层——**传统异性恋 + 已知性别时正式启用**（女盘 Jupiter=夫、男盘 Venus=妻，吃满传统精度），非二元 / 同性 / 未提供性别 → A/B + DK/Venus 中性兜底。两层叠加。详见各 framework 文档。

---

## 数据准备：生成 synastry_data.md

凑齐两份盘后，先跑脚本（纯标准库，用系统 python，**无需 calculator 的 venv**）。
脚本在本 skill 的 `scripts/` 目录下：

1. **自检两份盘**：
   `python scripts/validate_synastry_data.py <A_structured_data.md> <B_structured_data.md>`
   → 退出码非 0 或有 ❌ → 按提示补数据，不强行合盘；⚠️ 警告项触发对应层降级但不阻塞。
2. **生成跨盘数据**：
   `python scripts/build_synastry_data.py <A> <B> <关系子文件夹> --a <A名> --b <B名>`
   → 输出 `<子文件夹>/synastry_data.md`：八项月宿 + 双向落宫 + 跨盘相位/Drishti + 关键点位 + Dasha 原料。

之后各层解读**只引用 synastry_data.md 的计算结果 + 双方 structured_data**，禁止自己重算跨盘数据。

---

## 分析流程（五层）

### Layer 0.5：关系性质盲扫
**参考：resources/signal-triage.md**
不预设关系类型，扫双方最响的跨盘信号（Moon-Moon / Sun-Moon / Lagna 互落 /
Venus-Mars / Saturn 接触 / Rahu-Ketu 轴 / 7·10·11 宫落点 / Dasha 交集），
判定最突出连接维度（强情感吸引 / 事业互补 / 业力纠缠 / 平淡稳定 / 高消耗）。
→ 写入 reports/00_signal_triage.md

### ⏸️ 平扫后暂停（必停，第三种流程核心）
输出性质指纹后停下，向用户 intake（类型与阶段都可选，不强制）：
> "这两个人最突出的连接是 [性质指纹]。要怎么看？
>  ① 就到这（只要性质判断）
>  ② 深入分析，但不用贴标签（通用深析）← 默认
>  ③ 你俩现实里是什么关系——恋人 / 同事 / 朋友 / 家人？告诉我我做对应专属解读。
>  （可选）当前处于什么阶段/状态？有具体想问的吗？"

- 选 ① / 只要性质 → 到此结束，不写 01–04。
- 选 ② / 没明说类型 / 不确定 → **默认走通用深析**（general-framework.md），完整 Layer 0–3，类型中性。
- 选 ③ 并告知现实关系类型 → 进对应专属 framework；若再给了阶段，套该框架的"阶段适配"小节。
- ⚠️ 用户没告知类型 → **不猜、不默认 romantic**，走通用深析。没告知阶段 → 通用读法，报告标注"未指定阶段"。
- 把类型 / 阶段 / 诉求记入 intake.md。

### Layer 0：双盘资格审计
判断每个人在目标关系中的"供给能力"和"风险结构"。
- 完整模式：直接引用各自 core 的 7宫/Venus/DK/UL/D9 结论
- 标准模式：从 structured_data 快速推导关系相关点位
**按 intake 档位读对应点位** —— 见 resources/<框架>-framework.md：
  - 通用深析（默认）：泛关系点位 Lagna/Moon/Venus/Mars/Saturn/Jupiter/7宫（见 general-framework.md），类型中性
  - 情感：5/7宫+7宫主+Venus+Moon+DK+UL、D9 7宫+Venus+DK（D9 点位按分盘视角铁律双线标注，禁裸写 D9 7宫主——须标"D9-L7=X 落 D9-H*"[线A] 或"本命 L7 主 X 在 D9 落 H*"[线B]）
  - 合作：3/6/7/10/11宫+Mercury/Mars/Saturn/Jupiter+AmK+D10（D10 点位同按分盘视角铁律双线标注，禁裸写 D10 10宫主）
  - 友谊：3/11宫+Moon/Mercury+Lagna
  - 家人：4/9/5宫+Sun/Moon+Jupiter
  并看当前 Dasha 是否激活上述点位。
输出两张独立"关系承载卡"：能提供什么 / 需要什么 / 压力下如何失衡 / 当前是否可进入。
→ 写入 reports/01_individual_capacity.md

### Layer 1：月宿与基础兼容
**参考：resources/koota-policy.md**
Ashtakoota 八项 → 拆成现代关系维度（情绪节奏/日常适应/亲密风格/心智/气质/家庭方向）。
不给 X/36 总分，dosha 不一票否决。

### Layer 2：方向性叠盘（模块主体）
**参考：resources/aspect-policy.md**
每个信号写成 `A 的 X → B 的 Y宫/点位`，反向再算一次。
重点信号按选定框架（见对应 framework 文档）：情感看吸引/承载/理想化，合作看协作/竞争/责任结构，友谊看共鸣/默契，家人看照护/权威/代际。
每个风险信号必须同时检查修复资源。
Layer 1+2 → 写入 reports/02_interaction_matrix.md

### Layer 3：关系时机共振
仅在静态结构完成后运行。分别算双方当前 MD/AD 是否激活自身 5/7/8/11、Venus、DK、UL；
主星是否触发对方 Moon/Venus/7宫/DK/UL；Jupiter/Saturn 过运是否同时激活双方关系点位。
窗口必须分别显示 A 与 B 各自依据，不只给"共同窗口"。
双方 MD/AD 时间窗口必须引用 vedic-core/resources/house_framework.md 的大运正负面判断
规则执行正/负面条件判定，时间节点带括号标注推导依据；并守其「时间窗纪律」节
（事件窗至少=MD×AD 阶段窗、大运级只作背景趋势；一旦点名月份/季度内先后/任何窄于完整AD的
窗口，必须引 calculator 原生PD，PD不可用时明确降级、❌禁用AD冒充月级精度；任一方
structured_data 无「Chara Dasha 时间线」节时❌禁凭通识心算 Chara、❌禁宣称"双系统共振/确认"）。
→ 写入 reports/03_timing.md

---

## 结论格式：六维矩阵（不给单一总分）
**参考：resources/interpretation-rubric.md**

| 维度 | 结论档位 |
|---|---|
| 情绪安全 | 支持 / 混合 / 高压 |
| 吸引与亲密 | 温和 / 强烈 / 不对称 / 黏着风险 |
| 沟通修复 | 顺畅 / 可训练 / 易升级 |
| 长期承载 | 有资源 / 条件式 / 承载不足 |
| 现实协作 | 互补 / 竞争 / 责任失衡 |
| 当前时机 | 同步 / 错位 / 暂不宜升级 |

每维度含：支持证据 / 制约证据 / 方向差异 / 置信度 / 现实验证点。
最终用关系类型，不用好坏二分（高吸引高承载 / 高吸引低承载 / 低戏剧高承载 /
成长催化型 / 现实协作型 / 节奏错位型 / 高消耗修复不足）。
→ 写入 reports/04_guidance.md

---

## Q&A 追问模式

工作目录已有合盘报告（synastry_data + reports/00~04）时，对**同一对关系**的追问**不重跑 pipeline**，进入 QA。原理同 core QA，区别是数据源为双盘。

### 数据回调（双盘）

| 数据源 | 用途 |
|--------|------|
| A 的 structured_data.md | 回答"A 怎样" |
| B 的 structured_data.md | 回答"B 怎样" |
| synastry_data.md | 跨盘落宫/相位/月宿/视相 → "两人之间怎样" |
| reports/00~04 | 引用已确认结论，避免重复推导 |

### 流程

1. 识别问题类型：时机 / 互动 / 某一方心理 / 具体事件 / 行为建议 / 验证类。
2. 定位数据，例：
   - "他会不会主动" → B 的 Dasha + B 的 Mars/Venus/L7 + 跨盘 B→A 投射
   - "2028 会怎样" → 双方 2028 Antardasha + 过运 + 跨盘相位
   - "吵架怎么办" → Gana/Yoni + Mars 跨盘视相 + Jupiter 修复系统
3. 综合已有报告结论 + 原始数据 → 针对性回答。
4. 标置信度：数据充分=高；需过运精算的标 **"V1 待补"**。

### 合盘 QA 铁规（与 core QA 的关键区别）

1. **方向性**：A→B 与 B→A 是两套路径；同一事件（如吵架）A 与 B 的体验可能完全不同，**分别输出**，不合并。
2. **时机看双方共振**：时间问题必须同时看双方 Dasha，不只看一方；且每方 Dasha 须过 house_framework 正负面条件判定并带推导依据标注（同 Layer 3 口径）。
3. **正反双审**：判断性问题同时列支持与制约，不只挑用户想听的。
4. **反确认偏误**：基于盘面回答，用户描述只作校验、不作生成依据。
5. **隐私**：不读任何一方 user_context.md。
6. **分盘视角**：QA 追问一旦引用 D9/D10/D4/D5 等小分盘，同受上文「分盘视角分离铁律」约束——禁裸写"D9 7宫主/D10 10宫主"，必须双线显式标注（线A 分盘内部宫主 / 线B 本命宫主职落分盘宫），冲突分别呈现不折衷。
7. **输出**：写入 `qa_<主题>.md`，聊天框只报 1–2 句结论 + 路径。
8. **偏差反馈**：用户说"不像我们/时间不对"→ 先分诊偏差在哪一侧：A 侧多项不像 → 提示 A 出生时间可能有偏差、建议 vedic-rectifier 校准；B 侧多项不像 → B 时间未独立验证（见前置门控），走"B 升级路径"（另开目录跑 reader/core + rectifier）后重跑合盘；关系认知类偏差（双方数据都对但描述不符）→ 按正反双审重查证据链，不改盘。

---

## 文件结构

```
<A 工作目录>/                      ← 只读引用，不写不改
  structured_data.md
  p2a~p5b.md（完整模式引用）
  synastry_<B>_<YYYYMMDD>/         ← 所有合盘产物在此
    intake.md                      ← 关系模式 / 诉求 / 同意范围
    structured_data_B.md           ← B 的盘（新排或导入）
    synastry_data.md               ← 跨盘计算中间数据（脚本生成，只存计算不存解释）
    reports/
      00_signal_triage.md
      01_individual_capacity.md
      02_interaction_matrix.md
      03_timing.md
      04_guidance.md
```

---

## 关键原则

1. **方向铁规**：A→B 与 B→A 分开算，禁止合并。
2. **反确认偏误**：结论只基于双方盘面数据；用户描述的关系经历只用于分析后校验，不反向生成结论。
3. **静态/承载/时机分开**：吸引高不能覆盖承载不足；Layer 0 承载不足强制打"条件式"标签。
4. **Ashtakoota 不裁决**：只作月宿筛查，最终由 Layer 2/3 仲裁。
5. **证据权重**（高→低）：D1 方向性叠盘 > UL·DK 交互 > D9 承载 > Dasha 时机 > 月宿 Ashtakoota；无单项一票否决。
6. **风险议题不替代**：暴力/控制/财务欺骗/权力不对等是现实判断，不由占星结论替代。
7. **未载入双方数据时**，禁止输出具体的双人互动结论。

