obsidian-plugin/skills/vault-files/SKILL.md
Obsidian vault file ops via CLI: read, create, append, move, rename, delete, listings, daily/random notes. Use when managing vault files.
npx skillsauth add laurigates/claude-plugins vault-filesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| Use this skill when... | Use the alternative instead when... |
|---|---|
| Reading, creating, appending, moving, renaming, or deleting notes through the running CLI | Doing offline bulk edits across many .md files — use vault-frontmatter or vault-templates |
| Opening or creating today's daily note | Curating MOC hub notes that organise existing content — use vault-mocs |
| Managing folder layout while Obsidian is running | Renaming a note and rewriting all links to it — use vault-wikilinks |
| Recovering a previous version after a bad edit | — use file-history |
| Querying notes structured by a Base view | — use bases |
Comprehensive guidance for managing files, folders, and daily notes in Obsidian vaults using the official Obsidian CLI.
folder/note.md, not absolute filesystem pathsfile=<name> resolves like a wikilink (no extension needed); path=<full/path.md> is exactfile= nor path= is suppliedcreate omits .md from name= (added automatically); move requires .md in to=file="My Note Title"\n, tabs: \toverwrite, open, newtab, permanent, inline, total. The single exception is --copy (a universal output flag).vault=<name> before the command — see vault-management# All files in vault
obsidian files
# Files in specific folder
obsidian files folder=Projects/Active
# Filter by extension
obsidian files ext=canvas
# Total note count
obsidian files total
# All folders, or a tree view
obsidian folders
obsidian folders format=tree
# Info on the active file (path/name/extension/size/created/modified)
obsidian file
# Info on a specific file
obsidian file file=Recipe
obsidian file path="Notes/Recipe.md"
# Folder info
obsidian folder path="Projects"
obsidian folder path="Projects" info=files
obsidian folder path="Projects" info=size
# Word and character counts
obsidian wordcount file=Recipe
obsidian wordcount file=Recipe words
obsidian wordcount file=Recipe characters
# Read by name (wikilink resolution)
obsidian read file="Note Name"
# Read by exact path
obsidian read path="Projects/spec.md"
# Read the active file (no args)
obsidian read
# Copy result to clipboard
obsidian read file="Note Name" --copy
# Basic create (no .md needed)
obsidian create name="New Note"
# Create in folder with content
obsidian create name="Projects/Feature Spec" content="# Feature Spec\n\nDescription here."
# Create from a template (see also: templates skill)
obsidian create name="Meeting Notes" template="Meeting"
# Overwrite existing, then open it
obsidian create name="Draft" content="Fresh start" overwrite open
# Add to end of note
obsidian append file="Daily Log" content="\n## New Section\nContent here."
# Append without an extra newline
obsidian append file="Daily Log" content="more text" inline
# Add after frontmatter (prepend skips YAML)
obsidian prepend file="Inbox" content="- [ ] New task\n"
obsidian open file="Recipe"
obsidian open path="Notes/Recipe.md" newtab
# Move to a folder (requires .md extension on target)
obsidian move file="Draft" to=Archive/Draft.md
# Move + rename in one shot
obsidian move file="Old Name" to="Archive/New Name.md"
# Rename in place — preserves extension automatically
obsidian rename file="Old Name" name="New Name"
move and rename automatically update internal links if Settings →
Files & Links → Automatically update internal links is enabled.
# Move to system / Obsidian trash
obsidian delete file="Old Note"
# Permanent deletion (skips trash, irreversible)
obsidian delete file="Old Note" permanent
For undoing accidental deletes, see file-history (history:restore,
sync:restore, sync:deleted).
# Open today's daily note (creates if needed)
obsidian daily
# Get the expected daily note path (without creating)
obsidian daily:path
# Read today's content
obsidian daily:read
# Append / prepend
obsidian daily:append content="- Met with team about roadmap"
obsidian daily:prepend content="## Morning Goals\n- Review PRs"
# Open in a split or new window
obsidian daily paneType=split
obsidian daily paneType=window
The CLI does not expose a date= parameter on daily itself; for past
dates use obsidian open path="Daily/2026-02-15.md" (with the actual
folder/format from your Daily Notes settings).
# Open a random note
obsidian random
# Limit randomness to a folder
obsidian random folder=Inbox newtab
# Read a random note (returns content + path)
obsidian random:read folder=Inbox
# Unique note creator (Zettelkasten-style)
obsidian unique name="Idea" content="# Spark\n\n" open
# Open a URL in Obsidian's built-in web viewer
obsidian web url="https://obsidian.md/help/cli"
# In a new tab
obsidian web url="https://obsidian.md/help/cli" newtab
Useful for keeping reference docs side-by-side with notes without leaving Obsidian.
# Obsidian app version
obsidian version
# Reload the active window (cheap; preserves vault)
obsidian reload
# Full app restart (heavier; for plugin reloads, prefer plugin:reload)
obsidian restart
| Flag / Parameter | Description |
|------------------|-------------|
| format=json | JSON output for machine parsing |
| format=csv, format=tsv | Spreadsheet-friendly outputs |
| format=tree | Tree view (folders, outline) |
| --copy | Universal: copy command output to clipboard |
| overwrite | Replace existing file on create |
| permanent | Irreversible delete (skip trash) |
| inline | Append/prepend without an added newline |
| open | Open file after creating |
| newtab | Open in a new tab instead of replacing the active leaf |
| total | Return only the count for list commands |
| paneType=tab\|split\|window | Choose where to open |
| Context | Command |
|---------|---------|
| List files (structured) | obsidian files format=json |
| Filter by extension | obsidian files ext=md |
| File count | obsidian files total |
| Folder tree | obsidian folders format=tree |
| Read note content | obsidian read file="Name" |
| Read & copy to clipboard | obsidian read file="Name" --copy |
| Quick capture to daily | obsidian daily:append content="text" |
| Append without newline | obsidian append file=X content=Y inline |
| Rename in place | obsidian rename file=X name=Y |
| Word count only | obsidian wordcount file=X words |
| Random note (read) | obsidian random:read folder=X |
vault= prefix and vault infotools
Scaffold a new ComfyUI custom-node repo (pyproject, CI, release-please, vitest+pytest, JS extension skeleton) in the picker/gesture vein. Use when bootstrapping or init-ing a comfyui node pack.
tools
Orchestrate a ComfyUI node pack from idea to registry: scaffold, create + seed the repo, open the gitops adoption PR. Use when releasing or spinning up a new comfyui node pack.
testing
macOS EndpointSecurity/EDR high CPU & battery drain. Use when Kandji ESF / XProtect pegs a core; trace the exec storm via powermetrics + eslogger.
development
odiff pixel-by-pixel image diffing. Use when comparing screenshots, detecting visual regressions, diffing before/after PNGs, asserting golden images.