Sheikh M Sahil50 downloadsWorks with TaskNotes to track each task's lifecycle: status history, context log, time per status, sign-off prompts, break and deep-work slots with daily reports, and a daily auto-roll for unfinished
An Obsidian plugin that works alongside TaskNotes to add task-lifecycle tracking and a daily auto-roll for unfinished tasks.
Status: early release (v0.2.2), desktop only. Plugin ID
sheiko-task-lifecycle. Tested against TaskNotes 4.13.4. Listed in the Obsidian Community directory.

Click the ribbon icon (history clock) on a TaskNotes task to open the lifecycle window. Screenshots are from the developer's test vault: sample task names are test data and may not match the task's current status, and some settings differ from the defaults below.
Sheiko edits your notes, so it starts switched off and stays cautious:
Once allowed, it writes to task notes (frontmatter: completedDate, closedBy, timeToCloseMinutes, timeWorkingMinutes, timeOvernightMinutes, timeWeekendMinutes, closureSource, scheduled, rollCount, status; sections: ## Context, ## Status History, ## Lifecycle Summary) and, when auto-roll runs, to that day's daily note (## 🔁 Rolled Over, creating the note if it doesn't exist). To find TaskNotes tasks it looks through the vault's Markdown files (Obsidian's directory lists this as "vault enumeration"), but it only edits task notes, the daily note and, if you use slots, its own report notes (see below). It never sends data anywhere: no network use, no telemetry.
New in 0.2.0: notes typed in the sign-off window are added to that task's ## Context. If you use break or deep-work slots, Sheiko also writes one report note per day in a report folder (default Sheiko Reports/), named by date, e.g. Sheiko Reports/2026-10-06.md. Each slot adds a block, and earlier blocks are never changed. No slots, no report notes.
closedBy on closes Sheiko records. Left blank, closedBy isn't written.in-review) in TaskNotes' settings, then pick it as Review status here. Until a review status is picked, the checkbox move and both sign-off prompts stay off.## Context section in each task note, with entries formatted - **{timestamp} — {who}:** {text} (— {who} is left out when no identity is set).## Status History section with ISO-timestamped transitions. Clicking the same status again isn't logged.completedDate (full ISO), closedBy (only if an identity is set) and timeToCloseMinutes are written only for a close Sheiko saw happen live. Sheiko never overwrites a close written by hand or by another tool. Closes it recorded are marked closureSource: sheiko, and a reopen clears only those.timeWorkingMinutes, timeOvernightMinutes and timeWeekendMinutes. The three always add up to timeToCloseMinutes.## Lifecycle Summary section (closure plus time per status), refreshed in place. It's written automatically on a live close, or on demand.Auto-stage (forward only). Starting a TaskNotes timer moves the task to the working status. Ticking the last unticked checkbox moves it to the review status. Moves happen only when something changes, never just because of existing state, and never backwards or out of a completed status.
Sign-off window. It opens when a task enters review, and at each day's end time for anything still waiting. Each task gets a card with:
assignedTo). Names you list as AI agents show as AI agent, any other name as Human, and an empty field as Worker: not recorded. It's never guessed.Buttons: Approve and close, Send back, Open, Later. Closing a task is always a user click, never automatic.
Coming back to "Later". The status bar shows ⭐ N awaiting sign-off. Click it to reopen the window with everything still in review. It's hidden when nothing is waiting, and you can switch it off.


scheduled moved to the next day. A time of day, if present, is kept. due never changes, so slippage stays visible. rollCount goes up by one each time.scheduled as the repeat anchor), and archived tasks. Tasks with no date are listed as "give these a date".## 🔁 Rolled Over section in that day's daily note (one block per run, never overwritten). In-review tasks are listed first (⭐), and past-due tasks are flagged ⚠️.
Start a slot from the 🎧 status-bar item or the command palette, or schedule slots per weekday in settings (e.g. 12:30-13:00 break, 14:00-15:30 deep work). Break and deep work behave the same way.
due falls inside the slot;

