Turn a folder of slides, recitations, and past homework into a calibrated study plan β with intuition-first teaching, compact cheat sheets, and verbatim drill questions from your real source materials.
TL;DR β Drop in your course materials. The agent scans them, drafts a study plan, walks you through topic-by-topic at a pace you control, builds a printable cheat sheet, and drills you on the real questions from your recitations and past exams.
β¨ Battle-tested on a Columbia COMS 4701 (Artificial Intelligence) midterm: 11 topics, 3 days, ~12 hours of focused work, from "haven't watched a lecture" to exam-ready.
# Any client that reads the Agent Skills format (SKILL.md + frontmatter):
git clone https://github.com/lukeguo12210/exam-prep-workflow.git \
~/.skills/exam-prep-workflowThen point your agent at it:
| Client | Path |
|---|---|
| Claude Code | ~/.claude/skills/exam-prep-workflow/ |
| Cursor | .cursor/skills/exam-prep-workflow/ (project) or global skills dir |
| Codex CLI | ~/.codex/skills/exam-prep-workflow/ |
| Gemini CLI | ~/.gemini/skills/exam-prep-workflow/ |
| Cline / Roo / Aider | drop into the agent's skills/instructions folder |
| Anything else | the skill is just a folder of Markdown β paste SKILL.md into a system prompt and reference references/*.md as needed |
The skill follows the open Agent Skills convention. Any agent that supports SKILL.md frontmatter discovery can auto-load it. For agents without skill discovery,
SKILL.mdworks fine as a prepended system prompt.
Then just tell your agent:
"I have an exam in 3 days. Here are my course materials. Help me prep."
The skill auto-triggers.
flowchart LR
A[π Course<br/>materials] --> B[Phase 1<br/>Setup]
B --> B1[scan PDFs]
B1 --> B2[draft<br/>overview.md]
B2 --> B3{user<br/>approves?}
B3 -->|yes| B4[parallel subagents<br/>draft per-topic notes]
B4 --> C[Phase 2<br/>Review loop]
C --> C1[coverage map]
C1 --> C2[micro-lessons<br/>intuition first]
C2 --> C3[cheat-sheet<br/>items]
C3 --> C4[verbatim<br/>drill problem]
C4 --> C5{more<br/>topics?}
C5 -->|yes| C1
C5 -->|no| D[π Final<br/>cheat sheet]
D --> E[π
Exam-morning<br/>protocol]
Phase 1 β Setup (~15β25 min) Β· Bulk-extract PDFs β draft overview.md (scope, topic list, difficulty tiers, study plan) β wait for user approval β spawn parallel agents to draft per-topic notes.
Phase 2 β Review loop (~20β60 min per topic) Β· For each topic: coverage map β micro-lessons (one concept per message, intuition before formula) β compact cheat-sheet items β one verbatim drill problem from real source materials.
Triage mode kicks in automatically when <24h remain: compresses lessons, prioritizes cheat sheet > drilling > deep teaching, and never compromises the sleep recommendation.
The frontmatter the agent matches against:
---
name: exam-prep-workflow
description: |
Use when the user is preparing for a closed-book conceptual exam
(midterm, final, qualifier, certification) and has provided course
materials such as slides, recitations, homework, or past exams.
Triggers on phrases like "exam in N days", "studying for", "help
me prep", "midterm", or when an exam date is mentioned alongside
uploaded materials.
---You can also invoke explicitly: "use the exam-prep-workflow skill on these materials."
| Principle | Why it matters |
|---|---|
| Verbatim drill questions | Paraphrasing changes difficulty and obscures real exam patterns. Pulled in priority order: cumulative reviews β recitations β homework β past exams. |
| Intuition before formulas | Every micro-lesson opens with a real-world analogy, then introduces math. Faster encoding, longer retention. |
| One concept per message | No mega-dumps. Pacing is deliberate, with check-ins, and adapts to "go faster" / "too dense" feedback. |
| Coverage map before teaching | Each topic begins with "here's what's in scope, here's what's not." Cuts wasted effort. |
| Honest about figures | When PDF extraction loses a game tree or dataset table, the skill says so and reconstructs from solution text β never silently paraphrases. |
exam-prep-workflow/
βββ SKILL.md β the workflow + pacing rules (entrypoint)
βββ README.md β this file
βββ LICENSE β MIT
βββ references/
βββ topic_template.md β per-topic note format
βββ cheat_sheet_principles.md β density rules for cheat-sheet items
βββ drill_protocol.md β verbatim practice question protocol
The skill is plain Markdown. No build step. No runtime. No dependencies beyond an agent that can read files.
- Define every term on first use β assume nothing about prior knowledge
- One concept per message (~200β400 words)
- Intuition first, then formula or procedure
- End each lesson with a check-in (true/false, micro-computation, or "make sense?")
- Wait for user confirmation before advancing
- Adapt dynamically: "go faster" β compress Β· "too dense" β more analogies
- Save user pacing preferences as memory if the agent supports it
The cheat sheet is the highest-leverage artifact. Compact, recall-triggering, no fluff.
- Plain text formulas (no LaTeX unless requested)
- Tables for comparisons across methods
- Step-by-step procedures, not prose
- Memorize common constants inline (
logβ(3) β 1.585) - One worked example only when it adds density
- Common pitfalls in one line each
Target: 10β30 lines per topic, ~80β120 lines total β fits an 8.5Γ11 double-sided sheet.
Full rules β references/cheat_sheet_principles.md
Practice questions are pulled verbatim from the source in priority order:
- Cumulative review materials (mirror exam breadth best)
- Topic-specific recitation problems
- Homework solutions
- Past exams
If the original references a figure that didn't extract from the PDF, the skill flags it honestly and reconstructs from the solution text. A clearly-labeled "Guidance (not in original)" section may follow with hints or precomputed log values β never mixed into the verbatim question.
Full protocol β references/drill_protocol.md
When less than 24 hours remain:
- Skip the
overview.mdapproval step - Compress micro-lessons (2β3 concepts per message)
- Drop "light recognition only" content entirely
- Prioritize cheat sheet > drilling > deep teaching
- Recommend a minimum 6-hour sleep budget β even if topics remain
Sleep beats one more topic. The skill never compromises this.
You: I have my AI midterm in 3 days. Materials are in ./course/.
11 topics. I haven't watched the lectures.
Skill: [Phase 1] Scanning 11 decks, 6 recitations, 3 homework
solutions⦠Drafting overview.md.
[Posts overview.md: scope, topic list, difficulty tiers,
12-hour study plan across 3 days, sleep budget.]
Approve, edit topic list, or request triage mode?
You: Approve. Start with adversarial search.
Skill: [Phase 2 β Adversarial Search]
Coverage map: minimax, alpha-beta, expectimax. NOT in scope:
Monte Carlo Tree Search.
π Concept 1/4: Why minimax exists.
Imagine playing chess against an opponent who plays optimally.
You can't just maximize your own score β they'll punish youβ¦
[200 words, ends with check-in]
Make sense? Want me to redo with a different analogy?
You: Got it, continue.
Skill: [Concept 2/4: the recursion structureβ¦]
- Pacing: "go slower" / "go faster" / "just give me the formula" β picked up and applied to subsequent lessons
- Scope: edit
overview.mdtopic list before per-topic drafting begins - Output format: ask for LaTeX, ASCII tables, JSON β defaults to plain text
- Drill style: "just show me the solution" or "let me try without hints"
- Parallel topic drafting needs an agent that supports subagent spawning (Claude Code, some Cursor setups). Without it, topics draft serially β slower but functional.
- PDF extraction uses
pdftotext. Image-heavy or scanned slides lose figures; the skill reconstructs from solution text where possible. - Drill quality depends on having recitations, homework solutions, or past exams. Without those, the drill phase falls back to concept review.
The Agent Skills format is intentionally simple β Markdown + frontmatter. This skill works (or has been reported to work) with:
- β Claude Code (native skill support, native subagents)
- β
Cowork / Claude desktop (
.skillinstall) - β
Cursor (project-level
.cursor/skills/or via system prompt) - β Codex CLI, Gemini CLI (skills directory or system prompt)
- β
Cline, Roo, Aider, Continue, Aider (paste
SKILL.mdas instructions) - β
Plain LLM API calls (use
SKILL.mdas the system prompt)
If your client supports either (a) skill discovery via SKILL.md frontmatter, or (b) custom system prompts that can read referenced files, this skill works.
PRs welcome β especially for:
- Templates for additional subject domains (math-heavy, code-heavy, language exams, law/medicine)
- Improved figure-reconstruction heuristics
- Localization for non-English course materials
- Better triage-mode protocols
- Reports of compatibility with additional agent clients
Open an issue or PR.
MIT β see LICENSE.
"Sleep beats one more deck." β the skill's deepest rule.
β If this skill saved your exam, consider starring the repo.