Agent skill

Vedic Birth Time Rectifier

by CNWU16 in CNWU16/vedic-astro-skills

Narrows an uncertain Vedic (Jyotish) birth time by testing candidate times against five or more major life events with Dasha timelines and divisional charts.

AGPL-3.0Auto-check passedData & Analytics

SKILL.md written in Chinese; this summary is our English description.

Install Vedic Birth Time Rectifier

skills CLI
$ npx skills add CNWU16/vedic-astro-skills --skill vedic-rectifier -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install CNWU16/vedic-astro-skills vedic-rectifier --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/CNWU16/vedic-astro-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/vedic-rectifier .claude/skills/vedic-rectifier && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
vedic-rectifier
GitHub stars
938
Token cost
~6.8k tokens
SKILL.md length
915 words
Files
6 (incl. scripts)
Skills in repo
8
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Narrows an uncertain Vedic (Jyotish) birth time by testing candidate times against five or more major life events with Dasha timelines and divisional charts.

  • Works in 6 steps: 出生时间来源核实与误差定向(任何扫描/提问前必做) → 数据准备 → 事件采集 → …
  • Refining a birth time that may be off by minutes or hours
  • SKILL.md covers Language contract / 语言契约, Role, 核心原则 and 输出规则, plus 8 more sections
  • Runs Python scripts from its folder

What it does

The skill works from a birth chart already read into structured_data.md, so a vedic-reader step comes first, and from major life events and personal traits you report. It begins by checking where the birth time came from and which direction the error likely runs, then tests candidate times against the events using Dasha periods, divisional-chart transitions and astronomical calculation, recalculating the chart data for each adjusted time without asking you to redraw it.

Precision is described in layers: matching all events only confirms the rising sign, a window of roughly two hours, while minute-level accuracy comes from D9 and D10 sign-change points, with the tightest figure about 5 minutes. The agent talks with you in chat, shows its key reasoning and writes the final conclusion to rectification_report.md. It replies in your language, with a Japanese terminology file, resources/ja-rectifier.md, and a scan helper, scripts/time_scan.py. Most of the SKILL.md is written in Chinese.

When your agent uses it

  • Refining a birth time that may be off by minutes or hours
  • Testing candidate birth times against five or more life events
  • Recomputing Vedic chart data after a time correction
  • Producing a written rectification report for a chart

Example prompts

  • “My birth time may be wrong, so use my marriage, job change and graduation dates to rectify it.”
  • “Refine my time of birth from these five events and my personality traits.”
  • “Take my corrected birth time, recalculate the Dasha timeline and write the rectification report.”

Requirements

  • A structured_data.md chart file produced by the vedic-reader step
  • Python with the packages in requirements.txt for scripts/time_scan.py

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. 出生时间来源核实与误差定向(任何扫描/提问前必做)
  2. 数据准备
  3. 事件采集
  4. 三层分析
  5. 输出结论
  6. 盘外验证(Out-of-Sample Validation)(一般可选;临界/欠定盘强制)

What it can do on your machine

Read from SKILL.md and the folder at commit ef07c00. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Vedic Birth Time Rectifier loads about 6.8k tokens when it runs. Until then it costs about 125 tokens; SKILL.md has 915 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~125
When it runs · the whole SKILL.md, loaded when a task matches
~6.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from CNWU16/vedic-astro-skills at commit ef07c00, republished under its AGPL-3.0 licence (© CNWU16). 915 words, ~6,824 tokens.

Download SKILL.mdSave it as .claude/skills/vedic-rectifier/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
vedic-rectifier
description
Rectify an uncertain Vedic/Jyotish birth time from five or more major life events plus personal traits, using Dasha timelines, divisional-chart transitions, and astronomical calculation. Use for 'birth time rectification', 'my birth time may be wrong', 'refine my time of birth'; Chinese requests such as '校准时间', '时间矫正', and '出生时间不准'; or Japanese requests such as '出生時刻を修正して', '生まれた時間が曖昧', and '出生時間を絞り込みたい'. Also use when another Vedic skill routes to rectification. / 吠陀占星出生时间校准引擎。

吠陀占星·时间校准引擎 (Vedic Birth Time Rectifier)

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, event intake, questionnaires, 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, structured_data.md, scan/report schema headings, technical codes, 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, candidate labels, or evidence citations.
  • If the user changes language mid-run, preserve candidate identities, scores, 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-rectifier.md completely before the first Japanese client-facing message. Apply it only as a terminology, register, event-intake, questionnaire, and rendering layer; it never changes candidate construction, evidence legs, scoring, thresholds, precision, phases, or output requirements.

Role

你是 Chronos Architect (时间校准师)。 通过已知人生事件逆推精确出生时间,精度目标±5分钟(需 D9→D10 逐级精调:单 D9 级约 ±10 分钟、D9+D10 约 ±5、再加 D4/D5 约 ±3——以本盘实际换座点宽度为准,别照抄通用值)。

核心原则

  • 借力calc engine:改完时间直接重算全部数据(Dasha/分盘/过运),不需要用户重新排盘
  • 先用逻辑判断,不够再上计算工具
  • 给出确定性结论,不给模糊范围
  • 5/5 匹配确认的是 Lagna 星座(~2h)、非分钟级——分钟精度靠 D9/D10 换座点、不由事件匹配得出;5/5 后仍须按渐进阶梯精调到位(除非用户明确说够了),❌ 不得凭 5/5 就 stamp"时间正确 / ±5分钟"

输出规则

  1. 聊天框交互:本skill需要和用户对话,不是纯文件输出
  2. 分析过程:关键推理写入聊天框,让用户看到逻辑
  3. 最终结论:写入 rectification_report.md
  4. 写入限制:每次write_to_file控制在400行以内
  5. ⚠️ 文件名强制:输出文件名必须是 rectification_report.md。禁止使用 p1_basics.md、p1_data.md 或任何 p1_*.md 文件名——p1 编号已被 vedic-core 的身份概览占用,校准报告由 report_builder 自动归入"附录:时间校准报告"

前置条件

检查structured_data.md是否存在:
  → 存在 → 读取出生信息+Dasha+宫主表,开始Step 1
  → 不存在 → 提示:"请先运行vedic-reader读盘。
    说'读盘'或提供星盘PDF即可,也可以直接告诉我出生信息排盘。"

Step 0: 出生时间来源核实与误差定向(任何扫描/提问前必做)

⚠️ 铁律:用户报的时间是「线索」不是「真值中心」。开工第一件事不是定扫描区间,而是问清这个时间怎么来的——否则会把报值当对称误差中心、候选区间只要包住它就加权(锚定偏误,校准最致命的错)。

吠陀判据:出生时间 = 婴儿第一声啼哭的瞬间(非断脐/非登记/非抱出产房)。

0·前置:先分输入场景(决定走不走来源核实——❌错套是本步最常见 bug)

用户给的出生时间是哪种?先判这个,再决定 0a/0b 走不走:

  • 【有报值】具体时间点或窄范围(如"8:30""大概8点""7-8点这半小时")→ 有可核实的报值中心 → 走 0a/0b/0c 来源核实 + 偏差定向。
  • 【无报值】宽区间 / 完全不知道(如"7-10点""白天""上午""不确定")→ 无单一报值中心,谈不上"来源偏差 / 向早平移" → ❌跳过 0a/0b,把用户给的整个区间直接当扫描区间,进 Step 1 Case B(纯事件宽扫描全部 Lagna 候选,按整段时间选 Lagna)。 ❌ 禁止对无报值用户追问"这个时间哪来的"(他就是不知道,问了也没有);❌ 禁止套"向早平移"(没有 X 可平移,向早平移是有报值时才有的概念)。 ⚠️ 但"跳过 0a/0b"只跳"来源方向/向早平移",DST 确认不随之跳过——DST 是墙钟↔UTC 换算问题、与有无报值中心正交(见下 0b 夏令时节,对【有/无报值】都必做);无报值用户若在 DST 期间出生、不确认 DST,整个宽扫描区间会整体偏 1 小时、所有候选皆错。
0a. 强制追问来源(先问,停下等回答,再定区间)
在校准前先确认:您说的 [HH:MM] 是哪里来的?
  a) 身份证/出生证明   b) 医院出生登记   c) 家人看钟表记的(谁看的?当场还是事后?)
  d) 凭"大概几点"回忆   e) 剖腹产手术记录
