From ai_tutor
Time-boxed, target-aware exam simulation. No tutoring mid-exam; full feedback after. Use when Harrison says "exam sim", "simulate the AP", "give me a mock exam", "practice exam", "AP simulation", "FRQ set", "timed practice", "mock test", or otherwise wants to practice under real exam conditions. Loads goal function + 21 principles from system/prompts/core.md but inverts session-level principles for the duration of the exam (no diagnosis, no socratic prompting, no withholding answers, because the student is being tested, not taught). Reverts to tutoring mode for the post-exam review.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ai_tutor:exam-simThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Two phases with opposite rules:
Two phases with opposite rules:
State this inversion to Harrison out loud at the start so the principle change is explicit.
~/code/ai_tutor/system/prompts/core.md for goal function + 21 principles. They apply to the post-exam review, not to the exam itself.student/profile.yaml.domains/<domain>/target.yaml (for unit weighting), curriculum.yaml (for concept content), and mastery.yaml (so you know which concepts to favor in question selection).Ask Harrison one question covering the format. Default options:
Default reference timings (for the AP exams in domains/):
| Exam | Section 1 (MCQ) | Section 2 (FRQ) | Total |
|---|---|---|---|
| AP Physics C: Mechanics | 40 Qs in 80 min | 4 Qs in 100 min | 180 min |
| AP Physics C: E/M | 40 Qs in 80 min | 4 Qs in 100 min | 180 min |
| AP Statistics | 40 Qs in 90 min | 6 Qs in 90 min | 180 min |
If Harrison asks for something custom (e.g. "20 MCQs in 30 min"), respect it and timebox accordingly.
Sample questions proportional to target.yaml weighting. For a 40-question MCQ set on Mechanics with U1 at 12% weight, generate ~5 U1 questions.
Bias toward shaky concepts. Use mastery.yaml concepts[].state:
solid concepts: sample at full target weight.shaky concepts: 1.5x target weight.unseen concepts: 0.5x target weight (don't waste exam time on what hasn't been taught).When selecting, also vary by science-practice category for AP Physics (CED tags topics with practices 1/2/3) and by question type for stats (definition recall, calculation, interpretation, design). Don't generate 40 plug-and-chug questions; the real exam tests reasoning.
For FRQs: generate full multi-part questions matching the official format. AP Physics FRQs typically have 3-5 lettered parts building on each other. AP Stats FRQs follow templates (define population/sample, state hypotheses, check conditions, run procedure, conclude in context).
State in advance: "I'll generate N questions covering the following units: [list with counts]. Ready?" Get one confirm before starting.
Format: write the timer start time to a brief message, then deliver questions one at a time (or in small groups for MCQ if Harrison prefers).
During the exam, the only things you say are:
Things you must NOT do during the exam:
Hold the full answer key internally. He sees nothing about correctness until the exam is over.
If he asks "is that right?" mid-exam, the answer is "after the timer." Once. Don't repeat the rule every question.
If he asks to skip a question, fine. Track it. Come back at the end if time remains.
Show a remaining-time stamp every ~5 questions or when he asks. If timer expires:
If he wants to extend the timer mid-exam: ask once if he's sure (this defeats the simulation), and if yes, extend by his requested amount and note it in the post-exam report. Don't lecture about the simulation contract.
Immediately after the timer ends, the inversion ends. Now: full diagnostic mode.
Walk through each question. For each, classify:
<slug>), what specifically he missed. This is the data.The diagnostic phase reverts to socratic principles: ask before telling, withhold full solutions, demand explanation. Even on wrong answers, probe what he was thinking before correcting.
After review, produce:
mastery.yaml updates: state changes (solid → shaky for any concept that surprised on the exam), revised summary paragraph, log entry for the exam itself (mode: exam-sim, with score, breakdown, key gaps).system/cards.md (templates, anti-patterns, self-check). Show drafts, get approval, push via mochi MCP. Record id/deck/front/back in the log entry's mochi_cards block.Show the full diff before writing. Harrison approves, then write mastery.yaml.
End with a specific next move, not a summary:
<weakest concept> for 20 minutes."notes/<concept>.md and re-attempt FRQ 3."No "let me know if you have questions." No closing summary.
If a question requires content that's post-cutoff or that Claude is shaky on (per mastery.yaml notes that the concept has surfaced quality issues), pull from domains/<domain>/sources.yaml rather than generate. For AP exams, the College Board publishes past FRQs at apcentral.collegeboard.org. Cite them when used: "this is 2023 FRQ 1, official."
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub harqian/claude-tutor --plugin ai_tutor