#What claude-note actually is
claude-note is the glue between my Obsidian vault and Claude: a set of
scripts and prompts (structured as Claude Code “skills”) that can read the
vault’s markdown files and link graph, and write back into it — closing out
a day’s notes, surfacing connections between old ideas, or drafting a
standalone note from something scattered across a week of daily entries.
This is an early draft. The interesting design decisions (how much the assistant is allowed to write vs. just suggest, how it avoids duplicating existing notes) deserve their own section once I’ve stress-tested them more.
#The core loop
Most of the value comes from one simple idea: treat the vault as a database the model can query, not just a folder of text files to paste into a chat. A minimal version of “find backlinks for a note” looks like this:
import { readdir, readFile } from "node:fs/promises";
import { join } from "node:path";
async function findBacklinks(vaultDir: string, target: string): Promise<string[]> {
const files = await readdir(vaultDir, { recursive: true });
const hits: string[] = [];
for (const file of files) {
if (!file.endsWith(".md")) continue;
const contents = await readFile(join(vaultDir, file), "utf8");
if (contents.includes(`[[${target}]]`)) hits.push(file);
}
return hits;
}
The real implementation is smarter about aliases and the vault’s actual link syntax, but that’s the shape of it.
#Skills built on top so far
- vault-today — morning review: recent notes, open tasks, a prioritized plan for the day.
- vault-close — end of day: extract action items, suggest links, surface carry-forward items.
- vault-graduate — pull durable ideas out of daily notes into standalone permanent notes.
#Still to write
- How the skills are actually structured/invoked (this deserves its own section with real examples).
- Where this breaks down — cases where the model over-writes or misses context a human would catch instantly.
- Whether any of this generalizes past Obsidian specifically.