activitywatchactivitylisted
Install: claude install-skill bendrucker/claude
# Activity
Report how the device was actually used, from ActivityWatch's local capture. This skill only reads. It never writes to the db.
ActivityWatch runs `aw-server-rust` in the background (a LaunchAgent supervises it via `aw-qt`). It records the focused app and window title (`aw-watcher-window`) and active vs idle spans (`aw-watcher-afk`) into a SQLite db. DuckDB attaches that db read-only, which is safe while `aw-server` holds its own write connection.
## Database
`~/Library/Application Support/activitywatch/aw-server-rust/sqlite.db`
Override with `AW_DB` (the wrapper resolves it, since DuckDB cannot expand `~` in `ATTACH`). If the file is missing, ActivityWatch is not installed or has not captured yet.
## Querying
Run a named query with `scripts/aw-query.sh`. Each query supports `--recent <duration>` (`12h`, `1d`, `7d`, `4w`) to scope to a recent window, and `-n <limit>` to cap rows.
```bash
${CLAUDE_SKILL_DIR}/scripts/aw-query.sh top-apps
${CLAUDE_SKILL_DIR}/scripts/aw-query.sh top-apps --recent 1d
${CLAUDE_SKILL_DIR}/scripts/aw-query.sh window-titles --recent 7d -n 40
${CLAUDE_SKILL_DIR}/scripts/aw-query.sh afk --recent 1d
```
The aggregate queries (`top-apps`, `window-titles`, `afk`) return durations both formatted (`duration`, e.g. `1h 23m`) and raw (`seconds`) so results are readable and still sortable/summable. `app-timeline` lists individual focus events and returns raw `seconds` only.
## Queries
- **top-apps** — total focused time per app, most first.