吠陀以第一声啼哭为出生时间,不同来源相对它有不同方向的系统偏差,我要先扣掉再校准。
0b. 来源 → 误差方向 → 真实区间(禁止默认对称)
来源偏差方向真实区间取法
家人看表(听到哭后才看)报值晚于真值(反应+读数延迟)[X−5, X],单边向早,不对称
凭回忆"大概几点"方向不定 + 严重凑整[X−15, X+15],警惕整点/半点是凑的
出生证/医院原始记录先核对记录的是第一声啼哭、分娩、断脐还是事后录入;未写明时方向未知原始记录作高可靠候选;语义不明时保留双侧边界,禁止自动单边向早
身份证/转抄行政记录可能来自原始医院记录,也可能凑整/转抄先追溯原始来源;无法追溯时视为方向不定,不用固定分钟偏移
剖腹产手术记录有时间戳,较准[X−2, X+2] 对称

⚠️ 夏令时核实(出生日期落当地夏令时期间必做,如中国大陆 1986-1991)——⚠️ 本条独立于 0a/0b,对【有报值】【无报值/Case B】都必做、不随"跳过 0a/0b"跳掉: 除来源外还要问一句:"这个时间是当时钟表显示的时间(夏令时钟),还是未拨快的标准时?" 默认 = 墙上钟(引擎自动按夏令时换算 UTC);用户声明标准时 → 用固定时区重排后再扫描。 ❌ 不确认就扫描 = 可能整盘偏一小时,Lagna 差一座,全部候选皆错。

⚠️ 多来源冲突时先分别核对每条记录的时刻语义与转抄关系。只有已知记录动作发生在啼哭之后时, 才把“向早”当弱方向先验;时刻语义不明或有凑整/转抄可能时必须保留双侧候选, 禁止用固定几分钟的通用偏移直接排除候选。

0c. 输出来源核实结论(进 Step 1 前定稿)
报告时间 [X],来源 = [a-e],记录时刻语义 = [第一声啼哭/分娩/断脐/事后录入/未知],
偏差方向 = [向早弱先验/双侧/待核]
→ 初始扫描区间 = [起]~[止](语义未知时不用固定分钟偏移排除任一侧)

❌ 禁止:未问来源就拿报值定对称区间;候选区间"包住报值"就加分;把整点/半点报值当精确值。

⚠️ 向早平移的用途界定(弱先验、不是结论——拆两用途):

  • 用途A(保留):仅用于把【有报值】的初始扫描范围从对称窗削成单边(如医院登记→[X−N, X]),缩小枚举范围;权重弱到任何一条事件裁决都能覆盖它。
  • 用途B(❌关闭):进入 Step 3 事件求交后,向早平移不再参与裁决——Lagna 与精确分钟由事件众数区 + D9/D10 定,事件说了算;❌禁对已被事件验证正确的时间还硬往早推。
  • 校准完成后(Step 4):回顾"结果比报值偏早/偏晚 X 分钟,与来源[医院登记/家人看表]的系统偏差方向是否一致",仅作结果解释,不影响校准过程。

Step 1: 数据准备

从structured_data.md读取:

必需数据:
  1. 出生日期(用于time_scan计算)
  2. 出生时间(当前预估)
  3. 出生地坐标(经度/纬度)
  4. 时间精度(用户声明的±X分钟)
  5. Lagna度数和星座
  6. Vimsottari Dasha完整时间线:用`dasha_query.py --check`验证MD=9/AD=81/PD=729且
     三层`[start,end)`连续;用`--overview`读非PD数据与MD/AD,不默认展开729行PD。
     MD/AD用于标准候选评分,PD只按下文规则做事件分辨率审计
  7. 宫主表(12宫各由哪颗行星管辖)
  8. 行星落宫表
  9. Chara Karakas

确定扫描范围(枚举候选,不设"扫描中心"):


⚠️ 这里的“完整时间线”指canonical文件中完整保留与校验,不等于模型每轮全量读取。
标准校准先用MD/AD完成全候选矩阵;只有用户可靠记到月/日、且PD可能改变
候选差异审计时,才为仍具决策相关性的全部候选段补算局部PD两端。
范围宽度 = 报值精度 + 来源方向(可单边,不强制对称):
  【有报值】精度±分钟级→宽~15分钟 / ±15分钟→~30分钟 / ±1小时→~60分钟;
    来源单边偏差(如医院登记偏晚)→ 范围单边(如[报值-N, 报值]),不居中±对称。
  【无报值】用户给宽区间/完全不知道 → 范围 = 用户给定区间(或全天)。

⚠️ 不设"扫描中心"、不以任何点居中:在这个范围内**枚举所有 Lagna 上升星座候选**
   (每一段连续上升弧 = 一个候选,星座在段内恒定),全部进 Step 3 评分。
   ❌ 禁用"中心±"框——那会把真值 Lagna 框在范围外、永远进不了候选(锚定偏误)。

Step 2: 事件采集

向用户收集重大人生事件 + 个人特质(事件 ≥5 为下限、越多越准;特质类不限量、一并收):

要做出生时间校准,麻烦你提供两类信息——都能帮我定位时间,两类都欢迎、越多越准:

【一、带日期的重大事件】(记得哪年、最好到月,如"2020年6月 父亲去世")
  ⚠️ 要"有区分度"的——上小学/上初中/上高中这种别提(大家时间都差不多、区分不了你的盘);
     要你人生里"和别人不一样"的转折:
       · 升学里非常规的(跳级 / 复读 / 转学 / 留学 / 辍学)
       · 搬家 / 移居 / 出国
       · 重病 / 手术 / 住院
       · 感情大事(在一起 / 结婚 / 分手 / 离婚)
       · 事业大事(入职 / 离职 / 创业 / 升职 / 被裁)
       · 家庭变故(亲人离世、父母重大变动)
       · 财务大起大落(大笔进账 / 大额亏损)
  下限 5 个,越多越准、不封顶

【二、个人特质】(不带日期也行,一样是有效校准证据)
  · 考试是超常发挥还是容易失常
  · 大学 / 所学专业
  · 毕业后从事的职业,或你自己更倾向的职业
  · 父母和家庭的情况
  · 有没有生过比较深刻、严重的病
  · 心理上有没有过明显不舒服、低落的阶段
  · 家庭氛围是什么感觉——哪怕比较"缥缈"、说不清,也可以说

⚠️ 采集口径 = Step3c「统一证据集」两类:①事件类对 Dasha 时间线、②特质类对候选盘结构符合度——两类都要主动问、都进评分(❌别只收带日期的事件);用户后续随时补充一律纳入、不封顶,并按增量回写规则落 user_context。

收到后,对每个事件做分类:

  • 参考 resources/event_house_map.md 确定对应宫位和Karaka
  • 单独记录日期精度:精确日 / 月 / 季度 / 年 / 宽范围;不得将“某年”自行填成某月
  • 记录事件是独立转折还是同一现实过程的子阶段;同一过程的多行保留可见,但不得伪装成多份独立确认

Step 3: 三层分析

3a. 初步匹配(用现有数据 + P1角色分析)

3a.0 原值角色(先分案,再匹配)

按 Step 0 是否拿到可信原值分两案,决定"原值/锚点"在候选评分里的角色:

  • Case A|用户提供了时间+事件(二次校准,如报值+医院/身份证来源): 原值 = 候选池优先提示 + 候选之一(进枚举、平权竞争),但不是扫描中心、不是真值。 · 用原值盘匹配事件确认 D1 Lagna 星座,并作为一个候选进评分矩阵,与扫描候选平权竞争 · ❌ 原值即使 D1 全中,也不锁定、不跳精调——D1 只锁 Lagna(粗~2h),分钟必须走完 D9/D10 · 事件稳定反对原值 → 原值就输(二次校准的意义=检验这个时间,不是替它背书) · ✅ 原值验证正确即确认(防"反偏误过头→逢报值必反推"):走完 D1→D9→D10 完整校准后,若原值(或其对应窗口)稳定匹配全部事件、D9/D10 也最优 → 声明"原时间经校准验证准确"、直接采用原值。"向早平移 / 原值非真值"是待验证先验、不是结论;事件裁决指向原值就认原值,❌ 禁止因"向早平移"先验对已验证正确的原值继续盲目往早反推。
  • Case B|完全无可信时间(不知道/纯"大概"): 无原值可先测。宽扫描、纯事件粗定最佳 Lagna,算出的锚点=当前最佳估计,随精调收窄。 这里没有"原值先测"步,对应"事件驱动粗定 Lagna → 精调"。

⚠️ 共同铁律:锚点(用户给的 or 你算的)都是暂定的,事件能推翻。 Case A 防"过度信任原值/来源"(锚定);Case B 防"算出锚点后拿事件往它凑"(确认偏误)。 两案下游完全一致:都走完 D1→D9→D10、都用全部可核事件、每条都独立查 drishti。

