skills/attention/SKILL.md
Energy and spoon check — come up for air, see what needs attention without breaking focus
npx skillsauth add athal7/dotfiles attentionInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Trigger: "Come up for air", "Attention check", "How's my energy?", "What's on my reminders?"
Build CURRENT from in-context signals only — do not call any external tools for this step:
Summarize as: one-line description + urgency tag (time-sensitive / steady / exploratory / idle).
If nothing is active, CURRENT = idle.
CURRENT is internal scratch — never print it.
Before querying the calendar or reminders, find the entries flagged for attention check in the user's machine-local config. The system maintains per-machine settings that mark a subset of calendars and reminder lists as in-scope; everything else is deliberately out of scope.
Look for entries shaped like attention_check: true under calendar and reminder list definitions, and collect their display names.
If no entries are flagged, ask the user which calendars and lists to use — do not default to all of them. Using all surfaces noise (family members' calendars, subscriptions, holiday feeds, shared lists) that breaks the focus signal.
The collected names are the only calendars and lists the next step should query.
Sessions: query the agent session database with sessions-today.sql, sessions-summary.sql, sessions-concurrent.sql from this skill directory
Calendar: fetch today's events and current time, filtered to the calendar names from Step 1 only. Exclude events the user has declined — for any event with attendee participation status available, drop it if the user's status is "declined." A declined event no longer holds time on the calendar and must not count toward RUNWAY. Compute RUNWAY = minutes until the earlier of (next non-declined event on those calendars, 4pm). 4pm is the wind-down boundary — buffer for gradual transition, not end of work.
Reminders: fetch reminders filtered to the list names from Step 1 only and only fetch open (incomplete) reminders — completed items are done and must never appear in the attention view. Reminder counts climb over time; querying without the open filter surfaces a stale archive that masks what's actually in flight.
Bucket the open reminders by urgency:
high, medium, or low. The user has triaged these; treat as standing items the focus check should respect, sorted by priority.none — awaiting triage. The user has not decided whether these matter. Sample at most 3, oldest-created first. When surfaced, the expected response is "prioritize or act" — tag with a priority, complete, or delete; do not treat as a task to do as-is.Future-dated reminders (tomorrow onward) are out of scope for the attention check — they belong to a planning ritual, not a focus check.
Within each bucket, sort by priority (high → medium → low → none), then by due date / creation date.
Work: fetch review requests, received reviews, and assigned work. Prioritize closest-to-done: approved merge request ready to merge → received review to address → incoming review request → new work. Group linked merge requests and issues together. Flag any "In Progress" issue whose merge request has changes requested or a conflict. Consult the source control provider's known gotchas before querying reviews. "Received review to address" means a reviewer left feedback on your merge request — never surface another person's merge request under this category. When a surfaced merge request or issue matches CURRENT (same branch / linked issue), tag it [active] — do not list it again in top-items. Items in the same repository as the current working directory rank higher than items in other repositories at the same priority level.
Score on a single scale using the worst of: user messages today (< 30 = High, 30–80 = Medium, > 80 = Low), peak concurrent sessions (1–2 = High, 3–4 = Medium, 5+ = Low), and RUNWAY (≥ 90m = High, 30–90m = Medium, < 30m = Low). Session titles with high topic variety or cross-repo jumps compound switching cost — nudge down one level.
One snapshot. If something has been waiting and someone else is affected, mention it once, plainly.
Every output starts with the same signal block:
Energy: <Low|Medium|High>
msgs steered: X concurrent: X runway: Xm
When comparing items to CURRENT: if CURRENT ≠ idle and an item is more urgent, mark it ↑ switch. If less urgent, mark it ↓ later and only include if there's room. If nothing surfaced is more urgent than CURRENT, the recommendation is "continue current." Items in the same repository as the current working directory are considered one urgency level higher than equivalent items in other repositories.
When choosing the personal item(s) to surface, use the reminder buckets in order: overdue → due today → undated-with-priority → undated-none. Within a bucket, prefer the highest-priority item.
Items from bucket 4 (priority none) are surfaced with an inline [triage] tag — these are unprioritized, so the expected response is to set a priority, act, or delete, not to treat them as a task. Energy gating for bucket 4:
[triage].[triage] when room permits, even when buckets 1–3 also have content.LOW
[signal block]
Take care of yourself first. Are you hydrated? Have you eaten?
Top work: [single most urgent item — or "continue current" if nothing more urgent]
Top personal: [overdue reminder if any, else due-today, else highest-priority undated-with-priority — bucket 4 suppressed at LOW]
Everything else can wait.
MEDIUM
[signal block]
[1–2 items — mix of work and personal, compared against CURRENT; personal items pulled from buckets 1–3, falling back to one bucket-4 `[triage]` item when 1–3 are empty]
[Flag any stuck/blocked items briefly]
How does your body feel right now?
HIGH
[signal block]
[3–4 items — mix of work and personal, excluding items tagged [active]; personal items pulled from buckets 1–3 first, then up to 3 bucket-4 `[triage]` items when room permits]
Is there anything nagging that isn't on this list?
What do you want to focus on?
development
Zoom meeting captions — file locations and format
tools
macOS dictation custom vocabulary — sync knowledge base names and terms to the system spelling dictionary
testing
Look up people, projects, products, and decisions locally first: contact info (email, Slack ID, GitHub handle), titles and teams, project/product status, who works on what, and past decisions. Check before searching Slack, email, calendar, or GitHub — this is the first stop for any contact detail, project context, or decision-history question.
testing
Communication style, audience awareness, and AI-authorship markers for human-facing prose — load when composing chat messages, review comments, merge request descriptions, emails, doc bodies, or ticket descriptions