From paideia
Use when the user wants exam-focused drilling from the course's analyzed material. Generates twin variants of known problems (`/twin`), runs strategy-level blind drills on known problems (`/blind`), creates integration problems chaining multiple patterns (`/chain`), surfaces pattern cards (`/pattern`), and shows coverage/exam-tier maps (`/hwmap`). Reads from `course-index/patterns.md`, `course-index/coverage.md`, and `converted/solutions/*.md`. Works for any math/physics course that has been ingested and analyzed.
How this skill is triggered — by the user, by Claude, or both
Slash command
/paideia:exam-drillThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**The user does not type math into the CLI — it is too slow.** All interactions obey:
The user does not type math into the CLI — it is too slow. All interactions obey:
Generation side (Claude → file). Problems, variants, and clean reference derivations are written as markdown files to quizzes/, twins/, chain/, derivations/. The user views them; no math dialogue in the terminal.
Answer side (user → PDF). The user solves on paper, scans as PDF, uploads to answers/<name>.pdf. The answer-processing skill (auto-loaded by /grade) converts the PDF to markdown and grades.
Strategy checks (when user is online) — when a command asks the user to verify understanding without producing a full written solution, it asks only for the strategy in 3–5 lines of prose (written in INTERFACE_LANG from .course-meta, default en): which pattern(s), which variables are fixed/expanded, what form the answer takes. Strategy matching is stronger evidence of mastery than line-by-line algebra.
HW density = exam probability. The professor has already told you, through HW, where the exam points live. Every drill command must bias toward HW-emphasized sections (🔥🔥 Exam-primary > 🔥 Exam-likely > 🟡 Exam-possible). Sections with no HW (⚪ Low-risk) are not "blind spots waiting to bite" — they are the professor's signal of what is off the exam. Do not treat low-HW sections as high-risk.
Concretely:
/twin, /blind default to the highest-HW-density problems when the user doesn't specify one./chain composes patterns drawn from Exam-primary sections; avoid pulling patterns from ⚪ sections unless the user explicitly asks./mock problem weighting follows HW density (see commands/mock.md)./quiz all samples ≥70% from 🔥🔥, ~25% from 🔥, ≤5% from 🟡, 0% from ⚪.This skill assumes /ingest and /analyze have been run. If course-index/patterns.md or course-index/coverage.md don't exist, tell the user to run those first.
course-index/patterns.md — recognition cards P1, P2, ...course-index/coverage.md — HW↔§ map, 🔥 exam tiers + ⚠weak flagscourse-index/summary.md — topic treeconverted/homework/*.md — original HW problemsconverted/solutions/*.md — HW solutions (ground truth for grading)errors/log.md — user's error history (append-only)<ts> is always date +%Y%m%d_%H%M%S (e.g. 20260611_213627) — one canonical
timestamp format for every drill artifact (/quiz, /twin, /chain, /mock).
Use underscores, not a - between date and time, and do not improvise a per-run
format. The stem you save (<id>_<ts>_sol.md) must be the exact <ts> you print
in the upload instruction (answers/…_<ts>.pdf) so /grade resolves it and the
course folder doesn't accumulate mixed-format filenames. (Generate it once with
date +%Y%m%d_%H%M%S and reuse that string for both the saved files and the
printed upload name.)
quizzes/<topic>_<ts>.md — problem statements (answers in _answers.md sibling)twins/<origin>_<ts>.md — variant problemschain/<ts>.md — integration problemsderivations/<topic>.md — clean reference derivations (post-success)errors/log.md — append error entries/twin <problem-id><problem-id> in converted/homework/ and converted/solutions/.course-index/patterns.md.twins/<id>_<ts>.md and solution to twins/<id>_<ts>_sol.md. Do not reveal solution unless user either (a) uploads their answer PDF, or (b) describes a correct strategy./blind <problem-id>converted/homework/.course-index/patterns.mdconverted/solutions/. Three checks: pattern / variable-choice / end-form.derivations/<stem>-<n>.md. On failure, flag the specific axis and log to errors/log.md./chain <N>course-index/coverage.md).⚠weak in course-index/coverage.md, or the latest weakmap's top entries)./pattern [§ or keyword or "all"]Read-only. Filter course-index/patterns.md by the query and return compact pattern cards.
/hwmap [§ | "hot" | "all"]Read-only. Project course-index/coverage.md by the query. hot ranks 🔥🔥/🔥 sections by HW density with their HW drill anchors and a per-§ recommendation (blind is accepted only as a legacy alias for hot — there is no blind-spot listing mode; ⚪ no-HW sections are low-risk by design).
Hold invariant:
Vary:
Quality check before presenting:
When any drill reveals an error, write to errors/log.md through the
deterministic writer — one call per graded source, entries as stdin:
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/log_tool.py" append --source=<source> <<'YAML'
- problem_id: <HW#-P#, twin-id, or chain-ts>
pattern: <Pk from patterns.md>
error_type: pattern-missed | wrong-variable | wrong-end-form | algebraic | sign | definition
summary: "<one-line description>"
source: <answers/converted/<name>.md | blind/<id> | chain/<ts>>
date: <ISO8601>
YAML
This is the same canonical schema as skills/answer-processing/SKILL.md Step 6 — keep every key, including source: (the statusline's mock-phase detection regexes on it, and it doubles as the --source= idempotence key: re-grading a source replaces its entries instead of piling up duplicates). The tool schema-validates and writes atomically; never hand-edit the log's appended entries. /weakmap (top-level command) consumes this log; this skill just produces entries.
/grade → loads answer-processing skill (PDF → MD → compare with converted/solutions/)./ingest or /analyze → loads course-builder skill.pdf skill.INTERFACE_LANG (en or ko) from .course-meta. Default en if the field is absent.$...$ inline, $$...$$ display).course-index/summary.md (§, Ch., Ch 3.1, etc.) regardless of language.## One-line verdict, ## Page N, # Vision-OCR transcription) stay in English regardless of language.npx claudepluginhub optimeta/paideia --plugin paideiaGuides reception of code review feedback: verify before implementing, avoid performative agreement, push back with technical reasoning when needed.
Design banners for social media, ads, website heroes, and print with multiple art direction options and AI-generated visuals.