daily-update
Run the daily wiki maintenance cycle: check all source freshness, update the index, and regenerate hot.md. Use this skill when the user says "/daily-update", "run the daily update", "update everything", "morning sync", "refresh the wiki index", or when triggered by the launchd cron at 9 AM. Also use to set up or verify the cron + terminal notification infrastructure for the first time ("set up the daily cron", "install the terminal notification", "how do I get the morning reminder?").
Security Assessment
Detected risks:
About daily-update
daily-update runs a lightweight daily maintenance cycle over an Obsidian-based wiki: it checks the freshness of all sources, refreshes the index, regenerates a hot.md summary, and writes a state file that a terminal notification reads. It is invoked manually (via /daily-update or phrases like run the daily update, morning sync, or refresh the wiki index) or automatically by a launchd cron at 9 AM, and it can also perform first-time setup of the cron and terminal-notification infrastructure.
Before running, it resolves configuration to obtain the vault path and wiki repo, derives a vault-scoped state directory keyed by an MD5 hash of the vault path (so multiple vaults are tracked independently), and reads the vault's .manifest.json. In its default run mode it performs a source freshness check, classifying each source as fresh, stale, or missing by comparing modification time against the ingested timestamp, then reconciles the index against the actual markdown pages in the vault. If hot.md is more than 48 hours old, it regenerates a roughly 500-word semantic snapshot from the ten most recently modified pages to keep the next session's context warm. It writes the last-update timestamp, pending delta, and vault path to the state directory, spawns an impl-validator subagent to verify the artifacts, appends a line to the log, and reports fresh/stale/missing counts to the user.
Setup mode walks the user through installing the launchd plist, optionally sourcing a terminal-notification script into the correct shell rc file (with special handling for Fish), running the script once to initialize state, and confirming the schedule. After any vault writes, it can refresh an optional QMD search index with update and embed steps, treating QMD as a search layer rather than the source of truth and reporting its status separately without rolling back vault changes on failure. Use it as a scheduled or on-demand hygiene pass that keeps a wiki's index, summary, and freshness signals current.
FAQ
What does the daily run actually update?
It checks source freshness, reconciles the index against the vault's markdown pages, regenerates hot.md if it is over 48 hours old, writes a state file, and logs the run.
How is it triggered?
Manually via /daily-update and similar phrases, or automatically by a launchd cron at 9 AM; it can also set up that cron itself.
Does it support multiple vaults?
Yes. State is stored in a vault-scoped directory keyed by an MD5 hash of the vault path, so multiple vaults are tracked independently.
When is hot.md regenerated?
Only when it is more than 48 hours old, at which point it writes a fresh roughly 500-word snapshot based on the ten most recently modified pages.
What happens if the QMD search index refresh fails?
It reports the QMD status separately and does not roll back the vault changes, since QMD is treated as a search index rather than the source of truth.
Install daily-update
Quick Setup:
- Copy the skill folder to
.claude/skills/ - Claude will automatically detect and use the skill
Repository
ar9av/obsidian-wiki