Your task list now
runs itself β like a chief of staff.
It's the same Obsidian task board you already had. What's new: it now watches your work and nudges you on its own β proposes your 2β3 priorities each morning, chases overdue tasks until you clear them, and turns what you actually shipped into a brag-doc. It does all this from Telegram, and it can undo anything it touches.
The one-sentence version
A normal task tool is a shelf β things sit there until you look. This one is a chief of staff: it comes to you. The rest of this handbook is just the detail of how, when, and what you can tell it back.
/done. At 5:30pm it drafts a "look what you shipped" list from your merged PRs and email. Everything it does is logged and reversible with /undo. That's the whole product.
The six parts β what U1 through U6 mean
The system was built as six pieces, labelled U1βU6 ("unit 1" β¦ "unit 6"). You never type those names β they're just how the parts are referred to in the code and the rest of this page. Here's each one in plain English, in the order they matter to you.
It never breaks on you
Everything it does is undoable
/audit shows you what it touched; /undo reverses it. Nothing it does is a one-way door.It keeps you to a focused 2β3
It chases overdue work until you answer
/nag all" if there are others) and keeps re-firing until you reply /done, /reschedule, or /snooze. It will not let an overdue task quietly disappear.It writes your brag-doc from what you shipped
/approve the items that should be marked done. It never marks anything done on its own.It plans your day on the calendar
What it actually does on its own
"Autonomous" sounds scary, so here's the exact line. The system nudges you without being asked β but every change to your real world (a task marked done, a brag item approved, an email) is still yours to confirm. It acts on the things it can take back, and asks about the things it can't.
It does these on its own
- βProposes your 2β3 each morning in Standup (you pick from them).
- βSends the overdue nags at 11 / 2 / 5 β top 3, until you answer.
- βDrafts the brag-doc at 5:30 from your PRs + mail.
- βRuns the standups, EOD review and evening reflection on schedule.
- βCatches every error and logs it instead of crashing.
It waits for your word on these
- βMarking a task done β only your
/donedoes that. - βApproving a brag item to mark it done β only
/approve. - βRescheduling or snoozing a nag β
/reschedule,/snooze. - βAnything irreversible β sending a real email, deleting a meeting β stays a draft forever. It never sends.
The rule underneath all of it
Every action is rated by how reversible it is β a "rung". Reversible things (move a line on your board, send a nag) can run automatically. Irreversible things (send mail, delete a real event) are rung 4 and can never auto-run, no matter how sure it is. If a rung is unknown, it defaults to "draft only" β the safe choice.
| Rung | What it means | How it behaves Β· example |
|---|---|---|
| 0 Β· read-only | can't change anything | Always automatic. Read tasks, /audit. |
| 1 Β· draft | reversible, shown not done | Drafted, never run without your "go". A brag narration. |
| 2 Β· with approval | reversible via snapshot | Proposes, waits for confirm / /undo. Mark done. |
| 3 Β· monitored-auto | reversible, undo window open | Runs + tells you, you can still undo. The nag fire. |
| 4 Β· no undo | not reversible | Never automatic. Always needs you. Send email, delete a meeting. |
A day with your chief of staff
This is a normal weekday. Amber dots are things it does on its own; green dots are you replying. You don't have to be at a computer β it all happens in Telegram.
Personal standup posts U3
A gentle "good morning" with the day ahead, in the Standup topic.
It proposes today's 2β3 U3
The work standup lands with the must-dos it picked, plus your current load vs. capacity.
Active load 18h / ~25h this week β room for a little more.
You confirm or swap you
Reply in your own words, or just get on with it. Nothing's locked.
First nag β your 3 most overdue U4
Only the worst three, never an 85-line wall. If there are more, it tells you how many and how to see them.
β οΈ Lifetime outreach β 19 days overdue.
β οΈ Handle emails β 19 days overdue.
Reply
/done <id> Β· /snooze <id> 1d+14 more overdue β reply
/nag all to see them.You clear one, push one you
The moment you /done it, that nag closes β it won't re-ask about something you just finished.
/done tsk_8aac20 /snooze tsk_b3e1ef 1dIt nags again β only what's still open U4
Same shape, twice more. Snoozed and done tasks drop off; the next-worst rise to the top. (You snoozed your top 3? It nags the next 3 β it won't go silent.)
Your brag-doc draft arrives U5
In the Done topic: what you shipped this week, pulled from merged PRs and sent mail, matched to your tasks.
β’ Payments migration (matches "Ship payments migration")
β’ B2B lifecycle design doc (no task β logged)
Reply
/approve <id> to mark the matched one done.You approve the real wins you
Approving marks it done on the board β with a snapshot, so you can /undo if it was wrong.
/approve tsk_paymentsEOD review, then evening reflection U3
A wrap-up of the day's tasks (Done topic), then a reflective prompt in the Journal. Read or ignore β your call.
Check or reverse anything it did you
In the π§ Identity topic, /audit lists every move it made; /undo act_<id> rolls one back.
/audit β /undo act_8f2cWhat fires, and when
These are the scheduled jobs ("crons") that make up the chief of staff. Times are Pacific; the nag and brag jobs are weekday-only. Two are new with this release (the nag cap and the brag-doc); the rest are the standups and reviews you already had.
| When | What it does | Topic | Part |
|---|---|---|---|
| MonβFri 6:45 | Personal morning standup | π§ Standup | U3 |
| MonβFri 8:00 | Work standup β proposes today's 2β3 | π§ Standup | U3 |
| MonβFri 9:05 | Standup nudge (single tick) | π§ Standup | U3 |
| MonβFri 11 Β· 14 Β· 17 | Overdue nag β top 3 + "+N more" | π§ Standup | U4 |
| MonβFri 17:30 | Brag-doc draft from shipped work | β Done | U5 |
| MonβFri 18:00 | End-of-day task review | β Done | U3 |
| MonβFri 21:00 | Evening reflection prompt | π Journal | β |
| Sun 12:00 | Weekly review prompt | ποΈ Weekly | β |
NAG_DISPLAY_LIMIT, default 3) and each job's time is one cron edit. Ask and it's a one-line change. Your other crons β finance, sales, personal reminders β live outside this group and aren't touched by any of this.
One Productivity group, a few topics
It all happens inside a single Telegram supergroup β the Productivity group β split into topics. Each command belongs in a specific topic; the agent checks where a command came from before it acts and rejects one typed in the wrong place. (Real group IDs live only in your secrets file β this page uses the topic names.)
/approve/audit + /undo live here/daily, and read the nags here. Weekly (4) β /weekly. Done (5) β /done, /done7d, /ledger, /approve, /nag all. π§ Identity (1909) β /audit, /undo (owner-only).
Every command
Everything you can type. you type it = a reactive command, checked against where you sent it. it fires (cron) = the agent pushes it on schedule. owner-only = the π§ Identity topic. Click any row for the detail.
/daily β "Today's 3: β¦ (load 18h / ~25h)"/weekly/done migrate-payments/reschedule write-spec fri/snooze deploy-staging 1d/nag all prints the whole overdue list, worst-first β read-only, it sends nothing and changes nothing. This is what the "+N more" pointer links to./nag all β "β¦17 overdue tasks total."/cancel-session; its check-in jobs self-delete, no orphans./body-double write-spec/done24h is the 24-hour version. Read-only β marks nothing done./ledger β draft β /approve <task>/approve migrate-payments/done it./audit act_<id> shows the full record and the before-snapshot./audit Β· /audit act_8f2c/undo act_8f2cWhy it's safe to let it run
The whole thing rests on one promise: it must never break your trust. Four guarantees enforce that.
1 Β· No raw errors, ever
Every script runs inside a wrapper that catches failures. You get a calm one-liner; the real error goes to a private log. No traceback, no red wall, no leaked file paths.
# instead of /daily β Traceback β¦ ModuleNotFoundError # you get /daily β β οΈ Standup is unavailable right now. Logged for review. Retry: /daily
2 Β· Undo + audit, always
Every autonomous act is logged with a snapshot taken right before it writes. /audit shows what it touched; /undo reverses it inside its window. Nothing is a one-way door.
3 Β· It can't message the wrong place
Before any push, the destination is proven and locked β that proven target is the only place the message can go. A nag meant for your Productivity group can never leak into the Work group. Destinations come from your secrets, never hardcoded.
4 Β· It checks itself first
Before a job runs, a preflight checks its environment and, if something's wrong, says so in plain language and stops β instead of half-running. It writes only its own status file, never your live notes.
It's live β here's how it runs
The chief of staff is deployed and running on the production gateway (the task-tracker skill, repo kesslerio/task-tracker-openclaw-skill). Five of the six parts are on; U6 (calendar) is dormant until a focus calendar is connected. You don't have to do anything to keep it running β this section is for when you want to change it.
STANDUP_CALENDARS and a dedicated focus calendar before it switches on.
Change how often / how much it nags
The nag's top-list size and times are each one setting. No redeploy for the count β it's read live.
# show the top 5 instead of 3 (in secrets.conf) NAG_DISPLAY_LIMIT=5 # change when the nag fires (e.g. add a 9am slot back) openclaw cron edit <u4-id> --cron "0 9,11,14,17 * * 1-5"
Pause or resume a part
# pause the nag for a while openclaw cron disable <u4-id> # turn it back on openclaw cron enable <u4-id>
Update the skill
The live gateway runs a copy of the skill that's synced from origin/main. To ship a change: merge to main, pull the checkout, restart the gateway. Never edit the running copy by hand β a restart would overwrite it.
git -C /home/art/projects/skills/shared/task-tracker pull origin main systemctl --user restart alphaclaw.service
What's still coming
| Not yet on | Switches on when |
|---|---|
| U6 β calendar pre-brief, debrief, focus blocks | A dedicated focus Google calendar is connected and STANDUP_CALENDARS is set. Until then it degrades silently. |
| U3 end-of-day forced wrap-up ritual | A small follow-up release β the EOD review cron exists; the interactive wrap-up is next. |
When something's off
A command returned "unavailable"
That's the safety wrapper catching a failed self-check. The notice names what's wrong in plain words β fix that and retry. The raw error is in the private log, never in chat.
log
task-tracker-errors.jsonl in the skill's state dir.
"What did it just do?"
Run /audit in the π§ Identity topic β every act with its undo window. Drill in with /audit act_<id>.
It did the wrong thing
/undo act_<id> in π§ Identity, inside the window (4h for nags, 7 days for board edits). Past the window? Fix it by hand and note it in the Journal.
The nag is too loud / too quiet
Too much: lower NAG_DISPLAY_LIMIT or drop a time slot. Too quiet: it's weekday-only and starts at 11am β and if your top 3 are all snoozed it nags the next 3, never going silent.
A nag fired but nothing arrived
Expected if a destination env var is unset: the push is blocked and the task stays open β it never clears silently. Check the Productivity group + topic settings, then retry.
The brag-doc is empty
It only finds what's connected β merged PRs via gh, mail via the mail tool. Nothing shipped in the window means an honestly-empty draft, not an error.
<work-group> placeholders for the same reason.
Quick reference
| If⦠| Do this |
|---|---|
| A command says "unavailable" | Read the named check, fix it, retry. |
| Unsure what it changed | /audit in π§ Identity (1909). |
| Need to reverse something | /undo act_<id> in π§ Identity, inside the window. |
| Nag re-asks after you finished | You used something other than /done β only /done closes the nag in the same turn. |
| Want the full overdue list | /nag all β read-only, shows everything. |
| "Always at cap" on day one | The cap only blocks new adds; it never cuts what you already have. |