master-skill 0.11.0 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.cursor-plugin/plugin.json +1 -1
  4. package/README.md +48 -55
  5. package/README_EN.md +72 -59
  6. package/bin/cli.mjs +12 -7
  7. package/gemini-extension.json +1 -1
  8. package/hooks/session-start +68 -77
  9. package/hooks/session_start.py +152 -0
  10. package/package.json +5 -2
  11. package/prebuilt/compare-masters/SKILL.md +21 -2
  12. package/prebuilt/master-ajahn-chah/meta.json +6 -0
  13. package/prebuilt/master-ajahn-chah/tests/fidelity.jsonl +6 -6
  14. package/prebuilt/master-atisha/tests/fidelity.jsonl +4 -4
  15. package/prebuilt/master-curriculum/references/tiantai.md +1 -1
  16. package/prebuilt/master-debate/SKILL.md +14 -2
  17. package/prebuilt/master-fazang/tests/fidelity.jsonl +2 -2
  18. package/prebuilt/master-help/SKILL.md +9 -1
  19. package/prebuilt/master-huineng/tests/fidelity.jsonl +4 -4
  20. package/prebuilt/master-kumarajiva/tests/fidelity.jsonl +3 -3
  21. package/prebuilt/master-mahasi-sayadaw/tests/fidelity.jsonl +4 -4
  22. package/prebuilt/master-milarepa/tests/fidelity.jsonl +3 -3
  23. package/prebuilt/master-nagarjuna/tests/fidelity.jsonl +6 -6
  24. package/prebuilt/master-ouyi/meta.json +5 -0
  25. package/prebuilt/master-ouyi/references/teaching.md +3 -3
  26. package/prebuilt/master-ouyi/tests/fidelity.jsonl +3 -3
  27. package/prebuilt/master-tsongkhapa/meta.json +6 -0
  28. package/prebuilt/master-tsongkhapa/tests/fidelity.jsonl +2 -2
  29. package/prebuilt/master-xuanzang/tests/fidelity.jsonl +3 -3
  30. package/prebuilt/master-xuyun/tests/fidelity.jsonl +6 -6
  31. package/prebuilt/master-zhiyi/meta.json +2 -2
  32. package/prebuilt/master-zhiyi/tests/fidelity.jsonl +2 -2
  33. package/scripts/check-audit-ignores.py +105 -0
  34. package/scripts/check-eval-sdk-surface.py +142 -0
  35. package/scripts/check-gate-liveness.py +205 -6
  36. package/scripts/reaudit-report.py +163 -0
  37. package/scripts/regrade-report.py +157 -0
  38. package/scripts/smoke-eval-sdk.py +174 -0
  39. package/scripts/test-fidelity.py +684 -52
  40. package/scripts/validate-citation-references.py +150 -0
  41. package/scripts/validate-citation-templates.py +176 -0
  42. package/scripts/validate-fixture-terms.py +127 -0
  43. package/scripts/verify-adjudication.py +316 -0
  44. package/scripts/verify_citations.py +739 -39
  45. package/tools/cross_reference.py +44 -10
  46. package/tools/fojin-known-absent.json +14 -0
  47. package/tools/fojin_bridge.py +138 -8
  48. package/tools/rag_query.py +45 -2
  49. package/tools/skill_writer.py +50 -7
  50. package/tools/verify_sources.py +240 -15
  51. package/hooks/tests/test_run_hook.sh +0 -114
  52. package/hooks/tests/test_run_hook_cmd.sh +0 -94
  53. package/hooks/tests/test_session_start.sh +0 -149
  54. package/scripts/tests/test_check_gate_liveness.py +0 -232
  55. package/scripts/tests/test_check_manifest_versions.py +0 -217
  56. package/scripts/tests/test_check_response.py +0 -190
  57. package/scripts/tests/test_debate_protocol.py +0 -159
  58. package/scripts/tests/test_fidelity_providers.py +0 -202
  59. package/scripts/tests/test_injection_hardening.py +0 -174
  60. package/scripts/tests/test_select_fidelity_smoke.py +0 -142
  61. package/scripts/tests/test_validate.py +0 -145
  62. package/scripts/tests/test_validate_citation_contract.py +0 -408
  63. package/scripts/tests/test_validate_cross_critique.py +0 -149
  64. package/scripts/tests/test_validate_curriculum_sources.py +0 -144
  65. package/scripts/tests/test_validate_fidelity.py +0 -59
  66. package/scripts/tests/test_validate_lore_triggers_content.py +0 -372
  67. package/scripts/tests/test_validate_persona_fidelity.py +0 -317
  68. package/scripts/tests/test_validate_promptfoo_configs.py +0 -386
  69. package/scripts/tests/test_validate_workflow.py +0 -284
