Operator handbook Β· live

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, walks you through an end-of-day wrap-up, and turns what you actually shipped into a brag-doc. It does all this from Telegram β€” now with tappable buttons, not just typed commands β€” and it can undo anything it touches.

live Β· running now 5 parts on, 1 dormant driven from Telegram Β· tap or type nags Mon–Fri, twice a day
5 / 6parts live
8crons firing
2that nudge you
∞undo window for board edits (7d)

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.

If you read nothing else Each weekday it proposes your top 2–3, then nags at 11am and 4pm β€” leading with the priorities you committed to, then your worst overdue β€” each with a tap-button (Start, Done, Snooze) so you clear it without typing an ID. At 5:30pm it drafts a "look what you shipped" list from your merged PRs and email, and at 6pm a guided end-of-day walks every open task for a one-tap disposition and sets tomorrow's #1. Everything it does is logged and reversible with /undo. That's the whole product.
The building blocks

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.

U1

It never breaks on you

If a script errors, you get a calm one-line "that's unavailable right now, logged for review" β€” never a raw crash, traceback, or stack of red text. It also checks its own environment before every run and says plainly what's wrong if something is.
"It stopped breaking on me."
always onfoundation
U2

Everything it does is undoable

Every autonomous move is written to a log with a snapshot taken just before it acts. /audit shows you what it touched; /undo reverses it. Nothing it does is a one-way door.
"I can undo anything it did."
always onyou ask
U3

It keeps you to a focused 2–3

Each morning it proposes the day's must-do priorities (default 3) β€” and the work standup opens with the #1 you set the night before at end-of-day, so you start on a deliberate priority, not a cold board. Each evening at 6pm a guided end-of-day walks every still-open task for a one-tap disposition and asks you to set tomorrow's #1. It also caps your active list at roughly one week of work β€” when it's full, new adds are blocked rather than letting it balloon. It never deletes what you already have.
"I always know my 2–3 β€” and my #1 for tomorrow."
liveit nudges
U4

It keeps you on today's priorities, then chases overdue

Twice a day it leads with today's committed priorities that aren't done yet β€” each with a ▢️ Start button to actually begin it β€” then your worst-overdue tasks below (with a "+N more" pointer if there are others). Every line is tappable: Done, Snooze 1d, Reschedule β€” the typed commands still work too. It keeps re-firing until you act, and won't let an overdue task quietly disappear.
"It points me at today first, then won't let me forget."
liveit nudges
U5

It writes your brag-doc from what you shipped

It reads your merged GitHub PRs and sent email, matches them to tasks on your board, and drafts a "here's what you actually got done" ledger β€” rolling up the daily wins you confirmed at each end-of-day. You glance at it and tap (or /approve) the items that should be marked done. It never marks anything done on its own.
"I can see what I accomplished."
liveit nudges
U6

It plans your day on the calendar

Pre-brief before the day, debrief after, and reserve focus blocks on your calendar for the 2–3. This part is built but dormant β€” it switches on once a dedicated focus calendar is connected. Until then it simply stays quiet.
"It defends my focus time." (soon)
dormantit nudges
How to read the tags it nudges = this part can message you on its own (a cron fires it). you ask = it only runs when you type a command. always on / live / dormant = whether it's running today. Five of the six are live; U6 waits on the calendar hookup.
Autonomy

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

Proactive β€” a cron fires it, no prompt from you. All reversible.
  • β†’Proposes your 2–3 each morning in Standup, opening with the #1 you set last night (you pick from them).
  • β†’Sends the nags at 11 & 4 β€” today's priorities first (with a Start button), then worst-overdue, until you act.
  • β†’Drafts the brag-doc at 5:30 from your PRs + mail.
  • β†’Runs the guided end-of-day at 6pm β€” and the standups, evening reflection β€” on schedule.
  • β†’Catches every error and logs it instead of crashing.

It waits for your word on these

Nothing here happens without your tap (or the typed command).
  • βœ“Marking a task done β€” your Done tap, or /done.
  • βœ“Confirming the day's wins at end-of-day β€” nothing's recorded done without your Confirm tap.
  • βœ“Approving a brag item to mark it done β€” tap, or /approve.
  • βœ“Rescheduling, snoozing, carrying or dropping β€” tap the button, or /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.

