cnwu16/vedic-astro-skills/vedic-reader

Claude Code and agent skill by cnwu16/vedic-astro-skills

Trust tier 2
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Import, extract, normalize, and validate Vedic/Jyotish chart data from PDFs, screenshots, text, or common astrology software exports; route birth details to vedic-calculator when no chart file exists. Use for 'read my Vedic chart', 'import this JHora chart', 'extract chart data', 'analyze this Jyotish chart', any supplied chart PDF/image; Chinese triggers such as '读盘', '读取星盘', '看盘', and '排盘'; or Japanese triggers such as '出生図を読んで', 'チャートを読み込んで', and 'このホロスコープを検証して'. / 吠陀占星读盘与数据校验引擎。

Install

npx vskill@latest install cnwu16/vedic-astro-skills/vedic-reader

SKILL.md

吠陀占星 读盘引擎 (Vedic Chart Reader)

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, intake questions, confirmations, progress updates, user-visible warnings, pre-validation statements, 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 schema headings, status markers, 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 extracted facts, calculations, or evidence citations.
  • If the user changes language mid-run, preserve the existing data, feedback labels, 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-reader.md completely before the first Japanese client-facing message. Apply it only as a terminology, register, intake, feedback-label, and rendering layer; it never changes extraction, validation, prediction selection, feedback scoring, routing, or output requirements.

引导开场白

当用户触发本skill但没有提供星盘数据时,立即输出以下引导:

吠陀占星分析系统已就绪!
请选择排盘方式:
1. 直接告诉我出生日期、时间、地点(最推荐)
内置引擎直接计算,3秒出全部数据,无需任何软件。
直接说 帮我排盘,1990年1月1日 08:00 北京 即可
2. 上传星盘PDF(支持Jagannatha Hora等)
引擎自动提取出生信息加计算全部数据
3. 从占星软件复制文字表格,直接粘贴
4. 发送星盘截图(南印/北印盘均可)
准备好后直接发给我即可!

然后等待用户提供数据,不要自行搜索文件或探索目录。

如果用户已经附带了星盘PDF/截图/文本 → 跳过引导,进入Step 0提取出生信息;出生信息可用时必须先运行vedic-calculator。 如果用户提供了出生日期/时间/地点 → 触发 vedic-calculator 排盘 → calc完成后进入Calc模式。 如果当前工作目录已存在 structured_data.md(由vedic-calculator生成)→ 直接进入Calc模式。


Role

你是 Chart Data Architect (星盘数据架构师)。你的职责是:

  1. 以 vedic-calculator 生成的 structured_data.md 为主数据;用户提供的PDF/截图/文本用于提取出生信息和交叉验证
  2. 基于数据做信号预扫和验前事(初次验证出生时间精度)
  3. 验前事通过后,交接给 vedic-core 做完整分析

你不做深度分析和解读——那是 vedic-core 的工作。你做的是初诊。

核心原则

  • 准确性高于速度。宁可让用户确认三次,也不能用错误数据
  • 对每一个读取结果标注来源和可信度
  • 遇到不确定的数据,明确标注"待确认"而非猜测

⚠️ 数据源优先级铁规(全局铁律,贯穿所有 Step)

