Lacuna
unlistedby Leon
Finds the gaps in your knowledge: AI quizzes from your notes, PDFs and images, with scoring, error analysis and exam readiness. Works with Claude, Gemini or ChatGPT (your own API key).
Lacuna
Find the gaps in your knowledge before the exam does.
Lacuna is an Obsidian plugin that turns your lecture notes, PDFs and images into comprehension quizzes, grades your answers with a score and an error analysis, and tells you how ready you are for the exam โ based on your actual results, not on how confident you feel.
Lacuna is Latin for "gap".
๐ฉ๐ช Deutsche Anleitung
Features
- Quizzes from anything in your vault โ a note, a PDF (with page range), an image of a blackboard, or a whole folder. Multiple choice and open questions, three difficulty levels.
- Real grading, not just right/wrong โ open answers get partial points, every mistake gets an error type (knowledge gap, confusion, incomplete, application error, calculation error, imprecise), what was wrong, the correct reasoning, a reference to the source and a follow-up question.
- Follow-up round โ one click turns the follow-up questions into a new quiz, without another AI call.
- Past exams as style template โ questions in the style and at the level of an old exam, with content from your material.
- Exam readiness โ a live bar in the progress note:
- Coverage: which topics of the course you have tested (with an editable topic list, created only after you confirm).
- Mastery: your scores in the latest quizzes per topic.
- Recall: how much you probably still know today, computed with FSRS (Free Spaced Repetition Scheduler, the algorithm behind modern Anki) โ from your quiz results only.
- Exam date: countdown and a forecast of what is left on exam day if you stop reviewing now.
- Biggest levers: the three topics where studying pays off most right now, each with a "quiz on it" button.
- "How sure are you?" โ optional confidence rating per question. It never changes points or the review plan, but shows where you overestimate yourself and puts "sure but wrong" answers first in the next review.
- Everything is Markdown โ quizzes, results, progress and topic lists are normal notes in your vault. Solutions are stored hidden inside the quiz note, so it syncs with the rest of your vault.
- Your AI, your key โ Claude (Anthropic), Gemini (Google) or ChatGPT (OpenAI). Shows token usage and the approximate cost below every quiz.
- English and German โ the interface follows Obsidian's language; quizzes are always written in the language of your material.
How it works
- Right-click a note, PDF or image โ Lacuna: Create quiz (or a folder โ Lacuna: Create quiz from folder).
- Answer in the note: check boxes for multiple choice, write below Answer: for open questions.
- Click Evaluate. The quiz note turns into the result with score, error analysis and follow-up questions.
- Right-click the subject folder โ Lacuna: Update progress to see patterns across quizzes, the exam readiness and what to do next.
Exam readiness Networks โโโโโโโโโโ 53 %
Coverage 100 % ยท Mastery 80 % ยท Freshness good
Exam in 128 days ยท on exam day without further review: 33 %
Biggest levers:
1. Subnetting โ 50 % mastered (medium)
2. VLAN โ little evidence yet (high)
Installation
Lacuna is not in the community plugin directory yet.
With BRAT (recommended for beta testing)
- Install the community plugin BRAT (Beta Reviewers Auto-update Tester).
- BRAT โ Add beta plugin โ enter this repository's URL.
- Enable Lacuna under Settings โ Community plugins.
Manually
- Download
main.js,manifest.jsonandstyles.cssfrom the latest release. - Put them into
<your vault>/.obsidian/plugins/lacuna/. - Reload Obsidian and enable Lacuna under Settings โ Community plugins.
Then open Settings โ Lacuna, pick a provider and enter your API key:
| Provider | Get a key | Default model |
|---|---|---|
| Claude (Anthropic) | platform.claude.com โ API Keys | claude-sonnet-5-5 |
| Gemini (Google) | aistudio.google.com โ Get API key (free tier available) | gemini-3.8-flash |
| ChatGPT (OpenAI) | platform.openai.com โ API keys | gpt-6.1-sol |
A typical quiz (create + evaluate) costs a few cents with the default models; Gemini's free tier costs nothing.
How exam readiness is computed
Each topic counts as one card in FSRS. Every evaluated quiz is one review of each topic it contains, rated by the score for that topic:
| Score on the topic | FSRS rating |
|---|---|
| below 40 % | Again |
| 40โ69 % | Hard |
| 70โ89 % | Good |
| 90 % and above | Easy |
Exam-level quizzes are rated slightly more leniently, intro quizzes slightly more strictly.
Per topic: readiness = mastery ร recall ร evidence. Evidence reaches 100 % once at least 6 points have been asked about a topic, so a single lucky answer does not count as "done". The subject value is the weighted mean over all topics of the topic list (untested topics count as 0). Without any quiz at exam level or with a past exam, readiness is capped at 80 % (configurable).
The self-rated confidence is deliberately not part of this: it is shown as calibration only.
Privacy and disclosures
-
Network use: Lacuna sends content to the AI provider you choose (Anthropic, Google or OpenAI), and only when you
- create a quiz (the selected note, PDF pages, images or folder),
- evaluate a quiz (the questions, model answers and your answers),
- update the progress note manually (your past mistakes, to find error patterns),
- build or extend a topic list (the material of the subject folder, after you confirm a cost estimate).
Nothing is sent anywhere else, and there is no telemetry.
-
Account / payment: you need an API key from one of these providers. Claude and ChatGPT bill per use; Gemini has a free tier. Lacuna itself is free.
-
API keys are stored locally in
.obsidian/plugins/lacuna/data.json. Never share that folder โ share the release files instead. -
Lacuna only writes notes it created itself (recognized by
lacuna:in the frontmatter). If one of your notes already uses the name of the progress note or topic list, it is left untouched. Your own frontmatter properties (tags, aliases, โฆ) on quiz and progress notes are kept.
Coming from Skript-Check
Lacuna is the successor of Skript-Check, a German-only version of this plugin. On first start Lacuna takes over its settings and API keys, and it reads everything Skript-Check created: quizzes (also unevaluated ones), progress notes, topic lists and the exam date. Disable Skript-Check afterwards.
Development
npm install
npm test # Vitest, runs against a small stand-in for the Obsidian API
npm run build # type check + bundle to dist/main.js
src/core/โ pure logic without Obsidian (scoring, Markdown, readiness, topic list), fully unit-testedsrc/ai.tsโ the three providers, structured JSON output, retries and fallback modelsrc/sources.tsโ reading notes, PDFs (via Obsidian's pdf.js), images and folderssrc/ui/โ dialogs, settings tab and the live readiness viewsrc/i18n.tsโ all English and German strings
To try a build in a vault, copy dist/main.js, manifest.json and styles.css into .obsidian/plugins/lacuna/.
Releases: npm version <x.y.z> --no-git-tag-version, commit and push to main. The release workflow sees the new version in manifest.json and publishes the GitHub release with main.js, manifest.json and styles.css.
License
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.