RungWhat it meansHow it behaves Β· example
0 Β· read-onlycan't change anythingAlways automatic. Read tasks, /audit.
1 Β· draftreversible, shown not doneDrafted, never run without your "go". A brag narration.
2 Β· with approvalreversible via snapshotProposes, waits for confirm / /undo. Mark done.
3 Β· monitored-autoreversible, undo window openRuns + tells you, you can still undo. The nag fire.
4 Β· no undonot reversibleNever automatic. Always needs you. Send email, delete a meeting.
In practice

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.

6:45

Personal standup posts U3

A gentle "good morning" with the day ahead, in the Standup topic.

8:00

It proposes today's 2–3 U3

The work standup opens with the #1 you set last night at end-of-day, then the rest of the must-dos it picked, plus your current load vs. capacity. A deterministic cron now β€” it lands every weekday, reliably.

🧭 chief of staffLast night you set #1: Ship payments migration β€” start there.
Today's 3: Ship payments migration Β· Reply to Brandon Β· Competitor landing page.
Active load 18h / ~25h this week β€” room for a little more.
8:05

You confirm or swap you

Reply in your own words, or just get on with it. Nothing's locked.

youswap landing page for the YouTube ads task
11:00

First nag β€” today's priorities first, then overdue U4

It leads with the priorities you committed to this morning that aren't done β€” tap ▢️ Start to actually begin one β€” then your worst overdue below. Every line is tappable; no IDs to copy. If there are more, it tells you how many.

🧭 chief of staff · StandupToday's priorities, not done yet:
🎯 Ship payments migration  [▢️ Start] [Done] [Snooze 1d]
🎯 Reply to Brandon  [▢️ Start] [Done] [Snooze 1d]
Worst overdue:
⚠️ Competitor landing page β€” 19d  [Done] [Snooze 1d] [Reschedule]
⚠️ Lifetime outreach β€” 19d  [Done] [Snooze 1d] [Reschedule]
+14 more overdue β€” /nag all to see them.
11:02

You tap to clear one, snooze one you

Tap [Done] and the message updates in place β€” that nag closes, it won't re-ask about something you just finished. (Prefer typing? /done still works.)

youtap [Done] on payments migration  Β·  tap [Snooze 1d] on Lifetime outreach
16:00

It nags once more β€” only what's still open U4

