skills/ob-headless-sync/SKILL.md
Obsidian Headless Sync — systemd timer monitoring, diagnostics, and recovery for the ob sync service on headless machines
npx skillsauth add olafgeibig/skills ob-headless-syncInstall 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.
The Obsidian Headless Sync is running in a fixed interval every three minutes, controlled by a system service. The agent MUST not do the sync manually. This is important to avoid conflicts.
# 1. Is ob reachable?
which ob || echo "ob not in PATH — use: ~/.npm-global/bin/ob"
# 2. Timer status
systemctl --user list-timers --all --no-pager | grep ob-sync
# 3. Recent service logs
journalctl --user -u ob-sync-all.service -n 20 --no-pager
ob Binary/home/olaf/.npm-global/bin/ob~/.npm-global/bin/ob sync --path /home/olaf/vaults/akademeia
Symptom: Timer shows inactive (dead) even though it is enabled and has Persistent=true.
Trigger: If the service (ob-sync-all.service) is killed with SIGKILL after a timeout (e.g. from systemctl stop), the User Manager daemon can lose track of the timer's next-execution state. systemctl status shows Trigger: n/a and the NEXT column shows an old/distant timestamp or -.
Fix — run all three commands:
systemctl --user daemon-reload
systemctl --user reset-failed
systemctl --user start ob-sync-all.timer
Then verify:
systemctl --user list-timers --all --no-pager | grep ob-sync
# Should show: Active: active (running) and a near-future NEXT time
Do NOT just systemctl --user restart ob-sync-all.timer — the daemon-reload and reset-failed are required to clear the stale state.
| File | Purpose |
|------|---------|
| ~.local/bin/ob-sync-all-vaults | Wrapper script — discovers vaults via ob sync-list-local and syncs each |
| ~/.config/systemd/user/ob-sync-all.timer | Fires every 3min (OnUnitActiveSec=3min), Persistent=true |
| ~/.config/systemd/user/ob-sync-all.service | Runs the wrapper script; Restart=on-failure |
# Full restart (daemon-reload included)
systemctl --user daemon-reload && systemctl --user reset-failed
systemctl --user start ob-sync-all.timer
# Check status
systemctl --user status ob-sync-all.timer --no-pager
systemctl --user status ob-sync-all.service --no-pager
# Stop completely
systemctl --user stop ob-sync-all.timer ob-sync-all.service
# View logs
journalctl --user -u ob-sync-all.service -n 50 --no-pager
ob-sync-all.timer — the scheduler (fires every 3 min)ob-sync-all.service — the worker (runs ob sync)inactive (dead) state means no syncs are being triggereddevelopment
Multi-domain LLM Wiki in vault — build and maintain a federation of interlinked markdown wiki knowledge bases inside your Obsidian vault. Each domain wiki has its own schema, index, and log, linked across boundaries via path-based wikilinks. Use when user wants to use a wiki (create, ingest into, query, lint).
tools
Safe and effective use of TurboVault MCP tools — vault selection, active vault management, read/write/edit_note patterns, SEARCH/REPLACE syntax, search tools, graph tools, batch operations, verification, and troubleshooting. Load this skill whenever a task uses mcp_turbovault_* tools.
testing
--- name: {{BUNDLE_NAME}}-improvements description: "Container for agent-discovered optimizations to the {{BUNDLE_NAME}} bundle — {{SKILL_NAMES}}" metadata: version: "0.3.0" source: https://github.com/olafgeibig/skills hermes: tags: [template, improvement, bundle, profile] related_skills: [{{SKILL_NAMES}}] --- # {{BUNDLE_NAME}} Improvements This skill collects all improvements discovered while working with {{SKILL_LIST}}. Core skills remain untouched. **Profile-specific:** This
testing
--- name: {{BUNDLE_NAME}}-improvements description: "Container for agent-discovered optimizations to the {{BUNDLE_NAME}} bundle — {{SKILL_NAMES}}" metadata: version: "0.3.0" source: https://github.com/olafgeibig/skills hermes: tags: [template, improvement, bundle, profile] related_skills: [{{SKILL_NAMES}}] --- # {{BUNDLE_NAME}} Improvements This skill collects all improvements discovered while working with {{SKILL_LIST}}. Core skills remain untouched. **Profile-specific:** This