Attention
Your day in one place. What today is for, what slipped, the week and month, the roadmap in flight, who is waiting on you, your standup, and a checklist of where every session stands.
A long task board is a backlog, not a plan. The attention skill turns it into a view you can glance at in the morning, in standup, or when there's too much going on: up to three things for today, what carried over, what the week and month are for, the roadmap milestones in flight, and the pull requests and reviews waiting on you. The same skill writes your standup and keeps a checklist of where each session stands. Ask in plain words ("what should I work on?", "plan my day", "I'm overwhelmed", "standup is coming up", "what was I working on?") or run it as /agent-kevin:attention in Claude Code or $attention in Codex.
The view is derived. Tasks, goals, and roadmaps are its source of truth, and it re-renders on every task change, so there is nothing to save.
Plans date themselves
Each task can carry a horizon: the period it is planned for, stored as the period itself.
horizon | Lane |
|---|---|
2026-10-05 (a day) | Today on that day; carried over once it has passed |
2026-W41 (an ISO week) | This week; carried over after it |
2026-10 (a month) | This month; carried over after it |
later | Later |
| empty | Not planned |
Say today, week, next-week, month, or later and the agent stores the period. Because the date is in the plan, nothing has to roll over at midnight: once its period ends, the task simply reads as carried over. Week and month progress count everything planned inside the period, including work since pulled into today and work sync has already archived.
A task due today or earlier that nobody planned shows up under Today in its own block, rather than hiding in a collapsed lane.
The dashboard for everything, a page per project
| You run | Where it shows | Holds |
|---|---|---|
attention | the dashboard's Today → Attention tab (dashboard.html#today/attention) | every project, plus today's, the week's and the month's goals |
attention <project> | projects/<project>/attention.html | that project's tasks only |
Attention is the tab the dashboard opens on, and its numbers lead the Today page. See Today. A project's page is linked from its project card; it exists once you first run attention for that project, and from then on every rebuild keeps it current.
The roadmap feeds it
The home view reads your north-star roadmap.html; a project page reads its own roadmap, plus the north-star milestones that name one of the project's task ids. The Roadmap section lists the milestones that matter now: slipped ones, whose period ended with items open, then the ones in flight, with an item in progress or a period covering today. Each shows how far along it is, the tasks its text names and where they stand, and a flag when no open task is behind it, which is the gap attention plan offers to fill.
This works because roadmaps keep their data as JSON inside the page. See Roadmaps are data.
The queue
The queue is who is waiting on you, pulled when you run attention and shown with the time it was pulled:
- My pull requests, with review state, mergeability, and age, from the GitHub pack.
- Reviews I owe, and how long each has waited.
- Replies I owe, with the Slack pack: mentions of you anywhere in the workspace that you haven't answered in an hour.
- External threads waiting, with the Slack pack: threads in your shared channels where someone outside the workspace spoke last, an hour or more ago, with no reply or reaction from your team. Channels you've joined that the channel map doesn't list yet show as a note under this group.
A source that can't be read says so once, under its group, rather than showing an empty, reassuring list; the note never counts as an item. On a project page the queue narrows to the repo (and channels) the project's README names.
Playbooks
you > what should I work on today?
you > /agent-kevin:attention plan
you > I'm overwhelmed, help me get organized
you > /agent-kevin:attention standup 48
you > /agent-kevin:attention checkpoint all| Playbook | Ask | You get |
|---|---|---|
| refresh | attention, attention <project> | The queue pulled fresh, the view re-rendered, and a short card |
| add | "take this on", attention add <text or link> | A line of text, a pasted list, a GitHub issue or pull request link, or a Slack link turned into a task with a horizon, after one confirming question. It checks the board first so the same work doesn't become two tasks |
| plan | "plan my day", attention plan | Today's three, picked from carried-over work, what's due, sessions you already started, replies owed, tasks behind the roadmap's milestones, and the week's P0 and P1 tasks, each with its reason. Then each carried item is settled (this week, later, drop, or keep), and a task is offered for any milestone nothing on the board moves forward |
| organize | "I'm overwhelmed", "get organized", attention organize | Everything on your mind sorted into tasks and notes, questions only about the gaps (overdue work, unset week goals, dates), today cut to three, a first move, and what's parked. See When there's too much in your head |
| standup | "standup is coming up", attention standup 48 | Did / next / blocked from git, pull requests, sessions, and the board, as a card to glance at while you talk, with the full update saved as a report |
| checkpoint | "checkpoint this session", "where are we in this session", attention checkpoint | The session you're in as a checklist: done steps with their proof, what's in progress, the next step, decisions waiting on you with a recommended pick, traps, and what changed since the last checkpoint. See Checkpoints |
| checkpoint all | "what was I working on", "which session needs me", attention checkpoint all 48 | The same checklist for every session in the last 24 hours: the decisions waiting on you first, ranked, then a card per session with its resume command, then an offer to jump to one |
| backfill | first refresh, Slack connected | The priorities already posted in Slack, triaged into tasks you confirm |
attention help lists them. Nothing is created or moved without your answer, and attention never comments on, reviews, or merges anything.
When there's too much in your head
plan treats the board as the whole picture. On an overwhelmed day that's rarely true: the real load is what's in your head and not on the board yet, and the board is too noisy to trust. organize starts with your head and gets to the board second.
-
It reads the board first, silently: overdue tasks, unset week goals, a slipped milestone with no task behind it. None of it is shown yet.
-
It asks what's on your mind in plain chat: dump all of it, unsorted, and say whether the week is light, normal, or heavy.
-
It sorts the dump against your existing tasks, so nothing becomes a duplicate:
Bucket What happens Tracked Already a task; it gets a horizon if it has none New task Drafted and placed, the way adddoes itWaiting on someone A task only when you have to chase it Worry or note Not actionable now; captured to the inbox -
It asks only about the gaps it found, most urgent first: a new date for an overdue task, the week's goals when none are set (one on a heavy week, up to three on a light one), a task for a milestone nothing moves.
-
It cuts today to three with
plan's ranking, except that something you raised outranks a board item in the same tier, because it's what's actually on your mind. A heavy week gets fewer than three.
Worries and notes go to the inbox in one capture, so the next compile keeps them and you don't have to. The run is saved as a plans report, and the reply is a card:
🧹 Organized · Thu 1 Oct · heavy week
FIRST MOVE Reply to the vendor about the renewal quote
TODAY 1 Renewal quote reply (ac-014) 2 Fix the export timeout (ac-021)
WEEK Ship the export fix
PARKED Onboarding revamp (later) · Conference talk (not this week)
CAPTURED 3 new tasks · 5 already tracked · 4 notes to the inboxParked lists what this run moved to later, dropped, or left out of the week, so what isn't happening is written down too. Questions stop after three rounds. When the board has a large stale pile, organize offers to settle it another time rather than piling a second job onto a bad day.
The week
Setting and scoring the week belongs to the goals skill's week playbook, since goals are outcomes and attention is tasks. On Monday, goals week proposes two or three week goals, starting from the roadmap's slipped and in-flight milestones, and applies the ones you pick in one step: each goal's task is planned for the week, and the Weekly Goals block in projects/TASKS.md is rewritten to match, so the dashboard's Goals tab and the week lane never disagree. On Friday it scores every task planned for the week (done, partial, or missed, with a reason for each miss) and asks where the open ones go. The standup playbook runs it on those two days. plan also reads today's goals from goals day and ranks the tasks that serve them first. See Daily rhythm.
Standup
The standup playbook builds what you did, what's next, and what's blocked, deriving all three rather than asking: Next comes from Today, and Did from what landed, what the sessions did, and the tasks you closed. Its report keeps the standup name, so the next run can tell what a skipped day left unsaid.
The chat reply is a glance card, meant to be read mid-sentence when standup reaches you: section headers with counts, one line per item (handle, a short cue, a one-glyph state), and a rule between what happened and what's next.
🍌 STANDUP · Tue Jan 06 · last 24h
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🚢 SHIPPED · 2
#101 retry flaky webhook sends ✓ verified
#102 cap the export page size ● merged
🔧 IN FLIGHT · 1
#105 signup flow test pass ◌ needs review
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
👉 NEXT
1 #106 search demo tomorrow
⏳ WAITING ON
Alex #103 repro steps today✓ is verified or done, ● merged but unverified, ◌ waiting on someone, ✗ failed. The full update, with its evidence below the line, is the saved report you open when someone asks a follow-up. The card opens with your agent's own emoji. With Slack connected, standup checks what you already posted so you don't announce it twice.
Checkpoints
A checkpoint answers "where does this stand?" in a form you can read at a glance, when you ask for it and never between turns. attention checkpoint maps the session you're in:
**Fix the export timeout**
✓ Timeout reproduced with a 50k-row export (test fails before the fix)
✓ Page size capped at 5k rows (tests green)
▶ Checking the CSV stream on staging
▷ next: re-run the 50k export on staging and time it
★ **Waiting on you**
1. Merge #102 now or after staging? → after staging: the cap changes a public limit
⚠ The cap also applies to the API export, which two customers use
**Changed since the last checkpoint**
acme-app feat/export-cap the cap and its test (committed a1b2c3d)Every finished step says how it was proven, or is marked (assumed); ▶ is what is in progress and ▷ the next step. Decisions waiting on you carry the agent's pick, and a section with nothing in it is left out. The checkpoint is written in chat, so the session capture files it into knowledge, and when the work belongs to a task it also lands on that task's thread.
attention checkpoint all does the same for every session in the last 24 hours (attention checkpoint all 48 widens it; a word narrows it to sessions whose folder or title contains it). It opens with every decision waiting on you, ranked by importance and then by how long it has waited, so the sessions that need you come first. A card per session follows, with its resume command. A session that already wrote a checkpoint has that checklist reused, with anything that happened since folded in. When you ask for it yourself, it ends by offering to jump to one of the waiting sessions.
★ **Waiting on you**
1. Fix the export timeout: merge #102 now or after staging? → after staging: the cap changes a public limit
2. Onboarding emails: send the draft to Alex for review? → yes, the copy is final
## 🟢 In motion (last hour)
**1. Fix the export timeout** · *12m ago*
✓ Timeout reproduced with a 50k-row export (test fails before the fix)
✓ Page size capped at 5k rows (tests green)
▶ Checking the CSV stream on staging
▷ next: re-run the 50k export on staging and time it
↳ `claude --resume 3f2a…`
## 🕐 Earlier today
**2. Onboarding emails** · *3h ago*
✓ Three-email sequence drafted (assumed)
▷ next: send the draft to Alex
↳ `claude --resume 9c41…`Decisions are listed once, in the lead list, so a card holds only the session's own steps. The report is the session radar: the dashboard's Sessions page shows it, plan reads it so work you already started ranks above anything new, the briefings put its waiting decisions in their first moves, and the dashboard and sync run it to keep it fresh. To find a past session by what it worked on rather than when, use find-session.
The page is data too
Every attention view carries what it shows as JSON, in a <script type="application/json" id="attention-data"> block, the same shape the attention_write tool returns: the dashboard's for the home view, each project page's for its project. Another skill, a script, or another agent can read it without rendering anything. Task paths inside it are relative to the home, so the data never embeds a machine path.
Roadmaps are data
A roadmap page keeps its content in one JSON block, <script type="application/json" id="roadmap-data">, which the page parses and renders. Periods can carry machine dates (start and end, as a day, an ISO week, or a month) next to their human labels, and a milestone that names a task id in its text is linked to that task. The roadmap skill writes both, and checks the page after every edit.
Roadmaps made before this format move over in the 0.5.3 upgrade. Each page is rewritten beside itself, both versions are rendered, and the new one replaces the old only when the rendered page is identical, down to the pixel, and the original hasn't changed meanwhile; otherwise the page is left exactly as it was and keeps working. A migrated roadmap has no dates until you ask roadmap to add them (it proposes each one for you to confirm), so until then attention sees only its in-progress items. See Upgrades.
Upgrading to 0.8.8
Version 0.8.8 renames the skill from focus to attention, because Claude Code ships its own /focus command and /agent-kevin:focus never reached the skill. where-am-i and triage are gone: attention checkpoint all covers both. The upgrade moves each projects/<slug>/focus.html to attention.html, moves the queue cache, and rewrites the focus_write and Skill(agent-kevin:focus) permission rules to their successors in the same allow, ask, or deny list. A schedule or script outside the home that runs an old command needs the new one. See Upgrades.
Upgrading from 0.5
Version 0.6.0 folds the standup and where-am-i skills into focus as playbooks: ask the same way, or run focus standup and focus where-am-i. The home focus.html moves into the dashboard, and the upgrade removes the generated file; a hand-made file at that path is left alone. Their permission grants are no longer needed, and the upgrade offers to drop them.
Second-model review
Put a different model on anything you made, a proposal, a plan, a document, or code. It documents what it finds on one dossier; your agent verifies every finding, fixes the real ones, and hands back the next round.
Tax and books
Know what tax you owe at every moment, for your companies and your personal return. Every obligation becomes a dated task, receipts land in one ledger, the month closes for your accountant, and the estimate is planned before the penalty, not after.