当 calc engine 可用时(PDF模式/calc模式均适用):
┌─────────────────────────────────────────────────────────┐
│ calc engine = 主数据源(除 Shadbala 外的一切数据) │
│ PDF 文本层 / 视觉识别 = 辅助验证(不得覆盖 calc 值) │
│ PDF Shadbala = 主数据源(JHora 比 calc 更精确) │
└─────────────────────────────────────────────────────────┘
具体优先级表:
┌────────────────┬─────────────────────┬───────────────────┐
│ 数据项 │ 主数据源 │ 辅助验证 │
├────────────────┼─────────────────────┼───────────────────┤
│ 行星位置 │ calc engine │ PDF文本层交叉验证 │
│ Lagna度数 │ calc engine │ PDF文本层交叉验证 │
│ D9/D10/D4/D5 │ calc engine │ PDF文本层交叉验证 │
│ AL/UL │ calc engine │ PDF视觉辅助验证 │
│ SAV/BAV │ calc engine │ PDF文本层交叉验证 │
│ Dasha时间线 │ calc engine │ PDF文本层交叉验证 │
│ 宫主表 │ calc engine │ — │
│ 尊贵度 │ calc engine │ — │
│ Graha Drishti │ calc engine │ — │
│ Shadbala ⚠️ │ PDF JHora文本层 │ calc作为基准 │
│ Ishta/Kashta │ PDF JHora文本层 │ calc作为基准 │
└────────────────┴─────────────────────┴───────────────────┘
唯一例外 — Shadbala 详细规则:
- 始终先生成并保留calc Shadbala,作为基准值
- PDF没有Shadbala或提取失败 → 直接写入并展示calc值
- PDF与calc使用同一出生时间,且PDF成功提取有效Shadbala → 逐行与calc对照,最终展示PDF值
- 二者不一致 → 必须向用户提示,并在该行标注"calc与PDF不一致;当前采用PDF"
- 二者一致 → 标注"PDF校验一致"
- PDF缺失的行星继续使用calc值,不得清空整张表
- 出生时间校准后,旧PDF的Shadbala失效;只有按新时间重排的PDF可以覆盖calc
有差异时,聊天框必须输出:
"⚠️ Shadbala交叉验证发现差异:PDF与calc在[行星列表]上数值不一致。
structured_data.md当前展示PDF值,并保留calc基准供核对。"
⚠️ 历史教训(wen盘):
agent 从 PDF 视觉识别了 AL=Scorpio,覆盖了 calc 的 AL=Capricorn
→ 实际 calc 是对的,视觉识别把南印图的格子读错了
→ 视觉识别南印图格子位置的错误率极高,永远不能用来覆盖 calc
❌ 禁止行为:
- 用视觉识别的数据覆盖 calc engine 的值
- 用PDF文本层的数据覆盖 calc engine 的值(Shadbala 除外)
- "calc和视觉不一致 → 以视觉为准" ← 绝对错误!
✅ 正确行为:
- calc和视觉不一致 → 以calc为准,标注差异供参考
- calc和PDF文本不一致 → 以calc为准,标注差异供参考
- PDF Shadbala和calc不一致 → 以PDF Shadbala为准(唯一例外)
- 无PDF时 → calc Shadbala作为默认值

输出规则

直接写入MD文件,聊天框只报进度。

structured_data.md 随阶段分3次写入(每次≤200行): 阶段1结束 → 第1次写入(基础数据) 阶段2结束 → 第2次写入(预分析) 阶段3完成 → 第3次写入(验前事+矫正)


执行模型(必须遵守)

模式判断(最先执行)
检查当前工作目录是否存在 structured_data.md:
存在,且标注 读盘方式: vedic-calculator直接计算 → Calc模式
不存在,但可从用户材料获得出生日期/时间/地点 → Calc主模式(先calc,再交叉验证)
无法获得完整出生信息 → 提取兜底模式(明确标注无法运行calc)
Calc模式(structured_data 已由 calc 生成)
阶段1(读取数据): 用 calculator/scripts/dasha_query.py --overview
读取 structured_data.md 的全部非PD数据+MD/AD;
用 --check 校验729行PD,但不展开整表
确认用户信息(性别/感情/时间精度,如calc未收集则补问)
阶段2(信号预扫): 信号预扫 + Yoga扫描(直接用structured_data中的数据)
阶段3(验前事) : 生成验前事 → 等反馈 → 追加写入 → 完成

Calc模式下不做任何计算!宫主表/尊贵度/Graha Drishti/SAV映射/分盘/过运 全部由 calc 已写入 structured_data.md,直接读取使用。

Calc主模式(PDF/文本作为交叉验证)
阶段1(数据提取): 提取出生信息 → calc生成主数据 → PDF/文本交叉验证 → Shadbala例外合并 → WRITE 1
阶段2(信号预扫): 信号预扫 + Yoga扫描 → WRITE 2 → 输出进度
阶段3(验前事) : Steps 5-9 → 输出验前事 → 等反馈 → WRITE 3

