Anki add-on: Anki Math

Math SRS — Dependencies + Progressive Levels An Anki desktop add-on for studying mathematics with spaced repetition, adding two capabilities standard SRS lacks: Dependency gating — a concept stays out of the study pool until every prerequisite concept has become mature , then unlocks automatically. Progressive maturation — when a card matures, it advances to the next detail level (e.g. definition → proof outline → full proof) and its schedule resets to New, so deeper material is re-learned on a fresh curve. Both features are optional per note and live on one Math Concept note type. Requirements Anki desktop 25.09.x (V3 scheduler). FSRS recommended but not required. Features run on desktop only. Reviews done on AnkiDroid/AnkiMobile are reconciled on the next desktop launch (see below). Usage Add notes with the Math Concept note type. Fill Concept_Name and either Front / Back (plain card) or Level_1_Text … Level_3_Text for a progressive card. Current_Level starts at 1 . Set prerequisites via the Prereqs button in the editor toolbar: search concepts and add them. Cycles are detected and rejected on save. A new note with unmet prerequisites has its card(s) suspended until every prerequisite matures (interval/stability ≥ the configured threshold, default 21 days). Study normally; unlocks and level-ups happen automatically when you leave the reviewer. Tools → Math SRS: Rebuild gates re-applies gating across the whole collection (use after importing notes or bulk-editing prerequisites). See config.md for all settings. How it works Maturity is decided by FSRS stability ( stability_days ), falling back to card interval ( maturity_days ) when a card has no FSRS memory state — math_srs/maturity.py . The answer hook only enqueues maturity events (on a Good/Easy rating); the actual mutations run when you leave the reviewer, bundled into a single undoable CollectionOp ( math_srs/engine.py ). This keeps Anki's undo stack clean. Prerequisite edges are stored in a hidden MathSRS_Prereqs field (so they sync); a reverse index makes unlocking O(dependents) — math_srs/graph.py . Level-ups reset the schedule via col.sched.schedule_cards_as_new(...) , preserving the immutable review log — math_srs/progression.py .