install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/dendron" ~/.claude/skills/majiayu000-claude-skill-registry-dendron && rm -rf "$T"
manifest:
skills/data/dendron/SKILL.mdsource content
Dendron Skill
This skill helps you read, search, and create Dendron notes using the filesystem or the local
notes.db sqlite database. Notes are plaintext markdown with dot-delimited filenames. Vaults are folders containing a dendron.yml and notes/ directory.
When to Use
- Navigating or querying existing notes (filesystem or sqlite)
- Creating new notes in the current vault
- Creating report notes when user asks for a report
- Running cross-vault queries only when explicitly requested
Vault Selection
- Default to the vault of the current working directory (the active vault).
- Only run across all workspace vaults if the user explicitly asks.
- Inspect
to see workspace vault list (dendron.yml
).workspace.vaults
File Conventions
- Notes live under
and are named with dot-delimited ids plus<vault>/notes/
..md - Common hierarchies:
,daily.journal.YYYY.MM.DD
,task.YYYY.MM.DD
,books.*
.scratch.* - Wikilinks use
.[[...]]
Access Methods
- Filesystem: use
,ls
, etc., scoped to the target vault’srg
dir.notes/ - SQLite (
): schema innotes.db
(tables:/Users/kevinlin/code/dendron-lite/prisma/schema.prisma
,Note
,Vault
,Heading
,Link
).SyncStatus
SQLite Pointers
stores the dot-delimited id,Note.fname
stores markdown (no frontmatter),raw
optional,title/desc/tags
links tovaultId
.Vault
table hasVault
andname
; join to limit queries to the active vault unless cross-vault is requested.fsPath- Use parameterized queries to avoid injection; when using the CLI, properly quote inputs.
Common Workflows
- Find notes by pattern: filesystem
or sqliterg "pattern" <vault>/notes -g "*.md"
queries onLIKE
/fname
.raw - List children under a hierarchy: filter filenames starting with
and extract the next segment.hierarchy. - Create a new note: write a markdown file under
; include frontmatter if needed.<vault>/notes/<fname>.md
Examples to Support
- “look at daily.* notes created in last week and look for terms matching scout”
- Identify last 7 days daily files in the active vault (
), then search contents fordaily.journal.YYYY.MM.DD
.scout
- Identify last 7 days daily files in the active vault (
- "extract all the 1st level children of pkg.* (should only get the name of the next dot delimited name)"
- From filenames starting
, return the segment immediately afterpkg.
(unique, non-empty).pkg
- From filenames starting
- "create a report on weekly scout activities"
- Create a new note at
with frontmatter and write the report content analyzing scout activities from recent daily notes.<vault>/notes/report.2025.11-weekly-scout-activities.md
- Create a new note at
Safety & Scope
- Do not modify files unless asked to create/update notes.
- Keep searches scoped to active vault unless cross-vault is requested.
- Prefer
for content search; avoid expensive full-tree scans when a vault path is known.rg
Quick Command Patterns
- Active vault path: read
and resolvedendron.yml
entry whoseworkspace.vaults
matches CWD (defaultfsPath
).. - Search text:
.rg "term" <vault>/notes -g "*.md" - SQLite daily search (active vault only):
sqlite3 notes.db "SELECT fname FROM Note n JOIN Vault v ON n.vaultId=v.id WHERE v.fsPath='.' AND fname LIKE 'daily.journal.%' AND date(n.updated/1000,'unixepoch')>=date('now','-7 day') AND raw LIKE '%scout%';"
- Children of hierarchy via fs:
then parse next segment.find <vault>/notes -name 'pkg.*.md' -maxdepth 1 - Create report note: Generate filename
and write toreport.$(date +%Y).$(date +%m)-{kebab-case-name}.md
with frontmatter.<vault>/notes/
Follow these steps when responding:
- Assume target vault is the default active vault unless user mentions otherwise
- Choose access method (filesystem/sqlite) appropriate to the query.
- Execute search or creation.
- Return concise results; if creating, show path and key fields.