bhushan agrawal41 downloadsDefine and run deterministic tests against your vault to catch knowledge regressions.
Automated tests for your Obsidian vault. Write simple rules that check whether your notes, links, and metadata are actually in the shape you expect — and catch it when they're not.
Think of it as CI for your knowledge base: instead of manually clicking around to check if a note exists, a link resolves, or a required frontmatter field is present, you write a test file once and let the plugin verify it every time your vault changes.
🎥 Demo video: Watch the demo on YouTube
Vaults rot quietly. A note gets renamed and a link silently breaks. A required frontmatter field gets forgotten on a new page. A concept you meant to link back to never gets referenced. None of this throws an error — it just sits there until you notice, usually much later than you'd like.
This plugin gives you a way to define what "healthy" looks like for your vault, and check it automatically.
_knowledge-tests by default.Everything runs locally, inside Obsidian. No external service, no account, no cloud sync required.
| Test type | What it checks |
|---|---|
note-exists |
A specific note exists in the vault |
link-exists |
A link between two notes resolves correctly |
min-backlinks |
A note has at least a minimum number of backlinks |
frontmatter-property |
A note has a required frontmatter field (and optionally a specific value) |
source-exists |
A note has an outgoing source/reference link (e.g. evidence, citation) |
Create a Markdown file inside your configured test folder with YAML frontmatter describing the check. For example, to make sure a note exists:
---
type: note-exists
target: "Projects/Roadmap"
---
Or to require a minimum number of backlinks:
---
type: min-backlinks
target: "Concepts/Second Brain"
minimum: 3
---
Each test type has its own required fields. The plugin validates these when it loads the file and will tell you clearly if something is missing or malformed — no silent failures.
_knowledge-tests.Tests rerun automatically when relevant notes change. You can also trigger a manual run from the sidebar at any time.
main.js, manifest.json, and styles.css into <your-vault>/.obsidian/plugins/knowledge-test-runner/.git clone <repo-url>
cd knowledge-test-runner
npm install
npm run build
_knowledge-tests.Built with TypeScript, esbuild, and the Obsidian plugin API.
Does this modify my notes? No. It only reads your vault to evaluate tests. It never edits, moves, or deletes anything.
Does it need an internet connection? No, unless you choose to use the optional AI assistance feature, which only activates when you trigger it manually.
What happens if a test file is malformed? The plugin will flag it as invalid in the sidebar with a description of what's wrong, rather than failing silently or crashing.
Can I have tests in subfolders? Yes, the loader scans the test folder recursively.
Issues and pull requests are welcome. If you're proposing a new test type, please include a short description of the use case along with the implementation.
MIT — see LICENSE for details.