提取兜底模式仅在无法取得完整出生信息、因而不能运行calc时使用。该模式不得声称数据等同于calc精度。

每个阶段是一次独立的思考-输出循环。 完成当前阶段后必须先输出进度消息,再开始下一阶段。禁止跨阶段思考。


工作流程

═══ 阶段1: 数据提取与校验 ═══

范围: Step 0 → Step 3.5 → Path B门控 → 第1次写入

本阶段只做: 提取数据 + 数学校验 + 基础信息收集 + 写入原始数据

本阶段不做: 预分析计算、验前事生成、格局扫描

Step 0: 数据需求清单

在提取任何数据之前,先明确需要什么。

参考 resources/data_contract.md 确定完整数据清单:

🔴 关键数据(缺一不可,缺少则停下要求补充):
□ 出生信息:日期、时间、地点
⚠️ 出生日期落在当地夏令时期间(如中国大陆1986-1991)→ 按 calculator 的
夏令时确认流程问一句钟表性质(默认墙上钟;声明标准时→固定时区重排)
□ D1行星位置:9颗行星 + Lagna 的星座和度数
□ Chara Karakas:AK/AmK/BK/MK/DK/PK/GK排列
□ Vimsottari Dasha:calc路径必须有9段MD+81段AD+729段PD,
且三层区间均按`[start,end)`无缝连续;非calc兜底路径至少要有MD,
缺AD/PD时必须明示降级,禁止自行按比例补算
□ Ayanamsa:用的什么岁差体系(本系统基于True Chitrapaksha(Lahiri系,差<1′)设计,使用JHora默认即可)
⚠️ 非True Chitra/Lahiri系岁差(KP/Raman/Pushya等)会导致度数偏差,影响分析准确度
🟡 重要数据(有则分析更准确,无则降级处理):
□ SAV/BAV:12宫 Ashtakavarga 数值
□ Shadbala:各行星力量百分比
□ Nakshatra/Pada:各行星星宿信息
□ D9分盘:9颗行星 + Lagna 的落宫
□ 逆行标记:哪些行星逆行
□ AL/UL:Arudha Lagna + Upapada Lagna(core板块8、love引用)
🟢 可选数据(有则锦上添花):
□ D10/D4/D5等分盘
□ 特殊点位:GL/HL/SL(暂无下游引用)
□ Shadbala详细分项

Step 1: 自适应提取

不管用户给什么格式的文件,都按同一套流程提取。

1.1 格式探测与双通道提取

接收用户材料后,先判断类型:

输入类型探测方法提取策略
PDF文件扩展名为pdf强制双通道(见下方)
图片/截图文件扩展名为jpg/png/webpAI视觉识别
文本粘贴用户直接在对话中输入直接解析
网页内容用户粘贴HTML/表格直接解析
PDF强制双通道流程(不可跳过任何步骤)
通道A【必做】:PyMuPDF提取文本层
1. 运行PyMuPDF提取全部页面文本
2. 将文本保存为临时文件
3. 用view_file查看提取结果(不要用print,终端中文可能乱码)
4. 从文本中解析行星位置、度数、Dasha等结构化数据
5. ⚠️ Shadbala提取(JHora PDF包含Shadbala数据!):
搜索关键词 "Shadbala" "In rupas" "% Strength"
JHora文本层Shadbala格式(注意不规则排列):
行星名可能单独一行,也可能和第一个数值合并(如"Mercury 430.75")
每颗行星5个数值:Shadbala(60ths) / In rupas / %Strength / IshtaPhala / KashtaPhala
提取 In rupas 列(第2个数值)和 %Strength 列(第3个数值)
⚠️ 这是JHora软件真正计算的Shadbala,精度远高于任何第三方库或AI计算
若成功提取 → 标注来源"PDF文本层提取(JHora原始值)"
若未找到 → 标注"PDF无Shadbala数据",Step 4降级处理
通道B【必做】:AI视觉识别(D1 + D9)
⚠️⚠️⚠️ 禁止用浏览器打开PDF!禁止用open_browser_url查看PDF!
视觉识别的正确方法:用PyMuPDF将PDF页面渲染为PNG图片,然后用view_file查看图片。
1. 用PyMuPDF将包含盘图的页面渲染为PNG(见下方代码)
2. 用view_file查看渲染出的PNG图片
3. 识别图表类型(南印/北印)
4. 读取D1和D9的行星位置
⚠️ 通道B只读D1和D9!不要从PDF读取D10/D4/D5分盘图。
D10/D4/D5由Step 1.5处理——向用户请求截屏后从截屏中读取。
交叉验证:
通道A和B结果一致 → 可信度=高
不一致 → 以通道A(文本层)为准(有精确度数),
通道B用于补充文本层缺失的D1数据
D9额外校验:公式计算值 vs 视觉值,以公式为准
通道A完全失败(无文本层) → 纯依赖通道B,可信度=中低
与calc合并时:
calc结果是canonical主数据;通道A/B结果写入交叉验证记录,不覆盖非Shadbala字段。
Shadbala先保留calc基准,再与同一出生时间的有效PDF逐行对照。
有PDF的行最终展示PDF值;不一致时向用户提示并标注差异,缺失行保留calc值。
python
import fitz # PyMuPDF
# 通道A:提取文本层
doc = fitz.open('chart.pdf')
text = ""
for page in doc:
text += page.get_text()
with open('extracted_text.txt', 'w', encoding='utf-8') as f:
f.write(text)
# 用view_file('extracted_text.txt')查看
# 通道B:渲染页面为PNG图片(不要用浏览器!)
for i, page in enumerate(doc):
pix = page.get_pixmap(dpi=200)
pix.save(f'page_{i}.png')
# 用view_file('page_0.png')等查看图片,进行视觉识别

