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, and turns what you actually shipped into a brag-doc. It does all this from Telegram, and it can undo anything it touches.

live Β· running now 5 parts on, 1 dormant driven from Telegram nags Mon–Fri, 3Γ— 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 your most-overdue tasks at 11am, 2pm and 5pm until you reply /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 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). It also caps your active list at roughly one week of work β€” so when the list is already full, new adds are blocked instead of letting it balloon. It never deletes what you already have.
"I always know my 2–3."
liveit nudges
U4

It chases overdue work until you answer

A few times a day it surfaces your 3 most-overdue tasks (with a "+N more β€” reply /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 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. You glance at it and /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 (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

Nothing here happens without you typing the command.
  • βœ“Marking a task done β€” only your /done does 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.

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 lands with the must-dos it picked, plus your current load vs. capacity.

🧭 chief of staffToday'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 β€” 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.

🧭 chief of staff Β· Standup⚠️ Competitor landing page β€” 19 days overdue.
⚠️ 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.
11:02

You clear one, push one you

The moment you /done it, that nag closes β€” it won't re-ask about something you just finished.

you/done tsk_8aac20  /snooze tsk_b3e1ef 1d
14:00 Β· 17:00

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

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")
β€’ B2B lifecycle design doc (no task β€” logged)
Reply /approve <id> to mark the matched one done.
17:32

You approve the real wins you

Approving marks it done on the board β€” with a snapshot, so you can /undo if it was wrong.

you/approve tsk_payments
18:00 Β· 21:00

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

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

WhenWhat it doesTopicPart
Mon–Fri 6:45Personal morning standup🧍 StandupU3
Mon–Fri 8:00Work standup β€” proposes today's 2–3🧍 StandupU3
Mon–Fri 9:05Standup nudge (single tick)🧍 StandupU3
Mon–Fri 11 Β· 14 Β· 17Overdue nag β€” top 3 + "+N more"🧍 StandupU4
Mon–Fri 17:30Brag-doc draft from shipped workβœ… DoneU5
Mon–Fri 18:00End-of-day task reviewβœ… 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.
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
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 the nags here.  Weekly (4) β€” /weekly.  Done (5) β€” /done, /done7d, /ledger, /approve, /nag all.  πŸ§­ Identity (1909) β€” /audit, /undo (owner-only).
Talk back to it

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 & 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.
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.
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.
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.
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β–Έ
doesScans for overdue work and pushes the top-3 nag (with "+N more"). You don't type this β€” it runs Mon–Fri at 11 / 14 / 17. Keeps re-firing per task until you /done it.
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.
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. The nag fires Mon–Fri 11/14/17 (top-3, capped), the brag-doc at 17:30. 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 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 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.
U3 end-of-day forced wrap-up ritualA small follow-up release β€” the EOD review cron exists; the interactive wrap-up is next.
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 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.

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 /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 oneThe cap only blocks new adds; it never cuts what you already have.