mikolajsapek/vaultcraft
v1.0.0MIT
Turns lecture slides, labs, meeting notes and papers into a linked Obsidian study vault.
Changelog
All notable changes to vaultcraft are documented in this file.
The format is based on Keep a Changelog and this project adheres (loosely) to Semantic Versioning.
Unreleased
[0.6.0] - 2026-10-30
Changed
- New pixel art obsidian crystal icon (
assets/logo.svg,.claude-plugin/icon.png) replaces the three-dot logo. - README links the live ChatGPT directory listing.
Added
- Visuals are mandatory: every concept and lecture note must contain a Pele-valid Mermaid diagram/chart or an embedded image (extracted slide, figure, or openly licensed web image). Slide images in lecture notes go inline under the paragraph they illustrate, never in a gallery.
- Goal check:
check_vault.pyreportsmissing_visualand fails until every concept and lecture note has a visual. - Diagram and chart standard: Pele, the Mermaid renderer built for Obsidian.
Charts are Mermaid blocks (
xychart,pie,quadrantChart, ...), not images; only diagram types today's Obsidian also draws; nothemeVariables, colour comes from--pele-*CSS. skills/vaultcraft/scripts/check_diagrams.mjs: goal check that parses every Mermaid block with Pele and flags Pele-only types andthemeVariables. Needs Node; installspeleon first run. Regression testtests/check-diagrams-test.shruns in CI.
[0.5.0] - 2026-10-17
Changed
- Model routing is real: the
vaultcraftagent runs on your session's model and only decides, and three worker agents pinned to their models do the writing:vaultcraft-extractorandvaultcraft-writer(Haiku),vaultcraft-drafter(Sonnet). Before, the agent asked for cheaper models in the prompt text, which does not switch models. - Generation runs as a loop per source batch until a measurable goal is met: extract, decide, write, goal check, fix (Haiku, then Sonnet, then the orchestrator decides), record progress.
skills/vaultcraft/scripts/check_vault.py: the goal check (coverage of named items, links, orphans, definitions, examples, lecture backlinks). Standard library only, so it runs locally in every host with code execution;tests/check-vault-test.shcovers it.install.shinstalls the worker agents;tests/manifest-test.shchecks each agent's model.
[0.4.0] - 2026-10-16
Added
- Optional vaultcraft MCP server for the ChatGPT and Codex directory version
(
openai/, server code in MikolajSapek/vaultcraft-mcp):get_vault_config,get_note_templateandcheck_vault. The skill uses them when the host lists them. TERMS.md, declared astermsOfServiceURLin the Codex manifest.scripts/package.shalso buildsdist/vaultcraft-<version>-openai.zipwith the server config and the OpenAI review test cases.- Cursor plugin manifest (
.cursor-plugin/plugin.json, skills only). - Claude directory icon (
.claude-plugin/icon.png, declared asicon).
Changed
PRIVACY.mddescribes the optional server. The Claude and Cursor versions do not use it.
[0.3.1] - 2026-10-16
Added
PRIVACY.md, linked from the README and declared asprivacyPolicyUrl/privacyPolicyURLin both manifests.- Codex
supportURL.
Changed
- README images moved to the
mediabranch, so the plugin ships no binary files. - The Codex logo and composer icon use
assets/logo.svg. - The Codex listing meets the OpenAI directory limits: short description of 30 characters or fewer, category
Education & Research. tests/manifest-test.shchecks for binaries and enforces the OpenAI listing limits.
Removed
- The outdated Obsidian MCP and API key setup from
docs/installation.md.
[0.3.0] - 2026-10-15
Added
- One plugin for Claude, ChatGPT and Codex.
.codex-plugin/plugin.json(with logo and icon inassets/) and.agents/plugins/marketplace.jsonsit next to the Claude manifests, so the same repo installs in Codex withcodex plugin marketplace add MikolajSapek/vaultcraftand can be submitted to the ChatGPT/Codex plugin directory and to the Claude directory (claude.ai, Cowork, Claude Code). - Runs without the agent. In claude.ai chat, ChatGPT and Codex the skill runs the whole pipeline itself, falls back to plain-text intake questions, uses Python for PDF figures when
pdfimagesis missing, and delivers the vault as a zip when it cannot write to your disk. tests/manifest-test.shchecks that all manifests carry the same version and that the repo stays within the plugin directories' file rules.scripts/package.shbuilds the upload zips.
Changed
- The pipeline moved from the agent into the skill. The instructions now live in
skills/vaultcraft/references/*.md, one file per phase group, so every platform runs the same text.agents/vaultcraft.mdis generated from them byscripts/build-agent.sh, and CI fails if it is out of date. Note templates moved toskills/vaultcraft/templates/, so they travel with the skill. - No silent installs. The pipeline now asks before running
brew installfor poppler or LibreOffice. - README documents directory installs, where the vault ends up on each platform, and everything the plugin does on your machine. The outdated Obsidian MCP prerequisite is gone; vaultcraft writes files directly.
0.2.0 - 2026-10-01
Added
- Claude Code plugin.
.claude-plugin/plugin.jsonand.claude-plugin/marketplace.jsonmake the repo installable on macOS, Linux and Windows with/plugin marketplace add MikolajSapek/vaultcraftand/plugin install vaultcraft@vaultcraft, and updatable with/plugin update. - Installer regression test (
tests/install-test.sh), run in CI next to shellcheck. It fails if the installer overwrites or deletes anything it did not install.
Changed
- Installer no longer touches other people's files.
install.shcopies only the agent and the/vaultcraftfront-end skill, records them in~/.claude/.vaultcraft-installed, and--uninstallremoves exactly those files. Previously it overwrote same-named Obsidian skills and its uninstall deleted them. - Templates are copied only on request with
./install.sh --templates <folder>, and existing templates are kept. The installer no longer creates~/Documents/ObsidianVaults/_templateson its own. maxTurnsraised from 40 to 150, with the turn budget in Phase 1.5 updated to match. A run that still hits the cap returns a partial result; saying continue resumes from.vault-progress.md.- The front-end skill dispatches the agent as
vaultcraftor, when installed as a plugin,vaultcraft:vaultcraft; the agent accepts plugin-prefixed Obsidian skill names. - README screenshot of an embedded slide deck now comes from the bundled demo materials instead of real course slides.
Removed
- Bundled copies of the Obsidian skills (
obsidian-markdown,obsidian-bases,obsidian-cli,json-canvas). They belong to kepano/obsidian-skills by Steph Ango (MIT) and were outdated copies without the licence notice. The docs now point to installing them from the source; the agent still falls back to its own tools without them.
Earlier unreleased changes (shipped in 0.2.0)
Changed
- Flashcards are now opt-in, not the default. The Phase 1 intake option reads
None (Recommended) · Key concepts only · Every concept. The agent no longer generates a## Flashcardssection unless the user explicitly asked for spaced repetition, never adds one to a vault that does not already use them, and never reintroduces one when rewriting an existing note. Templates keep the section as a clearly marked optional block. - Golden Template rewritten (
templates/lecture-golden.md) from a fixed-section skeleton into the argument-led format validated on a 16-lecture build (roughly 2400 to 4300 words per note). New required anatomy:[!tldr] TL;DR: the argument of the whole lecturein prose rather than bullets, a## Navigate this lecturemermaid flowchart, 8 to 11 numbered sections whose headings are claims rather than topic labels,## Running through the deck,## Key terms at a glance,## What to be able to do,## Exam cueswith model answers inside the callouts, and## Source coveragemapping PDF page ranges to topic clusters. - Figures must be named descriptively (
fig-three-schema, notslide-27) so a re-exported deck does not break every embed, and each embed carries a bold "Read the visual." lead-in explaining what the reader should look at. A figure without that lead-in counts as decoration. - Format (c) quality checklist updated to match the new anatomy.
Added
- Maintainer workflow documentation: added
ROADMAP.md,SECURITY.md,.gitignore, anddocs/codex-maintenance.mdto make the public OSS maintenance process clearer. The docs describe Codex-assisted review, installer/security review scope, synthetic fixture work, and manual verification expectations for AI-assisted changes. - AI-assisted review section in the PR template so contributors can disclose Codex or other assistant use while confirming manual review and privacy checks.
- Phase 6 — Embed source materials (on request) as a new standalone phase in the agent prompt (renumbered existing Phase 6 → 7, 7 → 8, 8 → 9; pipeline is now 0–9, ten phases including the optional 5.5/2.5 fractional ones). Documents the workflow for embedding original course slides / PDFs / paper sources inline in lecture, example, and reading notes when the user asks for it. Covers: LibreOffice
soffice --headless --convert-to pdffor.pptx/.docxconversion, normalized naming (L01_slides.pdf,S00_slides.pdffor sessions,PS01_solutions.pdffor problem sets), idempotent> [!example]+ 🎞️ Course slides (auto-embedded)callout insertion after frontmatter,source-file:frontmatter field for traceability, file-naming hygiene (PDF rename by content,md5 -qdedup, drop original.pptxpost-conversion), and safe source-folder cleanup via Finder AppleScript Trash. Phase runs only on explicit user request, never by default. - Six vault types in Phase 1 question 1:
studies,work,personal,research,reference,teaching. Each gets its own folder structure (e.g.,workhasDecisions/for ADRs,researchhasPapers/+Bibliography/,teachingadds "How to introduce this" + "Common student misconceptions" sections per concept). Tables.md, exam questions, and other defaults adapt accordingly. - Eight explanation styles (Principle 19, expanded from ELI5-only):
eli5,technical-analogy,historical,counter-example,visual-metaphor,real-world-application,devils-advocate,worked-example. User picks 1–3 in Phase 1 question 8; defaults differ by vault type. docs/vault-types.md- full reference for all six vault types with folder structure, special behaviour, frontmatter examples, and guidance on choosing.- Status footer - agent prints
─── vaultcraft · model: <model> · phase N/9 · <stat> ───after every major output to keep brand visible and surface model tier in real time. - 3-tier model routing (Principle 18 expanded): Tier 1 Haiku for mechanical writing, Tier 2 Sonnet for synthesis, Tier 3 Opus for novel ELI5 analogies / ambiguous extraction / hard reasoning. Replaces single-tier Haiku-only delegation.
- CODE_OF_CONDUCT.md adapted from Contributor Covenant, simplified for a small student project.
- CHANGELOG.md following Keep a Changelog format.
- Strengthened English-default language policy as a top-level non-negotiable section in the agent prompt. Conversation can match user's language; artefacts written to disk stay English unless user explicitly requests another language.
Changed
- Phase 1 grew from 9 to 11 questions, restructured around vault type → name → goal → priorities → deadline → format → depth → explanation styles → path → sources → language.
- README intake table reorganized: Context (1–4) · Deadline (5) · Format (6–8) · Inputs/outputs (9–11).
- Banner ASCII art now prints on every agent invocation (not just first session).
- Subtitle below ASCII reverted to single-line
⛏ an obsidian study vault builder ⛏.
0.1.0 - 2026-05-06
First public release of vaultcraft.
Added
agents/vaultcraft.md- the core agent, ~850 lines, 11 phases (0 through 8 with halves), 20 numbered principles- Phase 0: mode detection (bootstrap / incremental / resume)
- Phase 1: 9-question intake form
- Phase 1.5: budget plan +
.vault-progress.mdfor resumable runs - Phase 2 / 2.5 / 3: extraction, vault config, structure
- Phase 4: atomic concept notes (with wikilink registry pre-flight check)
- Phase 5: lecture and lab study sheets
- Phase 6: optional JSON Canvas (low priority)
- Phase 7: MOC +
Tables.mdfor oral exams - Phase 8: quality pass (broken-link audit, orphan check, depth check)
- 3-tier model routing (Principle 18) - Haiku for mechanical work, Sonnet for synthesis, Opus for hard reasoning
- ASCII banner greeting - agent prints
VAULTCRAFTASCII art on every invocation - Status footer -
─── vaultcraft · model: X · phase N/8 · stat ───after every major output skills/- 4 bundled Obsidian-specific Claude Code skills:obsidian-markdown- wikilinks, embeds, callouts, propertiesobsidian-bases-.basefilterable database viewsobsidian-cli- bulk vault operationsjson-canvas-.canvasconcept-map files
templates/- 4 note templates:concept.md,lecture.md,lab.md,bridge.mddocs/- installation, usage, conventions, examples, FAQ.github/- banner image, issue templates (bug / feature / course recipe), PR template, markdown-lint workflow- README with banner, badges, quick navigation, concrete output stats, screenshot of real 4-course vault graph view, screenshot of
Tables.md - CONTRIBUTING.md with style guide and privacy rules
- CODE_OF_CONDUCT.md adapted from Contributor Covenant
- MIT License
Known limitations
- Source quality matters - bullet-only slide decks produce thinner vaults
- PPTX support requires LibreOffice (
soffice --headless --convert-to pdf) - Math notation in scanned PDFs (OCR) loses LaTeX
- Claude Code only - porting to other agent frameworks would need rewriting orchestration
Not yet shipped (planned)
- Hover preview screenshot in
examples/screenshots/ - ELI5 callout screenshot in
examples/screenshots/ - Demo GIF showing agent in action
- Course-recipe library (community-contributed working configurations for specific courses)