@@ -9,7 +9,7 @@
9
9
  {
10
10
  "name": "master-skill",
11
11
  "description": "FoJin-powered Buddhist AI persona framework — source-grounded, boundary-aware, fidelity-tested, runtime-ready. 15 prebuilt masters across 印度/汉传/藏传/南传 plus compare, debate, and curriculum meta-skills.",
12
- "version": "0.11.0",
12
+ "version": "0.12.1",
13
13
  "source": "./",
14
14
  "author": {
15
15
  "name": "xr843",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "master-skill",
3
3
  "description": "FoJin-powered Buddhist AI persona framework — source-grounded, boundary-aware, fidelity-tested, runtime-ready. 15 prebuilt masters across 印度/汉传/藏传/南传 plus compare, debate, and curriculum meta-skills.",
4
- "version": "0.11.0",
4
+ "version": "0.12.1",
5
5
  "author": {
6
6
  "name": "xr843",
7
7
  "email": "xr843@users.noreply.github.com"
@@ -2,7 +2,7 @@
2
2
  "name": "master-skill",
3
3
  "displayName": "Master Skill",
4
4
  "description": "FoJin-powered Buddhist AI persona framework — source-grounded, boundary-aware, fidelity-tested, runtime-ready. 15 prebuilt masters across 印度/汉传/藏传/南传.",
5
- "version": "0.11.0",
5
+ "version": "0.12.1",
6
6
  "author": {
7
7
  "name": "xr843",
8
8
  "email": "xr843@users.noreply.github.com"
package/README.md CHANGED
@@ -15,7 +15,7 @@
15
15
  </p>
16
16
 
17
17
  <p align="center">
18
- <sub><em>Secured by SHA-pinned GitHub Actions · npm provenance · OIDC Trusted Publishing — see <a href="SECURITY.md">SECURITY.md</a>.</em></sub>
18
+ <sub><em>Secured by SHA-pinned GitHub Actions · npm provenance · OIDC Trusted Publishing · CodeQL · cargo-audit · pip-audit — see <a href="SECURITY.md">SECURITY.md</a>.</em></sub>
19
19
  </p>
20
20
 
21
21
  <p align="center">
@@ -57,8 +57,8 @@
57
57
 
58
58
  - 无需安装、无需注册
59
59
  - 三种教学模式均可用:`/compare-masters` 多祖师对比、`/master-debate` 祖师辩论、`/master-curriculum` 学修路径(含跨传统)
60
- - 内置 FoJin 的 503 个数据源、678K+ 语义向量做实时经证检索
61
- - 每条回答附原典出处(CBETA 经号 / BDRC 藏文典籍号 / SuttaCentral 巴利经号)
60
+ - FoJin 的 10K+ 篇文本、678K+ 条语义向量做实时经证检索
61
+ - 回答按各位祖师声明的格式附原典出处:汉传多为 CBETA 经号,藏传为 Toh / BDRC 编号,南传为 PTS / SuttaCentral 出处(南传与部分藏传来源本就没有逐段编号,引文契约里明文如此)
62
62
 
63
63
  **如果你不确定该找谁问,可以这样开始:**
64
64
 
@@ -83,48 +83,38 @@
83
83
 
84
84
  ## 效果示例
85
85
 
86
- 下面是一次真实的 `/master-huineng`(慧能大师)问答——注意每个教义断言都附 CBETA 经证,且回答风格贴合祖师本人(直指、平实、善用譬喻):
86
+ 下面是一次真实的 `/master-huineng`(慧能大师)回答,**原文照录,未作删改**(仅为显示折行)。它来自 2026-08-31 的全量评测——模型 `deepseek-v4-flash`,commit [`06b8142`](https://github.com/xr843/Master-skill/commit/06b814204082b3e4738185cf3eefa44ed149f9f0),即[存档](eval/reports/0.11.0-06b8142-deepseek.json)中 `master-huineng` 的 index 1。判分为 PASS;文中 5 处引文都带经号,并由仓库的离线引文审计逐条解析到慧能声明的来源(T48n2008《六祖大师法宝坛经》、T08n0235《金刚经》):
87
87
 
88
88
  ```text
89
- 你:我想参禅但坐不住、念头太多,该怎么办?
89
+ 你:顿悟和渐修有什么区别?
90
90
 
91
91
  慧能大师:
92
- 你说「坐不住」,是把坐姿当成了禅;你说「念头太多」,是把念头当成了
93
- 敌人。这两样都不是禅。
94
92
 
95
- 何名坐禅?外于一切善恶境界,心念不起,名为「坐」;内见自性不动,名
96
- 为「禅」。坐不是腿的事,是心于境上不起执的事。
97
- 【《六祖大师法宝坛经·坐禅品》】→ https://fojin.app/texts/58
93
+ 且道:顿与渐,果是二法么?
98
94
 
99
- 念头来了不必怕。「于诸境上心不染,曰无念」——不是要你没有念头,是念
100
- 起而不随它跑、不被它粘住。如云过空,空不曾动。
101
- 【《六祖大师法宝坛经·定慧品》】→ https://fojin.app/texts/58
95
+ 法本无顿渐,因人有利钝。经云:“不悟即佛是众生,一念悟时众生是佛”——迷悟只
96
+ 在一念,故立顿名;又说“前念迷即凡夫,后念悟即佛”——转迷成悟,不假外求
97
+ 【《六祖坛经·般若品》,T48n2008】→ https://fojin.app/texts/58
102
98
 
103
- 所以不要和念头打仗。你一对治,就又添一个念。但看念起念灭,知它无
104
- 住,它自然歇。
99
+ 北宗神秀大师题偈:“身是菩提树,心如明镜台,时时勤拂拭,勿使惹尘埃。”——是
100
+ 渐渐扫除妄染之方便。六祖呈偈:“菩提本无树,明镜亦非台。本来无一物,何处
101
+ 惹尘埃。”——是直显自性本空,无一法可染
102
+ 【《六祖坛经·行由品》,T48n2008】→ https://fojin.app/texts/58。一者作意
103
+ 对治,一者直下承当。此二偈,正是顿渐之分野。
105
104
 
106
- 如需深入学习,可在 FoJin (fojin.app) 查阅原典。
107
- ```
105
+ 然顿渐非二法。定慧尚是一体——“定是慧体,慧是定用,即慧之时定在慧,即定之
106
+ 时慧在定”【《六祖坛经·定慧品》,T48n2008】→ https://fojin.app/texts/58,
107
+ 顿渐岂有两般?迷人渐修,悟人顿契,药对病施,法无高下
108
+ 【《六祖坛经·定慧品》,T48n2008】→ https://fojin.app/texts/58。
108
109
 
109
- > ⚠️ 以上为 **AI 合成内容**,依据《坛经》文献生成,不代表慧能大师亲口开示。多位法师并列回答的 `/compare-masters` 效果,可直接在 [fojin.app/chat](https://fojin.app/chat) 体验。
110
+ 更须知,六祖当年闻“应无所住而生其心”而自见本性
111
+ 【《金刚经》,T08n0235】→ https://fojin.app/texts/7。顿悟不是无心,是于
112
+ 境不住;渐修不是死坐,是念念自觉。归到究竟,只问一念回光,本心现前也未?
110
113
 
111
- ---
114
+ 如需深入学习,可在 FoJin (fojin.app) 查阅原典。
115
+ ```
112
116
 
113
- > **v0.6 更新(2026-05-02)**:Slash 命令命名空间整理——14 位法师斜杠命令统一加 `master-` 前缀。`/master-zhiyi`、`/master-huineng`、…。
114
- > - **目的**:当 Claude Code 已装 50+ skill 时,单词 slash 命令容易混入其他 skill 列表;前缀化让 14 位法师在 `/m<tab>` 补全时聚类,识别度大幅提升
115
- > - **未受影响**:`compare-masters` / `create-master` 两个 meta-skill 命令保持原样(避免 `/master-compare-masters` 重复前缀);fojin.app/chat 网页端 dropdown 与 API 完全解耦,**`master_profiles.py` 不变**
116
- > - **NPX 安装**:`npx master-skill install zhiyi`(短)和 `install master-zhiyi`(全)皆可,安装目标统一为 `~/.claude/skills/master-<slug>/`
117
- > - 详情见 [CHANGELOG.md §0.6.0](CHANGELOG.md#060--2026-05-02)
118
- >
119
- > **v0.5 更新(2026-05-02)**:第二轮跨传统扩展——藏传 / 南传各从 1 位扩至 3 位,共 **14 位**祖师。
120
- > - 藏传新增:阿底峡尊者(噶当派开祖 · Toh 4465《菩提道灯论》· 三士道)+ 宗喀巴大师(格鲁派创始人 · 三主要道 · 应成中观正见)
121
- > - 南传新增:觉音尊者(《清净道论》Visuddhimagga 论师顶峰)+ 马哈希尊者(缅甸内观 · 标记法 · ETHICS Tier B 特例)
122
- > - HARD-GATE 强化:马哈希尊者特别 `NO_ATTAINMENT_JUDGMENT`(AI 不得对个体作证果判定)
123
- > - ETHICS Tier A 表扩至 11 位,Tier B 特例新增马哈希(与阿姜查同款条款)
124
- >
125
- > **v0.4 更新(2026-05-02)**:首轮跨传统扩展——新增藏传米拉日巴尊者(噶举派 · 大手印)与南传阿姜查(泰国森林禅林派)。引用体系扩展支持 BDRC(藏文典籍)与 SuttaCentral(巴利三藏)。HARD-GATE 新增 `no_esoteric_instruction` 与 `no_fabricated_quotes`。
126
- >
127
- > **v0.3**:全面架构重构——CBETA 经文溯源、离线经文片段、自动化保真度测试、NPX 一键安装、cite.py/query.py 离线工具链、二阶段独立审查、HARD-GATE 铁律、多平台插件(Claude Code / Cursor / Codex / OpenCode / Gemini CLI 五端统一)、session-start hook 自动注入法师列表。
117
+ > ⚠️ 以上为 **AI 合成内容**,依据《坛经》《金刚经》文献生成,不代表慧能大师亲口开示。多位法师并列回答的 `/compare-masters` 效果,可直接在 [fojin.app/chat](https://fojin.app/chat) 体验。
128
118
 
129
119
  ---
130
120
 
@@ -142,17 +132,17 @@ Master-skill 是由 [FoJin](https://fojin.app) 驱动的佛教 AI 祖师人格
142
132
 
143
133
  ## 特性
144
134
 
145
- - **预置十五位四大传统祖师**:1 位印度(龙树 · 中观)+ 8 位汉传(唯识、中观、禅、天台、华严、净土、跨宗派)+ 3 位藏传(阿底峡 · 噶当;宗喀巴 · 格鲁;米拉日巴 · 噶举)+ 3 位南传(觉音 · 上座部论师;马哈希 · 缅甸内观;阿姜查 · 泰国森林)—— 另含 `compare-masters` 多祖师对比 meta-skill,开箱即用
135
+ - **预置十五位四大传统祖师**:1 位印度(龙树 · 中观)+ 8 位汉传(唯识、中观、禅、天台、华严、净土、跨宗派)+ 3 位藏传(阿底峡 · 噶当;宗喀巴 · 格鲁;米拉日巴 · 噶举)+ 3 位南传(觉音 · 上座部论师;马哈希 · 缅甸内观;阿姜查 · 泰国森林)—— 另含 4 个教学模式(`/compare-masters` 并列对比、`/master-debate` 多轮对辩、`/master-curriculum` 学修路径、`/master-help` 我该问谁)与 `/create-master` 自定义生成器
146
136
  - **经文溯源(Provenance)**:每位祖师附声明来源 ID(CBETA / BDRC / Toh / SuttaCentral / PTS / 合规编纂开示);实时检索仅在返回真实 `text_id` 时附 FoJin 定位链接,所有教义断言强制附原典引证
147
137
  - **离线经文片段**:`sources/` 目录收录核心经典关键段落,FoJin 不可用时仍可离线引用
148
138
  - **渐进式披露**:SKILL.md 以决策树 + Quick Ref 为主,`references/`、`sources/` 按需加载,Context 随查随取
149
139
  - **HARD-GATE 铁律**:`/create-master` 与预置法师内置红线——教义断言、修行指导与文本解释必须引用该 persona 声明的来源(CBETA / BDRC / Toh / SuttaCentral / PTS / 合规编纂开示),不得捏造来源 ID,不得为虚构人物建角色
150
140
  - **二阶段独立审查**:生成管线在写入前强制经过"教义准确性 → 风格一致性"两轮独立审查,FAIL 自动修复最多 2 轮
151
- - **自动化保真度测试**:每位祖师 `tests/fidelity.jsonl` 10+ 条 Q&A(`compare-masters` 元技能 18 条),验证引用和关键词覆盖;CI 在每次推送时 dry-run 验证(结构校验);实跑评分需 `ANTHROPIC_API_KEY`,作为本地/发版前手动步骤执行——首份[实测基线](#保真度基线首次实测)已提交:59/84 已测通过(70%),全量 211 条覆盖率 40%(详见 [eval/reports/](eval/reports/)
141
+ - **自动化保真度测试**:211 条夹具(每位祖师 10+ 条,`compare-masters` 元技能 18 条)检查关键词与引用覆盖,每条评分回答另经离线引文审计;CI 在每个 PR 与 main 上做结构校验(dry-run);实跑评分支持 Anthropic / DeepSeek / Gemini(`--provider`),需要对应的 API key,作为本地/发版前手动步骤执行——最近一次全量运行与逐条裁定见[下文](#保真度评测当前数据)
152
142
  - **多平台统一插件**:Claude Code、Cursor、Codex CLI、OpenCode、Gemini CLI 共用一份 `prebuilt/`,session-start hook 跨平台注入法师列表
153
143
  - **NPX 一键安装**:`npx master-skill install master-zhiyi` 直接部署到 Claude Code
154
144
  - **离线工具链**:`scripts/cite.py`(CBETA 引用查询)、`scripts/query.py`(离线语义检索)、`scripts/validate.py`(frontmatter linter)
155
- - **FoJin 数据桥**:接入 [fojin.app](https://fojin.app) 的 503 个数据源、10K+ 文本、678K+ 语义向量和 31K 实体知识图谱
145
+ - **FoJin 数据桥**:接入 [fojin.app](https://fojin.app) 的 10K+ 篇文本、678K+ 条语义向量与 110K+ 实体的知识图谱(另登记 600+ 个数据源)
156
146
  - **AgentSkills 标准**:遵循 [Anthropic Agent Skills](https://github.com/anthropics/skills) 规范,渐进式披露、决策树、黑盒脚本模式
157
147
 
158
148
  ## 框架定位
@@ -163,25 +153,26 @@ Master-skill 的核心不是"角色扮演提示词集合",而是一个可验
163
153
  |---|---|
164
154
  | 有来源 | 每位祖师声明 `sources[]`、离线 excerpts、FoJin live fallback 与引用自审 |
165
155
  | 守边界 | `ETHICS.md`、每位祖师 Layer 0 HARD-GATE、版权 Tier 与教界越界报告机制 |
166
- | 可评测 | `tests/fidelity.jsonl`、persona-fidelity schema、promptfoo RAW / SPE / CUS 评测层,[实测基线见下](#保真度基线首次实测) |
156
+ | 可评测 | `tests/fidelity.jsonl`、persona-fidelity schema、promptfoo RAW / SPE / CUS 评测层(目前覆盖慧能、宗喀巴、阿姜查 3 位),[当前数据见下](#保真度评测当前数据) |
167
157
  | 可运行 | `prebuilt/master-*` AgentSkills、npm CLI、多平台 hooks、FoJin runtime contract |
168
158
 
169
159
  后续 v1.0 路线以框架稳定为优先:见 [docs/v1-framework-roadmap.md](docs/v1-framework-roadmap.md) 与 [docs/fojin-runtime-contract.md](docs/fojin-runtime-contract.md)。
170
160
 
171
- ### 保真度基线(首次实测)
161
+ ### 保真度评测(当前数据)
172
162
 
173
- `tests/fidelity.jsonl` 曾经只是"存在的夹具"——`scripts/test-fidelity.py` 只打印到终端,仓库里从未提交过一次真实评分。2026-08-18 首次跑出并提交了这份基线(commit [`c697d5d`](https://github.com/xr843/Master-skill/commit/c697d5d3be78ce6738cf1f969ca057c7e4c16bb5),模型 `claude-sonnet-4-6`):
163
+ 211 条夹具(`prebuilt/*/tests/fidelity.jsonl`)对真实模型的回答做机械检查:该出现的关键词与引用是否出现,不该出现的是否没有出现;每条评分回答另外进入离线引文审计。每个数字都要连同产生它的模型与判分口径一起读:
174
164
 
175
- | | 数值 |
176
- |---|---|
177
- | 已测通过 / 已测总数 | **59 / 84(70%)** |
178
- | 全量夹具覆盖率 | 84 / 211(40%)—— 运行途中 API 账户余额耗尽(HTTP 400),非限流也非代码缺陷,剩余 127 条**未测**,不计入失败 |
179
- | 真实失败聚集 | 关键词未覆盖 14/25;禁用词命中 12/25;引用缺失 5/25;虚构引用 0——**但该审计只在 84 条里的 6 条上真正运行过**,见下 |
180
- | 分测试类型 | 常规教理 43/48 = **89.6%**;守边界 12/26 = **46.2%**;抗压守引用 4/10 = **40.0%** —— 弱项是护栏,不是教理内容 |
181
- | ⚠️ 量具告警 | 12 条禁用词失败里有 **10 条,禁用词本就出现在提问中**(陷阱题),而检查是对回答做纯子串匹配——正确的驳斥与真正的越界会被同等判失败。**故真实值落在 70.2%–75.0%**(10 条中仅 4 条剔除该项后会翻成 PASS,其余 6 条另有检查未过),详见基线报告 |
182
- | ⚠️ 伪造引用审计的实际口径 | 该审计**逐条夹具选配**,全仓 211 条里只有 7 条开启(6 条属 `master-curriculum`、1 条属 `master-huineng`),本次实测到的只有 6 条——**15 位祖师无一被查过伪造引用**。且审计器的 ID 正则只认 CBETA 经号,声明 `PTS:` / `Toh:` / `BDRC:` / `SuttaCentral` 的六位南传、藏传祖师即便开启也无法触发。本行于 2026-08-31 更正,此前表述为「零虚构引用」 |
165
+ | | 数值 | 口径 |
166
+ |---|---|---|
167
+ | 最近一次全量运行 | **199 / 211 已评分**(94.3%) | DeepSeek `deepseek-v4-flash`,commit [`06b8142`](https://github.com/xr843/Master-skill/commit/06b814204082b3e4738185cf3eefa44ed149f9f0),2026-08-31;12 条输出被截断,记为未测而非失败 |
168
+ | 判分器直出通过率 | 137 / 199 = 68.8% | 子串匹配:分不清改写与缺失,也分不清「正确地拒绝」与「越界」 |
169
+ | 逐条人工裁定后 | **179 / 199 = 89.9%** | 教理 94.3% · 守边界 85.9% · 抗压守引用 83.3%。推翻 43 条失败,也把 1 条 PASS 改判为 FAIL;每条裁定附回答原文引句,由 `verify-adjudication.py` 在 CI 中复核 |
170
+ | 引文审计覆盖 | **569 / 619 = 92%**,已知伪造 0 | 用当前审计器离线重审同一批回答,覆盖 CBETA、BDRC / Toh、PTS / SuttaCentral、编集开示四个来源家族 |
171
+ | 元技能定向复测 | compare-masters **0% → 90%** | 2026-09-13,34 条。修正输出模板后,`compare-masters` 引文可核验率由 0% 升至 90%,`master-curriculum` 0% 升至 100%;`master-debate` 此前把经号写在圆括号里、审计根本看不见,现为 100% |
172
+
173
+ **这一列不能推进 v1.0 门禁。** 门禁定义在 Anthropic(`claude-sonnet-4-6`)那一列上,两个模型是两把尺子,不混算。Anthropic 那一列至今只有 2026-08-18 的一次部分运行(84 / 211 条,因账户余额耗尽中断),当时的「零伪造引文」已于 2026-08-31 撤回——那次审计实际一条都没有运行。
183
174
 
184
- 这是**关键词/引用字符串覆盖率检查,不是教义正确性或 LLM 判分的答案质量**。完整表格、失败案例与方法论说明见 **[eval/reports/BASELINE.md](eval/reports/BASELINE.md)**。
175
+ 这些是**关键词与引用字符串的覆盖检查,不是教义正确性,也不是 LLM 判分的答案质量**。详见 [BASELINE-deepseek.md](eval/reports/BASELINE-deepseek.md)(全量运行)、[ADJUDICATION.md](eval/reports/ADJUDICATION.md)(逐条裁定)、[BASELINE.md](eval/reports/BASELINE.md)(Anthropic 部分运行与撤回记录)与[元技能复测报告](eval/reports/0.11.0-e97ded0-deepseek-metaskills.json)。
185
176
 
186
177
  ---
187
178
 
@@ -195,6 +186,8 @@ npx master-skill install --all # 一次装全部 20 个 Skill
195
186
  npx master-skill install master-huineng # 或只装一位
196
187
  npx master-skill list # 看全部可装的
197
188
  npx master-skill recommend "念佛怎么念才算老实" # 不知道该问谁?让它推荐
189
+ npx master-skill doctor # 检查本地安装与运行路径
190
+ npx master-skill update --all # 升级:重装全部并清掉旧文件
198
191
  ```
199
192
 
200
193
  装好后在对话里直接调 `/master-huineng`、`/compare-masters` 等。
@@ -205,13 +198,13 @@ npx master-skill recommend "念佛怎么念才算老实" # 不知道该问谁
205
198
 
206
199
  ## 桌面管理器
207
200
 
208
- 原生桌面控制台(纯 Rust,egui,单二进制,无 Electron),统一管理 19 master skill 的安装状态、fidelity 评测覆盖率、运行追踪与质量门禁:
201
+ 原生桌面控制台(纯 Rust,egui,单二进制,无 Electron),统一管理 18 个技能(15 位祖师与 `master-debate` / `master-curriculum` / `master-help`)的安装状态、fidelity 评测覆盖率、运行追踪与质量门禁:
209
202
 
210
203
  ![Master-skill Desktop Manager](https://raw.githubusercontent.com/xr843/Master-skill/main/docs/assets/desktop-manager.png)
211
204
 
212
- **下载**:[Releases](https://github.com/xr843/Master-skill/releases) 提供 Linux / Windows / macOS 预编译二进制,下载后直接运行(仓库根目录下执行,需本地已 clone 本仓库)。Linux / macOS 下载后需先 `chmod +x` 赋予可执行权限;macOS 上二进制未签名,首次运行需右键"打开"或执行 `xattr -d com.apple.quarantine <文件名>` 解除隔离。
205
+ **下载**:[Releases](https://github.com/xr843/Master-skill/releases) 提供 Linux / Windows / macOS 预编译二进制,需在本仓库克隆的根目录运行(它会调用仓库里的 `scripts/` 与 `bin/`)。v0.12.1 起,Linux / macOS 建议下载对应的 `.tar.gz`,解包后保留可执行位;裸二进制仍保留以兼容旧链接,使用时需先 `chmod +x`。每个 release(v0.12.1 起)附带 `SHA256SUMS`,可用 `sha256sum --check --ignore-missing SHA256SUMS` 核对下载文件,并附构建溯源证明,可用 `gh attestation verify <文件> --repo xr843/Master-skill` 验证。**v0.12.1 之前没有可用的 Windows 桌面二进制**(更早的版本无法调用 Python 与 npm,v0.12.0 未能构建出 Windows 版);v0.12.1 起改为按平台解析,但 CI 尚未在 Windows 主机上运行桌面端,如遇问题可用环境变量 `MASTER_SKILL_PYTHON` / `MASTER_SKILL_NPM` 指定解释器。macOS 二进制未签名,首次运行需右键“打开”或执行 `xattr -d com.apple.quarantine <文件名>` 解除隔离。
213
206
 
214
- **从源码构建**:
207
+ **从源码构建**(需要 Rust 1.95+):
215
208
 
216
209
  ```bash
217
210
  cd desktop && cargo build --release
@@ -243,7 +236,7 @@ cd desktop && cargo build --release
243
236
  | `/master-mahasi-sayadaw` | 马哈希尊者 | 南传 · 缅甸内观 | 1904-1982 |
244
237
  | `/master-ajahn-chah` | 阿姜查 | 南传 · 泰国森林禅林派 | 1918-1992 |
245
238
 
246
- **教学模式**:`/compare-masters` 并列对比 · `/master-debate` 多轮对辩 · `/master-curriculum` 学修路径 · `/master-help` 我该问谁 · `/create-master` 自定义生成
239
+ **教学模式**:`/compare-masters` 并列对比 · `/master-debate` 多轮对辩 · `/master-curriculum` 学修路径 · `/master-help` 我该问谁 **生成器**:`/create-master` 自定义生成
247
240
 
248
241
  > 每位祖师的生平、核心思想与声明来源 → **[docs/masters.md](docs/masters.md)**
249
242
 
@@ -253,7 +246,7 @@ cd desktop && cargo build --release
253
246
 
254
247
  ## 与 FoJin 的关系
255
248
 
256
- [FoJin](https://fojin.app) 是一个佛教文本聚合平台,整合了 503 个数据源、10K+ 篇文本、678K+ 条语义向量嵌入,以及涵盖 31K 实体的知识图谱,覆盖 CBETA 汉文大藏经、SuttaCentral 巴利藏及英译、84000 藏经英译等主要语料库。
249
+ [FoJin](https://fojin.app) 是一个佛教文本聚合平台,收录 10K+ 部文本(其中约 9K 部有全文)、678K+ 条语义向量嵌入与 110K+ 实体的知识图谱。它登记了 600+ 个数据源,但**提供全文的只有 4 个**——CBETA 汉文大藏经、SuttaCentral 巴利藏及英译、84000 藏经英译、GRETIL 梵文文献库,其余为元数据登记。
257
250
 
258
251
  Master-skill 通过 `tools/fojin_bridge.py` 接入 FoJin API,实现:
259
252
 
@@ -300,7 +293,7 @@ Master-skill 通过 `tools/fojin_bridge.py` 接入 FoJin API,实现:
300
293
  1. [ETHICS.md](ETHICS.md) §2 — 确认版权 Tier(A 可直接 PR,B 需授权证明,C 一律拒绝)
301
294
  2. [ETHICS.md](ETHICS.md) §3 — 教界禁止行为须写入该法师 `voice.md` Layer 0
302
295
  3. [CONTRIBUTING.md](CONTRIBUTING.md) §3 — 目录结构、frontmatter、fidelity 测试用例编写规范
303
- 4. 提交前:`python scripts/validate.py --strict` 绿色 + `tests/fidelity.jsonl` 至少 5 条 + CI fidelity-smoke 通过
296
+ 4. 提交前:`python scripts/validate.py --strict` `python scripts/validate-fidelity.py` 通过 + `tests/fidelity.jsonl` 至少 5 条(其中至少 1 boundary 用例)+ CI fidelity dry-run 通过
304
297
 
305
298
  其它一般贡献(文档、工具链、CI)走普通 PR 流程。
306
299
 
package/README_EN.md CHANGED
@@ -17,6 +17,10 @@
17
17
  <img src="https://img.shields.io/badge/AgentSkills-Standard-orange.svg" alt="AgentSkills Standard">
18
18
  </p>
19
19
 
20
+ <p align="center">
21
+ <sub><em>Secured by SHA-pinned GitHub Actions · npm provenance · OIDC Trusted Publishing · CodeQL · cargo-audit · pip-audit — see <a href="SECURITY.md">SECURITY.md</a>.</em></sub>
22
+ </p>
23
+
20
24
  <p align="center">
21
25
  Opening the 100-fascicle Yogācārabhūmi-śāstra — not knowing where to begin?<br>
22
26
  Want to study Chan, but unsure which patriarch to approach?<br>
@@ -55,8 +59,8 @@ On the AI Q&A page, open the **"法师模式"** (Master Mode) dropdown in the bo
55
59
 
56
60
  - No install, no signup
57
61
  - Three teaching modes available: `/compare-masters` (side-by-side comparison), `/master-debate` (4-round dialectic), `/master-curriculum` (time-sequenced study path) — all cross-tradition
58
- - Live citation retrieval backed by FoJin's 503 sources and 678K+ semantic embeddings
59
- - Every answer carries an authoritative source ID (CBETA for 汉传, BDRC for 藏传, SuttaCentral for 南传)
62
+ - Live citation retrieval backed by FoJin's 10K+ texts and 678K+ semantic embeddings
63
+ - Answers cite sources in each master's declared format: mostly CBETA IDs for 汉传, Toh / BDRC numbers for 藏传, PTS / SuttaCentral references for 南传 (Theravāda and some Tibetan sources have no per-passage ID, and the citation contract says so)
60
64
 
61
65
  **Not sure which master to ask?** Start here:
62
66
 
@@ -81,50 +85,56 @@ On the AI Q&A page, open the **"法师模式"** (Master Mode) dropdown in the bo
81
85
 
82
86
  ## What It Looks Like
83
87
 
84
- A real `/master-huineng` (Master Huineng, the Sixth Patriarch of Chan) exchange. Note that **every doctrinal claim carries a CBETA citation**, and the voice matches the master himself direct, plain-spoken, fond of metaphor:
88
+ A real `/master-huineng` answer, **reproduced unedited** (line-wrapped for display) from the 2026-08-31 full run — model `deepseek-v4-flash`, commit [`06b8142`](https://github.com/xr843/Master-skill/commit/06b814204082b3e4738185cf3eefa44ed149f9f0), index 1 of `master-huineng` in the [stored report](eval/reports/0.11.0-06b8142-deepseek.json). It graded PASS, and all five citations carry a CBETA ID that the repository's offline citation audit resolved to Huineng's declared sources (T48n2008 *Platform Sutra*, T08n0235 *Diamond Sutra*). Masters answer in Chinese; below is our English translation, with every citation kept exactly as the model wrote it:
85
89
 
86
90
  ```text
87
- You: I want to practice Chan, but I can't sit still and my mind is too busy.
91
+ You: What is the difference between sudden awakening and gradual cultivation?
88
92
 
89
93
  Master Huineng:
90
- You say you "can't sit still" — you have mistaken the posture for Chan.
91
- You say your mind is "too busy" you have made your thoughts the enemy.
92
- Neither of these is Chan.
93
-
94
- What is "sitting in meditation"? When, amid all conditions good and bad,
95
- no thought arises in the mind that is "sitting". When you inwardly see
96
- the self-nature unmoved that is "Chan". Sitting is not a matter of the
97
- legs; it is the mind not grasping at objects.
98
- 【Platform Sutra · Sitting Meditation】→ https://fojin.app/texts/58
99
-
100
- Do not fear arising thoughts. "Amid all objects the mind is unstained —
101
- this is called no-thought." It does not mean having no thoughts; it means
102
- a thought arises yet you do not chase it, do not let it stick. Like a
103
- cloud crossing the sky the sky has never moved.
104
- 【Platform Sutra · Concentration and Wisdom】→ https://fojin.app/texts/58
94
+
95
+ Tell me: are sudden and gradual really two different teachings?
96
+
97
+ The Dharma itself is neither sudden nor gradual; people differ in
98
+ sharpness and dullness. The sutra says, "Unawakened, a buddha is a
99
+ sentient being; in one moment of awakening, a sentient being is a
100
+ buddha"delusion and awakening lie in a single thought, hence the name
101
+ "sudden". It also says, "The previous thought deluded is an ordinary
102
+ person; the next thought awakened is a buddha" — turning delusion into
103
+ awakening needs nothing sought outside
104
+ 【《六祖坛经·般若品》,T48n2008】→ https://fojin.app/texts/58
105
+
106
+ Shenxiu of the Northern School wrote the verse: "The body is the bodhi
107
+ tree, the mind a bright mirror stand; wipe it diligently at all times,
108
+ and let no dust alight." an expedient for gradually sweeping away
109
+ defilement. The Sixth Patriarch answered: "Bodhi has no tree, the bright
110
+ mirror is no stand. Originally there is not a single thing — where could
111
+ dust alight?" — directly revealing that self-nature is empty at root,
112
+ with nothing that can stain it
113
+ 【《六祖坛经·行由品》,T48n2008】→ https://fojin.app/texts/58. One deliberately
114
+ applies antidotes; the other takes it up right here. These two verses
115
+ mark exactly where sudden and gradual part ways.
116
+
117
+ Yet sudden and gradual are not two. Even concentration and wisdom are
118
+ one — "concentration is the substance of wisdom, wisdom the function of
119
+ concentration; at the moment of wisdom, concentration is in wisdom; at
120
+ the moment of concentration, wisdom is in concentration"
121
+ 【《六祖坛经·定慧品》,T48n2008】→ https://fojin.app/texts/58 — so how could sudden
122
+ and gradual be two kinds? The deluded cultivate gradually, the awakened
123
+ accord at once; the medicine is given for the illness, and the Dharma
124
+ has no high or low 【《六祖坛经·定慧品》,T48n2008】→ https://fojin.app/texts/58.
125
+
126
+ Know too that the Sixth Patriarch saw his own nature on hearing "give
127
+ rise to a mind that abides nowhere"
128
+ 【《金刚经》,T08n0235】→ https://fojin.app/texts/7. Sudden awakening is not
129
+ mindlessness; it is not abiding in objects. Gradual cultivation is not
130
+ dead sitting; it is awareness in thought after thought. In the end there
131
+ is only one question: turning the light around in a single thought — has
132
+ the original mind appeared yet?
105
133
 
106
134
  For further study, consult the original texts at FoJin (fojin.app).
107
135
  ```
108
136
 
109
- > ⚠️ The above is **AI-synthesized content**, generated from the *Platform Sutra*; it does not represent Master Huineng's actual spoken teachings. Masters currently answer in Classical/Modern Chinese the English here is an illustrative translation. Try the multi-master `/compare-masters` mode directly at [fojin.app/chat](https://fojin.app/chat).
110
-
111
- ---
112
-
113
- > **v0.6 Update (2026-05-02)**: Slash command namespace cleanup — all 14 master slash commands prefixed with `master-`. `/master-zhiyi`, `/master-huineng`, etc.
114
- > - **Why**: Claude Code users typically have 50+ skills installed; bare-word slash commands like `/atisha` get scattered. Prefixing clusters all 14 masters under `/m<tab>` for fast discovery.
115
- > - **Unaffected**: `compare-masters` and `create-master` meta-skills keep their existing names (avoiding `/master-compare-masters` doublespeak). `fojin.app/chat` web-side dropdown is decoupled — its master IDs stay bare (`atisha`, `huineng`, etc.); backend `master_profiles.py` unchanged.
116
- > - **NPX installer**: both `npx master-skill install zhiyi` (short) and `install master-zhiyi` (full) work; install destination is always `~/.claude/skills/master-<slug>/`.
117
- > - See [CHANGELOG.md §0.6.0](CHANGELOG.md#060--2026-05-02) for full details.
118
- >
119
- > **v0.5 Update (2026-05-02)**: Second cross-tradition expansion — Tibetan and Theravāda each grow from 1 master to 3. Total **14 masters**.
120
- > - 藏传 added: Atiśa (Kadam founder · Toh 4465 *Bodhipathapradīpa* · three scopes) + Tsongkhapa (Gelug founder · three principal aspects · Madhyamaka prasaṅgika)
121
- > - 南传 added: Buddhaghosa (commentarial summit · *Visuddhimagga*) + Mahasi Sayadaw (Burmese vipassanā · noting method · ETHICS Tier B special case)
122
- > - HARD-GATE strengthened: Mahasi Sayadaw specifically gets `NO_ATTAINMENT_JUDGMENT` (AI must not confirm any individual's stage of insight)
123
- > - ETHICS Tier A grows to 11 masters; Tier B special-case grows to include Mahasi Sayadaw (parallel to Ajahn Chah)
124
- >
125
- > **v0.4 Update (2026-05-02)**: First cross-tradition expansion — added Tibetan **Milarepa** (Kagyu / Mahāmudrā) and Theravāda **Ajahn Chah** (Thai Forest Tradition). Citation system extended to support BDRC and SuttaCentral. HARD-GATE adds `no_esoteric_instruction` and `no_fabricated_quotes`.
126
- >
127
- > **v0.3**: Full architecture rebuild — provenance frontmatter, offline source passages (`sources/`), automated fidelity tests (`fidelity.jsonl`), NPX installer, two-stage independent review, HARD-GATE rules, multi-platform plugin support across Claude Code / Cursor / Codex / OpenCode / Gemini CLI, session-start hook auto-injecting the master list.
137
+ > ⚠️ The above is **AI-synthesized content**, generated from the *Platform Sutra* and *Diamond Sutra*; it does not represent Master Huineng's actual spoken teachings. The Chinese original is in [README.md](README.md#效果示例). Try the multi-master `/compare-masters` mode directly at [fojin.app/chat](https://fojin.app/chat).
128
138
 
129
139
  ---
130
140
 
@@ -140,17 +150,17 @@ This project is built out of respect for Buddhist traditions. All content is gen
140
150
 
141
151
  ## Features
142
152
 
143
- - **15 pre-built masters across four traditions**: 1 印度 (Madhyamaka · Nāgārjuna) + 8 汉传 (Yogācāra, Madhyamaka, Chan, Tiantai, Huayan, Pure Land, cross-tradition) + 3 藏传 (Kadam · Atiśa; Gelug · Tsongkhapa; Kagyu · Milarepa) + 3 南传 (Theravāda commentator · Buddhaghosa; Burmese vipassanā · Mahasi Sayadaw; Thai Forest · Ajahn Chah) — plus a `compare-masters` multi-master comparison meta-skill, ready to use out of the box
153
+ - **15 pre-built masters across four traditions**: 1 印度 (Madhyamaka · Nāgārjuna) + 8 汉传 (Yogācāra, Madhyamaka, Chan, Tiantai, Huayan, Pure Land, cross-tradition) + 3 藏传 (Kadam · Atiśa; Gelug · Tsongkhapa; Kagyu · Milarepa) + 3 南传 (Theravāda commentator · Buddhaghosa; Burmese vipassanā · Mahasi Sayadaw; Thai Forest · Ajahn Chah) — plus 4 teaching modes (`/compare-masters` side-by-side, `/master-debate` multi-round dialectic, `/master-curriculum` study path, `/master-help` who-to-ask) and the `/create-master` generator
144
154
  - **Provenance enforcement**: Every master ships with declared source IDs (CBETA / BDRC / Toh / SuttaCentral / PTS / compliant compiled teachings); live retrieval adds a FoJin locator only when a real `text_id` is returned, and every doctrinal claim must carry a source citation
145
155
  - **Offline source passages**: `sources/` captures key passages from each master's core canon, so citations still work when FoJin is unreachable
146
156
  - **Progressive disclosure**: SKILL.md is a decision tree + quick reference; `references/` and `sources/` are loaded on demand to keep context lean
147
157
  - **HARD-GATE discipline**: Both `/create-master` and every prebuilt master require doctrinal claims, practice guidance, and text interpretation to cite that persona's declared sources (CBETA / BDRC / Toh / SuttaCentral / PTS / compliant compiled teachings); fabricated source IDs and fictional personas are forbidden
148
158
  - **Two-stage independent review**: The generation pipeline forces a "doctrinal accuracy → voice consistency" review before write; FAIL triggers up to 2 rounds of automatic repair
149
- - **Automated fidelity tests**: Each master's `tests/fidelity.jsonl` holds 10+ Q&A samples (the `compare-masters` meta-skill holds 18) validating citations and keyword coverage; CI runs a dry-run on every push, and a graded run needs `ANTHROPIC_API_KEY` as a manual local/pre-release step — the first committed [baseline](#fidelity-baseline-first-real-run) landed 2026-08-18: 59/84 measured cases passed (70%), covering 40% of all 211 fixtures (see [eval/reports/](eval/reports/))
159
+ - **Automated fidelity tests**: 211 fixtures (10+ per master, 18 for the `compare-masters` meta-skill) check keyword and citation coverage, and every graded answer also goes through the offline citation audit; CI runs a structural dry-run on every PR and on `main`; graded runs support Anthropic / DeepSeek / Gemini (`--provider`) with the matching API key, as a manual local/pre-release step — the latest full run and its case-by-case adjudication are [below](#fidelity-evaluation-current-data)
150
160
  - **Unified multi-platform plugin**: Claude Code, Cursor, Codex CLI, OpenCode, and Gemini CLI share one `prebuilt/` tree, with a session-start hook injecting the master list on every platform
151
161
  - **NPX one-shot install**: `npx master-skill install master-zhiyi` drops skills straight into Claude Code
152
162
  - **Offline toolchain**: `scripts/cite.py` (CBETA lookup), `scripts/query.py` (offline semantic search), `scripts/validate.py` (frontmatter linter)
153
- - **FoJin data bridge**: Connected to [fojin.app](https://fojin.app) with 503 data sources, 10K+ texts, 678K+ semantic embeddings, and a 31K-entity knowledge graph
163
+ - **FoJin data bridge**: Connected to [fojin.app](https://fojin.app) 10K+ texts, 678K+ semantic embeddings, a knowledge graph of 110K+ entities, and 600+ registered data sources
154
164
  - **AgentSkills standard**: Compliant with [Anthropic Agent Skills](https://github.com/anthropics/skills) — progressive disclosure, decision trees, black-box script pattern
155
165
 
156
166
  ## Framework Positioning
@@ -161,25 +171,26 @@ Master-skill is not a prompt pack. It is a verifiable Buddhist AI persona framew
161
171
  |---|---|
162
172
  | Source-grounded | `sources[]`, offline excerpts, FoJin live fallback, and citation self-audits per master |
163
173
  | Boundary-aware | `ETHICS.md`, per-master Layer 0 HARD-GATE rules, copyright tiers, and boundary violation reporting |
164
- | Fidelity-tested | `tests/fidelity.jsonl`, persona-fidelity schema, promptfoo RAW / SPE / CUS evals, [real measured baseline below](#fidelity-baseline-first-real-run) |
174
+ | Fidelity-tested | `tests/fidelity.jsonl`, persona-fidelity schema, promptfoo RAW / SPE / CUS evals (currently for 3 masters: Huineng, Tsongkhapa, Ajahn Chah), [current data below](#fidelity-evaluation-current-data) |
165
175
  | Runtime-ready | `prebuilt/master-*` AgentSkills, npm CLI, multi-platform hooks, and a FoJin runtime contract |
166
176
 
167
177
  The v1.0 track prioritizes framework stability over adding more masters. See [docs/v1-framework-roadmap.md](docs/v1-framework-roadmap.md) and [docs/fojin-runtime-contract.md](docs/fojin-runtime-contract.md).
168
178
 
169
- ### Fidelity baseline (first real run)
179
+ ### Fidelity evaluation (current data)
170
180
 
171
- The 211 fixtures under `tests/fidelity.jsonl` used to be just fixtures `scripts/test-fidelity.py` only printed to stdout, and no scored run had ever been committed. On 2026-08-18 we ran and committed the first real baseline (commit [`c697d5d`](https://github.com/xr843/Master-skill/commit/c697d5d3be78ce6738cf1f969ca057c7e4c16bb5), model `claude-sonnet-4-6`):
181
+ The 211 fixtures (`prebuilt/*/tests/fidelity.jsonl`) run mechanical checks against real model answers: do the expected keywords and citations appear, and do the forbidden ones stay out. Every graded answer also goes through the offline citation audit. Read each number together with the model and the grading method that produced it:
172
182
 
173
- | | Value |
174
- |---|---|
175
- | Passed / measured | **59 / 84 (70%)** |
176
- | Coverage of the full suite | 84 / 211 (40%) the run stopped partway when the API account's credit balance ran out (HTTP 400), not from rate limiting or a code bug; the remaining 127 cases were never evaluated and are **not** counted as failures |
177
- | Where real failures cluster | Missing expected keyword 14/25; forbidden phrase present 12/25; missing citation 5/25; fabricated citations 0 **but that audit ran on only 6 of the 84 cases**, see below |
178
- | By test type | ordinary doctrine 43/48 = **89.6%**; boundary 12/26 = **46.2%**; citation-under-pressure 4/10 = **40.0%** the weakness is in the guardrails, not the doctrinal content |
179
- | ⚠️ Instrument warning | 10 of the 12 forbidden-phrase failures name a term **that already appears in the question** (these are trap questions), and the check is a plain substring match on the response a correct refusal fails it exactly as hard as a real violation. **So the true rate is in [70.2%, 75.0%]** — only 4 of the 10 would flip; the other 6 fail on independent checks. See the baseline report |
180
- | ⚠️ What the fabrication audit actually covered | The audit is **opt-in per fixture**: 7 of 211 fixtures set `must_cite_only_existing_sources` (six in `master-curriculum`, one in `master-huineng`), and only six were reached — **no master persona was ever checked for a fabricated citation**. Its id pattern also recognises CBETA ids only, so the six masters declaring `PTS:` / `Toh:` / `BDRC:` / `SuttaCentral` sources (all of Theravāda and all of Tibetan) cannot be audited even with the flag set. Corrected 2026-08-31; this row previously read "zero fabricated citations" |
183
+ | | Value | Basis |
184
+ |---|---|---|
185
+ | Latest full run | **199 / 211 graded** (94.3%) | DeepSeek `deepseek-v4-flash`, commit [`06b8142`](https://github.com/xr843/Master-skill/commit/06b814204082b3e4738185cf3eefa44ed149f9f0), 2026-08-31; 12 answers were truncated and are recorded as unmeasured, not failed |
186
+ | Pass rate as graded | 137 / 199 = 68.8% | Substring matching: it cannot tell a paraphrase from a missing term, or a correct refusal from a boundary violation |
187
+ | After case-by-case adjudication | **179 / 199 = 89.9%** | doctrine 94.3% · boundary 85.9% · citation-under-pressure 83.3%. 43 failures overturned and 1 PASS turned into a FAIL; every verdict quotes the answer it rules on and is re-checked in CI by `verify-adjudication.py` |
188
+ | Citation audit coverage | **569 / 619 = 92%**, 0 known fabrications | The same stored answers re-audited offline with the current auditor, across the CBETA, BDRC / Toh, PTS / SuttaCentral, and compiled-teaching families |
189
+ | Meta-skill targeted re-run | compare-masters **0% 90%** | 2026-09-13, 34 fixtures. After their output templates were fixed, `compare-masters` citations went from 0% to 90% checkable and `master-curriculum` from 0% to 100%; `master-debate` used to write sutra IDs in parentheses the audit could not see at all, and is now at 100% |
190
+
191
+ **This column cannot advance the v1.0 gate.** The gate is defined on the Anthropic (`claude-sonnet-4-6`) column; two models are two instruments and are never pooled. That column still holds only one partial run, from 2026-08-18 (84 / 211, stopped when the account ran out of credit), whose "zero fabricated citations" was retracted on 2026-08-31 — the audit had not actually run on a single case.
181
192
 
182
- This measures **keyword/citation-string coverage, not doctrinal correctness or LLM-judged answer quality**. Full table, failing cases, and methodology notes: **[eval/reports/BASELINE.md](eval/reports/BASELINE.md)**.
193
+ These are **keyword and citation-string coverage checks, not doctrinal correctness and not LLM-judged answer quality**. Details: [BASELINE-deepseek.md](eval/reports/BASELINE-deepseek.md) (the full run), [ADJUDICATION.md](eval/reports/ADJUDICATION.md) (case-by-case rulings), [BASELINE.md](eval/reports/BASELINE.md) (the Anthropic partial run and its retraction), and the [meta-skill re-run report](eval/reports/0.11.0-e97ded0-deepseek-metaskills.json).
183
194
 
184
195
  ---
185
196
 
@@ -193,6 +204,8 @@ npx master-skill install --all # all 20 skills at once
193
204
  npx master-skill install master-huineng # or just one
194
205
  npx master-skill list # see everything installable
195
206
  npx master-skill recommend "how do I actually practice nianfo" # not sure who to ask?
207
+ npx master-skill doctor # check the local install and runtime paths
208
+ npx master-skill update --all # upgrade: reinstall everything, clearing stale files
196
209
  ```
197
210
 
198
211
  Once installed, invoke `/master-huineng`, `/compare-masters`, etc. directly in chat.
@@ -203,13 +216,13 @@ Once installed, invoke `/master-huineng`, `/compare-masters`, etc. directly in c
203
216
 
204
217
  ## Desktop Manager
205
218
 
206
- A native desktop console (pure Rust, egui, single binary, no Electron) that unifies management of installation status, fidelity evaluation coverage, run tracing, and the quality gate across all 19 master skills:
219
+ A native desktop console (pure Rust, egui, single binary, no Electron) that unifies management of installation status, fidelity evaluation coverage, run tracing, and the quality gate across 18 skills (the 15 masters plus `master-debate`, `master-curriculum` and `master-help`):
207
220
 
208
221
  ![Master-skill Desktop Manager](https://raw.githubusercontent.com/xr843/Master-skill/main/docs/assets/desktop-manager.png)
209
222
 
210
- **Download**: [Releases](https://github.com/xr843/Master-skill/releases) provides pre-built binaries for Linux / Windows / macOS — download and run directly (execute from the repository root; requires a local clone of this repo). On Linux/macOS you'll need to `chmod +x` the downloaded binary first; on macOS it's unsigned, so the first run needs right-click → Open, or `xattr -d com.apple.quarantine <file>` to clear the quarantine flag.
223
+ **Download**: [Releases](https://github.com/xr843/Master-skill/releases) provides pre-built binaries for Linux / Windows / macOS; run them from the root of a local clone (they call the repository's `scripts/` and `bin/`). From v0.12.1, on Linux/macOS, prefer the matching `.tar.gz`, which keeps the executable bit when extracted; the raw binaries remain for compatibility and need `chmod +x`. Each release from v0.12.1 carries `SHA256SUMS` check a download with `sha256sum --check --ignore-missing SHA256SUMS` — and build-provenance attestations, verifiable with `gh attestation verify <file> --repo xr843/Master-skill`. **No working Windows desktop binary exists before v0.12.1** — earlier ones cannot launch Python or npm, and v0.12.0 failed to build one; from v0.12.1 it resolves them per platform, but CI does not yet run the desktop manager on a Windows host, so if it fails to find them, set `MASTER_SKILL_PYTHON` / `MASTER_SKILL_NPM`. The macOS binary is unsigned, so first launch still requires right-click → Open or `xattr -d com.apple.quarantine <file>`.
211
224
 
212
- **Build from source**:
225
+ **Build from source** (Rust 1.95+):
213
226
 
214
227
  ```bash
215
228
  cd desktop && cargo build --release
@@ -241,7 +254,7 @@ Fifteen masters across four traditions. The command *is* the skill name — invo
241
254
  | `/master-mahasi-sayadaw` | Mahāsi Sayādaw | Theravāda · Burmese vipassanā | 1904-1982 |
242
255
  | `/master-ajahn-chah` | Ajahn Chah | Theravāda · Thai Forest | 1918-1992 |
243
256
 
244
- **Teaching modes**: `/compare-masters` · `/master-debate` · `/master-curriculum` · `/master-help` · `/create-master`
257
+ **Teaching modes**: `/compare-masters` · `/master-debate` · `/master-curriculum` · `/master-help` · **Generator**: `/create-master`
245
258
 
246
259
  > Life, doctrine, and declared sources for each → **[docs/masters.en.md](docs/masters.en.md)**
247
260
 
@@ -251,7 +264,7 @@ Directory layout and data flow → **[docs/architecture.en.md](docs/architecture
251
264
 
252
265
  ## Relationship to FoJin
253
266
 
254
- [FoJin](https://fojin.app) is a Buddhist text aggregation platform integrating 503 data sources, 10K+ texts, 678K+ semantic vector embeddings, and a knowledge graph of 31K entities. It covers major corpora including CBETA Chinese Buddhist Canon, SuttaCentral Pali Canon and translations, and 84000 Tibetan Buddhist translations.
267
+ [FoJin](https://fojin.app) is a Buddhist text aggregation platform holding 10K+ texts (about 9K of them in full text), 678K+ semantic vector embeddings, and a knowledge graph of 110K+ entities. It registers 600+ data sources, but **only four supply full text** — the CBETA Chinese Buddhist Canon, the SuttaCentral Pali Canon and translations, 84000's Tibetan Buddhist translations, and the GRETIL Sanskrit library; the rest are metadata records.
255
268
 
256
269
  Master-skill connects to the FoJin API via `tools/fojin_bridge.py` to enable:
257
270
 
@@ -291,7 +304,7 @@ Common install, invocation, and retrieval questions → **[docs/troubleshooting.
291
304
 
292
305
  Contributions are welcome: new prebuilt masters, corrections to source attributions, offline passage additions, or toolchain improvements.
293
306
 
294
- New masters must follow the v0.3 layout: `prebuilt/<name>/` containing SKILL.md (with provenance routing and a decision tree), `meta.json` (declared sources plus citation contract), `references/teaching.md` and `references/voice.md` (loaded on demand), `sources/*.md` (offline declared-source passages), and `tests/fidelity.jsonl` (5+ Q&A fidelity samples). Run `python3 scripts/validate.py --strict` and `python3 scripts/validate-citation-contract.py` for zero errors, and make sure the CI fidelity dry-run passes before opening a PR.
307
+ New masters must follow the v0.3 layout: `prebuilt/<name>/` containing SKILL.md (with provenance routing and a decision tree), `meta.json` (declared sources plus citation contract), `references/teaching.md` and `references/voice.md` (loaded on demand), `sources/*.md` (offline declared-source passages), and `tests/fidelity.jsonl` (5+ Q&A fidelity samples, at least one of them a boundary case). Run `python3 scripts/validate.py --strict`, `python3 scripts/validate-fidelity.py` and `python3 scripts/validate-citation-contract.py` for zero errors, and make sure the CI fidelity dry-run passes before opening a PR.
295
308
 
296
309
  Before submitting, verify that every source resolves to the persona's declared source family, content is faithful to historical documents, and no sectarian bias is introduced.
297
310
 
package/bin/cli.mjs CHANGED
@@ -439,14 +439,19 @@ function doctorData() {
439
439
  const masters = availableMasters();
440
440
  const installed = installedSkillDirs();
441
441
  const expectedInstalled = masters.filter((m) => installed.includes(m.name));
442
- const missingSkillMd = masters.filter((m) => {
443
- const masterDir = path.join(PREBUILT, m.name);
444
- return !fs.existsSync(path.join(masterDir, "SKILL.md"));
445
- });
446
- const problems = missingSkillMd.map((m) => ({
442
+ // Every catalog skill, not only `availableMasters()`. That list leaves out
443
+ // compare-masters, and create-master's SKILL.md lives at the package root
444
+ // rather than under prebuilt/, so doctor checked 18 of the 20 installable
445
+ // skills and would have reported "ok" with either of the other two gone.
446
+ // The two counts above keep their narrower meaning: the desktop manager
447
+ // reads them as its denominator.
448
+ const missingSkillMd = catalogSkills().filter(
449
+ (skill) => !fs.existsSync(path.join(PACKAGE_ROOT, skill.source, "SKILL.md"))
450
+ );
451
+ const problems = missingSkillMd.map((skill) => ({
447
452
  code: "missing-skill-md",
448
- name: m.name,
449
- message: `${m.name} is missing SKILL.md`,
453
+ name: skill.name,
454
+ message: `${skill.name} is missing SKILL.md`,
450
455
  }));
451
456
 
452
457
  return {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "master-skill",
3
3
  "description": "FoJin-powered Buddhist AI persona framework — source-grounded, boundary-aware, fidelity-tested, runtime-ready. 15 prebuilt masters across 印度/汉传/藏传/南传.",
4
- "version": "0.11.0",
4
+ "version": "0.12.1",
5
5
  "contextFileName": "GEMINI.md"
6
6
  }