I kept running into the same problem while learning: I'd jump into an advanced topic, realize I was missing prerequisites, then forget the basics I'd just learned.
Flashcard apps didn't understand dependencies. Note apps didn't schedule reviews. So I built my own.
It's called PALEE — Personal Active Learning & Evaluation Engine. It's a CLI that lives inside your Obsidian vault and tells you what to study next.
GitHub: https://github.com/Kuldeep2822k/cli — stars and feedback welcome 🙏
What it does
Your vault is the database. No separate DB, no sync headaches. Study state lives in frontmatter:
palee_schema: 1
palee_id: T-docker-volumes
title: "Docker Volumes"
depends_on:
- T-docker-basics topic_mastery: 0.725 ease_factor: 2.36 interval_days: 6 due_at: 2026-01-21 --- Then: npm install -g @kuldeep2822k/palee
palee config set-vault ~/Documents/Obsidian/Learning
palee adopt "Docker Fundamentals.md"
palee next
→ Learn: Pod Lifecycle in Kubernetes
palee test T-pod-lifecycle-k8s
AI asks you to explain it (Feynman method), grades you,
you confirm and it saves mastery
palee progress
→ 23.45% overall mastery
Three ideas drive it:
- Deterministic core, AI on the edges SM-2 spaced repetition + a DAG for dependencies. When it says "study this next," you can trace why — what's due, what it unlocks, what depends on it. AI is just a constrained tutor, not the scheduler. It gets read-only tools, you confirm every consequential write.
- Dependency-aware, not just due-date aware Never study something before its prerequisites. Roadmap imports are validated as a DAG, offline, no network needed.
- Session continuity Every session is saved as an Obsidian note, plus a 250-word hot memory file. Next time you run palee session start, it resumes where you left off. The newest bit: --auto-chain + wikilinks I just added something I'm pretty excited about: palee adopt --auto-chain palee roadmap --auto-chain It resolves [[wikilinks]] in your notes into real dependencies. Write naturally in Obsidian, get a proper learning graph for free. This was trickier than it sounds: Independent ## Track sections kept getting merged into one mega-chain — had to scope chaining per-track Nested folders sorted wrong (01-foundations/03-extras vs 02-linux) — fixed by comparing full path segments Had to make sure [[diagram.png]] never gets frontmatter written into it How I built it TypeScript + Node 22, Commander for CLI, YAML frontmatter for storage Hand-rolled SM-2 + DAG engine (no black box) Atomic writes + file locking so it survives concurrent Obsidian edits, Windows and Unix paths Works with any OpenAI-compatible endpoint for the AI tutor (I use a free tier) 982 tests across 161 suites — including fuzz, fault-injection, and timezone tests, because spaced repetition across timezones is sneaky Docs are at https://kuldeep2822k.github.io/cli/ if you want the deep dive. Try it? npm install -g @kuldeep2822k/palee I'm building this in the open and I'd love real feedback. If you use Obsidian for learning, try palee next on your vault and tell me if the recommendation makes sense. And if you find it interesting, a star on GitHub helps more than you think: https://github.com/Kuldeep2822k/cli What are you using to track learning right now? Curious what's worked for you.``
Top comments (0)