confusion-tracker — concept-confusion tracking
SkillFiles & storageAutomatically captures and records learners' conceptual sticking points during teaching ("why / what is / how to derive / what does it mean" type questions), saving them to the "Concept Confusion Log" section of the progress file to form a pre-exam review list.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the confusion-tracker — concept-confusion tracking skill
What this skill tells your AI
The instructions your AI receives, as published by zekainie/universal-examprep-skill in full/skills/confusion-tracker/SKILL.md and read by ahel’s review.
Purpose
Capture the learner's concept-level confusions (why / what / how-derived questions — not quiz answers) during tutoring and record them into the 「概念疑难点记录」 section of study_progress.md, building a pre-exam review list. Used by exam-tutor (while teaching) and exam-review (during the final sweep).
Activation
- During tutoring, when the learner asks a concept question matching: 「为什么…?」/「…是什么、什么意思?」/「这个公式怎么推、怎么来的?」/「…的重点是什么?」/「讲一下…」, or any clarification follow-up that is not a quiz answer.
- Skip for: pure quiz answering (right or wrong), and chit-chat that needs no concept explanation.
Inputs
- The progress-file path (e.g.
study_progress.md), read at session start. - The current chapter/phase name being taught.
Workflow
- Detect — decide whether the follow-up is a concept question (not a quiz item or its answer).
- Answer — give a concise, clear explanation grounded in the current wiki chapter. Label the source: 🟢 来自资料 for material-sourced content, 🟡 AI补充,可能与你老师讲的不完全一致 for AI-supplied background. Never present AI-added content as the teacher's.
- Record — persist the confusion:
关联章节/疑难点(one line) /解答要点(≤2 sentences) /状态(default 待回顾). Ifstudy_state.jsonis absent and Python works, first runpython "${CLAUDE_SKILL_DIR}/scripts/update_progress.py" --workspace <ws> init. The normal and ONLY state-backed write path is thenpython "${CLAUDE_SKILL_DIR}/scripts/update_progress.py" --workspace <ws> add-confusion --chapter <ch> --note <疑难点/解答要点>— the md table is a generated view and a hand-appended row is lost on the next render. Only when Python truly cannot run may the no-Python fallback append directly to the 「## 💡 概念疑难点记录」 table instudy_progress.md, auto-incrementing the序号column. A nonzero state command while Python runs is a fail-loud write failure, not permission to hand-edit.- Persist-first (notebook CLI) — the state row stays exactly as above; ADDITIONALLY persist the full explanation itself (step 2's answer, provenance labels included) so it survives outside chat:
echo <explanation body> | python "${CLAUDE_SKILL_DIR}/scripts/notebook.py" --workspace <ws> add-entry --chapter <ch> --type confusion --id <slug> --title <confusion gist>(body via STDIN; same--idreplaces in place;notebook/index.mdrebuilds; the script resolves from the skill package root). The receipt line then carries the pack-provided link line (zh 「完整解答:notebook/chNN.md#<anchor>|目录:notebook/index.md」, enFull explanation: notebook/chNN.md#<anchor> | Index: notebook/index.md). On a failed notebook write, TELL the student (the chat explanation already delivered stands as the copy); file-less clients keep chat-only output perexam-cram's capability dispatch.
- Persist-first (notebook CLI) — the state row stays exactly as above; ADDITIONALLY persist the full explanation itself (step 2's answer, provenance labels included) so it survives outside chat:
- Confirm — tell the learner it was logged (e.g. 「已记录到疑难点」) in one short line, without breaking the teaching flow.
Output Contract
- Persist one confusion record (
关联章节/疑难点/解答要点/状态) throughupdate_progress.py add-confusion; initialize state first when Python works. Only a true no-Python fallback appends one row to the 「## 💡 概念疑难点记录」 table instudy_progress.md(序号auto-increments). - Persist-first default: the full confusion explanation is ALSO written into
notebook/chNN.mdvia the notebook CLI (--type confusion, Workflow step 3) — the state row records that the confusion exists, the notebook entry preserves the explanation itself; the receipt carries the pack-provided link line. File-less clients keep chat-only output. - During the final sweep, read the confusion records and have the learner restate each: update
状态in place — 待回顾 → 已回顾 when explained correctly; keep 待回顾 and re-explain otherwise. Never overwrite other skills' writes. - Student-facing output defaults to English (Simplified Chinese if the student opened in Chinese); the persisted
study_state.json.languagecode (zh/en/bilingual) switches it per exam-cram's dispatch rule with single-language purity.
Language packs
Student-visible wording for this skill lives in per-language packs — load the one matching study_state.json.language BEFORE emitting any student-visible output:
中文→../../locales/zh/skills/confusion-tracker.mdEnglish→../../locales/en/skills/confusion-tracker.md双语→ compose the zh and en packs block by block, zh first with a> EN:mirror (rules in../../docs/language-policy.md) Display aliases such as中文,English, and双语are normalized byupdate_progress.py; route persisted state onzh,en, orbilingual. Unset language → the merged first-ask decides it; default English unless the student opened in Chinese.
Boundaries
- Structured progress state: when
study_state.jsonexists it is the SINGLE SOURCE OF TRUTH — record viapython "${CLAUDE_SKILL_DIR}/scripts/update_progress.py" --workspace <ws> add-confusion, update review status viaset-confusion-status --id <qid>|--index <N> --status 已回顾/待回顾; never hand-patch the generatedstudy_progress.md. If the state write fails, TELL the user; never continue as if it saved. - Only record concept questions; never quiz or grade (that is
exam-quiz). - Concept answers carry the canonical provenance labels (🟢 来自资料 / 🟡 AI补充,可能与你老师讲的不完全一致 / ⚠️ AI生成答案,非老师/教材提供); never disguise AI-added content as teacher-provided.
- Share the progress state with
exam-review: in state-backed workspaces both skills go throughupdate_progress.py(append via add-confusion, status via set-confusion-status); only a true no-Python md-only workspace appends/updatesstudy_progress.mdin place. Never overwrite other skills' writes.
Signals
- GitHub stars
- 282
- Forks
- 16
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
confusion-tracker- Source
- github.com/zekainie/universal-examprep-skill