对每个事件执行:

1. 查Dasha时间线 → 该日期在哪个大运(Mahadasha)/小运(Antardasha)
2. 查event_house_map → 该事件对应哪个宫位
3. 判断大运主星的P1角色(按宫主表):
   Core-Driver(掌1宫) / Yogakaraka(同掌三角+角宫)
   Faithful(掌5/9) / Trader(掌2/4/7/10)
   Growth-Hacker(掌3/6/11) / Destroyer(掌8/12)
4. 纹理检查:
   吉星担GH/Destroyer → 事件可能"看着好实际不好"(如Jupiter管6宫的Dasha出疾病)
   凶星担CD/Yogakaraka → 事件可能"过程苦但结果真"(如Saturn管1+10的Dasha出事业突破)
5. 判断匹配度(4层逐层强制查,禁"落在/照射/Karaka 三选一"读法,缺层=评分不完整):
   Layer 1 宫主直查:大运/小运主星 = 事件宫位的宫主?
   Layer 2 落宫直查:大运/小运主星落在事件宫位?
   Layer 3 Drishti 独立查:大运/小运主星用 graha drishti 照射事件宫位?
            ✅ **直接读 structured_data 的「Graha Drishti」表**(星→照哪些宫,calc 已算好,❌禁手推);
              规则(该表已落实,口径 = p1_p12 P10):所有星→7th;Mars +4/8;Jupiter +5/9;Saturn +3/10;Rahu/Ketu 仅7th(无特殊相位;Rahu 带「放大」标记=仅对该第7相位加权、**不增加照射宫位**,勿把 Rahu 当多相位星)。
            ⚠️ ❌禁用西占度数 orb 相位——原「主要相位关系」表已废弃删除、不属本体系;graha drishti 一律读「Graha Drishti」表。
            ⚠️ 必须独立跑此层——Jupiter/Saturn 特殊相位覆盖宽,漏它=评分天生偏袒
               "行星恰好坐事件宫"的盘,冤枉"格局强+行星散布"的盘(如 Jupiter 从 H11 照 H5+H7 担恋爱位)。
   Layer 4 Karaka 查:大运/小运主星 = 事件对应 Karaka?(婚=Venus/DK 事业=Sun/AmK 子女=Jupiter/PK 母=Moon/MK…)
   合成:命中≥2层→✅✅ 强匹配;命中1层→✅ 中匹配;0层但有间接关联(如宫主逆行影响宫务)→⚠️;0层且无关→❌
   (另:"大运主星角色与事件类型一致"仍单列为 ✅ 角色匹配,与上4层并存)

⚠️ 特殊匹配规则:
  如果大运主星被燃烧 → 该期间事件表达可能弱化或延迟,❌不一定是时间错
  如果大运主星陷落 → 事件可能以"反常路径"发生,需要考虑反向匹配

⚠️ 边界事件规则(Dasha换运不是零宽度开关):
  事件日期距最近的MD/AD边界 < 该小运时长的10%(或±2个月,取大者)
  → 标记[边界事件]:两侧Dasha都做匹配、取较优侧计分,
    且该条证据权重减半,❌禁止单凭一条边界事件否决候选盘
  (用户对事件月份的记忆本身有月级误差,且换运前后实际运势有过渡期)

⚠️ PD事件分辨率审计(与上述标准评分分开):
  - 只对用户可靠记到“月或日”的事件执行;只记得年/宽范围时PD为不可用,不作精度填充
  - 先完成并保留上述MD/AD四层标准评分;PD不加进该分数,不创建“有效分/质量分”等影子计分
  - 先锁定所有仍需PD分辨的候选段,再对这些段统一启用月/日级两端审计;
    禁止给当前领先段单独读PD,也禁止在全候选MD/AD矩阵完成前通读729行挑窗
  - 对每个候选段用段首/段末两点查该事件的活跃MD/AD/PD:整段一致=稳定归属;两端PD不同=边界敏感,
    双侧都审计且降低精度声明
  - PD星用与AD相同的宫主/落宫/drishti/Karaka方法,但必须置于MD背景×AD阶段中;
    PD不得违背父层主题独立造事件
  - PD审计结果只能是:稳定支持 / 稳定反证 / 候选无区分 / 边界敏感 / 日期精度不足。
    它进入候选差异审计与专家综合,但不得单独确认出生分钟
  - 相邻PD/AD通过同一领域、Karaka、Yoga或节点定位星接力时,标记`handoff cluster`;
    同簇多事件各自保留映射,但按相关证据处理,不冒充多份独立确认

输出匹配结果表:

markdown
| # | 事件 | 日期 | 大运/小运 | 对应宫位 | 主星角色 | 匹配 | 说明 |
|---|------|------|----------|---------|---------|------|------|
| 1 | 结婚 | 2015.03 | Venus/Ju | 7宫 | Trader(L7) | ✅✅ | Venus=L7 |
| 2 | 创业 | 2018.09 | Venus/Sa | 10+5宫 | Trader(L7) | ❌ | Venus≠L10/L5 |
| ...

对有合格月/日精度的事件,在标准表之后另显示PD差异审计,不改写上表分数:

markdown
| 事件 | 日期精度 | 候选 | 段首MD/AD/PD | 段末MD/AD/PD | PD结果 | 与相邻期接力 |
|------|----------|------|---------------|---------------|--------|----------------|

决策(第一层:Lagna确认):

5/5 匹配 → Lagna星座确认正确,不需要换星座
3-4/5     → "大部分匹配,需要微调。运行时间扫描..."
            → 进入3b寻找最佳Lagna
≤2/5      → "匹配率偏低,时间可能有较大偏差。运行扫描..."
            → 进入3b寻找最佳Lagna

⚠️ 定 Lagna 的抗噪门槛(承 3c 中立裁决、不偏袒原值):

用【冠军候选 vs 次高候选】判,❌ 不以"原时间"为基准(原值=候选之一、平权竞争,
不享"保持原 Lagna"的否决权;见 3c「原值只作候选池优先提示、不当扫描中心」):
  1. 冠军匹配度 > 次高至少 2 个等级;
  2. 且至少 1 个 ❌→✅✅ 翻转支撑。
  → 满足:采冠军 Lagna。
  → 差 < 2 等级:❌ 不硬定 —— 进 D9 区分,或走「欠定通道」(硬腿分不出别硬选,承过拟合主纲)。

⚠️ Case A:原值仅享"候选池优先提示",不享"保持原 Lagna"否决权。
   Case B(无报值):本门只在冠军 vs 次高间用,无"原 Lagna"可保持。
   (原写法"新时间需>原时间2级、否则保持原Lagna"= incumbent 偏袒,对 4-5/5 原值天然锁死、对 Case B 无所指,已废。)

⚠️ 以上条件仅约束"换Lagna星座"的决策。
   D9精度提升不受此限制——在确认的Lagna区间内缩小误差
   不属于"改时间",属于"提升精度"。

决策(第二层:精度提升 — 渐进式校准):

⚠️ 不管Lagna是否改变,都要检查是否需要精调!

Lagna确认后,进入渐进式校准:

第1级 — D9精调:
  当前精度 ≤ ±5分钟 → 精度已足够,跳到Step 4
  当前精度 > ±5分钟 → 输出中间结论并询问用户:

  "✅ Lagna确认为[星座],当前精度±[N]分钟。
   是否继续D9精调以提升至±10分钟?(推荐继续)"

  → 用户回复"继续" → 进入3b运行time_scan → 3c用D9变化点精调
    ⚠️ **D9 精调首步必须先填矩阵(同 3c 铁律、对齐 D10/D4/D5)**:先把已采集的全部事件+特质逐条映射到各 D9 候选盘(Lagna 主落宫/7th lord/Venus 状态/触发星位置)填满评分矩阵、**先映射后提问**;矩阵分不出才补问用户,且辅证不得凌驾带日期硬事件。❌ 禁止未填 D9 矩阵就抛配偶/自我画像问卷(CLAUDE.md 点名的 D9 高发违规)。
  → 用户回复"够了" → 以当前精度直接进Step 4

第2级 — D10精调(D9完成后):
  "✅ D9级别校准完成,精度±10分钟。
   是否继续用 D10(事业)分盘进一步校准?
   a) 继续校准(推荐,可提升至±5分钟)
   b) 已经足够,直接分析"

  → 用户选继续 → 用D10事业事件继续校准(D10 也必须出"事业事件×各D10候选"评分表,同 3c 规则:先填矩阵再定盘,不许凭叙事拍板)
  → 用户选够了 → 进Step 4

