// the find
trane-project/trane
A deliberate practice engine for mastering complex skills
Trane is a spaced-repetition scheduler for hierarchical skill trees, not flashcard decks. Instead of isolated cards, you define courses with dependency graphs — lesson B won't appear until lesson A is sufficiently mastered. Originally built for Jazz improvisation practice, it works for any domain where skills build on each other.
The dependency graph model is the real differentiator from Anki: you encode prerequisite relationships and the scheduler respects them, so you can't accidentally practice advanced material before the foundations are solid. The plain-text file format (JSON manifests, Markdown exercise content) means course libraries are diffable, version-controlled, and shareable without a database. Test coverage looks solid — there's a large test library with real course fixtures and dedicated integration test files. The code is notably well-documented for a solo project; module-level doc comments explain design rationale, not just what the code does.
The UI story is essentially nonexistent — this is a library and CLI, so you're either building your own frontend or using one of the handful of community projects that wrap it. With 844 stars and 17 forks, the ecosystem is thin; if the author stops maintaining it, you're largely on your own. The scoring model is self-reported (you rate your own mastery after each exercise), which means the whole system's accuracy depends entirely on the user being honest with themselves — there's no objective measurement baked in. The domain-specific generators (transcription, music pieces, literacy) show the project's musical roots clearly; if you're trying to use this for, say, programming exercises or language learning, you're largely defining your own course structure from scratch with minimal examples outside the music domain.