Same shape, one more time in the afternoon. Done and snoozed tasks drop off; the next-worst rise to the top. (Cleared all your priorities? It still surfaces your worst overdue β€” it won't go silent.)

17:30

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.

🧭 chief of staff · DoneThis week you shipped:
β€’ Payments migration (matches "Ship payments migration")  [βœ… Approve]
β€’ B2B lifecycle design doc (no task β€” logged)
Tap [βœ… Approve] (or /approve <id>) to mark the matched one done.
17:32

You approve the real wins you

Tap [βœ… Approve] and it's marked done on the board β€” with a snapshot, so you can /undo if it was wrong.

youtap [βœ… Approve] on payments migration
18:00

The guided end-of-day U3

A real wrap-up in the Done topic, in three taps. First it shows what you got done and you confirm (nothing's recorded done without your tap). Then it walks every still-open task, one message at a time β€” Done / Carry to tomorrow / Reschedule / Drop β€” so the board never silently piles up stale work (capped, overdue-first, with a "+N more" line). Last, you set tomorrow's #1 β€” which tomorrow's standup will open on. This is the daily capture your Friday brag-doc rolls up.

🧭 chief of staff · DoneToday you got done: Payments migration · Reply to Brandon.
[βœ… Confirm]
β€” then, one at a time β€”
Still open: Competitor landing page
[Done] [Carry] [Reschedule] [Drop]
+6 more to triage
β€” finally β€”
What's tomorrow's #1? [⭐ Set as #1]
21:00

Evening reflection β€”

A reflective prompt in the Journal. Read or ignore β€” your call.

anytime

Check or reverse anything it did you

In the 🧭 Identity topic, /audit lists every move it made; /undo act_<id> rolls one back.

you Β· 🧭 Identity/audit  β†’  /undo act_8f2c
The schedule

What fires, and when

These are the scheduled jobs ("crons") that make up the chief of staff. Times are Pacific; the nag, brag and end-of-day jobs are weekday-only. New with this release: the 6pm guided end-of-day, plus the work standup and EOD now run as reliable command crons (the old fragile LLM-relay versions were retired). The nag now fires twice, not three times.

WhenWhat it doesTopicPart
Mon–Fri 6:45Personal morning standup🧍 StandupU3
Mon–Fri 8:00Work standup β€” opens on last night's #1, proposes today's 2–3🧍 StandupU3
Mon–Fri 9:05Standup nudge (single tick)🧍 StandupU3
Mon–Fri 11 Β· 16Nag β€” priorities first (Start), then overdue🧍 StandupU4
Mon–Fri 17:30Brag-doc draft from shipped workβœ… DoneU5
Mon–Fri 18:00Guided end-of-day β€” confirm, triage every open task, set tomorrow's #1βœ… DoneU3
Mon–Fri 21:00Evening reflection promptπŸ““ Journalβ€”
Sun 12:00Weekly review promptπŸ—“οΈ Weeklyβ€”
Why the nag skips 8am The nag deliberately starts at 11:00, not 8:00 β€” the 8:00 work standup already shows you the day, so a nag on top of it would just be noise. It picks up once the morning's had a chance to land, then fires once more at 4pm.
Tuning it Want a different rhythm or a longer top-list? The nag count is one setting (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.
Where it lives

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.)

🧍
Standup
Morning priorities + the overdue nags land here
topic 2
πŸ—“οΈ
Weekly Review & Planning
The weekly cadence β€” Q1 / Q2 work
topic 4
βœ…
Daily / Done
Mark-done, the brag-doc draft + /approve, the 6pm guided end-of-day
topic 5
πŸ““
Journal
Notes & the evening reflection
topic 6
🧭
Identity β€” the agent's log
Owner-only Β· /audit + /undo live here
topic 1909
πŸ”’
Work group (separate)
A different group β€” no productivity nag may ever post here
<work-group>
Which command goes where Standup (2) β€” /daily, and read (and tap) the nags here.  Weekly (4) β€” /weekly.  Done (5) β€” /done, /done7d, /ledger, /approve, /nag all, and the guided end-of-day.  πŸ§­ Identity (1909) β€” /audit, /undo (owner-only).
Tap, don't type The nags, the brag-doc and the end-of-day now carry inline buttons β€” [▢️ Start], [Done], [Snooze 1d], [Reschedule], [Carry], [Drop], [βœ… Confirm], [⭐ Set as #1]. Tap one and the message updates in place; no IDs to copy. Every typed command below still works as a fallback.
Talk back to it

Every command

Everything you can type β€” most of it now has a tap-button shortcut too (the nags, brag-doc and end-of-day carry inline buttons; the typed commands below are the fallback). 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 & weekly
/dailyMorning standup + propose today's 2–3β–Έ
doesRuns the standup and proposes 3 must-do-today priorities for you to keep or swap. Shows your active load vs. ~one week of capacity.
whereStandup, topic 2 you type it
example/daily β†’ "Today's 3: … (load 18h / ~25h)"
/weeklyThis week's important + urgent workβ–Έ
doesRenders the weekly review β€” urgent+important (Q1) and important (Q2) tasks. Read-only.
whereWeekly, topic 4 you type it
example/weekly
Clearing overdue work (the nag β€” U4)
/done <task>Mark done + close its nag, same momentβ–Έ
doesMarks the task done and closes its nag loop in the same turn β€” so it can't re-nag something you just finished. The [Done] button on a nag does exactly this with one tap.
whereDone, topic 5 you type it
example/done migrate-payments
why it mattersThe close is instant. The "I already did that, stop nagging" moment can't happen.
/reschedule <task> <date>Move the due date, pause the nagβ–Έ
doesMoves the due date and updates the nag in the same turn β€” no stale nag against the old date. The [Reschedule] button on a nag or end-of-day card does the same.
whereDone, topic 5 you type it
example/reschedule write-spec fri
/snooze <task> <dur>Pause a nag β€” capped at 3, then it tightensβ–Έ
doesPauses one nag for a while. Snooze is not done β€” the task comes back. Capped at 3 snoozes before the interval shortens. The [Snooze 1d] button is the one-tap version.
whereDone, topic 5 you type it
example/snooze deploy-staging 1d
/nag allSee the full overdue list (read-only)β–Έ
doesThe nag only shows your top 3. /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.
whereStandup / Done you type it
example/nag all β†’ "…17 overdue tasks total."
/body-double <task>A focus session with check-insβ–Έ
doesStarts a co-working session β€” periodic check-ins to keep you moving. Ends cleanly with /cancel-session; its check-in jobs self-delete, no orphans.
whereDone, topic 5 you type it
example/body-double write-spec
The brag-doc (U5)
/done7d Β· /ledgerBrag-doc draft for the weekβ–Έ
doesHarvests this week's merged PRs + sent mail, matches them to your board, and drafts a "what you shipped" list. /done24h is the 24-hour version. Read-only β€” marks nothing done.
whereDone, topic 5 you type it Β· also fires daily 5:30 it fires (cron)
example/ledger β†’ draft β†’ /approve <task>
/approve <task>Mark one matched brag item doneβ–Έ
doesApproves one matched item and marks it done on the board, with a snapshot for undo. The only ledger command that writes anything. The [βœ… Approve] button on the brag-doc draft does it with one tap.
whereDone, topic 5 β€” only here you type it
example/approve migrate-payments
why it mattersEven typed in the right place, it double-checks the topic β€” being typed somewhere doesn't make it the right place.
The nag engine itself (U4 β€” fires on schedule)
nag-checkThe cron that sends the overdue nagsβ–Έ
doesPushes the nag β€” today's not-done priorities first (each with a [▢️ Start] button), then your worst overdue (with "+N more"), all tappable. You don't type this β€” it runs Mon–Fri at 11 & 16. Keeps re-firing per task until you act.
wherePushes to Standup, topic 2 it fires (cron)
safetyEvery push proves its destination first. If the destination can't be proven, the push is blocked and the task stays open β€” it never clears silently.
The guided end-of-day (U3 β€” fires on schedule)
eod-ritualThe 6pm wrap-up: confirm, triage, set tomorrow's #1β–Έ
doesThe guided end-of-day. (a) Shows today's wins and asks you to [βœ… Confirm] β€” nothing's recorded done without your tap. (b) Walks every still-open task one message at a time for a one-tap disposition β€” [Done] / [Carry] / [Reschedule] / [Drop] β€” capped, overdue-first, with a "+N more" line. (c) Asks you to [⭐ Set as #1] for tomorrow, which the morning standup opens on. It's the canonical daily capture the brag-doc rolls up. You don't type this β€” it runs Mon–Fri at 18:00.
wherePushes to Done, topic 5 it fires (cron)
safetyEvery disposition is a logged, reversible act with a snapshot. Nothing is marked done without your tap; the board never silently piles up stale work.
See & reverse what it did (U2 β€” owner-only)
/auditList everything the agent didβ–Έ
doesLists every autonomous act β€” what, when, whether it's still inside its undo window. /audit act_<id> shows the full record and the before-snapshot.
where🧭 Identity, topic 1909 owner-only
example/audit Β· /audit act_8f2c
/undo act_<id>Reverse one act, inside its windowβ–Έ
doesReverses a logged act β€” restores a board line (by content, robust to later edits) or reopens a nag. Window: 4h for nags, 7 days for board changes.
where🧭 Identity, topic 1909 owner-only
example/undo act_8f2c
The trust floor

Why 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.

The load-bearing rule, once more Reversible acts may run automatically. Irreversible acts (send a real email, delete a real meeting) stay drafts forever β€” no level of confidence overrides that.
Operating it

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.

Current state Live: U1–U5, with inline buttons throughout. The nag fires Mon–Fri 11/16 (priorities-first, capped), the brag-doc at 17:30, and the guided end-of-day at 18:00. The work standup and EOD run as deterministic command crons. Dormant: U6 calendar β€” needs 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 an afternoon slot back)
openclaw cron edit <u4-id> --cron "0 11,14,16 * * 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 onSwitches on when
U6 β€” calendar pre-brief, debrief, focus blocksA dedicated focus Google calendar is connected and STANDUP_CALENDARS is set. Until then it degrades silently.
A dedicated personal-tasks laneA near-term release β€” splitting personal commitments out from the work board so each gets its own standup and nag rhythm.
Standup veto / approve buttonsA near-term release β€” tap to accept or veto the proposed 2–3 right in the standup, the same way nags and end-of-day already work.
When something's off

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 the 4pm slot. Too quiet: it's weekday-only, fires 11am & 4pm β€” it leads with today's priorities, then your worst overdue, and won't go silent while anything's open.

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.

One hygiene rule The skill's code is in a public repo. Real chat and group IDs never go in code, config, or docs β€” they're referenced from your secrets file and assembled at runtime. This page uses topic names and <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 finishedYou used something other than the [Done] button or /done β€” only those close the nag in the same turn.
Want the full overdue list/nag all β€” read-only, shows everything.
"Always at cap" on day oneThe cap only blocks new adds; it never cuts what you already have.