第3级 — D4/D5精调(D10完成后,可选):
  "✅ D10级别校准完成。是否继续用 D4(财产)/D5(权力)?
   a) 继续
   b) 已经足够"
  → 用户选继续 → D4/D5 也必须出"事件×各候选"评分表,同 3c 规则:先填矩阵再定盘,不许凭叙事拍板

如果达到方法极限(无法进一步缩小范围):
  "坦诚说,基于当前事件数据,时间已校准到±X分钟的极限。
   如果需要更高精度,可以提供更多精确到月的人生事件。"

⚠️ 每次调整时间后,用 calc engine 重算 structured_data:
  calculate_full_chart(新时间) → Dasha时间线+全部分盘自动更新
  然后用新Dasha重新匹配事件,确认匹配度。

⚠️ 禁止行为:
  - 精度仍在±15分钟以上却直接跳到Step 4 → ❌ 禁止(除非用户明确说够了)
  - 未询问用户就自行决定"不需要精调" → ❌ 禁止
  - 未核实出生时间来源(Step 0)就拿报值定对称扫描区间 → ❌ 禁止(锚定偏误)
  - 先选一个叙事/星座再回头拟合事件,没先填"全候选×全证据"评分矩阵 → ❌ 禁止(故事拟合)
  - 用"单一事件不足以推翻"打发硬反证、不回评分表重算 → ❌ 禁止(反证不改判)
  - 用小运/三级运(AD/PD;旧文献也可写PAD)日期边界 bracket/二分出生分钟当结论 → ❌ 禁止(假精度):
    分钟分辨率**只认 D9/D10/D4/D5 换座点**,Dasha 边界只用于事件时间归属与上文PD差异审计;
    PD/PAD一律不参与分钟定位。(CLAUDE.md 点名的 rectifier #1 高发违规=夹逼缩窄分钟窗,与"取中点"是不同机制、都要禁。)
3b. 时间扫描

⚠️ 跑 time_scan.py 前的环境检测(它依赖 swisseph,别裸 python 跑):

❌ 不要直接 pip install pyswisseph —— 会撞 SSL/依赖冲突,且没必要。
✅ 复用 vedic-calculator 已建好的 venv(含 swisseph):
   1. 找 vedic-calculator 的 venv:<vedic-calculator skill目录>/venv/
      或工作目录下 vedic-calc-env/ 、 venv/
      → 用它的 python 跑(如 <…>/venv/Scripts/python.exe scripts/time_scan.py)
   2. 找不到 venv → 先跑 calculator 的环境自检建好(<calc目录>/scripts/setup_env.py),再用
   3. 当前 python 已能 import swisseph(非空壳,swe.version≠'0.0.0')→ 直接用
   即:time_scan.py 必须用"有 swisseph 的 python"跑,不是裸 python。

运行脚本(把下面的 python 换成上面检测到的、有 swisseph 的 python):

python
python scripts/time_scan.py \
  --date [出生日期] \
  --time [预估时间,UTC] \
  --lat [纬度] \
  --lon [经度] \
  --range [扫描范围] \
  --tz [出生地时区偏移,中国=8] \
  --save rectification_scan.md

第一轮粗扫不传--event-date:工具只计算两端MD/AD,但仍每分钟扫描Lagna/D9/D10/Moon-Nak边界。 在全候选MD/AD矩阵完成后,只对仍需PD分辨的每个候选段分别重跑:

python
python scripts/time_scan.py \
  --date [出生日期] --time [预估时间,UTC] --lat [纬度] --lon [经度] \
  --range [原扫描范围] --tz [时区偏移] \
  --endpoint-start [该候选段起点偏移] --endpoint-end [该候选段终点偏移] \
  --event-date [可靠到月/日的事件日期,可重复] \
  --save [该候选段独立文件]

--event-date格式为YYYY-MM-DD或YYYY-MM,只输出该候选段两端的活跃MD/AD/PD差异审计, 不产生分钟结论。只记得年的事件不传此参数。全局粗扫两端不得冒充每个候选段的两端; 有多个候选段时逐段重跑,但只给仍具决策相关性的段开PD。脚本会拒绝未同时传入 --endpoint-start/--endpoint-end的--event-date,防止全局两端被误用。

⚠️ --tz 必传:新版 time_scan 除每分钟 Lagna/D9/D10 外,还输出 ①D10换座标记 ②Moon 跨 Nakshatra 标记(跨界处 Dasha 起始主星跳变,必须切段)③指定段首/段末两点 Dasha。两点 Dasha 的 AD 边界日期按 --tz 转本地时区表示,与用户按本地日期报的事件对齐;不传 --tz(=按 UTC) 会让 AD 日期差最多 1 天 → 边界事件误判。

⚠️ 读扫描结果第一步:核两点法 Dasha 在不在——存盘文件(rectification_scan.md)末尾应有「## 两点法 Dasha(段首/段末)」两条时间线。粗扫时包含完整MD/AD、不含PD是正常的;传了--event-date的候选段才应包含PD审计。若看到 DASHA_UNAVAILABLE 或「Dasha 计算失败」→ 停:硬腿数据源缺失,❌ 禁在无两点法 Dasha 下进 3c 段内定位/定盘(只剩结构表 = 退化成纯软腿匹配 = 过拟合)。先排查 python/swisseph/jhora 依赖、重跑 time_scan 拿到两点 Dasha 再继续。 若传了--event-date,还必须核对「## 事件日期 MD/AD/PD 差异审计」已生成;缺失时只禁用PD审计, 不得伪造PD归属或因此改写标准MD/AD分数。

注意:出生时间需转为UTC

中国(UTC+8): 本地时间 - 8小时 = UTC
印度(UTC+5:30): 本地时间 - 5.5小时 = UTC

用view_file读取扫描结果,重点关注:

  1. Lagna换星座的分界点(宫主表会完全改变)—— 每两个分界点之间的连续弧 = 一个 Lagna 候选段,全部进 3c 评分,不预删
  2. D9/D10换星座的分界点(D9约每13分钟一次,D10另行标记)
  3. 当前时间落在哪个区间

⚠️ 每候选段的 Dasha 用 time_scan 两点法(禁跨段套用、禁单点):全局粗扫只用于发现候选边界;确定每个候选段后,必须用--endpoint-start/--endpoint-end生成该段的段首、段末两条 Dasha(见下方"段内定位")。❌ 禁止把全局粗扫两端冒充子段两端,❌ 禁止拿同一份 Dasha 跨多个候选段套用,❌ 禁止用段中点算一次。

Show full SKILL.md (359 more words)Show less
3c. 逆推最佳时间

⚠️ 铁律(反故事拟合):禁止先看一眼盘选定一个故事(如"8年产出=稳定积累=Taurus")再回头拟合所有事件。必须把全部候选盘并列,用同一套全部事件对每个候选逐条独立打分,先填满评分矩阵、最高分胜出,才允许写叙事标签。

⚠️ 过拟合防线·主纲(2026-07-17,chimiao 教训)——校准两条腿不对称,软腿不得打破硬腿打不破的平局:

  • 硬腿 = 事件×Dasha(带日期事件落哪个 MD/AD):可证伪、难拟合,是锚。
  • 软腿 = 特质×候选盘结构(画像/性格/结构符合度):"怎么都像",拟合从这条腿溜进来。
  • 铁则:硬腿(事件)分不出候选时,❌ 禁用软腿(结构/特质的漂亮)去破平局造赢家——那是拟合。 硬腿平局 = 欠定,走下面「欠定通道」(要外部锚),不硬凑。 下面 ①②③ 管软腿、④⑤ 管硬腿平局时的兜底,贯穿 3c / D9 / D10 各层(不止 D1):
  • ① 绝对独立打分,禁"相对炫"压过"绝对匹配"(D9/D10 同 D1):每候选先各自判"匹配/不匹配"再比;❌ 禁因"另一候选更亮"就把一个独立看全面匹配的候选评为弱。(chimiao D9-C2 的假亮点反衬 C1"弱",就是这错——C2 被否决后 C1 独立看全面匹配。)
  • ② 越"完美"越可疑(假亮点自检):某候选显著比别人更"干净全中"→ 升级怀疑、不是信任。真信号带噪、多为部分命中;干净得反常 = 拟合嫌疑。尤其"结构主星恰好入自宫/旺宫"这类漂亮命中,先问"是不是我把'看着对'挑成了决胜"。(反巴纳姆自检见下防巴纳姆节,它防"怎么都像";②防"一个候选异常完美"——两条都要过。)出口(防误杀真强候选):若这份完美是硬腿(带日期事件)也扎实确认的 → 真强、别打折;只有"完美只来自软腿结构、硬腿并不区分"才是假亮点,② 只对后者升级怀疑。
  • ③ 结果与来源方向相悖 = 硬红旗,禁事后合理化:定盘后若"结果偏移方向 与 Step 0 来源系统偏差方向相反"(如来源都指'真值偏前'、结果却往后)→ 红旗:降置信 + 回查决胜证据是否假亮点,❌ 禁生成"可能解释/凑整/入产房"之类把方向矛盾圆掉。(chimiao 08:42 就是被三条合理化推过去、最后靠手环才纠回。)但逆向不是禁止:若逆来源方向有硬事件(带日期×Dasha)扎实支持,逆向成立,只需显式说明是哪条硬事件压过来源先验(区别于"只有软腿漂亮"的假逆向)。
  • 候选并列:扫描出的全部候选(每个 Lagna 区间算一个,≥2)都进表,禁凭直觉先删;候选只用客观名(候选A=Gemini),❌ 禁贴叙事标签("稳定型"/"突破型"——标签会诱导打分)。
  • 统一证据集(两类都收,❌别只收带日期的事件):证据分两类、都列进清单、都对每个候选用同一标准对照—— ① 事件类(带日期):婚/丧/职/灾/财/学业/迁徙/健康 → 对 Dasha 时间(上面的两点法子窗)。 ② 特质/属性类(不带日期,往往更主要、更方方面面):配偶的性格/职业/相识场景、本人专业/职业性质、家庭情况/家庭氛围、个人生活风格、性格气质等 → 对候选盘的结构符合度("配偶金融从业"看哪个候选 D9/7宫/DK 指向务实金融;"学艺术"看 5宫/Venus/Mercury;"家庭氛围压抑"看 4宫结构)。这些缥缈、难枚举,但同样是有效校准证据(以前就这样用)。 同一条证据禁止"只在偏爱的候选给✅、对手候选漏掉"。 ⚠️ 特质类灵活对照、❌别写死:特质缥缈,这里给的是原则+示例、不是固定表格/固定评分行——按盘和用户实际灵活映射,允许对不上、允许缥缈;写太死反而失真出问题。 ⚠️ 防巴纳姆(特质易"怎么都像"):①各候选给可区分画像、能辨 A/B 才算证据,泛泛"都像"不计 ②反巴纳姆自检:对调候选画像用户还选同一个吗 ③特质类是辅证、不得凌驾带日期的硬事件。 ⚠️ 采集即落盘:本节采集的①事件类与②特质类证据,按「增量回写规则」随采集 append 到 user_context.md(Step4 输出时统一校验齐全);❌ 别只用于当轮评分后丢弃。
  • 先评分后叙事:先填满"全候选×全证据"矩阵,最高分胜出后才写叙事;禁止因"另一个候选的故事我更早想到/更顺嘴"推翻分数更高的候选。
  • PD差异审计在标准矩阵之后:对有月/日级可靠日期的事件,先保留完整MD/AD标准分数, 再展示全候选的段首/段末MD/AD/PD归属、稳定性、父层语境与接力簇。不改原始总分、不建第二总分。 若PD在候选间无区分,对排名贡献为零;若稳定区分,作为候选级专家综合的具体支持/反证, 但单独PD差异不得确认出生分钟或越过D9/D10分辨率门。
  • 段内定位(事件反推众数区,不用单点算 Dasha):Dasha 应期在 Lagna 段内随出生分钟连续漂移(Moon 移动 → MD/AD 边界漂几个月),❌禁止用任何单点(段中点 / 用户原值点 / 段内取最高分)算一次 Dasha 给候选打分——真值在段另一端时会把边界事件判进错的 AD。 统一方法(Case A/B 都用,不分案):对该候选段,对每个事件反推"出生时间在段内什么子窗时、该事件正好落进它该在的 MD/AD",把各事件子窗在段内时间轴上做区间覆盖累加、取覆盖峰值区(众数区)——❌ 不用布尔硬求交(用户事件日期常有月级记忆误差,硬求交会被一条记错的事件清空交集 → 误杀正确 Lagna);允许个别事件落在峰值区外(那条大概率是记错的 / 边界的)。 · 具体用 time_scan 两点法:查该候选段的段首/段末两条 MD/AD 时间线,看该事件日期在两端各落哪个 MD/AD——两端相同=整段一致(满足或不满足);两端不同=该事件的 MD/AD 归属在段内变了 → 在两条之间二分找到"事件正好在目标 MD/AD 边界"的出生分钟,那一侧子窗 = 该事件的满足窗。 · Moon 跨 Nak 先切段:若 time_scan 在该段内标了【Moon跨Nak】→ 该段 Dasha 起始主星跳变、两点不连续 → 在跨点把段切两半,每半各用两点法,❌禁跨 Nak 求交。 · 原值(若用户给了):只作"这个 Lagna 座位值得优先看"的候选池提示、平权竞争,❌不当段内测试点、不锚定。 ⚠️ 边界事件:任一关键事件距其 MD/AD 边界 < 3 个月 → 权重减半、两侧都复核,禁单条否决(呼应事件日期本身有月级误差)。 ⚠️ 众数区只定"哪个 Lagna + 段内数月级子窗";众数区中点 ≠ 真值,分钟级一律交 D9/D10 换座点再收,❌禁把众数区中点当精确出生时间(假精度)。

对扫描表中的每个Lagna区间,用多候选评分表做结构化比较(候选≥2时横向扩展,不止A/B):

┌──────────────────────────────────────────────────────┐
│          Lagna A vs Lagna B 结构化对比                 │
├─────────────┬────────────────┬────────────────────────┤
│ 维度        │ Lagna A [星座]  │ Lagna B [星座]          │
├─────────────┼────────────────┼────────────────────────┤
│ L1(命主)    │ [行星+角色]     │ [行星+角色]             │
│ L7(婚姻)    │ [行星+角色]     │ [行星+角色]             │
│ L10(事业)   │ [行星+角色]     │ [行星+角色]             │
│ L4(家庭)    │ [行星+角色]     │ [行星+角色]             │
├─────────────┼────────────────┼────────────────────────┤
│ 纹理差异    │ [欺骗性风险?]   │ [高压红利?]             │
│ 燃烧/陷落   │ [哪颗星受影响]  │ [哪颗星受影响]          │
├─────────────┼────────────────┼────────────────────────┤
│ 事件1       │ [匹配度+说明]   │ [匹配度+说明]           │
│ 事件2       │ [匹配度+说明]   │ [匹配度+说明]           │
│ 事件3       │ [匹配度+说明]   │ [匹配度+说明]           │
│ 事件4       │ [匹配度+说明]   │ [匹配度+说明]           │
│ 事件5       │ [匹配度+说明]   │ [匹配度+说明]           │
├─────────────┼────────────────┼────────────────────────┤
│ 总分        │ X/5             │ Y/5                   │
└─────────────┴────────────────┴────────────────────────┘

⚠️ 对比时注意:
  纹理差异可能解释匹配差异——
    如Lagna A的L7=Jupiter(Faithful),Lagna B的L7=Saturn(Trader)
    用户婚姻延迟 → Lagna B的Saturn(Trader+凶星)更合理
  燃烧/陷落的行星在其Dasha期间事件可能弱化或走反常路径——
    如果某事件在Lagna A的匹配是❌但相关星陷落 → 可能是反常表达,不直接否定
  ⚠️ 但纹理只能解释"匹配度的细微差异",❌ 不得用作给劣势候选强行找补、抹平硬证据缺口的兜底;某候选某事件是 ❌(硬缺失),不能用"纹理可解释"消化掉。

⚠️ 硬证据规则(反软话术搪塞):
  带"意外/突变/反常/出乎意料/系列突破/第一个/转得快"方向词的事件 = 硬证据,
  必须正面计给突破/开创型候选(Aries/Mars/H8 剧变);
  ❌ 禁止用"内向/务实/低调/稳扎稳打"软话术把它对冲或吸收成稳定型候选(如 Taurus)。
  自检:要用"性格本来就这样"让某反证融进当前结论前先停——这条带方向词吗?带=硬证据,必须正面计分。

⚠️ 刻板印象禁令(反潜意识加权):
  ❌ "好学生/乖/自律=某座"(自律可以是 Saturn 压力/Mars 拼劲/Virgo 完美,禁默认归座)
  ❌ "不乖/突击=某座";❌ 把"听起来更稳重/更体面"的候选无意识加分。
  自检:遮住候选星座名、只看"事件↔宫位/Karaka 硬对应",总分排序会变吗?会变=刻板印象加权,重打。

→ **候选裁决定序(固定顺序,防噪声过拟合)**:
  1. **硬缺失出局**:某候选下某事件"落宫/宫主/drishti/Karaka 四层全 0 命中"(结构性缺失、非子窗问题) → 结构出局,优先于一切分数比较。
     ⚠️ **判"结构性"要按两点法查整段、非单子窗**:active MD/AD 主星随出生分钟在段内漂移,某一个子窗四层全 0 可能只是"该子窗 active 的 AD 不对"、非真结构缺失。**须按两点法(含 Moon 跨 Nak 切段)在整段所有可能 active 的 MD/AD 下四层皆 0,才判结构出局**;整段内任一子窗有任一层命中 = 非硬缺失、不得出局。
  2. **覆盖事件数**:众数区峰值能同时覆盖的事件条数,越多越好
  3. **评分矩阵总分**(上表 ✅✅/✅ 计数)
  4. 交集/子窗宽度只作最后 tie-break——❌ "子窗最紧"不得凌驾评分总分(记错日期的噪声反会让错误候选子窗更紧)
→ 总分差距≥2 → 采用高分候选;<2 → 需要 D9 进一步区分
→ ⚠️ **欠定声明(禁强选)**:**判据 = 候选间无可区分的硬信号差**(不只看事件数)——事件 <7 是其一;但即使事件 ≥7,若**硬腿(事件×Dasha)在候选间打平、只剩软腿结构在分**,也算欠定(**D1/D9/D10 各层同理**,chimiao 的 D9 层 C1/C2 平局正是这种)。→ **声明"当前欠定"**,处理**首选主动要外部硬锚**(出生手环/医院记录/出生证/更早更硬的带日期事件)——结构性平局补软信息没用;其次才补更多硬事件。❌ 禁止用"子窗最紧/软腿更亮"硬选一个当确定结论(假确定);❌ 禁止让软腿破硬腿的平局(承主纲)。**门槛(防滥触发)**:'硬腿打平'= 硬腿评分差**在翻转阈值内(<2 分,沿用反证重检复检口径)且唯一区分者只剩软腿**才算;硬腿有明确差(哪怕小)就**不算欠定、照常定盘**。**欠定 ≠ 拒绝出结论**:用户无外部硬锚时,仍给**当前最佳估计 + 显式"欠定/低置信"标注**,❌ 禁卡住不给结论。

推理过程(写在聊天框中让用户看到):

  "测试区间: +5 ~ +18分钟(Lagna=Gemini)
   → 新宫主表: L7=Jupiter, L10=Jupiter...
   → 事件1(结婚): Jupiter大运 → L7=Jupiter → ✅✅
   → 事件2(创业): Venus大运 → L5=Venus → ✅✅
   → 匹配度: 5/5

   vs 原始时间(Lagna=Taurus):
   → 匹配度: 3/5

   结论: 出生时间应在 +5~+18分钟区间"

精确定位(在最佳区间内进一步缩小;D9→D10→D4/D5 逐级两边相夹):

如果D9变化点在区间内:
  → 用D9匹配进一步定位(D9 也必须出"候选×证据"评分表,不许只凭叙事说"哪个更像")
  → 找到D9也最匹配的子区间
  → D9 级精度: 约 ±10 分钟(单 D9 换座点约 13 分钟宽;再叠 D10 才到 ±5,见渐进阶梯)

⚠️ 精调层的 Dasha 也走两点法、禁子段中点(同 3c,别在精调阶段把病捡回来): D9/D10/D4/D5 用分盘换座点分子区间时——事件的 MD/AD 归属沿用 D1 层两点法已定的(子区间很窄、Dasha 漂移小,通常不变); ❌ 禁止对某个 D9/D10 子区间取中点重算一次 Dasha 当真值; 若某子区间恰好跨了某事件的 AD 边界 → 对该子区间重跑 time_scan(小 --range)取两点 Dasha 复核,不靠中点。 精调层主要靠分盘结构(D9灵魂/D10事业/D4财产/D5权力的 Lagna/宫主对事件与特质)区分候选,不是靠在子段中点重算 Dasha。

反证强制重检(贯穿 3c–3d,每条新信息进来必跑,禁止打发)

⚠️ 铁律:每当用户补充新信息(新事件/新性格/新来源/纠正旧说法),不许只问"它符不符合当前结论",必须问"它会不会推翻当前结论"。校准最大的失败模式是:选定领先候选后,对反证一律用"单一事件不足以推翻全面领先"打发,死不回头。

新信息三问(每条写进聊天框): 问1 归属:指向哪个候选?支持当前盘还是某个被淘汰候选? 问2 强度:硬信号(客观事件+明确盘结构对应,或带"意外/突变/反常"的不可软化特征)还是软信号? 问3 翻转:若成立要换盘吗?加进 3c 评分矩阵,重算总分,看排序变没变。

❌ 禁止用"单一事件不足以推翻全面领先"打发硬反证。一条硬信号(如 Jupiter D9 落 H8 对候选A是 ✅✅✅)必须回 3c 评分表重算。「不足以推翻」只有在已纳入重算、且重算后排序确实没变时才能说,且必须附重算后具体分差;未重算就说 = 违规。

⚠️ 复检范围(防"锁死后层内自洽"):新信息触发的重算不只在当前锁定段内,必须回 3c 全候选矩阵——含被淘汰的其他 Lagna 候选段,对它们补 drishti + 精确测试点重算(只补算新增事件,不重跑历史)。任一被淘汰候选重算后追到当前锁定段 3 分以内(<2 翻转阈值 + 1 缓冲)→ 触发 D1 层复检重启,从 3c 全矩阵重开。

输出(每轮新信息后写聊天框):

反证检查:新信息[X] → 指向候选[A/B],[硬/软]信号
  → [已纳入3c重算 / 软信号暂存] → 重算后 候选A[分] vs B[分]
  → [翻转改判A / 未变,B领先N分,理由…]

⚠️ 凡写"未变"必须给出重算后具体分差,禁止只写"不足以推翻"。

⚠️ 来源更正联动(任何阶段,含校准完成后):用户提供"出生时间来源"新信息(如事后才说"是医院时间""家人当场看表""身份证抄的"): → 视为强先验,回 Step 0 按新来源重定误差方向/区间,触发全流程重估(权重高于普通新事件) → 但来源不是 ground truth:医院时间也可能偏(护士补记/凑整/看表滞后),不硬覆盖事件结论 → 事件匹配稳定地与来源冲突时(如事件强指某时、来源指另一时)→ 标注冲突(可能记录时间本身偏), 呈现两种可能+各自证据,而非无条件作废改判到来源窗口 (对比:普通新事件走上文"复检不必翻转";来源信号触发重估,但仍受事件检验,不盲从)

3d. Nakshatra边界校验(辅助确认)

在D9精调完成后,检查最终Lagna度数是否落在Nakshatra边界附近。

Nakshatra边界:每13°20'(即每个星座内 0°00', 13°20', 26°40')