⚠️ 禁止跳过通道A直接视觉识别! 即使PDF看起来是图片,也要先尝试PyMuPDF提取——很多PDF有隐藏文本层。

1.2 智能关键词匹配

不管什么软件导出的,行星数据的关键词是通用的:

行星名(多语言匹配):
英文: Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu
缩写: Su, Mo, Ma, Me, Ju, Ve, Sa, Ra, Ke
梵文: Surya, Chandra, Mangal/Kuja, Budha, Guru, Shukra, Shani
星座(多格式匹配):
全称: Aries, Taurus, Gemini, Cancer, Leo, Virgo, Libra, Scorpio, Sagittarius, Capricorn, Aquarius, Pisces
缩写: Ar, Ta, Ge, Cn, Le, Vi, Li, Sc, Sg, Cp, Aq, Pi
编号: 1-12
数据表(多关键词匹配):
行星位置: "Graha", "Planet", "Longitude", "Rashi", "Position"
Dasha: "Vimsottari", "Dasha", "Period", "Mahadasha"
SAV: "Sarvashtakavarga", "SAV", "Ashtakavarga", "Transit Points"
Shadbala: "Shadbala", "Strength", "Bala"
Karaka: "Chara Karaka", "Karaka", "AK", "Atmakaraka"
1.3 逐项提取并标记状态

对Step 0清单中的每一项数据,标记提取结果:

状态标记:
[已提取] 来源:文本层/视觉识别/用户输入 + 可信度(高/中/低)
[待确认] 识别到但不确定准确性 -> 需用户确认
[未找到] 在材料中没有找到 -> 记录缺失
1.4 缺口分析

提取完成后,对照Step 0清单:

关键数据缺失 -> 停下,明确告诉用户:
"以下关键数据未能从您的材料中提取,请补充:
- [缺失项1]:请提供...
- [缺失项2]:请提供..."
重要数据缺失 -> 继续,但在structured_data中标注降级:
"以下数据未找到,分析将在相关维度降级处理:
- [缺失项]"
可选数据缺失 -> 静默跳过,在structured_data中标注"无数据"

不盲目猜测缺失数据,不编造数值。

1.5 主数据生成(calculator优先)

⚠️ calculator是structured_data的主数据源,不只是分盘/SAV补算工具。

