agentleFS
philpalmieriphilpalmieri/engineering-manager-skills/skills/obsidian/task-rollover/SKILL.md

task-rollover

Skill1 starsChanged 6 months agoMITView on GitHub

Move open tasks from previous daily notes to today's daily note in an Obsidian vault. Handles rollover arrows for recurring items, source date tracking, and cleanup of source files. Use when prepping today's daily note or when asked to roll tasks forward.

The file

We split this skill into the rules it gives an agent

6 rules. About 0 are common, 2 are distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

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

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

    Search all files in Dailies/ with dates BEFORE today for unchecked tasks (- [ ]).

    line 29
  2. Very specific:

    Add a source date suffix: if the task doesn't already have one.

    line 53
  3. Distinctive:

    Add rolled-over tasks to today's daily note (before the Priority Focus section if one exists).

    line 59
  4. Very specific:

    If there are no #today items, omit the 🔥 section entirely.

    line 75
  5. Very specific:

    One arrow per rollover: Only add ➡️ when moving a #today task forward.

    line 101
  6. Distinctive:

    Never move tasks from today's own daily: Only process dailies with dates strictly before today.

    line 104

≈ “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.

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

Task Rollover

Move all open tasks (- [ ]) from previous daily notes into today's daily note, then mark them as forwarded in the source. This prevents duplicate tasks across multiple dailies.

When to use

  • During daily prep ("prep my day", "roll tasks forward", "move yesterday's tasks")
  • Any time you notice open tasks sitting on old daily notes

Prerequisites

  • Obsidian vault with daily notes in a Dailies/ directory
  • Daily note filenames follow YYYY-MM-DD.md format
  • Today's daily note should already exist (create it first if not)

Process

Step 1: Scan for open tasks

Search all files in Dailies/ with dates BEFORE today for unchecked tasks (- [ ]).

grep -rl '^\- \[ \]' <vault_path>/Dailies/ | sort

Exclude today's daily from the results.

Step 2: Collect open tasks from each source daily

For each daily note with open tasks:

  1. Standalone tasks: Lines starting with - [ ] that are NOT indented inside meeting notes or other structured content. These are top-level tasks below a --- separator or in a "Moved Open Tasks" section.
  2. Nested tasks in meeting notes: Tasks (- [ ]) indented inside meeting records. These need special handling (see Step 5).

Step 3: Process each task for today's note

For each standalone open task:

  1. Add a rollover arrow (➡️) if the task has a #today tag. Place the arrow before #today. If it already has arrows, add one more.
    • Tasks WITHOUT #today get moved as-is (no arrow added).
    • The arrow count represents how many days the task has rolled over while tagged #today.
  2. Add a source date suffix if the task doesn't already have one. Format: [[Dailies/YYYY-MM-DD|YYYY-MM-DD]] using the source daily's date. If the task already has a date suffix (from a previous rollover), keep the ORIGINAL source date, not the intermediate daily.
  3. Preserve everything else on the task line: tags, links, emoji, formatting.

Step 4: Write to today's daily

Add rolled-over tasks to today's daily note (before the Priority Focus section if one exists). Use two sections:

### 🔥 #today items (rolled from yesterday)

- [ ] Task with arrows ➡️➡️➡️ #today [[Dailies/2026-05-11|2026-05-11]]
- [ ] Another task ➡️➡️ #today [[Dailies/2026-05-12|2026-05-12]]

### 📥 Moved Open Tasks

- [ ] Regular open task [[Dailies/2026-05-14|2026-05-14]]
- [ ] Another one #followup [[Dailies/2026-05-12|2026-05-12]]

The 🔥 section contains only #today-tagged items, sorted by arrow count descending. The 📥 section contains everything else, sorted by source date (oldest first).

If there are no #today items, omit the 🔥 section entirely.

Rollover escalation thresholds:

  • 2+ arrows: mention these items need attention when presenting to the user
  • 3+ arrows: flag with ⚠️ and suggest the user make a decision
  • 4+ arrows: flag with 🚨 and be direct that the item needs to either happen today or be removed from #today

Step 5: Clean up source dailies

For each source daily note:

  1. Mark standalone open tasks as forwarded: Change - [ ] to - [>] in the source file. This preserves the task text as a historical record while signaling it's been moved forward.
  2. Convert nested meeting-note tasks from - [ ] to plain - (remove the checkbox). This preserves the meeting context while preventing duplicate task appearances in Obsidian's task queries.
  3. Keep completed tasks (- [x]) in place. They're part of the historical record.
  4. Keep the Priority Focus section and any DataviewJS blocks. They're part of that day's record.

Step 6: Verify

After all moves:

  • Confirm zero - [ ] remain in any daily note before today
  • Confirm today's daily has all tasks accounted for
  • Report summary: "Moved N tasks from M daily notes. X items flagged for escalation."

Rules

  • MOVE, not copy. Tasks must be marked as forwarded ([>]) in source after adding to target. No duplicates.
  • One arrow per rollover. Only add ➡️ when moving a #today task forward. Do not add arrows in-place without moving.
  • Preserve original source dates. The [[Dailies/...]] suffix should always point to where the task was FIRST created, not the last daily it sat on.
  • Never modify completed tasks. - [x] items stay where they are.
  • Never move tasks from today's own daily. Only process dailies with dates strictly before today.
  • Idempotent. Running this twice on the same day should not create duplicates or add extra arrows. Tasks already marked [>] are skipped.

Example

Before (2026-05-12.md):

- [ ] ➡️ #today post update about ticket cleanup [[Dailies/2026-05-11|2026-05-11]]
- [ ] #followup Send summary to Sam
- [ ] Check on issue 4661 #followup [[Dailies/2026-04-20|2026-04-20]]

After moving to 2026-05-13.md:

### 🔥 #today items (rolled from yesterday)

- [ ] ➡️➡️ #today post update about ticket cleanup [[Dailies/2026-05-11|2026-05-11]]

### 📥 Moved Open Tasks

- [ ] #followup Send summary to Sam [[Dailies/2026-05-12|2026-05-12]]
- [ ] Check on issue 4661 #followup [[Dailies/2026-04-20|2026-04-20]]

2026-05-12.md after cleanup:

- [>] ➡️ #today post update about ticket cleanup [[Dailies/2026-05-11|2026-05-11]]
- [>] #followup Send summary to Sam
- [>] Check on issue 4661 #followup [[Dailies/2026-04-20|2026-04-20]]

Open tasks marked as forwarded. Completed tasks and meeting notes preserved.

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.