Now that v0.4.0 / v0.5.0 / v0.6.0 are live on the npm registry, surface
that in the README:
- npm version + monthly downloads badges (zh + en READMEs)
- new "全局安装" / "Global install" snippet alongside the existing NPX
recipe — covers users who'd rather skip the npx prefix or work offline
- CHANGELOG Unreleased entry noting the registry publish
No code changes.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Slash command discoverability cleanup. Claude Code users typically have
50+ skills installed; bare-word commands like /atisha and /zhiyi got
scattered across the /-completion list. v0.6 prefixes all 14 master
slash commands with master- so they cluster under /m<tab> and clearly
signal "this is a Master-skill master skill".
Scope of rename
---------------
* Slash commands: /zhiyi → /master-zhiyi, /huineng → /master-huineng,
... all 14 affected.
* Directory layout: prebuilt/<slug>/ → prebuilt/master-<slug>/ for all
14 masters (git mv preserves history).
* Frontmatter: each prebuilt/master-<slug>/SKILL.md updates `name:` to
master-<slug>.
* compare-masters and create-master meta-skills are intentionally
unchanged — they're already prefixed by their nature, and
/master-compare-masters would be doublespeak.
Decoupling: fojin.app/chat is NOT affected
------------------------------------------
The fojin web frontend's master dropdown uses bare slug IDs (atisha,
huineng, ...) and is already grouped under "法师模式" in its UI. Backend
master_profiles.py keeps `id="atisha"` etc. unchanged. No fojin-side
migration required. The two surfaces (Claude Code slash + fojin
dropdown) are now formally decoupled by design, not coincidence.
Compatibility
-------------
* NPX installer accepts both forms: `npx master-skill install zhiyi`
(short) and `install master-zhiyi` (full) both resolve to the same
prebuilt/master-zhiyi/ source. Install destination is always
~/.claude/skills/master-<slug>/. Backward-compatible uninstall
handles legacy non-prefixed installs (~/.claude/skills/zhiyi/).
* The cli.mjs already used `master-${name}` for install destinations
(since v0.3 NPX installer was added), so existing v0.4/v0.5 NPX
users were already getting the prefix in skills/ — only the source
prebuilt/ layout and slash commands change in v0.6.
Files updated
-------------
* 14 directories renamed (28 files moved, 0 content changes).
* 14 SKILL.md frontmatter `name:` fields.
* prebuilt/compare/SKILL.md: 43 slug references updated to prefixed form.
* bin/cli.mjs: resolveMasterDir helper accepts both short and full;
cmdInstall and cmdUninstall handle legacy paths.
* .github/workflows/validate-and-test.yml: fidelity-smoke MASTERS
rotation array updated to all 14 prefixed names (was 8 hardcoded
汉传 only — now properly rotates across the full set).
* scripts/{validate,cite,query,test-fidelity}.py: --master arg help
text examples.
* README.md + README_EN.md: situational guidance table, install
snippets, master cards. New v0.6 release banner.
* SKILL.md (project-level) preset list with new slash names.
* ETHICS.md Tier table slug references (4).
* All plugin manifests bumped 0.5.0 → 0.6.0 with description noting
the /master-<slug> invocation pattern.
* CHANGELOG.md: [0.6.0] section with breaking-change notice and
migration commands for existing NPX users.
Validation
----------
* python scripts/validate.py --strict ✓ 15 masters pass
* python scripts/validate-fidelity.py ✓ all valid
* python scripts/test-fidelity.py --all --dry-run ✓
* pytest tests/ ✓ 31 passed, 6 skipped
* node bin/cli.mjs list ✓ shows all 14 with
master- prefix
* node bin/cli.mjs install zhiyi ✓ resolves to
prebuilt/master-zhiyi/
* node bin/cli.mjs install master-zhiyi ✓ resolves to same
Migration for existing v0.4/v0.5 users
--------------------------------------
npx master-skill@0.5 uninstall zhiyi huineng xuanzang ...
# OR: rm -rf ~/.claude/skills/{zhiyi,huineng,...}
npx master-skill@latest install --all
Then start a new Claude Code session; the new slash commands are
/master-zhiyi, /master-huineng, etc.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- prebuilt/ajahn-chah/sources/sutta-excerpts.md: drop comparative
claim against 摩诃僧祇律 / 四分律, switch to non-comparative
description of Pali Vinaya core rules. Was a self-violation of
ajahn-chah's own NO SECTARIAN JUDGMENT HARD-GATE.
- prebuilt/compare/SKILL.md: 可用祖师 table reorganized 8→10 by
tradition (汉传 / 藏传 / 南传) — milarepa and ajahn-chah now
surfaceable in cross-tradition compare. Add 跨传统对比注意事项
block + extend 禁忌 with comparative-judgment ban.
- gemini-extension.json: description updated 8 → 10 / Chinese →
Buddhist + version 0.3.0 → 0.4.0 (was missed by the v0.4 commit;
reviewer flagged).
- README.md: "安装全部 8 位" → "安装全部 10 位(三大传统)".
- ETHICS.md: Tier A table now lists milarepa as 9th PD master with
BDRC sourcing note. Tier B table adds Ajahn Chah (1918–1992,
~2042). New Tier B 特例 section codifies the ajahn-chah inclusion
rationale: authorized non-commercial Forest Sangha translations,
summary-only (no full passages), HARD-GATE-enforced provenance,
24h takedown commitment. Fixes ETHICS being misaligned with the
v0.4 reality.
- prebuilt/ajahn-chah/sources/teachings-excerpts.md: prominent
banner at top clarifying that all > blockquote blocks are
summarizations (主旨), not verbatim quotes, plus citation format
bumped to require "(开示要旨)" suffix. Closes ambiguity that
could lead downstream LLMs / readers to treat blocks as direct
Ajahn Chah speech.
Validation
----------
• python scripts/validate.py --strict → ✅ 11 masters
• python scripts/validate-fidelity.py → ✅ 11 masters
• pytest tests/ → ✅ 31 passed, 6 skipped
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds the project's first non-Chinese masters, taking the scope from
"Chinese Buddhist" to "Buddhist" and matching the project name's
broader implication.
New masters
-----------
• prebuilt/milarepa — Tibetan Kagyu yogi (1052–1135). Sources:
The Hundred Thousand Songs of Milarepa (mGur 'bum, BDRC W1KG14334)
and The Life of Milarepa (rNam thar, BDRC W22272). Coverage:
Mahāmudrā view, Naro Chodruk (name-level only — no esoteric steps),
retreat & austerity, guru yoga, karma & purification.
• prebuilt/ajahn-chah — Thai Forest Tradition founder of Wat Pah Pong
(1918–1992). Sources: Pali Canon (SuttaCentral SC IDs) plus
authorized English collections Food for the Heart, A Still Forest
Pool, Living Dhamma. Coverage: sati & satipaṭṭhāna, ānāpānasati,
three characteristics, letting go, sīla-samādhi-paññā, middle way.
HARD-GATE additions
-------------------
• no_esoteric_instruction — Tibetan tantric practice steps (tummo,
generation/completion stages, empowerment-required visualizations
and mantras) are never disclosed; queries are redirected to
qualified teachers. Boundary registered in
scripts/validate-fidelity.py.
• No fabricated quotes for Theravāda discourses — Ajahn Chah quotes
must trace to authorized publications; no synthesized "Ajahn Chah
said" dialogue.
Citation system
---------------
BDRC:Wxxxxx (Tibetan canon) and SuttaCentral SC IDs are now
first-class alongside CBETA Txxnxxxx in frontmatter sources lists.
validate.py already accepts non-cbeta sources via the existing
title-or-cbeta_id check, no schema change required.
Cross-tradition compare-masters mappings
----------------------------------------
prebuilt/compare/SKILL.md gets new fallback rows for: 苦行/闭关
(xuyun + milarepa), 正念/觉知 (huineng + ajahn-chah + xuyun),
出离心/无常 (yinguang + milarepa + ajahn-chah), 三大传统对比
(huineng + milarepa + ajahn-chah), and adds milarepa to 般若/空性,
ajahn-chah to 戒律/行持.
Surface updates
---------------
• Description across package.json, .claude-plugin/{plugin,marketplace}.json,
.cursor-plugin/plugin.json: "Chinese Buddhist" → "Buddhist",
"8 prebuilt masters" → "10 prebuilt masters across 汉传/藏传/南传".
• README.md + README_EN.md: cross-tradition rows in the situational
guidance table; new master cards for Milarepa and Ajahn Chah with
appropriate provenance notes; v0.4 release banner replaces v0.3.
• SKILL.md preset list reorganized by tradition.
• CHANGELOG.md gets a [0.4.0] section.
• package.json keywords add tibetan-buddhism, theravada, bdrc,
suttacentral.
Validation
----------
• python scripts/validate.py --strict → ✅ 11 masters pass
• python scripts/validate-fidelity.py → ✅ 11 masters validated
(12 + 13 fidelity cases for the two new masters)
• python scripts/test-fidelity.py --all --dry-run → ✅
• pytest tests/ → ✅ 31 passed, 6 skipped
The progressive-disclosure shape of v0.3 is preserved exactly, so
the fidelity-smoke CI cost cap is unchanged.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Weekly scheduled run was failing with 'Resource not accessible by
integration' when trying to open a maintenance issue. Default
GITHUB_TOKEN is read-only for contents and has no access to issues
under restrictive repo defaults.
Three governance-tier additions to convert Master-skill from a demo into a
defensible long-lived project:
**ETHICS.md** — mandatory governance document:
- AI transparency: outputs are AI-synthesized, not masters' own words
- Copyright tiers A (public domain, current 8), B (in-copyright, needs
license), C (never admit: living masters, Buddhas/bodhisattvas, apocryphal
figures), D (case-by-case)
- Religious boundary: AI must refuse precept transmission, awakening
certification, karmic diagnosis, spirit-medium framing, etc.
- Dual-track content license: code MIT, master content CC BY-NC-SA 4.0,
prompts CC BY 4.0
- Takedown + appeal channel with 48h / 7d SLAs
**CHANGELOG.md** — Keep a Changelog format:
- [Unreleased] captures the current governance + community + npm work
- [0.3.0] retroactively documents the architectural rebuild (provenance,
fidelity, NPX, multi-platform, HARD-GATE, two-stage review)
- [0.2.0], [0.1.0] historical sections
**CI fidelity smoke** — make HARD-GATE a real gate, not just documentation:
- New `fidelity-smoke` job runs one basic-difficulty fixture against one
master per PR; picks the master touched by the diff, else rotates by
day-of-year for uniform coverage
- Cost cap ≈ $0.05/PR (~10k-token system prompt × 1 request × Sonnet 4.6
pricing). Forks without ANTHROPIC_API_KEY get an advisory pass so
external PRs can still land
- `scripts/test-fidelity.py` gains `--max-tests N` flag; when capping, it
sorts by difficulty (basic → intermediate → advanced) so smoke runs hit
the reliable floor, not stress cases
- Old `fidelity` job renamed to `fidelity-full` (still workflow_dispatch)
README 声明 section now links to ETHICS.md so every reader sees the AI
disclosure and boundary rules before copying master content.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
github-script's context.repo object has {owner, repo}, not {owner, name}.
The typo caused the weekly Verify FoJin Links workflow to POST to
repos/xr843//issues (double slash, empty repo name) and fail with 404.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Shift the README narrative so that non-developer users — the 99% of the
actual audience — find the browser entry point first and the CLI install
second. The old structure buried fojin.app/chat at line 48 under a wall
of developer badges.
Changes:
- README.md / README_EN.md: new "立即体验 / Try It Now" hero section
right after the title block, with a big call-to-action linking to
fojin.app/chat, a "which master should I ask" recommendation table,
and an explicit redirect for CLI users to the developer section.
- Rename "快速开始 / Quick Start" → "开发者安装 / Developer Installation"
with a clear "if you just want to try it, use the browser instead"
callout at the top.
- Update TOC anchors in both languages to match.
- prebuilt/<master>/meta.json × 8: new `starter_questions` field with
4 Q&A entries per master. Each entry has `q` (the question) and `why`
(why this question is suited for this specific master's voice and
source corpus). Intended consumer: fojin.app/chat can fetch the raw
meta.json on master selection and render these as cold-start prompts
— solving the empty-input-box problem for first-time users.
Rationale: the biggest onboarding gap for non-CLI users is "I don't
know what to ask this master." A curated 4-question starter per master
provides both a safe entry point and a teaching signal about what this
particular master is actually good at answering.
Validated: scripts/validate.py --strict passes (9/9 masters).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Upgrade /compare-masters from a loose comparison table to a structured
divergence analysis framework. Core changes:
- 5-dim radar (否定/安立/入手处/根器/终极表达): force the LLM to locate
exactly which layer the disagreement sits on, not just "A thinks X,
B thinks Y" without axis.
- Mandatory divergence labels: every concrete difference must be tagged
[宗派性] / [侧重性] / [表达性] / [根器性]. This prevents the most
common mistake — treating a 根器性 difference as a 宗派性 conflict.
- Classic debate templates: 禅净之争 / 性相之辩 / 空有之争 / 顿渐之辩.
Pre-load the real historical disputes so the LLM does not invent
fake controversy and knows the actual cruxes.
- Meta-question follow-ups (Step 4): generate "why are they different"
prompts to turn a single comparison into a learning session.
- HARD-GATE additions: NO UNLABELED DIVERGENCE, NO EMPTY RADAR CELL,
with rationalization defenses and red flags.
Rationale: the loose 共通点/差异点 template was too permissive — it
let the LLM produce shallow "each has their own merits" summaries.
Forcing a 5-axis radar + typed labels surfaces the actual structural
divergence, which is the real educational value of multi-master
comparison.
Validated: scripts/validate.py --strict passes (9/9 masters).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The compare-masters skill is an aggregate meta-skill that borrows from
other masters and has no single lineage, dates, sources, or own corpus
directories. Treating it as a regular master made --strict CI fail on
all branches since 2026-04-08.
Introduce a kind field (default master) and skip the lineage/dates/
sources/citation_format and references/sources directory checks when
kind == meta-skill. compare/SKILL.md gains kind: meta-skill.
Required fields (name, description) and version/license are still
enforced for all skills.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
README.md and README_EN.md had drifted from the code. The Chinese README
still claimed "SKILL.md < 100 行" (actual: 386 lines at repo root,
124–159 lines in prebuilt/*), and the English README still advertised
the v0.2 release — completely missing NPX install, provenance,
fidelity tests, HARD-GATE, two-stage review, and multi-platform
plugins.
Changes in both languages:
- Remove the "SKILL.md < 100 lines" claim (it was never true of the
rebuilt v0.3 files and made the whole doc feel aspirational)
- Add v0.3 post-iteration banner covering two-stage review, HARD-GATE,
multi-platform plugin support, session-start hook, pressure tests,
and CI validation
- Expand Features list with HARD-GATE, two-stage review, unified
multi-platform plugin bullets
- Rewrite the architecture diagram so it shows the session-start hook,
HARD-GATE placement, two-stage review step (Step 3.5), and the
five-platform manifest layout
- Add a Troubleshooting / 常见问题 section covering: FoJin API
unreachability and offline fallback, CBETA citation format and
verification, `npx master-skill install` failure recovery,
correction-mode for historical accuracy, and how to contribute
a new prebuilt master
- Update Contributing to reference the actual v0.3 layout (references/,
sources/, tests/fidelity.jsonl) and CI fidelity dry-run gate
Chinese-specific:
- Fix the "OpenClaw" typo in the usage environment list
(Claude Code / Codex CLI / OpenClaw → Claude Code / Cursor /
Codex CLI / OpenCode / Gemini CLI)
English-specific (larger catch-up):
- Replace the stale "v0.2 Update" banner with the v0.3 banner
- Replace the v0.2 Features list (Dual-mode output, Incremental
evolution, Version management) with the current v0.3 feature set
- Add the missing "Compare Masters" section (the English README never
documented /compare-masters at all)
- Rewrite the architecture diagram — it still showed teaching.md and
voice.md at the top level of prebuilt/{slug}/ and referenced
tools/version_manager.py, which is not the v0.3 layout
- Fix the same "OpenClaw" typo
No behavioral changes — docs only.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Keeps the two per-platform plugin manifests in lockstep so marketplace
listings don't diverge. Cursor now matches Claude on:
- description: adds "RAG-grounded in FoJin knowledge graph" tail so
discovery text is identical across platforms
- keywords: adds chinese-buddhism, cbeta, fojin (8 keywords total,
matching .claude-plugin/plugin.json)
No behavioral change — manifest metadata only.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- compare: add NO COMPARATIVE RANKING and NO FABRICATED DIALOGUE
iron laws with rationalization defense table
- create-master: add NO FABRICATED SOURCES iron law for the
generation pipeline
- Add 2 boundary tests for compare (sectarian ranking, fabricated
dialogue)
- Fix validate-fidelity.py to support compare's assertion fields
and no_fabricated_dialogue boundary type
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Update test-fidelity.py to support must_not_contain and
must_not_contain_first_turn fields for boundary/pressure tests
- Add validate-fidelity.py for structural validation of all
fidelity.jsonl files (no API needed)
- Add GitHub Actions workflow: runs validate + dry-run on every
push/PR touching prebuilt/scripts/prompts/tools
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Inspired by obra/superpowers project patterns, add three-layer defense
to prevent AI hallucination and rule violation:
- Iron Laws: NO DOCTRINAL CLAIM WITHOUT CBETA CITATION,
NO PERSONA BEFORE CONTEXT, NO SECTARIAN JUDGMENT
- Rationalization Defense Table: 6 common AI excuses with rebuttals
- Red Flag List: 5 observable violation signals
Also add 40 pressure test cases (5 per master) covering:
- Sectarian judgment boundary
- No prophecy boundary
- Neutral first turn boundary
- Citation bypass pressure
- Master-specific challenges (meta, hostile, misunderstanding, etc.)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Users can now try all pre-built masters directly in the browser
without installing Claude Code or Codex CLI.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Previously LLM might run ONE combined semantic query, causing the non-dominant
master to get fallback search URLs (fojin.app/search?q=...) instead of precise
text_id links.
Now the skill:
- Explicitly requires N separate queries for N masters (emphasized with ⚠️)
- Provides a query-rewriting table: each master's query uses its tradition's
terminology (唯识/中观/禅宗/天台/华严/净土 terms)
- Example: user asks '因缘果' → xuanzang queries '因缘果 六因 四缘 五果 种子',
kumarajiva queries '因缘所生法 空 中道 无自性 四句'
This ensures both masters get precise text_id citations, not degraded search URLs.