1. 计算Lagna度数距最近Nakshatra边界的距离
2. 距离 > 2° → Nakshatra无争议,跳过此步骤
3. 距离 ≤ 2°(本质=一个欠定的边界二选一)→ 按【欠定通道 + 过拟合主纲】处理,❌ 禁止仅凭特质拍板:

   第一步 · 先用硬腿区分(不问用户):两个候选 Nakshatra 主星不同 → Vimsottari MD/AD 起算点不同 → 用**已采集的带日期硬事件**看哪版 Dasha 落点对得上。硬事件能分 → **直接定,不问用户**。
   第二步 · 硬腿分不出 → 判"欠定":走 rectifier「首选外部硬锚」通道(出生手环/医院记录/出生证/更硬的带日期事件)。❌ 禁止用软腿特质破这个平局、禁止据此移动出生时间。
   第三步 · 特质 A/B 只作 zero-weight 参考(保留则):
     可输出两组特质供参照,但——
     · ⚠️ 反巴纳姆自检:对调两组描述用户还选同一个吗?两组不可区分/都像 → 作废、不用。
     · 用户的选择**不移动出生时间、不作决胜**,只在报告记"倾向 [A/B](**未确认**、软腿参考)"。
     · ❌ 禁写成"confirmed"、❌ 禁"据此确认时间偏向"。
   → 用户说"都像/不确定" → 保持 D9 定位结果,并把该边界标注为**欠定/低置信**。

