resurfacing
Skill0 starsChanged 2 months agoMITView on GitHub
Monthly pass (on demand or by cron) that finds projects, people, and knowledge notes that have gone quiet — no dated entry in 90+ days — and asks the user what to do with each: keep, archive, or link elsewhere. Read-mostly until the user answers; only then archives or links the specific notes named, and nothing else. NOT for: weekly project staleness at 14 days (weekly-review's Quiet Projects), who to reach out to at 60 days (people-notes -> Cadence), or nightly linking and inbox triage (nightly-consolidation).
In this repository15 other files it gives its agents.
- daily-journalSkill
- goalsSkill
- idea-pipelineSkill
- knowledge-baseSkill
- meeting-notesSkill
- nightly-consolidationSkill
- people-notesSkill
- project-trackingSkill
- second-brainSkill
- shopping-listSkill
- skill-tuningSkill
- standupSkill
- task-trackingSkill
- vault-recallSkill
- weekly-reviewSkill
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 5 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 26
Run the three vault_list calls above.
- Distinctive: line 35
Wait for the user's answers.
- Distinctive: line 38
Keep -> no write; the note is unchanged.
- Distinctive: line 40
Never write to a note the user did not name in their answer, and never act on more than the 15 items proposed in that run.
- Very specific: line 56
Never set status: Archived or call obsidian__relate for a note without an explicit answer from the user naming that note.
- Distinctive: line 57
Do not infer "no answer" as agreement to archive — silence changes nothing.
- Distinctive: line 58
Do not invent facts about why a note is stale beyond what the note itself and its links show.
- Very specific: line 59
Follow second-brain permission guardrails.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Resurfacing
Once a month (or on demand), surface the notes nobody has touched in a long time and let the user decide their fate. This skill never decides on its own — it proposes, the user answers, and only the answered notes change. Read second-brain for shared vault conventions and the obsidian__* tool surface.
Data Source
obsidian__vault_list type="project" stale_days=90,obsidian__vault_list type="person" stale_days=90, andobsidian__vault_list type="knowledge" stale_days=90— each returns notes with no dated entry at all, or one older than 90 days.last_entry_dateis the note's own dated content (an Activity Log block, a Conversation History row), not filemodifiedtime, so a consolidation pass touching a file cannot hide a genuinely quiet note.- Daily, synthesis, review, index, and MOC notes are deliberately out of scope — do not list them here even if
vault_listwould return them for one of those types. A daily note has no dated entries of its own to log against, a synthesis or review is a point-in-time record that is supposed to age, and an index/MOC is a hub, not a thread that goes quiet. None of them can sensibly be "kept, archived, or linked elsewhere."
Workflow
obsidian__vault_statusfirst, for today's date and orientation.- Run the three
vault_listcalls above. Merge the results into one list. - Sort oldest first: a null
last_entry_date(never logged at all) sorts ahead of every real date — it is the quietest a note can be. - Cap the run at 15 items. If more exist, say in the reply how many were left out.
- For each note, read enough of it to propose exactly one action:
- keep — still plausibly relevant despite no dated entry (created recently, or referenced from other active notes).
- archive — nothing suggests it is still live: no recent references, no open pending topics, the described work reads finished or abandoned.
- link to [[X]] — a specific other note in the vault now clearly covers the same ground (a merged project, a renamed topic), and this one should point at it rather than stand alone. Never invent a reason for archiving or linking. When none of the three is clearly right, propose keep and say why the note is uncertain rather than guessing archive — archiving is the one action here that changes the note's status, so it gets the benefit of the doubt.
- Reply to the invoking channel with one line per note: name as a wikilink, its
last_entry_date(or "no dated entry"), and the proposed action. Write nothing to the vault in this step. - Wait for the user's answers. Apply only what they actually said, one note at a time:
- Archive ->
obsidian__note_set_field note="[Note Name]" field="status" value="Archived". - Link to another note ->
obsidian__relate note="[Note Name]" target="[Other Note]" reason="why they're now the same thread". - Keep -> no write; the note is unchanged.
- An answer that does not map onto one of these two write tools: do not invent a call. Say so in the reply instead of leaving it silently unresolved.
- Archive ->
- Never write to a note the user did not name in their answer, and never act on more than the 15 items proposed in that run.
Output Shape
**Resurfacing — YYYY-MM-DD**
1. [[Note Name]] — last entry 2026-05-02 — proposed: archive
2. [[Other Note]] — no dated entry — proposed: keep
3. [[Third Note]] — last entry 2026-04-11 — proposed: link to [[Related Note]]
Reply with each number's answer (keep / archive / link to a note) and I'll apply it.Safety
- Never set
status: Archivedor callobsidian__relatefor a note without an explicit answer from the user naming that note. - Do not infer "no answer" as agreement to archive — silence changes nothing.
- Do not invent facts about why a note is stale beyond what the note itself and its links show.
- Follow
second-brainpermission guardrails; this skill has no delete or move capability regardless.
Cron Invocation
Scheduled monthly, the 15th at 09:00. Use the same workflow as an on-demand run. Deliver the list to the configured channel and stop — a scheduled run proposes for the next conversation to answer; it never assumes anything about notes the user has not yet responded to.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

