Safe Create/Read/Update/Delete operations for Obsidian Vault notes. Implements atomic writes, advisory locking, concurrent edit detection, and lossless YAML frontmatter handling. Use when reading, writing, updating, or appending to any vault note.
From obsidian-integrationnpx claudepluginhub richfrem/agent-plugins-skills --plugin obsidian-integrationThis skill is limited to using the following tools:
acceptance-criteria.mdassets/resources/architecture-background.mdassets/resources/kepano-analysis-summary.mdassets/resources/safety-learnings.mdevals/evals.jsonevals/results.tsvfallback-tree.mdobsidian-parser/parser.pyreferences/acceptance-criteria.mdreferences/fallback-tree.mdrequirements.txtscripts/vault_ops.pyExecutes pre-written implementation plans: critically reviews, follows bite-sized steps exactly, runs verifications, tracks progress with checkpoints, uses git worktrees, stops on blockers.
Guides idea refinement into designs: explores context, asks questions one-by-one, proposes approaches, presents sections for approval, writes/review specs before coding.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
This skill requires Python 3.8+ and standard library only. No external packages needed.
To install this skill's dependencies:
pip-compile ./requirements.in
pip install -r ./requirements.txt
See ./requirements.txt for the dependency lockfile (currently empty — standard library only).
Status: Active
Author: Richard Fremmerlid
Domain: Obsidian Integration
Depends On: obsidian-markdown-mastery (WP05)
This skill provides the disk I/O layer for all agent interactions with the Obsidian Vault. It does NOT handle syntax parsing (that belongs to obsidian-markdown-mastery). Instead, it ensures that every file write is:
os.rename() from a .tmp staging file.agent-lock file at the vault rootmtime comparison before/after readruamel.yaml for frontmatter (never PyYAML)python ./vault_ops.py read --file <path>
python ./vault_ops.py create --file <path> --content <text> [--frontmatter key=value ...]
python ./vault_ops.py update --file <path> --content <text>
python ./vault_ops.py append --file <path> --content <text>
<target>.agent-tmp.agent-tmp file was written completelyos.rename('<target>.agent-tmp', '<target>') — atomic on POSIX.agent-tmp is cleaned up<vault_root>/.agent-lock.agent-lock.agent-lock before writingos.stat(file).st_mtime before readingst_mtime againruamel.yaml (NOT PyYAML) to preserve comments, indentation, and array styles