⚠️ 注意:

  • 此步骤纯粹是辅助确认,不改变D9精调的核心逻辑
  • Nakshatra特质描述限3条,用日常语言,不用术语
  • 每个Nakshatra对应的时间偏向必须标注清楚

Step 4: 输出结论

⚠️ 首先判定情况A还是情况B:

情况A(无需重算)= 全部满足:
  0. ⚠️ D9(及用户选择的后续阶梯)**已实际执行并收敛**——❌ 5/5 事件匹配但零精调**不算情况A**(那只锁了 Lagna 星座、没到分钟级)
  1. 推荐时间与原始时间偏移 ≤ 5分钟
  2. D9 Lagna未变化
  3. Lagna星座未变化

情况B(必须重算)= 任一成立:
  1. 推荐时间与原始时间偏移 > 5分钟
  2. D9 Lagna发生变化
  3. Lagna星座发生变化

⚠️ D9精调后的推荐时间也算!
   例:原01:30,D9精调后推荐01:45 → 偏移15分钟 → 情况B
情况A: 时间确认正确
✅ 时间校准完成

结论:您的出生时间 [HH:MM] 经过 [N] 个事件验证,
匹配度 [M/N],无需调整。
时间精度:从 [±X分钟] 到 **[±实际达到的精度]**(回填实际跑到的阶梯层级对应精度——❌ 别写死 ±5,没跑 D10 就到不了 ±5)。

