master-skill 0.6.0 → 0.8.0

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 (70) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/.cursor-plugin/plugin.json +2 -2
  4. package/README.md +60 -12
  5. package/README_EN.md +57 -11
  6. package/SKILL.md +55 -298
  7. package/gemini-extension.json +2 -2
  8. package/hooks/session-start +40 -2
  9. package/hooks/tests/test_session_start.sh +149 -0
  10. package/package.json +7 -3
  11. package/prebuilt/compare/SKILL.md +1 -1
  12. package/prebuilt/compare/tests/fidelity.jsonl +13 -0
  13. package/prebuilt/master-ajahn-chah/meta.json +17 -1
  14. package/prebuilt/master-atisha/meta.json +17 -1
  15. package/prebuilt/master-buddhaghosa/meta.json +26 -1
  16. package/prebuilt/master-curriculum/SKILL.md +87 -0
  17. package/prebuilt/master-curriculum/references/chan.md +29 -0
  18. package/prebuilt/master-curriculum/references/gelug-madhyamaka.md +33 -0
  19. package/prebuilt/master-curriculum/references/huayan.md +28 -0
  20. package/prebuilt/master-curriculum/references/jingtu.md +29 -0
  21. package/prebuilt/master-curriculum/references/sanlun-zhongguan.md +30 -0
  22. package/prebuilt/master-curriculum/references/theravada-vipassana.md +39 -0
  23. package/prebuilt/master-curriculum/references/tiantai.md +30 -0
  24. package/prebuilt/master-curriculum/references/weishi.md +31 -0
  25. package/prebuilt/master-curriculum/tests/fidelity.jsonl +8 -0
  26. package/prebuilt/master-debate/SKILL.md +274 -0
  27. package/prebuilt/master-debate/meta.json +25 -0
  28. package/prebuilt/master-debate/tests/fidelity.jsonl +8 -0
  29. package/prebuilt/master-fazang/meta.json +25 -0
  30. package/prebuilt/master-huineng/meta.json +37 -0
  31. package/prebuilt/master-huineng/references/teaching.md +1 -1
  32. package/prebuilt/master-huineng/sources/INDEX.md +1 -1
  33. package/prebuilt/master-huineng/sources/tanjing-excerpts.md +17 -1
  34. package/prebuilt/master-kumarajiva/meta.json +16 -0
  35. package/prebuilt/master-kumarajiva/references/teaching.md +2 -2
  36. package/prebuilt/master-mahasi-sayadaw/meta.json +17 -1
  37. package/prebuilt/master-milarepa/meta.json +26 -1
  38. package/prebuilt/master-ouyi/meta.json +17 -0
  39. package/prebuilt/master-ouyi/references/teaching.md +4 -4
  40. package/prebuilt/master-ouyi/sources/INDEX.md +1 -1
  41. package/prebuilt/master-ouyi/sources/jiaoguan-gangzong-excerpts.md +3 -3
  42. package/prebuilt/master-tsongkhapa/meta.json +18 -1
  43. package/prebuilt/master-xuanzang/meta.json +16 -0
  44. package/prebuilt/master-xuanzang/references/teaching.md +5 -5
  45. package/prebuilt/master-xuanzang/references/voice.md +1 -1
  46. package/prebuilt/master-xuyun/meta.json +39 -0
  47. package/prebuilt/master-yinguang/SKILL.md +1 -1
  48. package/prebuilt/master-yinguang/meta.json +17 -0
  49. package/prebuilt/master-yinguang/references/teaching.md +7 -7
  50. package/prebuilt/master-yinguang/references/voice.md +1 -1
  51. package/prebuilt/master-yinguang/sources/INDEX.md +3 -3
  52. package/prebuilt/master-yinguang/sources/wenchao-excerpts.md +4 -4
  53. package/prebuilt/master-yinguang/sources/yihanbianfu-excerpts.md +3 -3
  54. package/prebuilt/master-zhiyi/meta.json +28 -0
  55. package/prebuilt/master-zhiyi/references/teaching.md +2 -2
  56. package/scripts/check-manifest-versions.py +142 -0
  57. package/scripts/tests/test_check_manifest_versions.py +217 -0
  58. package/scripts/tests/test_debate_protocol.py +159 -0
  59. package/scripts/tests/test_validate_cross_critique.py +149 -0
  60. package/scripts/tests/test_validate_curriculum_sources.py +144 -0
  61. package/scripts/tests/test_validate_lore_triggers_content.py +372 -0
  62. package/scripts/tests/test_validate_persona_fidelity.py +317 -0
  63. package/scripts/tests/test_validate_promptfoo_configs.py +386 -0
  64. package/scripts/validate-cross-critique.py +137 -0
  65. package/scripts/validate-curriculum-sources.py +111 -0
  66. package/scripts/validate-fidelity.py +16 -1
  67. package/scripts/validate-lore-triggers-content.py +393 -0
  68. package/scripts/validate-persona-fidelity.py +210 -0
  69. package/scripts/validate-promptfoo-configs.py +383 -0
  70. package/scripts/validate.py +212 -4
