npx claudepluginhub optimeta/paideiaExam-prep workspace for math/physics courses. 18 slash commands + 6 skills to ingest course materials, extract HW-density-weighted patterns, drill via twins/blinds/chains/mocks, and grade hand-written answer PDFs. Every course PDF — lectures, textbook, homework, solutions — is routed through a parallel vision pipeline (one agent per PDF, sequential Read per agent) that transcribes to faithful LaTeX markdown; pdfplumber was tried as a fast path and proved unreliable on real course content. Hand-writing OCR engine is selectable per course: Claude native vision (default, no install), local Qwen3-VL via Ollama, or Tesseract. 0.5.0 adds a per-course statusline (paideia · COURSE · D-N · phase · Pk ↑) wired by init-course; 0.8.0 adds /paideia:doctor — a one-shot install + workspace diagnostic with permission-free --fix; 0.9.0 adds /paideia:alt — import an OPTIMETA Exam Radar (Alt plugin) export so lecture-emphasis exam signal folds in beside HW density; 1.0.0-rc.22 makes symbolic grading reachable by default — bundle wheels or first-run auto-provision (current default is opt-out); 1.0.0-rc.23 promotes source/nature/phase into the errors/log.md header schema and log_tool canonical fields, eliminating header vs writer drift; 1.0.0-rc.24 caps the first analyze batch at 3–4 files so batch-1 provably commits inside the window, and adds --resume to /paideia:analyze for idempotent continuation from partial=true index state; 1.0.0-rc.25 makes headless (-p) grade runs auto-provision the symbolic-verify stack instead of stalling on an unanswered [Y/n], and writes a per-step SymPy verdict badge (answers/converted/<stem>.verify.json) so the deterministic backstop is auditable on disk; 1.0.0-rc.26 adds /paideia:reindex (analyze-free coverage.md marker rewrite + errors/log.md facet materialization) and /paideia:graph (concept-graph on the built index); 1.0.0-rc.27 tightens /paideia:reindex coverage scope — only files tracked in the built index are rewritten, preventing stale-marker bleed from orphaned converted/** entries; 1.0.0-rc.28 makes the per-step SymPy badge (answers/converted/<stem>.verify.json) and the 6-column grade table MUST-EMIT contracts — headless symbolic+llm grades now enforce rendering the SymPy column and writing the auditable badge instead of collapsing to 5 columns + prose; 1.0.0-rc.29 bundles two fixes: (a) teaches /paideia:reindex to locate the Exam-tier column by non-canonical alias headers (Strength, Emphasis, Priority, Weight, Tier) when the canonical `Exam tier` header is absent — fixing a false-canonical exit-0 where a Reverse-map table with an alias header and a non-rightmost tier column left retired glyphs in place, and preventing the rightmost-populated-cell fallback from contaminating a glyph-bearing data cell; (b) hardens /paideia:analyze first-batch commit and rebuilds /paideia:graph — analyze.md adds a batch-1 emit-time self-check (≤ min(4,N) files), a first-batch solutions/homework selection priority, and an active orphan-`.partial` cleanup subsystem (pre-write delete + post-rename confirmation + resume-entry sweep + committed-state gate) so a committed course-index never leaves scratch files behind (FND-002/010), and graph.md is rewritten from the index-shortcut fork to the canonical PHASE A→E converted-file concept-graph pipeline (RefD priors + Tarjan SCC/Kahn DAG, `## Nodes`/`## Prerequisite edges`/`## Cross-links` schema) matching plan 04 §2.2–§2.4 and the parseConceptGraph contract — this flips the default extraction path from index-shortcut to sequential converted/ read (parallel fan-out gated behind --rebuild to bound the FND-002/FND-029 timeout surface).