The ribbon icon and the lifecycle command need a TaskNotes task open. On any other note you get a notice instead:

| Setting | Default | Notes |
|---|---|---|
| Identity | (blank) | Written as closedBy and in Context entries. Blank = no closedBy. |
| Working hours (per weekday) | 09:00–17:00, every day | The end time is also the daily roll cutoff. The same window decides the working / overnight / weekend split. |
| Allowed vaults | (empty) | Nothing is written until the current vault is allowed. |
| Dry run | off | Logs intended writes instead of making them, including the daily note and slot reports |
| Max edits per run | 25 | Caps startup catch-up and auto-roll. Tasks held back are listed and picked up on the next run. |
| Working / review / done status | in-progress / (not set) / done |
Picked from TaskNotes' own status list. While review is not set, the checkbox move and both sign-off prompts are off. |
| Auto-stage on timer start / all boxes ticked | on / on | Each can be switched off |
| Sign-off prompt on review / at cutoff | on / on | Each can be switched off |
| Auto-roll | off | Try dry run first |
| Show sign-off count in the status bar | on | Click it to reopen the sign-off window |
| Worker field | assignedTo |
Frontmatter field naming who worked on a task |
| AI agent names | (empty) | Comma-separated, not case-sensitive. Any other name shows as human |
| Report folder | Sheiko Reports |
One note per day for slot reports |
| Slots (per weekday) | (blank) | e.g. 12:30-13:00 break, 14:00-15:30 deep work. Blank = none. Bad entries are flagged, not guessed |
Statuses and field names are read from TaskNotes' settings rather than hardcoded. TaskNotes' default statuses don't include a review status, so add one in TaskNotes first if you want the sign-off flow.


scheduled forward. Use one or the other, not both, or tasks will move twice.closedBy / timeToCloseMinutes are kept, so they can be stale.due values with a time. Date-only dues are left out..md file changed while a slot runs, including in code folders kept inside the vault. For example, an npm install in a project folder in the vault can add hundreds of files from node_modules/ to the report.See CONTRIBUTING.md for how to report bugs and open pull requests. Best effort. Report issues on GitHub. No response-time guarantee. Tested on TaskNotes 4.13.4.
npm i to install dependenciesnpm run dev to build in watch mode (src/main.ts → main.js)npm run build to type-check and run a production buildnpm run lint for ESLint with the Obsidian plugin rulesnpm test to type-check and run the testsLoading it in a dev vault: symlink the repo into the vault as <vault>/.obsidian/plugins/sheiko-task-lifecycle → <repo> (the folder name must match the plugin ID), then enable "Sheiko Task Lifecycle" under Community plugins. To install manually instead, copy main.js, manifest.json and styles.css into <vault>/.obsidian/plugins/sheiko-task-lifecycle/.
Naming note: class names, CSS classes, notices ("Sheiko: …") and the closureSource: sheiko value written to task notes deliberately keep the short name "Sheiko". Changing closureSource would stop a reopen from clearing closure fields on tasks Sheiko had already closed.
Source layout (src/): main.ts (plugin entry, commands, cutoff timer), tracker.ts (status-change detection, closure, startup catch-up), lifecycle.ts (history, time buckets, summary), roll.ts / roller.ts (auto-roll rules and engine), review.ts (sign-off card summaries and worker labels), slots.ts / slot-logic.ts (break and deep-work slots and reports), tasknotes.ts (reading TaskNotes' config), settings.ts, ui/ (lifecycle, sign-off and slot windows).
Tests (test/): 54 tests run the real tracker, auto-roll and slot code against an in-memory vault and a stand-in for the obsidian module (test/obsidian-mock.ts). They cover the code that edits notes: closure fields, reopen, startup catch-up, dry run, the edit limit, what does and doesn't roll, sign-off summaries, sign-off window routing and card fold state, and slot holds and reports. The repo's build workflow (.github/workflows/lint.yml) also runs them.
MIT © 2026 Sheikh M Sahil
Built from the Obsidian sample plugin template. API docs: https://docs.obsidian.md