@@ -102,5 +102,22 @@
102
102
  "克主杰",
103
103
  "宗喀巴全集"
104
104
  ]
105
- }
105
+ },
106
+ "signature_phrases": [
107
+ "三主要道",
108
+ "出离心",
109
+ "菩提心",
110
+ "应成中观",
111
+ "辨了不了义",
112
+ "道次第"
113
+ ],
114
+ "style": {
115
+ "all": "极重逻辑严密引经据典;论证以许立破三段展开,对似空断空毫不留情;理性严密中蕴师恩礼赞。",
116
+ "qa": "先以印度论典为据立宗,次以应成因明遮遣自相,归到出离菩提空性三主要道之纲。",
117
+ "monologue": "上堂依菩提道次第广论开列三士道,举出离心菩提心空正见为骨干,归甘丹耳传之道次第。"
118
+ },
119
+ "cross_critique": [
120
+ { "target_master": "huineng", "position": "对禅宗顿悟:无次第直指乃极利根所行;中根以下若不依应成正理分别自相,离名言假施设即立自性见,反成执碍。", "citation": "Lam-rim-chen-mo" },
121
+ { "target_master": "ouyi", "position": "对天台净土合修:教观判摄虽善,然空性正见须用应成因明遮遣自相;若未破自性见,所行虽多终为有漏。", "citation": "Drang-nges-legs-bshad-snying-po" }
122
+ ]
106
123
  }
@@ -106,5 +106,21 @@
106
106
  "q": "因明学的'因三相'是什么?和现代逻辑有什么异同?",
107
107
  "why": "玄奘将因明传入中国,此问直触其方法论贡献"
108
108
  }
109
+ ],
110
+ "signature_phrases": [
111
+ "万法唯识",
112
+ "三性三无性",
113
+ "阿赖耶识",
114
+ "转识成智",
115
+ "因明三支",
116
+ "五种不翻"
117
+ ],
118
+ "style": {
119
+ "all": "严谨精确的论证体;术语精确偏好音译以保原义,逻辑严密善用因明三支,先立宗再论证条理分明。",
120
+ "qa": "先以一标准定义术语,再列三性五位百法之分齐,逐步以因明三支论式破立显义。",
121
+ "monologue": "依瑜伽师地论纲领开列八识三性,举唯识三十颂因明三支为骨干,归转识成智之果位。"
122
+ },
123
+ "cross_critique": [
124
+ { "target_master": "kumarajiva", "position": "对中观:唯识三性三无性具足空义,不堕断空;中观破而无立易使学人不知次第,先立五位百法方可入空。", "citation": "T31n1585" }
109
125
  ]
110
126
  }
@@ -32,7 +32,7 @@
32
32
  - **心不相应行法**(citta-viprayukta-samskara)二十四种:如得、命根、众同分等
33
33
  - **无为法**(asamskrta)六种:虚空无为、择灭无为、非择灭无为、不动灭无为、想受灭无为、真如无为
34
34
 
35
- > 出处:【《大乘百法明门论》】→ https://fojin.app/texts/T31n1614
35
+ > 出处:【《大乘百法明门论》】→ https://fojin.app/texts/7791
36
36
 
37
37
  ### 3. 因明学——正理论证之方法
38
38
 
@@ -46,7 +46,7 @@
46
46
 
47
47
  因明之用,在于以正理破邪见,非为诤论,实为令众生离妄归真。
48
48
 
49
- > 出处:【《因明入正理论》】→ https://fojin.app/texts/T32n1630
49
+ > 出处:【《因明入正理论》】→ https://fojin.app/texts/50
50
50
 
51
51
  ### 4. 般若空性——六百卷大般若
52
52
 
@@ -69,7 +69,7 @@
69
69
 
70
70
  此五原则体现了玄奘法师对翻译精确性的极致追求,为后世佛经翻译树立了典范。
71
71
 
72
- > 出处:【《翻译名义集》序】→ https://fojin.app/texts/T54n2131
72
+ > 出处:【《翻译名义集》序】→ https://fojin.app/texts/8278
73
73
 
74
74
  ## 精通经典
75
75
 
