agentleFS
chendanielychendaniely/skills/catch-up/SKILL.md

catch-up

Skill1 starsChanged 28 days agoMITView on GitHub

Use only when Dan explicitly asks to catch up in the vault (for example "catch me up", or /catch-up). Never start it on your own initiative. Drains the inbox, sweeps #todo lines into TODO.md, regenerates recent weekly rollups, and rewrites today''s daily-note Today block.

21 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use in-your-own-words, bro and 3 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • drafaelSkill

    in-your-own-words

    Restate the user's goals and the problem they are trying to solve to check understanding. Manual invocation only; use when the user explicitly invokes in-your-own-words or requests this understanding check. Do not solve the task or rewrite the assistant's last answer.

    Also in 3 projects that use this

  • MicrosoftSkill

    bro

    Re-explain the previous assistant message in a much simpler way, for when the reply made you go 'bro what'. Use /bro to get a simpler version of the last answer in Plain Language + Chicago Manual of Style, with diagrams where they help.

    Also in 3 projects that use this

  • MicrosoftSkill

    blast-radius

    Assesses network dependency and shared-infrastructure exposure. Use when the user asks which services, customers, SLA policies, routes, or redundant links are affected by a network fault.

    Also in 3 projects that use this

  • termdockSkill

    recall

    Retrieves cross-session memories about past decisions, lessons, and patterns. Use when user asks about prior work, past decisions, or mentions a feature. Triggers include check memory, what did we decide, how did we solve.

    Also in 3 projects that use this

  • photon-groveSkill

    unslop

    Detects and rewrites generic, overly polished, or AI-sounding prose while preserving meaning. Use when the user asks to "unslop", humanize, de-AI, tighten, or review whether writing sounds generated.

    Also in 4 projects that use this

The file

We split this skill into the rules it gives an agent

7 rules. 0 are common, 1 is distinctive, and 6 are very specific to this project.

  • 0

    Common

    Most of the 20 edited versions we read keep these.

  • 1

    Distinctive

    This author's own choices. Worth a look.

  • 6

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Read it. Decide where it belongs based on the vault's existing folder conventions (zettelkasten/<topic>/, zettelkasten/people/, etc.

    line 30
  2. Very specific:

    If a note's home is genuinely unclear, leave it in inbox/ and flag it in the session's summary — don't force a bad placement to hit zero.

    line 38
  3. Very specific:

    Search the vault for #todo task lines outside TODO.md itself — once for unchecked - [ ] task text #todo lines, once for checked - [x] ones:

    line 49
  4. Very specific:

    No duplicates: If TODO.md already has that task with the same (from [[Source Note]]) backlink, checked or unchecked, skip it.

    line 60
  5. Very specific:

    Leave the #todo line in the source note as-is (it doesn't get deleted — the source stays the historical record).

    line 65
  6. Very specific:

    Leave ## Log and everything else in the note untouched — this step touches only the ## Today section, identified by its heading, same …

    line 126
  7. Distinctive:

    If anything was flagged rather than resolved (an unclear inbox note, a transcript found where it shouldn't be), say so explicitly — don't …

    line 144

“Common” is measured: kept by at least 6 in 10 of the 20 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Catch Up

Overview

Dan works this vault in bursts separated by gaps — sometimes weeks. This skill runs when he asks for it ("catch me up", or /catch-up) to reconstruct context and clear the backlog that accumulated while he was away, in one pass.

It is not a status report. It changes the vault: files get moved, TODO.md gets swept, rollups get written, and today's note gets a fresh ## Today block. Nothing here needs Dan's line-by-line approval — draining the inbox and sweeping #todo are mechanical filing, not judgment calls about content. The one place that does need judgment (which of several candidate homes a note belongs in) gets a best-effort placement plus a one-line note in the daily log, not a stop.

The four steps, always in this order

First, confirm the working directory is the vault: it has TODO.md and 000-periodic_notes/. If either is missing, stop and say so — don't run any step.

1. Drain inbox/ (was 000-triage/)

For every note in inbox/:

  • Read it. Decide where it belongs based on the vault's existing folder conventions (zettelkasten/<topic>/, zettelkasten/people/, etc. — see the vault's CLAUDE.md for the current map).
  • Move it there via the obsidian CLI (obsidian move) if Obsidian is running, so wikilinks update; if the CLI is unavailable, defer that specific note's move rather than risk a plain mv breaking a link, and say so.
  • Never edit the note's own words. Filing is a location decision, not a content edit. If a note needs annotation, annotate below the original text.
  • If a note's home is genuinely unclear, leave it in inbox/ and flag it in the session's summary — don't force a bad placement to hit zero.

