教学过程中自动捕获和记录学习者的概念疑难点("为什么/是什么/怎么推/什么意思"类型的问题),保存到进度文件的"概念疑难点记录"区,形成考前回顾清单。
npx skills add https://github.com/ZeKaiNie/universal-examprep-skill --skill confusion-tracker
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).
study_progress.md), read at session start.关联章节 / 疑难点 (one line) / 解答要点 (≤2 sentences) / 状态 (default 待回顾). If study_state.json is absent and Python works, first run python "${CLAUDE_SKILL_DIR}/scripts/update_progress.py" --workspace <ws> init. The normal and ONLY state-backed write path is then python "${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 in study_progress.md, auto-incrementing the 序号 column. A nonzero state command while Python runs is a fail-loud write failure, not permission to hand-edit.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 --id replaces in place; notebook/index.md rebuilds; 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」, en Full 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 per exam-cram's capability dispatch.关联章节 / 疑难点 / 解答要点 / 状态) through update_progress.py add-confusion; initialize state first when Python works. Only a true no-Python fallback appends one row to the 「## 💡 概念疑难点记录」 table in study_progress.md (序号 auto-increments).notebook/chNN.md via 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.状态 in place — 待回顾 → 已回顾 when explained correctly; keep 待回顾 and re-explain otherwise. Never overwrite other skills' writes.study_state.json.language code (zh/en/bilingual) switches it per exam-cram's dispatch rule with single-language purity.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 by update_progress.py; route persisted state on zh, en, or bilingual. Unset language → the merged first-ask decides it; default English unless the student opened in Chinese.
study_state.json exists it is the SINGLE SOURCE OF TRUTH — record via python "${CLAUDE_SKILL_DIR}/scripts/update_progress.py" --workspace <ws> add-confusion, update review status via set-confusion-status --id <qid>|--index <N> --status 已回顾/待回顾; never hand-patch the generated study_progress.md. If the state write fails, TELL the user; never continue as if it saved.exam-quiz).exam-review: in state-backed workspaces both skills go through update_progress.py (append via add-confusion, status via set-confusion-status); only a true no-Python md-only workspace appends/updates study_progress.md in place. Never overwrite other skills' writes.Integration with protocols.io API for managing scientific protocols. This skill should be used when working with protocols.io to search, create, update, or publish protocols; manage protocol steps and materials; handle discussions and comments; organize workspaces; upload and manage files; or integrate protocols.io functionality into workflows. Applicable for protocol discovery, collaborative protocol development, experiment tracking, lab protocol management, and scientific documentation.
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
Build and distribute Expo development clients locally or via TestFlight
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.
Benchling R&D platform integration. Access registry (DNA, proteins), inventory, ELN entries, workflows via API, build Benchling Apps, query Data Warehouse, for lab data management automation.
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.
Take zekainie/confusion-tracker from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.