---
name: what-the-heck-did-i-do-today
description: Generate vivid Chinese activity summaries, arbitrary time-range reports, and point-in-time answers from local ActivityWatch data. Use when the user asks what they did today, yesterday, on a specific date, during a specific time range, or at a specific time; wants a "今天干了啥" style summary; needs ActivityWatch installed/started automatically by downloading the official installer; or needs window/AFK events cleaned, inferred, sequenced, and turned into evidence for an LLM-written work log.
我今天到底干了啥
Workflow
Use ActivityWatch's local API first. Do not parse ActivityWatch storage files unless the API is unavailable.
- Resolve the requested date exactly. If the user says today/yesterday, convert it to
yyyy-MM-ddin the user's timezone before running scripts. - Run
scripts/ensure_activitywatch.ps1when ActivityWatch may not be installed, may not be running, or the API athttp://127.0.0.1:5600does not respond. - If
ensure_activitywatch.ps1reportsfresh_install: True, tell the user ActivityWatch has just started recording and cannot reconstruct activity from before installation unless old ActivityWatch data still exists. - For a whole-day report, run
scripts/export_activitywatch_day.ps1 -Date <yyyy-MM-dd>. - For “我某个时间在干啥”, run
scripts/export_activitywatch_day.ps1 -Date <yyyy-MM-dd> -AtTime <HH:mm>and answer fromtime_queryfirst. - Use the script output as the evidence package for the LLM. Do not feed raw ActivityWatch dumps to the LLM unless the summarized evidence is insufficient.
- Write the final report in Chinese unless the user requests another language.
Setup And Startup
Check, install, and start ActivityWatch:
.\scripts\ensure_activitywatch.ps1
The script downloads the official ActivityWatch installer from https://github.com/ActivityWatch/activitywatch/releases/download/v0.13.2/activitywatch-v0.13.2-windows-x86_64-setup.exe into .cache/installers/ under this skill directory, installs to D:\ActivityWatch by default, starts aw-qt.exe, and waits for the local API.
Useful parameters:
-InstallDir: install or locate ActivityWatch somewhere other thanD:\ActivityWatch.-InstallerPath: use or cache the downloaded installer at a specific local path. By default this is.cache/installers/activitywatch-v0.13.2-windows-x86_64-setup.exeunder the skill directory.-InstallerUrl: download ActivityWatch from a different URL. Defaults to the official v0.13.2 GitHub Release URL.-NoInstall: only start an existing install; fail if missing.-WaitSeconds: how long to wait for the local API after launch.
Downloading and installing software requires network access and can require user approval or elevated privileges. The downloaded installer cache is intentionally ignored by .gitignore so it is not uploaded with the skill. If installation is blocked, explain that ActivityWatch must be installed and running before historical data can be collected. ActivityWatch only records after its watchers are running.
Important first-run behavior:
- If ActivityWatch was just installed and the requested date/time has no events, do not pretend to know what happened. Say: “刚刚给你派了个本地小秘书,从现在开始帮你记录电脑活动。不过这个小秘书是刚上岗的,之前没在场,所以不能凭空还原安装前/启动前你昨天干了啥。从现在开始,你可以随时问我“今天干了啥”“某个时间在干嘛”,我会基于已有记录帮你整理。”
- If ActivityWatch was reinstalled but old events still exist, explain that deleting the program directory did not delete the ActivityWatch data store, so historical answers are still available.
- If
fresh_install: Truebut the export script still finds historical events, trust the events and mention that old data survived the reinstall.
Daily Evidence
PowerShell JSON evidence package:
.\scripts\export_activitywatch_day.ps1 -Date 2026-06-22
Readable Markdown evidence package:
.\scripts\export_activitywatch_day.ps1 -Date 2026-06-22 -Markdown
Useful parameters:
-Server: ActivityWatch base URL. Default ishttp://127.0.0.1:5600.-UtcOffset: local day offset. Default is+08:00.-Top: number of top apps/titles to include. Default is30.-AtTime: answer what was happening at a point in time, such as14:30.-WindowMinutes: nearby-event window for-AtTime. Default is15.
Point-In-Time Answers
When the user asks what happened at a specific time:
- Require or infer the date. If ambiguous, use the same date implied by the conversation and state it explicitly.
- Run the export script with
-AtTime. - Answer with the exact focused event if present; otherwise summarize nearby events and say the exact timestamp was not covered.
- Include confidence language: “看起来”, “大概率”, or “只能确认窗口焦点是...” when the evidence is indirect.
Example:
.\scripts\export_activitywatch_day.ps1 -Date 2026-06-22 -AtTime 16:20 -Markdown
Inference Rules
Use activity_guess as a hint, not a fact. Translate common guesses like this:
coding: likely writing, reading, debugging, or reviewing code, especially for VS Code/Cursor/IDE windows and source file titles.communication: likely chat, meeting, email, calendar, or coordination.reading_docs_or_ops: likely reading requirements, docs, dashboards, tickets, or operational pages.terminal_or_remote_ops: likely SSH, server checks, scripts, deployment, or operations.gaming: likely gaming or game launcher activity.system_or_file_management: likely system settings, file management, notes, or low-signal utility work.unknown: do not invent; describe the visible app/title only.
Prefer concrete evidence from titles such as document names, repository/file names, dashboards, terminals, meeting names, or email subjects. Avoid overclaiming: if a title only says WeChat or Microsoft Teams, describe it as communication time rather than inventing chat content.
Report Style
Create a report with these sections when the evidence supports them:
一句话总结: one sentence that captures the day's main theme.按时间顺序: chronological narrative by morning/afternoon/evening or active hour.主要推进: 3-6 bullets grouped by actual work themes, not just app names.沟通与会议: meetings, chats, email, and collaboration signals.代码/文档/运维: code files, docs, dashboards, terminals, and production tools.不确定项: gaps, noisy titles, AFK periods, or activities that need user confirmation.
The voice should be factual but human. Add light emotional color when supported by time and context, for example:
- “在本该喝下午茶的时间,你还埋在 PRD 和 Confluence 里扒需求。”
- “晚上这个点正常该收工了,但窗口记录看起来还在像赶 DDL 一样切文档、看代码、查服务器。”
- “深夜出现 Steam 或游戏启动器时,可以直说看起来终于从工作里逃出来打了会儿游戏。”
Keep emotional comments short. Do not turn the report into fiction; every joke must be anchored to app, title, time, or duration evidence.
Evidence Handling
Treat ActivityWatch titles as private local telemetry. Summarize them; do not expose long raw dumps unless the user asks.
When the script reports that ActivityWatch has no bucket or no events:
- Run or suggest
scripts/ensure_activitywatch.ps1. - Mention that ActivityWatch only records after watchers are running.
- If the requested date predates installation or watcher startup, clearly state the missing coverage.
For detailed prompt guidance, read references/llm_prompt.md only when drafting or tuning the final LLM prompt.