Universal Exam Cram Coach — Root Router
SkillDocs & knowledgeHelps students do structured rapid review before exams: parses course materials/syllabi/key points, generates a wiki knowledge base and standard question bank by chapter, organizes targeted practice with grading, and tracks review progress and mistakes. Use when a user has an upcoming exam and needs
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 Universal Exam Cram Coach — Root Router skill
What this skill tells your AI
The instructions your AI receives, as published by zekainie/universal-examprep-skill in full/SKILL.md and read by ahel’s review.
This language-neutral router dispatches last-minute exam prep to the chapter-wiki, bank-only, persistent control layer and its wording packs; it is not a duplicate manual.
Language dispatch
Read the canonical, language-neutral study_state.json.language code and load the matching compatibility entry plus its per-skill wording pack BEFORE emitting any student-visible output:
zh(display choice中文) →locales/zh/SKILL.mdplus the selected sub-skill's zh wording pack underlocales/zh/skills/en(display choiceEnglish) →locales/en/SKILL.mdplus the selected sub-skill's en wording pack underlocales/en/skills/bilingual(display choice双语) → compose the zh and en wording block by block, with zh first and a> EN:mirror for each block (composition rules indocs/language-policy.md)
中文, English, and 双语 remain accepted user-facing input aliases. On first contact one combined ask sets mode, budget, and language, then show the independent material-processing choice 轻量按需(推荐) / 完整建库; exam_start.py confirm persists them with the exact workspace/materials receipt. Missing, urgent, accepted-default, and legacy processing choices mean lightweight; only explicit full opens complete ingestion. A later reconfirm with no processing flag preserves an existing canonical choice. Later update_progress.py set --language applies next turn. Default English unless the student opened in Chinese; bilingual is explicit-only.
Control layer (behavior)
Behavior lives in skills/exam-cram/SKILL.md and these subskills:
| Sub-skill | Role |
|---|---|
exam-ingest | Build/validate workspace |
exam-tutor | Lazy chapter teaching |
exam-study-guide | Typed guide and visual artifact gate |
exam-quiz | Bank-only selection/grading |
exam-review | Replay mistakes/confusions |
exam-cheatsheet | Final handout |
exam-audit | Read-only workspace health check |
exam-help | Quick reference |
confusion-tracker | Concept-confusion tracking |
Generic-agent fallback: AGENTS.md.
Install & run essentials
- Under
scripts/, useexam_start.py status, thenexam_start.py confirm --course <name> --materials <dir> --workspace <ws> --mode <mode> --time-budget <tier> --language <lang> --processing-mode <lightweight|full>. It writes the confirmation/state/runtime receipt. Defaultlightweight_session.pyinventories names and processes only current-phase PDF pages or definitely single-frame PNG/JPEG/BMP sources through host-native vision: at most eight primary pages and one active batch. A single page uses no contact sheet; multi-page overview sheets partition primary pages in groups of at most four at roughly 768 px per tile. New schema-3 visual receipts require the generic component token strategy and enumerate stable teaching-item IDs plus generictext|figure|mixedprompt/answer components. A cross-page item repeats on each page that supplies one of its prompt components, with exact page↔component coverage. Detail calls may combine only same-target prompt components, solution calls only same-target answer components, and every component crop receives a separate semantic review that detects exactly its declared target/context IDs with no unrelated content or student attempt. Only prompt components may be context-only; every answer component contains its target. Page answer provenance prevents student attempts or unknown pages from masquerading as official solutions, and every registered official-solution page must contribute an answer component. Additiveregister-answer-dependencybinds exact answer-locator pages; planned batches may auditably replace/narrow or remove a binding withset-answer-dependency/remove-answer-dependency. All canonical visible evidence is PNG under.lightweight/assets/, with exact model-input receipts and hash/magic/dimension checks. Schema-2 visual receipts and the legacy figure-only token strategy remain read-only history; any legacy-strategy active attempt is restricted to status or auditable abandon and cannot silently become schema 3. An unfinished planned/visual-ready batch may close only with receipt-backedabandon --reason;replace-taught --reasonpreserves a taught predecessor/event as superseded history, revalidates its dependency revisions, and plans an exact-slice successor with the same dependency pages. After an unabridged walkthrough,mark-taught --taught-item-ids <exact IDs>bindsnotebook/chNN.md#anchor, distinguishes inspected pages from taught items, and recoverably publishesphase_evidence.lightweight_batches; only current unsuperseded attempts enter the completion denominator. Routine status is generation-stable and read-only; validation checks metadata plus physical identity only. Exact hashes are reserved for state transitions, completion, or explicitstatus --verify-live. Lightweightverifiedadditionally requires two revision-bound checkpoints, including one pass, from the immutable stat-only baseline of a quiz bank that pre-existed initialization. It runs no full ingestion, Study Guide, or PDF. Explicitfullopensingest_course.py; the orchestrator and lower-level workspace builder/compiler all enforce the same exact-pair/runtime/choices/full gate. Exit 10 routes to typedingest_review.py.update_progress.pyownsstudy_state.json;study_progress.mdis generated. Official selectors areselect_questions.py/select_hard_questions.py. - Workspace file contract (wiki / quiz bank / state / asset metadata):
docs/file-format.md. - Language policy (single-language purity, EN canonical vocabulary, persisted canonical values):
docs/language-policy.md. - Host loading:
docs/agent-portability.md. - PDF capabilities differ by host; use the audited, no-silent-download routing table in
docs/pdf-capability-adapters.md. - Missing/legacy
artifact_modeischat; explicit standingvisualor a one-shot chapter artifact invokesexam-study-guide, while cheat-sheet PDF usesexam-cheatsheet. An ambiguous PDF request asks which once. Never infer subscription. Persist withupdate_progress.py set --artifact-mode chat|visual. processing_modeandartifact_modeare independent. Lightweight never generates a Study Guide; a savedvisualpreference remains dormant and effective output stayschatuntil explicitfull. Full does not imply a PDF. MinerU, Docling, and LangGraph are explicit-named-request, remote/cloud-host-only capabilities and are never probed, downloaded, installed, imported, executed, or accepted as callable local runners.preferences.interaction_stylestores onlybatch|step_by_step. A stored step-by-step choice is effective only infullwithno_questions=false; otherwise it is retained but dormant and effective cadence isbatch. In effective step mode, select the first pendingteaching_examples.jsonitem from one locked snapshot and persist it through the marker-boundrecord-taught-examplepath. Existing unbound teaching IDs are valid batch history; a bound ID carries exact notebook-block and manifest-item hashes that remain live-validated after cadence changes. Guide publication preserves valid bound blocks and rejects stale or unbound markers. Every teaching-baseline ID must still have a current teaching-manifest snapshot; a quiz-only copy is insufficient.- In an ingestion-v2 structured workspace,
answer_explanation_modeis independent from processing/artifact mode. Its stored-schema fallback isordinary, but full-v2 Guide entry must first perform a native-child capability handshake. When the host can prove a fresh independent child context per item and can restrict its input and tools to that exact item, default toisolatedunless the user opted out; persist the mode, notify once about extra host quota/time, and require no second API key or external-upload consent. Otherwise stayordinaryand explain the limitation. Both routes runstudy_guide_author.py prepare, fill fixed annotations, require one detailed beginner-first explanation per item, persist notebooks, compile, create/attach/verify claims, and import the canonical full Guide. Inordinary, the annotation contains the explanation withai_supplementprovenance and claims no isolation. Inisolated, each fresh/stateless tool-disabled invocation sees only the fixed question, official answer when present, target language, and target-scoped assets; it returnsanswer_explanationplus non-renderedcoverageand is imported with a separate host-owned receipt. A separately billed external Provider is an explicit-user-request fallback only and retains no-upload planning plus exact-plan pricing/privacy/upload consent. A model family, subscription, API key,full, orvisualalone never proves native isolation. Target-scoped meanstarget_item_only, or prompt-onlytarget_with_required_contextwith exact sortedrequired_context_ids; answer assets remain target-only. Packet, annotations, notebook bindings, manifest, rendering and QA all bind the chosen mode. A language/mode/fact/asset change makes the chain stale; onlyisolatedreruns the per-item receipt chain. New v2 Guides omit generic self-check panels. A hand-written complete v2 Guide draft is a no-Python-only, unverified fallback. Ingestion-v1 remains read-only and cannot claim current v2 gates.
Signals
- GitHub stars
- 282
- Forks
- 16
- Last commit
- Sep 2026
ahel review
K6low
bundled executables the agent is told to run
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Catalog kind
- skill
- Gateway key
universal-exam-cram-coach- Source
- github.com/zekainie/universal-examprep-skill