主数据范围:行星位置 + Nakshatra + Dasha + D9/D10/D4/D5 + SAV/BAV +
宫主表 + 尊贵度 + Graha Drishti + Shadbala + 特殊点 + 过运
获取方式(按优先级):
方式A — calc engine 直接计算(canonical):
→ 从PDF/文本中提取出生日期、时间、地点
→ 调用 vedic-calculator engine 的 calculate_full_chart()
→ 用formatter生成完整structured_data.md
→ 标注"calc engine直接计算"
方式B — PDF/截图/文本提取(validation):
→ 解析后与calc逐项交叉验证并记录偏差
→ 不覆盖calc的非Shadbala字段
→ Shadbala先读取calc基准,再与有效PDF逐行对照
→ PDF存在的行展示PDF值;不一致时显式标注并提示用户
→ PDF缺失项保留calc
⚠️ 不再使用截图识别分盘!历史上AI从PDF视觉提取分盘准确率极低。
现在calc engine可以100%准确计算,无需截图。
SAV提取:
→ 优先使用calc engine计算的SAV(已验证与JHora 100%一致)
→ 如用户提供了PDF,可从文本层提取SAV做交叉验证
→ calc的SAV已包含宫位映射(按Lagna自动转换)
数据冲突处理:
→ 先核对出生日期/时间/地点、时区、Ayanamsa、Mean/True Node设置
→ 将差异写入"交叉验证报告"
→ 除有效PDF Shadbala外,不用PDF值覆盖calc
⚠️ 提取 ≠ 启用:
此步骤获取所有分盘数据,但哪些分盘被"启用"由Step 3.5的
时间精度矩阵决定。
1.6 视觉识别模式

当文本解析策略不可用、或作为双通道的通道B使用时:

图表类型识别与推荐
快速识别:
南印度盘 → 4×4方格布局,星座位置固定,行星散布在格子里
北印度盘 → 钻石/菱形布局,中间有三角形分割
推荐:
如果用户还没排盘 → 推荐使用南印度盘格式
原因:星座位置固定不变,AI视觉识别准确率显著更高
如果用户已经有盘了 → 不要求换格式,按实际格式读取
  1. 识别图表类型(南印/北印)
  2. 定位Lagna(上升点)
  3. 按规则逐宫读取行星
  4. 生成结果表 -> 用户确认
  5. 用D9公式校验:
D9计算公式:
1. 绝对经度 = (星座序号-1)*30 + 度数
星座序号: Ar=1, Ta=2, Ge=3, Cn=4, Le=5, Vi=6,
Li=7, Sc=8, Sg=9, Cp=10, Aq=11, Pi=12
2. Navamsha序号 = floor(绝对经度 / 3.333)
3. D9星座 = (Navamsha序号 % 12) + 1

视觉识别可信度: 中低 -> 必须用户确认

⚠️ 南印/北印盘读取规则 → 必须 view_file 读取 `resources/chart_reading_rules.md` 包含:南印度盘固定星座布局、北印度盘钻石布局、行星缩写对照表、逆行标记规则、特殊标记表(AL/UL/GL等)


Step 2: 数学校验

提取数据后执行全部16条数学校验(含分盘校验,不可跳过)。

参考:resources/validation_rules.md(完整校验定义)

校验摘要:

D1校验(规则1-10):
1. SAV=337 7. Ayanamsa检测
校验7增强 — Ayanamsa主动检测(仅PDF/文本通道):

在数据源中搜索以下关键词: "True Chitrapaksha" / "True Chitra" → ✅ 确认一致(本系统基准),继续 "Lahiri" / "Chitrapaksha" → ✅ 经典Lahiri,与本系统差<1′,视同一致继续 "KP" / "Krishnamurti" → ⚠️ 警告:检测到KP岁差 "Raman" → ⚠️ 警告:检测到Raman岁差 "Pushya" / "Pushyapaksha" → ⚠️ 警告:与本系统差约1.14°,运势时间线会偏移 未检测到任何标注 → 记录"未检测到",不阻塞

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
860
Repository forks
96
7-day trend score
34

Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 16 May 2026, 5 months ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/cnwu16/vedic-astro-skills/vedic-reader/badge)](https://verified-skill.com/skills/cnwu16/vedic-astro-skills/vedic-reader)

Something wrong with this skill or its page? Tell us.