- 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)
Scans all prebuilt teachers for CBETA IDs and fojin.app URLs, verifies
against FoJin API, and can fix URLs to use internal text_ids (--fix flag).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Each teacher's meta.json now includes search_scope with tradition-specific
CBETA/SuttaCentral IDs, dictionary sources, and keywords for focused RAG
retrieval. New tools/cross_reference.py enables lineage queries and
cross-tradition concept comparison via FoJin KG.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add rag_query.py CLI tool (search/semantic/dict/kg subcommands) and
rag_instructions.md prompt fragment so every teacher skill queries
FoJin's real Buddhist texts at runtime instead of relying solely on
LLM training data.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>