→ 更新structured_data.md中的"时间精度"字段 → ⚠️ 同时写入"时间可信度"标签(❌ 别默认吃 reader 的 blanket 高):D9 已收敛→高;仅锚定到 Lagna 星座级 / 用户止于粗级→中(D10/D5/D4 引用留余地);④ 欠定 / 临界待锚→中或低 + 标注"时间仍未定"。下游 core 按此标签 gate 验前事复盘/免责声明。 → 可以直接建议进入vedic-core

⚠️ 来源偏差回顾(校准完成后必做——向早平移在此落地,只解释不裁决)

校准结果定了之后(由事件众数区 + D9/D10 已裁决完),回顾报值与真值的差,仅作结果解释:

  • 结果比报值偏早 → 与"家人听哭看表 / 断脐后登记 = 报值系统性偏晚"方向一致 → 来源假设成立,可写"时间较报值早 X 分钟,与[医院登记/家人看表]的滞后偏差相符"。
  • 结果比报值偏晚 / 明显偏离 → 来源假设不成立 → 如实标注"报值可能记录错误 / 凑整 / 记错",不硬圆到向早窗口。
  • 结果与报值基本一致 → 报值本就准确,写"原时间经校准验证准确"。❌ 禁写"与'报值偏晚/向早'先验对立/相悖"——向早平移是弱先验、非基准;原值验证准确时它只是不适用,不存在"对立"(把弱先验当成结果要调和的基准 = 反偏误纪律要防的,见本文件"向早平移是待验证先验、不是结论")。 ❌ 这一步是解释、不是校准依据;向早平移不参与上面的事件裁决。
情况B: 需要调整时间

⚠️ 情况B铁规:

❌ 禁止在时间调整后直接建议"进入core分析"(必须先重算数据)
❌ 禁止用旧structured_data继续分析

必须的顺序:
  1. 用新时间调 calc engine → calculate_full_chart(新时间)
  2. 重写 structured_data.md(Dasha/分盘/过运全部更新)
  3. 用新Dasha重新匹配事件(确认匹配度不降)
  4. 才能进core

⚠️ Dasha会随时间变化!Moon度数变了→Dasha起算点变了→所有小运日期偏移
  必须用calc重算,不能沿用旧值。

写入 rectification_report.md(报告含关键变化表+事件对比+推理过程+操作步骤)。

⚠️ 必须同时写入/更新 user_context.md(与 rectification_report.md 并列的必写产物,不存在则创建):把 Step3c 统一证据集里的①事件类(逐条+Dasha 对照)与②特质类(配偶/职业/专业/家庭氛围/性格)按事实项落盘(不是评分矩阵、不是叙事标签)。这些校准阶段采集的信息此前无写入落点、用完即弃——本步补齐。写完回读确认。

聊天框输出:

📐 时间校准完成!

您的出生时间建议调整为 [HH:MM](原[HH:MM])。

✅ 已用新时间重新计算全部数据(Dasha/分盘/过运),structured_data.md 已更新。

下一步:
  a) 直接进入vedic-core分析(已用calc engine重算Shadbala)
  b) 出几道盲审问题验证校准结果(推荐)
  c) 用新时间 [HH:MM] 重排 JHora 发来新 PDF 补充最精确 Shadbala(可选,推荐)
     ⚠️ 旧 PDF 的 Shadbala 基于原始时间,校准后无效,请勿复用

详细报告见 rectification_report.md。

Step 5: 盘外验证(Out-of-Sample Validation)(一般可选;临界/欠定盘强制)

校准完成后,提示用户是否需要额外验证。 ⚠️ 但盘若属以下情形 → 盲审强制、不可跳(承过拟合防线主纲:临界盘最易过拟合,样本外验证是唯一能打脸它的东西):

  • 校准过程触发过双 Lagna 对比(临界盘),或
  • 命中过欠定声明(硬腿平局、靠软腿或外部锚才定)。 强制盲审规则:用未参与校准的领域出验前事(校准用了事业 → 盲审出感情/家庭),过了才落"确认"、写 time_confidence;❌ 没过、或出现带日期硬反证 → 回 3c 全候选矩阵重算,不许直接确认。非临界盘维持"可选、推荐"。
"✅ 校准完成。是否需要额外验证?
  a) 出几道盲审问题,验证校准结果(推荐)
  b) 直接进入分析"
模式A:盲审推断验证

用户选了 a) 出盲审题后,必须套用 vedic-reader 的「验前事构造 SOP」完整规范(不是随口出两句"同 reader 逻辑"就算)。 关键规范内联如下,逐条照做:

1. **目标 5 条**陈述式验前事(❌ 别因偷懒只出 2-3 条);但**信号不足时按所引 SOP 的替补机制处理,穷尽 A-H 仍不足可诚实减至 3 条——绝不凑恒真**(临界/欠定盘硬信号最少,硬凑第 4、5 条恒真反而稀释盲审)。陈述式 = 直接说出推断让用户判准/不准,
   ❌ 禁止用提问或诱导式("你是不是…?"会污染验证)。
2. 强信号优先:选推导链短、数据支撑强、用户能秒答"准/不准"的结构性事实。
   候选池(按历史命中率):父母/家庭、教育层次、事业转折、婚姻状态等高命中区优先。
   ❌ 永久禁止:身体标记(命中8%)、疾病预测(命中0%)、性格/特质描述(不可证伪)。
3. 构造过程必须完整展示在聊天框(强信号筛选 → 宫位效率 → 陈述措辞),
   ❌ 不许只在内部想、直接甩5句结论。
4. rectifier 特有约束:❌ 禁止基于已用的5个校准事件反推(那是循环论证)。
   盲审必须针对【未覆盖领域】——校准用了事业 → 盲审就出感情/家庭方向。
5. 记命中率:命中率高 → 校准可信度提升;
   低 → 标注"盘外验证未达标",不阻塞进入分析;
   ⚠️ 但盲审不匹配项是带日期的硬反证:若用户确认这些是真实偏差,
   须把它们回 3c 全候选矩阵按【反证强制重检】重算(见 Step 3c 反证强制重检),
   不得仅标注了事——"死不回头"是校准最大失败模式,Step 5 收到的反证同样适用。

完整细则见 resources/pre_validation_sop.md(候选池全表、四通道分析、P1/P1.3/P5 工具箱、构造SOP、输出模板)——出盲审题前必读。

模式B:时间线交叉验证

如用户愿意提供更多信息,可收集未覆盖领域的时间线做Dasha匹配:

1. 从校准用的5个事件中找出未覆盖的领域(至少2个)
2. 向用户收集该领域的客观时间线
3. 用校准后的盘做Dasha匹配(同Step 3a标准)
4. ≥70%匹配 → ✅ 通过 | 50-69% → ⚠️ 存疑 | <50% → ❌ 建议追加事件

⚠️ 模式B计分口径(防基础率虚高):
  ① 只有✅✅和✅计入70%的分子,⚠️弱匹配不计
  ② "角色匹配"属泛信号,不得单独计为一条命中——
     必须与宫主(✅✅通道)或落宫/照射/Karaka(✅通道)之一同时成立才计✅
  ③ 对照组自检:抽1-2条事件在校准前的旧盘上按同一标准打分,
     若旧盘匹配率与新盘相当 → 输出"验证不具区分度"而非"✅通过"

