Khawar Zamman Wani9 downloadsLearn your notes and PDFs with the Feynman technique. Clawd, a pixel tutor in glasses, finds the gaps in your explanations, re-teaches them and quizzes you. Uses your Claude Code login.
Learn the notes and PDFs in your vault with the Feynman technique. Your tutor is Clawd, a pixel tutor in glasses. You explain an idea in plain words; Clawd finds what's missing, wrong or hidden behind jargon, re-teaches just that, and quizzes you until it sticks. Claude runs through your Claude Code login, so your Pro/Max subscription works and you don't need an API key.
What it does:
pdftotext, falling back to Obsidian's built-in pdf.js), long PDFs split into page ranges, and page citations. Scanned PDFs are listed as unreadable.$…$, $$…$$), and everything is rendered with Obsidian's own Markdown renderer and MathJax, including quiz options, gaps and fixes. Formulas garbled by PDF extraction are written back as LaTeX.claude CLI). On Obsidian 1.8.7–1.12, Obsidian installs version 0.1.3 automatically.claude once in a terminal to sign in. The plugin finds it in the usual places (~/.local/bin, Homebrew, /usr/local/bin); if it doesn't, set the path in settings.poppler (pdftotext) for the best PDF text.Once it's listed in Obsidian's community plugins: Settings → Community plugins → Browse, search for Claude Tutor, install and enable it.
Until then, download main.js, manifest.json and styles.css from the latest release into <vault>/.obsidian/plugins/claude-tutor/, then enable it under Settings → Community plugins.
npm install
npm run build # type-checks, then writes main.js
VAULT="/path/to/your/vault"
mkdir -p "$VAULT/.obsidian/plugins/claude-tutor"
cp main.js manifest.json styles.css "$VAULT/.obsidian/plugins/claude-tutor/"
Then in Obsidian: Settings → Community plugins → turn on community plugins → enable Claude Tutor, and click the Clawd icon in the ribbon (or run the Claude Tutor: Open command).
For development, symlink the folder instead and run npm run dev to rebuild on save.
| Command | |
|---|---|
| Open | Opens the tutor (in the right sidebar, where it resizes with the sidebar; or in a tab if you turn that off in settings) |
| Start study session | Explain due concepts, then a short quiz |
| Quiz me on the current note | Reads the note if needed, then quizzes you on it |
| Explain a concept from the current note | Starts the Feynman loop on its most due concept |
| Re-scan study folders | Reloads the library |
All data stays in the plugin folder (.obsidian/plugins/claude-tutor/):
data.json: settings.progress.json: concepts, scheduling, attempts and misconceptions. It's written atomically, and a backup is kept if the file can't be read.pdf-cache/: extracted PDF text.In your vault, the plugin only writes notes you ask for: Teach → Save as note creates a note in Claude Tutor/Lessons/ (configurable).
Nothing is sent anywhere except to Claude, through your own claude CLI: one request per note read, and one per answer graded.
claude CLI (and pdftotext, if installed) as child processes, passing them your environment with common install folders added to PATH so they can be found when Obsidian is launched from the dock. That's why it's desktop-only.claude binary, and replaces progress.json with an atomic rename so a crash can't leave it half-written. It doesn't read or write anything else outside your vault.claude CLI, to evaluate explanations, write quizzes and reply. The plugin itself makes no other network requests and has no telemetry.gh attestation verify main.js -R wanikhawar/claude-tutor.npm install
npm run build # type-checks, then writes main.js
npm test # core unit tests (notes, PDF reflow/split, SRS, progress)
CLAUDE_LIVE=1 npx vitest run tests/live.test.ts # live test against Claude (Haiku): checks LaTeX output
npm run dev # rebuild main.js on change
| Path | Purpose |
|---|---|
src/main.ts |
Plugin: view, ribbon, commands, file menu, vault sync, progress file |
src/backend.ts |
What the UI calls: indexing, explain/quiz/grade/check, Ask Clawd |
src/library.ts |
Study scope, Markdown/PDF loading, PDF cache |
src/core/ |
Pure TypeScript: Claude bridge, prompts, SM-2, notes, PDF reflow/split, progress store |
src/ui/ |
Svelte 5 UI (Markdown and MathJax rendered by Obsidian) |