$npx -y skills add ZeKaiNie/universal-examprep-skill --skill exam-tutor按章节惰性加载授课:每次只读当前阶段的一个 wiki 章节,用生活隐喻讲概念、解剖公式;重点题固定走 题面图→问题→读图量→公式→演算→答案详解→溯源七步,画图题先运行算法。用于讲懂当前章或老师勾出的重点题。
| 1 | # exam-tutor — chapter teaching |
| 2 | |
| 3 | ## Purpose |
| 4 | |
| 5 | Teach exactly one current wiki chapter, using metaphors and formula dissection. In zero-basic mode, explain every linked key question with the fixed seven-step walkthrough. Run algorithms before rendering diagrams. This skill teaches; `exam-quiz` alone quizzes and scores. |
| 6 | |
| 7 | ## Activation |
| 8 | |
| 9 | Use when `exam-cram` routes the current phase to teaching, or the student asks to learn the current chapter, derive a formula, or explain a key question. |
| 10 | |
| 11 | ## Inputs |
| 12 | |
| 13 | - In `processing_mode=lightweight`: one schema-3 visually accepted current-page batch |
| 14 | from `.lightweight/session.json` plus its original pages and declared-scope |
| 15 | prompt/answer component assets; no compiled wiki is required. |
| 16 | - `references/wiki/chN_*.md`: the one current chapter; never read the whole wiki. |
| 17 | - `references/teaching_examples.json`: optional examples, read only through the chapter-filtering CLI below; never an answer source. |
| 18 | - `study_state.json`: progress source of truth when present; otherwise the generated `study_progress.md` compatibility view. |
| 19 | |
| 20 | ## Workflow |
| 21 | |
| 22 | 1. **Load one slice.** Read `study_state.json.processing_mode` first. In |
| 23 | `lightweight`, call `lightweight_session.py status`, plan only the current |
| 24 | source/page range if it is not already planned, visually inspect those pages, |
| 25 | and import the generic item/component manifest with `record-visual`; teach only a |
| 26 | schema-3 `visual_ready` batch. A schema-2 `visual_ready` receipt is quarantined |
| 27 | read-only: auditably `abandon` it and plan a new attempt, never teach from or |
| 28 | silently upgrade it. While still planned, keep `register-answer-dependency` |
| 29 | additive; use `set-answer-dependency --reason` to replace/narrow exact answer |
| 30 | pages and `remove-answer-dependency --reason` to remove them. Do not call |
| 31 | ingestion/OCR, preload later pages, or require a |
| 32 | wiki. In `full`, read exactly one current `references/wiki/chN_*.md`. A missing |
| 33 | full-mode file means abstain, name it, and never improvise. If full-mode teaching |
| 34 | examples exist, run `python "${CLAUDE_SKILL_DIR}/scripts/list_teaching_examples.py" |
| 35 | --workspace <ws> --chapter <N> --json` and use only its returned slice. When the |
| 36 | full-mode effective cadence below is `step_by_step`, use `--next-pending` instead |
| 37 | of loading the whole chapter example slice. A nonzero |
| 38 | exit is an invalid/unreadable inventory, not “no examples”; report it. |
| 39 | |
| 40 | 2. **Teach reproducibly.** Give each concept one concrete metaphor. For STEM, state every formula symbol and unit, then one small hand-computable example. Persist math as `$...$` or `$$...$$`; never leave raw `\frac`, `\sum`, or other TeX as the final reading view. |
| 41 | |
| 42 | 3. **Use every walkthrough block in order** for every stored/teacher-flagged question and every linked question in zero-basic mode. |
| 43 | |
| 44 | **Full-mode pacing:** read the stored preference plus its reported effective and |
| 45 | dormant state. `study_state.json.preferences.interaction_style` stores only |
| 46 | `batch|step_by_step`; missing legacy state means `batch`. This optional preference |
| 47 | is independent from `processing_mode`, `artifact_mode`, and |
| 48 | `answer_explanation_mode`, and is not a fourth required startup choice. Persist an |
| 49 | explicit change only with `update_progress.py --workspace <ws> set |
| 50 | --interaction-style <batch|step_by_step>` (or the strictly validated canonical |
| 51 | `--pref interaction_style=...`). It never changes the lightweight page-batch route. |
| 52 | |
| 53 | This option applies only to full-mode `teaching_examples.json` items. It does not |
| 54 | claim coverage of the chapter bank, typed question units, or the lightweight |
| 55 | page-batch route. |
| 56 | |
| 57 | - Effective `batch`: use the normal full-mode flow. A true |
| 58 | `preferences.no_questions=true` or any non-full processing mode makes a stored |
| 59 | `step_by_step` choice dormant without overwriting it. A stored `batch` choice |
| 60 | remains ordinary batch cadence. |
| 61 | - Effective `step_by_step`: call `list_teaching_examples.py --workspace <ws> |
| 62 | --chapter <N> --next-pending --json`. It requires `processing_mode=full`, |
| 63 | `no_questions=false`, exact `current_phase`, and valid scoped manifest/state data. |
| 64 | It reads the manifest, state, notebook bindings, and baseline within one |
| 65 | consistent workspace lock, then returns the first manifest-ordered pending item. |
| 66 | A missing manifest, malformed state, or nonzero selector exit blocks the pacing |
| 67 | decision; report it and do not guess another item. Two bindings may not share one |
| 68 | `notebook_ref`. Only a missing notebook entry or anchor/marker/hash/revision drift |
| 69 | may return to pending with bounded stable diagnostics. Link/reparse topology, |
| 70 | non-directory/non-regular targets, path escape, invalid UTF-8, an unterminated |
| 71 | fence, parse/block corruption, schema/scope/baseline damage, duplicate evidence, |
| 72 | and `unex |