Obsidian Vault
Deterministic Obsidian vault edits without approval-prone shell/Python by default.
Obsidian Knowledge Base
Vault path: {{HOME}}/obsidian-vault
Use OpenClaw native file tools first: read, edit, write, and apply_patch.
Use shell commands only when the task genuinely requires command output that native tools cannot provide. Never use shell heredocs or inline Python for routine vault edits.
Approval-safe operating rule
Routine note and Todo work must not require Telegram approval prompts.
Preferred order:
readthe relevant absolute file path.- Make deterministic exact-text changes with
edit. - Use
writeonly when creating a new note or replacing a fully inspected/generated file. - Use
apply_patchonly when multiple vault files need coordinated deterministic changes. - Use
execonly as a last resort for searches, lint checks, or git/status operations; avoid it for content mutation unless Ben explicitly asks or the native tools cannot do the job.
Important: /usr/bin/obsidian is not a usable Obsidian.md vault CLI on this host. It is the npm package obsidian-cli v0.5.1 for ObsidianQA test-run imports into Obsidianqa.com, requiring API credentials. Do not use it for unattended Markdown vault edits or note maintenance.
Do not run:
python - <<'PY',python3 - <<'PY',cat <<EOF,tee <<EOF, or any other shell heredoc.- Inline Python/Node/Ruby/Perl one-liners to edit markdown when
editorwritecan do it. - Broad
find/lsdiscovery for normal note updates.
If exec approval is triggered, stop and switch to native file tools when possible instead of retrying variations of the same command.
Working rules
- Always work inside
{{HOME}}/obsidian-vault, never in the workspace. - Never read, edit, create, or delete anything under
Wiki/Kip/— that folder is managed by thememory-wikiplugin. - Read a note before editing it.
- Prefer known absolute paths for root files such as
{{HOME}}/obsidian-vault/Todo.mdand{{HOME}}/obsidian-vault/Ideas.md. - For targeted search, prefer native
readof likely files first. Useexec+rgonly when the target file is genuinely unknown. - Use the existing category structure: Work, Teaching, Home, Open Source.
- Keep filenames descriptive, because the filename is the note title.
- Do not delete notes unless Ben explicitly asks for deletion.
- Use wikilinks like
[[Note Name]]when adding references inside notes.
Folder map
{{HOME}}/obsidian-vault/
├── Archive/
├── Documents/
│ ├── Work/
│ ├── Teaching/
│ ├── Home/
│ └── Open Source/
├── Wiki/
│ └── Kip/ ← OFF LIMITS (memory-wiki plugin)
├── Ideas.md
├── Todo.md
└── README.md
Search
Use targeted search instead of browsing the whole vault.
Approval-safe approach:
- If the request names Todo, Ideas, or a likely note path, read that file directly.
- If the path is unknown but the note title is clear, infer the likely path under
Documents/<category>/and read it. - Only then use
execwithrgfor search.
When shell search is necessary, keep it read-only and narrow:
rg -il "search terms" {{HOME}}/obsidian-vault/ --glob '*.md' --glob '!Wiki/Kip/**'
List notes only when needed, and exclude Wiki/Kip/:
find {{HOME}}/obsidian-vault -name '*.md' -not -path '*/.*' -not -path '{{HOME}}/obsidian-vault/Wiki/Kip/*'
Create or edit notes
When creating a new note, use an absolute path under the vault.
Use this frontmatter template when creating notes:
---
created: '<ISO timestamp>'
modified: '<ISO timestamp>'
---
# Title
When editing a note:
- Read the file first.
- Make the smallest sensible deterministic edit.
- Prefer
editwith exact old/new text. If multiple nearby changes are needed, merge them into one replacement. - Update
modifiedif frontmatter exists. - Do not add frontmatter to older notes unless Ben asks or you are creating the note.
- Verify by reading the changed lines back. Use git status/commit only when explicitly requested or already part of the workflow.
Todo rules
Todo.md is the root task list.
Life-area sections:
## Work## Home## Open Source## Teaching
Inside ## Work, keep:
### High Priorityfor today's focus### Medium Priorityfor active but secondary work
Global Todo convention:
- Keep a single
## Donesection at the bottom ofTodo.mdfor all completed items across Work, Home, Open Source, and Teaching. - Do not use a
## Since Last Digestsection. The old buffer workflow is deprecated. - Completed items stay in
## Doneuntil Ben confirms a News Apps digest has been sent or explicitly asks to archive/sweep them. Then the digest workflow moves them intoArchive/Done-Items.mdwith a<!-- digest: YYYY-MM-DD -->marker and clears## Donefully. - Ensure each todo item has a relevant hashtag when possible. Use only canonical tags from
{{HOME}}/.openclaw/workspace/skills/news-apps-digest/taxonomy.yaml. - Run the
kip-todo-lintskill for hashtag validation when tags are new or suspect. Do not use ad hoc Python cleanup for tag fixes. - Remove obvious typos and stray empty lines during routine cleanup, but do it with exact
editreplacements after readingTodo.md.
When Ben names today's priorities:
- Read
{{HOME}}/obsidian-vault/Todo.md. - Move those items into
### High Priorityusing exacteditreplacements. - Put the most urgent ones first.
- Treat high priority as current focus, not permanent importance.
- Read the affected section back to verify.
When Ben says something is done or asks to check it off:
- Read
{{HOME}}/obsidian-vault/Todo.md. - Mark the checkbox as complete.
- Move the item to the bottom
## Donesection. - Ensure no blank lines remain after moving items.
- Verify by reading the affected active section and
## Done. - Do not leave checked items in active sections.
Do not write to Archive/Done-Items.md from this skill unless Ben explicitly asks to archive/sweep completed items after a digest.
When work is no longer urgent, move it back to ### Medium Priority.
Ideas rules
Ideas.md is the single root list for future work.
- Keep ideas under the matching category heading.
- Keep idea entries short and scannable.
- If an idea becomes active, move it into
Todo.md.
Documents rules
Documents/ holds longer-lived notes.
- Use
Documents/Work/for work notes. - Use
Documents/Teaching/for teaching notes. - Use
Documents/Home/for home notes. - Use
Documents/Open Source/for open source notes. - Keep subfolders when they are already useful, like
Documents/Teaching/CUNY/. - Put reference notes, planning notes, and support material in
Documents/, not inTodo.mdorIdeas.md.
Periodic review cues
- Daily: Correct typos, clean up misformatted notes, ensure relevant canonical hashtags, remove empty lines, and move completed items to the bottom
## Donesection inTodo.mdusing native file tools. Runkip-todo-lintif any new or suspect tags appear. - After Ben says a News Apps digest has been sent, sweep
## DoneintoArchive/Done-Items.mdwith that digest date marker, then leave## Doneempty. - Monthly: review
Ideas.mdand category notes inDocuments/. - Quarterly: archive stale notes and simplify the vault structure where needed.
Failure handling
If a vault operation triggers an approval prompt unexpectedly:
- Do not retry the same task with another shell/Python variation.
- Explain briefly that the shell path hit approval.
- Switch to
read/edit/writeif possible. - Ask Ben only if native tools cannot complete the task safely.
