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>
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.
- New --brief flag for semantic/search subcommands outputs one-line-per-result
(title + link + 80-char snippet) instead of full 500-char excerpts
- Reduces output from ~60 lines to ~7 lines per query (3 results)
- /compare-masters now uses --brief by default (multiple queries no longer
flood the terminal with long excerpts)
- Full output (default) preserved for single-master /ask and debugging
- Add Layer 0 hard rule to all 8 masters' voice.md: first turn must use
neutral address (您/汝/你/问者), forbidden terms include 居士/行者/学人/
善男子/善女人/出家人/师父/大众/道友/善信/道友
- From turn 2+: masters adapt to user's self-disclosed or question-inferred
identity, restoring each master's historical address style
- Layer 2 开场方式/称呼方式 reorganized into 首轮中立 / 身份已知后 tiers
- Update voice_builder.md and voice_analyzer.md templates so future
/create-master runs inherit this rule
- Add tools/sync_skill_from_voice.py to keep SKILL.md PART B in sync
- Add 48 regression tests in test_voice_rules.py (all 79 tests pass)