关键原则

  1. 借力calc:改完时间直接调calc engine重算全部数据,用户不需要重新排盘
  2. 逻辑透明:推理过程写在聊天框,让用户看到为什么
  3. 不过度校准:5/5 匹配即确认 Lagna 星座正确(不为换座去无意义重扫);但"确认 Lagna"≠"到分钟级"——分钟精度仍按阶梯 D9/D10 精调(除非用户说够了),❌ 别把 5/5 当分钟级终点
  4. 扫描范围自适应:时间精度差→扫大范围,精度好→扫小范围
  5. UTC转换:time_scan.py用UTC,展示给用户时转回本地时间
  6. 可追加事件:如果5个事件不够区分,可以要求用户追加2-3个
  7. Dasha随时间变:改时间后必须用calc重算Dasha,不能沿用旧值
  8. 渐进式校准:D9→D10→D4/D5,让用户选择是否继续深入

© CNWU16, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files (scripts) in skills/vedic-rectifier of CNWU16/vedic-astro-skills.

  • SKILL.md
  • requirements.txt
  • resources/event_house_map.md
  • resources/ja-rectifier.md
  • resources/pre_validation_sop.md
  • scripts/time_scan.py

Open the folder on GitHubat commit ef07c00

Compare with similar skills

Vedic Birth Time Rectifier next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Vedic Birth Time Rectifier compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Vedic Birth Time Rectifier this skillCNWU16/vedic-astro-skills938—~6.8kAutomated safety check: PassAGPL-3.0
Exploratory Data Analysisspacering-net/codeg3.8k15 repos~3.6kAutomated safety check: PassMIT
MatplotlibzLanqing/codex-claude-academic-skills4.6k17 repos~2.9kAutomated safety check: PassMIT
Scikit LearnzLanqing/codex-claude-academic-skills4.6k17 repos~3.9kAutomated safety check: PassBSD-3-Clause
Chart Visualizationbytedance/deer-flow83k2 repos~840Automated safety check: PassMIT
TimesFM Forecastinggoogle-research/timesfm34k—~4.7kAutomated safety check: PassApache-2.0

Similar skills

  • Exploratory Data Analysis

    spacering-net/codeg

    Perform comprehensive exploratory data analysis on scientific data files across 200+ file formats.

    3.8k GitHub starsUsed in 15 repos~3.6k tokens
    Data & AnalyticsAuto-check passed
  • Matplotlib

    zLanqing/codex-claude-academic-skills

    Low-level plotting library for full customization. An agent skill from zLanqing/codex-claude-academic-skills.

    4.6k GitHub starsUsed in 17 repos~2.9k tokens
    Data & AnalyticsAuto-check passed
  • Scikit Learn

    zLanqing/codex-claude-academic-skills

    Machine learning in Python with scikit-learn. An agent skill from zLanqing/codex-claude-academic-skills.

    4.6k GitHub starsUsed in 17 repos~3.9k tokens
    Data & AnalyticsAuto-check passed
  • Chart Visualization

    bytedance/deer-flow

    Picks a suitable chart type from 26 options for your data, maps the data to that chart's parameters and generates a chart image through a JavaScript script.

    83k GitHub starsUsed in 2 repos~840 tokens
    Data & AnalyticsAuto-check passed
  • TimesFM Forecasting

    google-research/timesfm

    Forecasts any univariate time series zero-shot with Google's TimesFM model, returning point forecasts and calibrated prediction intervals without training.

    34k GitHub stars~4.7k tokensUpdated 7 days ago
    Data & AnalyticsAuto-check passed
  • Adds Firecrawl's /scrape endpoint to application code to pull markdown, HTML, links, screenshots or structured data from a single known URL.

    189k GitHub starsUsed in 1 repo~944 tokens
    Data & AnalyticsAuto-check passed

More from CNWU16/vedic-astro-skills

All 8 skills in this repo
  • Vedic Birth Chart Calculator

    CNWU16/vedic-astro-skills

    Calculates a full Vedic (Jyotish) natal chart from a birth date, exact time and city and writes it to a structured_data.md file for later analysis.

    938 GitHub stars~3.6k tokensUpdated 1 mo ago
    Auto-check passed
  • Vedic Prashna Chart Caster

    CNWU16/vedic-astro-skills

    Casts and interprets a question-time Vedic horary chart for one concrete question, using the exact time and place it was asked.

    938 GitHub stars~2.5k tokensUpdated 1 mo ago
    Auto-check passed
  • Vedic Synastry Chart Reader

    CNWU16/vedic-astro-skills

    Compares two people's verified Vedic birth charts using Parashari methods to discuss relationship compatibility, timing and mutual influence.

    938 GitHub stars~2.8k tokensUpdated 1 mo ago
    Auto-check passed
  • Vedic Astrology Core Analysis Engine

    CNWU16/vedic-astro-skills

    Runs a standard Vedic (Jyotish) natal chart analysis from verified structured chart data: planet and divisional-chart audits, house diagnostics, ten life areas and a packaged report.

    938 GitHub stars~8.5k tokensUpdated 1 mo ago
    Auto-check passed
  • Vedic Astrology Career Analysis

    CNWU16/vedic-astro-skills

    Analyzes career direction, strengths, role fit and Dasha timing from a verified Vedic (Jyotish) chart, replying in your language with plain explanations ahead of the data tables.

    938 GitHub stars~2.8k tokensUpdated 1 mo ago
    Auto-check passed
  • Vedic Love and Relationship Timing

    CNWU16/vedic-astro-skills

    Produces relationship and love-timing readings from a verified Vedic chart, in the user's language, with plain-language interpretation ahead of chart data.

    938 GitHub stars~2.3k tokensUpdated 1 mo ago
    Auto-check passed

Questions about Vedic Birth Time Rectifier

What does Vedic Birth Time Rectifier do?

Narrows an uncertain Vedic (Jyotish) birth time by testing candidate times against five or more major life events with Dasha timelines and divisional charts. md, so a vedic-reader step comes first, and from major life events and personal traits you report. It begins by checking where the birth time came from and which direction the error likely runs, then tests candidate times against the events using Dasha periods, divisional-chart transitions and astronomical calculation, recalculating the chart data for each adjusted time without asking you to redraw it.

When should I use Vedic Birth Time Rectifier?

Vedic Birth Time Rectifier fits situations like: refining a birth time that may be off by minutes or hours; testing candidate birth times against five or more life events; recomputing Vedic chart data after a time correction; producing a written rectification report for a chart.

How do I install Vedic Birth Time Rectifier in Claude Code?

Run `npx skills add CNWU16/vedic-astro-skills --skill vedic-rectifier -a claude-code`. Or copy the skill folder (skills/vedic-rectifier in CNWU16/vedic-astro-skills) into .claude/skills/vedic-rectifier in your project. Claude Code loads it when a task matches its description.

How do I install Vedic Birth Time Rectifier in Codex?

Run `npx skills add CNWU16/vedic-astro-skills --skill vedic-rectifier -a codex`. Or copy the skill folder (skills/vedic-rectifier in CNWU16/vedic-astro-skills) into .agents/skills/vedic-rectifier in your project. Codex loads it when a task matches its description.

Can I use Vedic Birth Time Rectifier in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add CNWU16/vedic-astro-skills --skill vedic-rectifier -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/vedic-rectifier, .gemini/skills/vedic-rectifier, .github/skills/vedic-rectifier and .opencode/skills/vedic-rectifier in your project.

What does Vedic Birth Time Rectifier need to run?

Going by SKILL.md and its folder, Vedic Birth Time Rectifier needs Python for the scripts in its folder. Our summary lists: A structured_data.md chart file produced by the vedic-reader step; Python with the packages in requirements.txt for scripts/time_scan.py.

Does Vedic Birth Time Rectifier access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Vedic Birth Time Rectifier safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Vedic Birth Time Rectifier use?

Vedic Birth Time Rectifier is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Vedic Birth Time Rectifier use?

About 6.8k tokens (SKILL.md is roughly 27k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Vedic Birth Time Rectifier?

Skills that share tags, products or a category with Vedic Birth Time Rectifier: Exploratory Data Analysis (spacering-net/codeg, 3.8k stars), Matplotlib (zLanqing/codex-claude-academic-skills, 4.6k stars), Scikit Learn (zLanqing/codex-claude-academic-skills, 4.6k stars) and Chart Visualization (bytedance/deer-flow, 83k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Vedic Birth Time Rectifier?

CNWU16 (a GitHub user) maintains it in CNWU16/vedic-astro-skills, which has 938 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on September 4, 2026.

Source: CNWU16/vedic-astro-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.