Do NOT drain machine-generated transcripts. sources/transcripts/<y>/<m>/ is where those live now (Phase 2's plaud reroute) — if any stray transcript notes are still in inbox/, that's a one-time migration already done (2026-08-20) or a sign the reroute broke; either way, flag it, don't silently re-migrate on every run.

2. Sweep #todo

Search the vault for #todo task lines outside TODO.md itself — once for unchecked - [ ] task text #todo lines, once for checked - [x] ones:

grep -rn '\- \[ \].*#todo' --include='*.md' . | grep -vE '^(\./)?TODO\.md:'      # unchecked
grep -rn '\- \[[xX]\].*#todo' --include='*.md' . | grep -vE '^(\./)?TODO\.md:'   # checked

The filter accepts paths with or without a leading ./: Claude Code's grep prints them without it.

For each unchecked hit:

  • No duplicates. If TODO.md already has that task with the same (from [[Source Note]]) backlink, checked or unchecked, skip it.
  • Otherwise, add a corresponding line to TODO.md under the right context heading, with a backlink to the source note: - [ ] task text (from [[Source Note]]).
  • Leave the #todo line in the source note as-is (it doesn't get deleted — the source stays the historical record). The tag stays on swept and new lines alike, so the TODO.md check above is what tells them apart.

Reconcile both directions, using both result sets: if an item is checked in TODO.md but its source #todo line is still unchecked, check the source too; if a source line is checked but its TODO.md line isn't, check that too. Never let the two drift.

Never touch lines inside machine-written blocks — between the ea-email:begin / ea-email:end markers or the rollup:generated markers. Code regenerates those blocks, so skip any hit that falls inside one, when sweeping and when reconciling.

The #todo gate is the note-sweep lane only. It has nothing to do with the Plaud author-filter (that's plaud_sync.py's extract_actions(), fixed 2026-08-20) — don't conflate the two mechanisms.

3. Regenerate weekly rollups (bounded scope)

Generate/refresh only the current ISO week and the previous one. Older weeks are backfilled only on explicit request ("backfill week N") — never as part of a routine catch-up. This bound exists because dailies reach back to 2024; a literal "regenerate everything missing" would emit dozens of files on the very first run.

File contract (fixed, don't improvise a different shape):

  • Path: 000-periodic_notes/weekly/<YYYY>/<YYYY>-W<ww>.md (zero-padded ISO week number, e.g. 2026-W34.md).
  • The generated content sits between two HTML comment markers:
    <!-- rollup:generated:start -->
    ...generated content here...
    <!-- rollup:generated:end -->
  • Anything Dan wrote outside those markers survives regeneration untouched. Read the existing file first (if any), preserve everything outside the markers verbatim, replace only what's between them.
  • A week with zero daily notes is skipped entirely — don't create an empty rollup file just to mark that nothing happened.
  • Content inside the markers: what moved that week (new notes, decisions, captures), pulled from each day's ## Log section and any ## Today items that got checked off — not a re-summary of every daily note in full.

4. Rewrite today's ## Today block

Today's daily note (000-periodic_notes/daily/<y>/<m>/<date>.md) gets its ## Today section (top of the file, above ## UBC) rewritten — hard cap: 5 lines:

  • Any dated item due within 3 days (scan TODO.md and recent captures for dates).
  • The current inbox/ count, if non-zero.
  • One suggested next action, chosen from what's actually pending — not a generic prompt.

This is the block Dan sees first when Obsidian opens (openBehavior: daily). It must be genuinely useful on one glance, not a status dump. If there's nothing worth 5 lines, say less — an accurate 2-line block beats a padded 5-line one.

Leave ## Log and everything else in the note untouched — this step touches only the ## Today section, identified by its heading, same read-preserve-replace approach as the rollup markers.

⚠️ The section ends at the first <!-- ea-email:begin line or the next heading, whichever comes first. The email digest writes its ## Email checklist between <!-- ea-email:begin todos … --> and <!-- ea-email:end todos -->, and the begin marker sits directly under ## Today, above the ## Email heading. Replacing up to the next heading would delete that marker and break the digest's block.

Closing

Report back to Dan, briefly: how many notes moved out of inbox/ (and where), how many #todo items got swept, which weeks got rollups (or "already current"), and what's now in ## Today. This is a summary of what changed, not a re-explanation of the steps above.

If anything was flagged rather than resolved (an unclear inbox note, a transcript found where it shouldn't be), say so explicitly — don't bury it in the numbers.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.