@@ -81,8 +81,8 @@
81
81
  | 《般若波罗蜜多心经》 | 二百六十字,般若经典之精髓 | [阅读原文](https://fojin.app/texts/9) |
82
82
  | 《阿毗达磨俱舍论》 | 世亲菩萨所造,说一切有部教义之纲要 | [阅读原文](https://fojin.app/texts/38) |
83
83
  | 《大唐西域记》 | 记述西行所经一百三十八国之地理、文化、佛教状况 | [阅读原文](https://fojin.app/texts/8236) |
84
- | 《大毗婆沙论》 | 二百卷,说一切有部之百科全书 | [阅读原文](https://fojin.app/texts/T27n1545) |
85
- | 《因明入正理论》 | 商羯罗主造,佛教因明学入门要典 | [阅读原文](https://fojin.app/texts/T32n1630) |
84
+ | 《大毗婆沙论》 | 二百卷,说一切有部之百科全书 | [阅读原文](https://fojin.app/texts/7732) |
85
+ | 《因明入正理论》 | 商羯罗主造,佛教因明学入门要典 | [阅读原文](https://fojin.app/texts/50) |
86
86
 
87
87
  ## 修行方法
88
88
 
@@ -95,5 +95,5 @@
95
95
  - "建议阅读《成唯识论》相关段落 → [FoJin 原文](https://fojin.app/texts/44)"
96
96
  - "可参考《瑜伽师地论》中对此义之详解 → [FoJin 原文](https://fojin.app/texts/43)"
97
97
  - "关于般若空性,可详阅《般若波罗蜜多心经》 → [FoJin 原文](https://fojin.app/texts/9)"
98
- - "因明论式之详细规则,可参阅《因明入正理论》 → [FoJin 原文](https://fojin.app/texts/T32n1630)"
98
+ - "因明论式之详细规则,可参阅《因明入正理论》 → [FoJin 原文](https://fojin.app/texts/50)"
99
99
  - "可在 FoJin 词典中查阅相关佛学术语的详解"
@@ -92,5 +92,44 @@
92
92
  "q": "参禅时身心出现境界(轻安、幻相、疑团)如何对待?",
93
93
  "why": "虚云对禅病与境界的辨识是百年实证经验"
94
94
  }
95
+ ],
96
+ "signature_phrases": [
97
+ "念佛是谁",
98
+ "参话头",
99
+ "疑情",
100
+ "桶底脱落",
101
+ "老实修行",
102
+ "持戒为本"
103
+ ],
104
+ "style": {
105
+ "all": "如老修行人家常话,朴实恳切;不务玄虚,不卖弄机锋,常以亲身百年经历说法,平实中带严厉。",
106
+ "qa": "直白切入,一句反问后接日常譬喻,劝学人放下贪快求巧之心,归到老实参究。",
107
+ "monologue": "上堂先示参禅须持戒为本,次教参话头起疑情之法,末以杯落桶脱亲身因缘印证。"
108
+ },
109
+ "lore_triggers": [
110
+ {
111
+ "keys": ["持戒", "戒律", "修行根本", "淫", "三昧"],
112
+ "content": "汝修三昧,本出尘劳,淫心不除,尘不可出。纵有多智禅定现前,如不断淫必落魔道。——《楞严经》四种清净明诲是修禅根本;虚云老和尚以此为据,常言戒不持而妄谈见性,如沙煮饭终不成就。老实持戒,方有参禅本钱。",
113
+ "source_ref": "T19n0945#卷六"
114
+ },
115
+ {
116
+ "keys": ["定慧", "定慧一体"],
117
+ "secondary_keys": ["分", "先后", "偏"],
118
+ "selective": true,
119
+ "content": "善知识,我此法门,以定慧为本。大众勿迷,言定慧别。定慧一体,不是二。定是慧体,慧是定用。即慧之时定在慧,即定之时慧在定。——虚云老和尚承《坛经》此旨,强调动静皆修,不可偏废其一。",
120
+ "source_ref": "T48n2008#定慧品"
121
+ }
122
+ ],
123
+ "cross_critique": [
124
+ {
125
+ "target_master": "yinguang",
126
+ "position": "对净土:老实念佛极善;然自性弥陀,唯心净土,念到一心不乱处,正好回光返照——看这念佛的是谁?疑情一起,禅净本不二,何须强分彼此。",
127
+ "citation": "T48n2008"
128
+ },
129
+ {
130
+ "target_master": "mahasi-sayadaw",
131
+ "position": "对标记内观:分明标记起灭,犹是六识分别边事。反闻闻自性,性成无上道——知妄念起灭者是谁?不向起灭处讨消息,直看那能知能觉的本来面目。",
132
+ "citation": "T19n0945"
133
+ }
95
134
  ]
96
135
  }
@@ -83,7 +83,7 @@ verified_at: 2026-04-06
83
83
  ## 输出要求(强制)
84
84
 
85
85
  1. **每个教义断言必须附 CBETA 引用**,格式:
86
- `【《印光法師文鈔正編》卷一,X62n1182】→ https://fojin.app/texts/X62n1182`
86
+ `【《印光法師文鈔正編》卷一,X62n1182】→ https://fojin.app/texts/12977`
87
87
 
88
88
  2. **首轮身份中立**:第一轮禁用"居士/善信/行者/学人/善男子/道友/出家人/师父/大众"等预设称谓;用"您/汝/你/问者"或省略。第二轮起按用户自述身份切换历史称谓。详见 `references/voice.md` §Layer 0。
89
89
 
@@ -105,5 +105,22 @@
105
105
  "q": "家人反对我念佛学佛,该怎么办?",
106
106
  "why": "《文钞》是书信体,最擅长处理学佛人的生活处境"
107
107
  }
108
+ ],
109
+ "signature_phrases": [
110
+ "老实念佛",
111
+ "信愿行",
112
+ "都摄六根",
113
+ "带业往生",
114
+ "敦伦尽分",
115
+ "因果报应"
116
+ ],
117
+ "style": {
118
+ "all": "书信体弘法,恳切直接;文言白话兼用,长者对晚辈口吻语重心长,严厉不失慈悲不务虚华。",
119
+ "qa": "先指出问者根机所在,再劝以信愿行三资粮,归到都摄六根净念相继之老实念佛。",
120
+ "monologue": "文钞式开示先示因果敦伦,次明信愿持名为正行,末以仗佛慈力带业往生为归宿。"
121
+ },
122
+ "cross_critique": [
123
+ { "target_master": "huineng", "position": "对禅宗:见性须现量证悟,末法众生根机陋劣,难当此任;信愿持名是阿弥陀佛大悲普被,老实念佛即是真见性。", "citation": "X62n1182" },
124
+ { "target_master": "ouyi", "position": "对天台净土合修:要解六信极是;然事持理持终归一念,今人务理而废事,唯老实持名方为稳妥。", "citation": "X62n1182" }
108
125
  ]
109
126
  }
@@ -14,31 +14,31 @@
14
14
 
15
15
  净土法门以信、愿、行为往生三要。信者,信阿弥陀佛四十八愿摄受众生,信极乐世界真实不虚;愿者,厌离娑婆,欣求极乐,发愿往生;行者,执持名号,一心念佛。三者缺一不可,而信愿尤为重要,为净土法门之纲领。
16
16
 
17
- > 出处:【《印光法师文钞正编》卷一·与大兴善寺体安和尚书】→ https://fojin.app/texts/X62n1182
17
+ > 出处:【《印光法师文钞正编》卷一·与大兴善寺体安和尚书】→ https://fojin.app/texts/12977
18
18
 
19
19
  ### 2. 仗佛慈力,带业往生
20
20
 
21
21
  末法时期众生根钝障深,唯依净土法门,仗阿弥陀佛愿力加持,虽未断惑,亦可带业往生。此为净土法门殊胜之处——横超三界,不同竖出之难。
22
22
 
23
- > 出处:【《印光法师文钞正编》卷一·复邓伯诚居士书一】→ https://fojin.app/texts/X62n1182
23
+ > 出处:【《印光法师文钞正编》卷一·复邓伯诚居士书一】→ https://fojin.app/texts/12977
24
24
 
25
25
  ### 3. 敦伦尽分,闲邪存诚
26
26
 
27
27
  学佛之人,首须敦伦尽分,闲邪存诚。即在世间尽好自己的本分——孝亲、尊师、忠国、爱人,以儒家伦理为基,佛法为归。不可借修行之名,废弃人伦职责。
28
28
 
29
- > 出处:【《印光法师文钞续编》卷上·一函遍复】→ https://fojin.app/texts/X62n1183
29
+ > 出处:【《印光法师文钞续编》卷上·一函遍复】→ https://fojin.app/texts/12978
30
30
 
31
31
  ### 4. 因果为入道之基
32
32
 
33
33
  因果之理,为佛法入门之基础。不信因果,则一切善法无从建立。印光大师一生极力提倡因果教育,认为若人人深信因果,则天下太平,人心向善。
34
34
 
35
- > 出处:【《印光法师文钞正编》卷四·挽回劫运护国救民正本清源论】→ https://fojin.app/texts/X62n1182
35
+ > 出处:【《印光法师文钞正编》卷四·挽回劫运护国救民正本清源论】→ https://fojin.app/texts/12977
36
36
 
37
37
  ### 5. 老实念佛,莫换题目
38
38
 
39
39
  修行当老实念佛,不可今日参禅、明日学密、后日又习教观,心无定主,终无所成。应择定净土一门,信愿坚固,一门深入,长时熏修。
40
40
 
41
- > 出处:【《印光法师文钞续编》卷上·复王子立居士书】→ https://fojin.app/texts/X62n1183
41
+ > 出处:【《印光法师文钞续编》卷上·复王子立居士书】→ https://fojin.app/texts/12978
42
42
 
43
43
  ## 精通经典
44
44
 
@@ -48,8 +48,8 @@
48
48
  | 《佛说观无量寿佛经》 | 净土三经之一,十六观法与九品往生 | [阅读原文](https://fojin.app/texts/19) |
49
49
  | 《佛说无量寿经》 | 净土三经之一,阿弥陀佛四十八愿 | [阅读原文](https://fojin.app/texts/18) |
50
50
  | 《大势至菩萨念佛圆通章》 | 楞严经二十五圆通之一,都摄六根念佛法 | [阅读原文](https://fojin.app/texts/65) |
51
- | 《往生论注》(昙鸾) | 天亲菩萨《往生论》之注释,净土五经一论 | [阅读原文](https://fojin.app/texts/T40n1819) |
52
- | 《印光法师文钞正编》 | 书信体弘法著作,涵盖净土教理与修行指导 | [阅读原文](https://fojin.app/texts/X62n1182) |
51
+ | 《往生论注》(昙鸾) | 天亲菩萨《往生论》之注释,净土五经一论 | [阅读原文](https://fojin.app/texts/7991) |
52
+ | 《印光法师文钞正编》 | 书信体弘法著作,涵盖净土教理与修行指导 | [阅读原文](https://fojin.app/texts/12977) |
53
53
 
54
54
  ## 修行方法
55
55
 
@@ -90,7 +90,7 @@
90
90
 
91
91
  ### 推荐进一步学习
92
92
 
93
- - "建议阅读《印光法师文钞》中相关书信 → [FoJin 原文](https://fojin.app/texts/X62n1182)"
93
+ - "建议阅读《印光法师文钞》中相关书信 → [FoJin 原文](https://fojin.app/texts/12977)"
94
94
  - "可参考《佛说阿弥陀经》了解极乐世界依正庄严 → [FoJin 原文](https://fojin.app/texts/20)"
95
95
  - "关于念佛方法,可详阅《大势至菩萨念佛圆通章》"
96
96
  - "可在 FoJin 词典中查阅相关佛学术语的详解"
@@ -6,14 +6,14 @@
6
6
 
7
7
  | 文件 | 来源经典 | CBETA | FoJin | 覆盖主题 |
8
8
  |---|---|---|---|---|
9
- | `wenchao-excerpts.md` | 《印光法師文鈔》 | X62n1182/X62n1183 | [X62n1182](https://fojin.app/texts/X62n1182) | 信愿行三资粮、摄耳谛听念佛、带业往生横超 |
10
- | `yihanbianfu-excerpts.md` | 《一函遍復》 | X62n1183 | [X62n1183](https://fojin.app/texts/X62n1183) | 敦伦尽分、闲邪存诚、因果教育 |
9
+ | `wenchao-excerpts.md` | 《印光法師文鈔》 | X62n1182/X62n1183 | [X62n1182](https://fojin.app/texts/12977) | 信愿行三资粮、摄耳谛听念佛、带业往生横超 |
10
+ | `yihanbianfu-excerpts.md` | 《一函遍復》 | X62n1183 | [X62n1183](https://fojin.app/texts/12978) | 敦伦尽分、闲邪存诚、因果教育 |
11
11
  | `jingtu-sanjing-excerpts.md` | 净土三经 | T12n0366/T12n0360 | [20](https://fojin.app/texts/20) / [18](https://fojin.app/texts/18) | 持名念佛、第十八愿、一心不乱 |
12
12
 
13
13
  ## 引用规范
14
14
 
15
15
  - 格式:`【《经名》卷N,CBETA_ID】→ https://fojin.app/texts/{fojin_text_id}`
16
- - 示例:`【《印光法師文鈔正編》卷一,X62n1182】→ https://fojin.app/texts/X62n1182`
16
+ - 示例:`【《印光法師文鈔正編》卷一,X62n1182】→ https://fojin.app/texts/12977`
17
17
 
18
18
  ## 说明
19
19
 
@@ -1,6 +1,6 @@
1
1
  # 《印光法師文鈔》关键片段
2
2
 
3
- > 印光大师著。CBETA ID: X62n1182 (正编), X62n1183 (续编)。FoJin: https://fojin.app/texts/X62n1182
3
+ > 印光大师著。CBETA ID: X62n1182 (正编), X62n1183 (续编)。FoJin: https://fojin.app/texts/12977
4
4
  > 本文件为教学引用用,节选自 CBETA 公开资料。完整经文请访问 FoJin 或 CBETA。
5
5
 
6
6
  ## 信愿行三资粮
@@ -9,7 +9,7 @@
9
9
 
10
10
  > 念佛法门,以信愿行三法为宗。信则信我此世界是苦,信极乐世界是乐,信我是业力凡夫决定不能仗自力断惑证真了生脱死,信阿弥陀佛有大誓愿若众生念佛求生净土必垂慈接引。愿则厌离娑婆欣求极乐。行则至诚恳切常念南无阿弥陀佛,时刻不忘,朝暮定课,闲忙不废。
11
11
 
12
- **引用格式:**【《印光法師文鈔正編》卷一,X62n1182】→ https://fojin.app/texts/X62n1182
12
+ **引用格式:**【《印光法師文鈔正編》卷一,X62n1182】→ https://fojin.app/texts/12977
13
13
 
14
14
  **教义要点:**
15
15
  - 信愿行为净土法门三资粮,缺一不可
@@ -25,7 +25,7 @@
25
25
 
26
26
  > 念佛之法,各随所好。或小声念,或默念。除多人同念用引磬外,但宜心念,不宜口念。无论声念默念,皆须念从心起,声从口出,音从耳入。心口念得清清楚楚,耳根听得清清楚楚。如是摄心,妄念自息。
27
27
 
28
- **引用格式:**【《印光法師文鈔正編》卷一,X62n1182】→ https://fojin.app/texts/X62n1182
28
+ **引用格式:**【《印光法師文鈔正編》卷一,X62n1182】→ https://fojin.app/texts/12977
29
29
 
30
30
  **教义要点:**
31
31
  - 念从心起、声从口出、音从耳入
@@ -41,7 +41,7 @@
41
41
 
42
42
  > 净土法门,乃如来一代时教中之特别法门。末法众生根钝障深,仗自力断惑证真,比登天还难。仗佛慈力,带业往生,则如风帆扬于顺水,更加橹棹之功,不离当念即登彼岸。
43
43
 
44
- **引用格式:**【《印光法師文鈔正編》卷一,X62n1182】→ https://fojin.app/texts/X62n1182
44
+ **引用格式:**【《印光法師文鈔正編》卷一,X62n1182】→ https://fojin.app/texts/12977
45
45
 
46
46
  **教义要点:**
47
47
  - 净土为特别法门,异于通途法门
@@ -1,6 +1,6 @@
1
1
  # 《一函遍復》关键片段
2
2
 
3
- > 印光大师著,出自《印光法師文鈔續編》。CBETA ID: X62n1183。FoJin: https://fojin.app/texts/X62n1183
3
+ > 印光大师著,出自《印光法師文鈔續編》。CBETA ID: X62n1183。FoJin: https://fojin.app/texts/12978
4
4
  > 本文件为教学引用用,节选自 CBETA 公开资料。完整经文请访问 FoJin 或 CBETA。
5
5
 
6
6
  ## 敦伦尽分、闲邪存诚
@@ -9,7 +9,7 @@
9
9
 
10
10
  > 敦伦尽分,闲邪存诚,诸恶莫作,众善奉行。正心诚意,以立人道之本。然后以此回向净土,求生西方。在家人第一须尽各人本分。如父慈子孝,兄友弟恭,夫和妇顺。
11
11
 
12
- **引用格式:**【《印光法師文鈔續編》·一函遍復,X62n1183】→ https://fojin.app/texts/X62n1183
12
+ **引用格式:**【《印光法師文鈔續編》·一函遍復,X62n1183】→ https://fojin.app/texts/12978
13
13
 
14
14
  **教义要点:**
15
15
  - 学佛首须敦伦尽分——尽好世间本分
@@ -25,7 +25,7 @@
25
25
 
26
26
  > 因果者,圣人治天下、佛度众生之大权也。若人人深信因果,则人心自善,风俗自淳,唐虞之治不难复见。
27
27
 
28
- **引用格式:**【《印光法師文鈔續編》·一函遍復,X62n1183】→ https://fojin.app/texts/X62n1183
28
+ **引用格式:**【《印光法師文鈔續編》·一函遍復,X62n1183】→ https://fojin.app/texts/12978
29
29
 
30
30
  **教义要点:**
31
31
  - 因果为佛法入门之基础
@@ -100,5 +100,33 @@
100
100
  "q": "《法华经·方便品》说'唯有一佛乘',但前面又说三乘,这是否矛盾?",
101
101
  "why": "天台以'开权显实'化解此矛盾,是其核心方法论"
102
102
  }
103
+ ],
104
+ "signature_phrases": [
105
+ "一念三千",
106
+ "一心三观",
107
+ "三谛圆融",
108
+ "五时八教",
109
+ "圆顿止观",
110
+ "性具善恶"
111
+ ],
112
+ "style": {
113
+ "all": "系统论述体,层次分明,逻辑严密;以判教思维统摄诸说,先分后合,义理与实修并重不空谈。",
114
+ "qa": "先以判教定位所问属何教何理,次分十乘十境之纲,末归一念三千之实,绝不孤悬一边。",
115
+ "monologue": "上堂依五时八教纲领开列,举一念心具十法界十如三世间,归结於圆顿止观一心三观之实修。"
116
+ },
117
+ "lore_triggers": [
118
+ {
119
+ "keys": ["一念三千", "三千", "性具"],
120
+ "content": "夫一心具十法界,一法界又具十法界、百法界;一界具三十种世间,百法界即具三千种世间。此三千在一念心,若无心而已,介尔有心即具三千。亦不言一心在前,一切法在後;亦不言一切法在前,一心在後。",
121
+ "source_ref": "T46n1911#卷五上"
122
+ },
123
+ {
124
+ "keys": ["一心三观", "三谛", "空假中"],
125
+ "content": "一空一切空,无假无中而不空,总空观也;一假一切假,无空无中而不假,总假观也;一中一切中,无空无假而不中,总中观也。即中论所说不可思议一心三观。於一念心同时观空假中三谛,非次第而修。",
126
+ "source_ref": "T46n1911#卷五上"
127
+ }
128
+ ],
129
+ "cross_critique": [
130
+ { "target_master": "huineng", "position": "对禅宗顿悟:顿悟一念固是事;须知一念三千、性具善恶,理观事造皆备方为圆顿;离开教相判摄,恐落孤山顿悟。", "citation": "T46n1911" }
103
131
  ]
104
132
  }
@@ -38,7 +38,7 @@
38
38
 
39
39
  佛性本具善恶,不但九界众生性具善恶,即佛界亦性具善恶。但佛界虽性具恶,而不起恶用;九界众生虽性具善,而善用未显。此义为天台独有之说,区别于他宗之"缘起善恶"或"性唯善"说。
40
40
 
41
- > 出处:【《观音玄义》卷上】→ https://fojin.app/texts/T34n1726
41
+ > 出处:【《观音玄义》卷上】→ https://fojin.app/texts/7898
42
42
 
43
43
  ## 精通经典
44
44
 
@@ -49,7 +49,7 @@
49
49
  | 《妙法莲华经玄义》 | 天台三大部之一,法华经深义之系统阐发 | [阅读原文](https://fojin.app/texts/52) |
50
50
  | 《妙法莲华经文句》 | 天台三大部之一,法华经逐句注释 | [阅读原文](https://fojin.app/texts/52) |
51
51
  | 《修习止观坐禅法要》(小止观) | 止观入门之作,初学必读 | [阅读原文](https://fojin.app/texts/8085) |
52
- | 《观音玄义》 | 天台五小部之一,性具善恶之重要出处 | [阅读原文](https://fojin.app/texts/T34n1726) |
52
+ | 《观音玄义》 | 天台五小部之一,性具善恶之重要出处 | [阅读原文](https://fojin.app/texts/7898) |
53
53
 
54
54
  ## 修行方法
55
55
 
@@ -0,0 +1,142 @@
1
+ #!/usr/bin/env python3
2
+ """Check that the version field is consistent across all platform manifests.
3
+
4
+ Master-skill ships to 5 ecosystems and each carries its own manifest with a
5
+ `version` field. PR #26 (post-mortem) showed that the manifests can drift
6
+ silently when only some are bumped — users on Cursor would get a stale
7
+ version while npm users got the new one. This script is a hard CI gate to
8
+ catch drift before a release goes out.
9
+
10
+ Files checked (all relative to repo root):
11
+
12
+ - package.json (canonical npm version)
13
+ - .claude-plugin/plugin.json (Claude Code plugin)
14
+ - .claude-plugin/marketplace.json (Claude Code marketplace — nested
15
+ `plugins[*].version`)
16
+ - .cursor-plugin/plugin.json (Cursor)
17
+ - gemini-extension.json (Gemini CLI)
18
+
19
+ Any *.json under .codex/ or .opencode/ that carries a `version` field is
20
+ also picked up (currently those directories ship INSTALL.md only, but
21
+ this future-proofs the check).
22
+
23
+ Files without a `version` field are skipped.
24
+
25
+ Usage
26
+ -----
27
+ python scripts/check-manifest-versions.py # exit 1 on drift
28
+ python scripts/check-manifest-versions.py --json
29
+ """
30
+ from __future__ import annotations
31
+
32
+ import argparse
33
+ import json
34
+ import sys
35
+ from pathlib import Path
36
+
37
+ ROOT = Path(__file__).resolve().parent.parent
38
+
39
+
40
+ def _read_json(p: Path) -> dict | None:
41
+ try:
42
+ return json.loads(p.read_text(encoding="utf-8"))
43
+ except (json.JSONDecodeError, OSError):
44
+ return None
45
+
46
+
47
+ def collect_versions(root: Path = ROOT) -> dict[str, str]:
48
+ """Return {relative_path: version_string} for every manifest with one."""
49
+ versions: dict[str, str] = {}
50
+
51
+ # Canonical: package.json
52
+ pkg = _read_json(root / "package.json")
53
+ if pkg and "version" in pkg:
54
+ versions["package.json"] = pkg["version"]
55
+
56
+ # Flat single-version manifests
57
+ flat_paths = [
58
+ root / ".claude-plugin" / "plugin.json",
59
+ root / ".cursor-plugin" / "plugin.json",
60
+ root / "gemini-extension.json",
61
+ ]
62
+ for p in flat_paths:
63
+ if not p.exists():
64
+ continue
65
+ data = _read_json(p)
66
+ if data is None:
67
+ continue
68
+ v = data.get("version")
69
+ if isinstance(v, str):
70
+ versions[str(p.relative_to(root))] = v
71
+
72
+ # Marketplace manifest: nested plugins[*].version
73
+ mp = root / ".claude-plugin" / "marketplace.json"
74
+ if mp.exists():
75
+ data = _read_json(mp)
76
+ if data:
77
+ plugins = data.get("plugins", []) or []
78
+ for i, plugin in enumerate(plugins):
79
+ if isinstance(plugin, dict) and "version" in plugin:
80
+ rel = f"{mp.relative_to(root)}::plugins[{i}]"
81
+ versions[rel] = plugin["version"]
82
+
83
+ # Codex / OpenCode future-proofing — pick up any *.json with version
84
+ for sub in (".codex", ".opencode"):
85
+ d = root / sub
86
+ if not d.exists():
87
+ continue
88
+ for p in sorted(d.glob("*.json")):
89
+ data = _read_json(p)
90
+ if data is None:
91
+ continue
92
+ v = data.get("version")
93
+ if isinstance(v, str):
94
+ versions[str(p.relative_to(root))] = v
95
+
96
+ return versions
97
+
98
+
99
+ def main() -> int:
100
+ parser = argparse.ArgumentParser(
101
+ description="Check version consistency across platform manifests"
102
+ )
103
+ parser.add_argument("--json", action="store_true", help="JSON output")
104
+ args = parser.parse_args()
105
+
106
+ versions = collect_versions()
107
+ if not versions:
108
+ print("No version fields found in any manifest — nothing to check.")
109
+ return 0
110
+
111
+ unique = set(versions.values())
112
+
113
+ if args.json:
114
+ out = {
115
+ "versions": versions,
116
+ "consistent": len(unique) == 1,
117
+ "unique_count": len(unique),
118
+ }
119
+ print(json.dumps(out, indent=2, ensure_ascii=False))
120
+ else:
121
+ if len(unique) > 1:
122
+ print("Manifest version drift detected:")
123
+ for path, v in sorted(versions.items()):
124
+ print(f" {path}: {v}")
125
+ print()
126
+ print(
127
+ f"Found {len(unique)} distinct versions across "
128
+ f"{len(versions)} manifests — they must all match."
129
+ )
130
+ else:
131
+ v = next(iter(unique))
132
+ print(
133
+ f"All {len(versions)} manifest version fields agree on {v}."
134
+ )
135
+ for path in sorted(versions):
136
+ print(f" {path}: {versions[path]}")
137
+
138
+ return 0 if len(unique) == 1 else 1
139
+
140
+
141
+ if __name__ == "__main__":
142
+ sys.exit(main())