activitywatch-analysis

Analyze ActivityWatch data to score productivity, detect app-switching death loops, and generate focus insights.

32|2|Updated Dec 26, 2025
One-click install
npx skills add https://github.com/BayramAnnakov/activitywatch-analysis-skill --skill activitywatch-analysis-bayramannakov
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: activitywatch-analysis
Source: https://github.com/BayramAnnakov/activitywatch-analysis-skill
Command: npx skills add https://github.com/BayramAnnakov/activitywatch-analysis-skill --skill activitywatch-analysis-bayramannakov

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires aw-client, and includes scripts (resource) and references (resource) components.

What problem does it solve? It turns raw ActivityWatch time-tracking data into actionable productivity insights, revealing where attention is lost to distracting apps, repetitive context switching, and fragmented focus. ## Core Features & Use Cases - Dual Scoring: Computes a Productivity score (what you worked on) and a Focus score (how sustained your attention was) from window and browser watcher data. - Death Loop Detection: Identifies repetitive A-to-B app switching patterns (e.g., Slack to IDE) and classifies them as productive, AI-assisted, mixed, or distracting with fix suggestions. - Calibration & Custom Categories: A first-run calibration mode surfaces uncategorized apps so users can personalize weights, Telegram chat rules, and browser site categories via JSON config. - Use Case: A developer runs a weekly review to discover that 41% of browser time is distracting and that Telegram-to-Terminal switching is their top death loop, then uses the bundled Focus Guard blocker and blocking guides to intervene. ## Quick Start Ask the assistant to run the ActivityWatch analysis for today with a report, after first running the calibration mode to personalize your app categories.

Frequently Asked Questions about activitywatch-analysis

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I analyze my ActivityWatch data for productivity?

Run scripts/analyze_aw.py with --fetch and a date range like today, week, or YYYY-MM-DD, plus --report for a readable summary. It requires ActivityWatch running locally and optionally aw-client for direct API access; otherwise use a CSV export as input.

What is a death loop in activity tracking?

A death loop is a repetitive A-to-B app switching pattern that fragments attention, such as Slack to IDE. The analyzer classifies each loop as ai_assisted, productive, mixed, or distracting and suggests interventions like batching or blocking.

Does the analyzer work without the aw-watcher-web browser extension?

Yes, but all browser time appears as a single block under Chrome or Safari with no site-level breakdown. Installing the aw-watcher-web Chrome extension enables per-domain analysis with productive versus distracting ratios.

How do I customize app categories and weights?

Edit scripts/category_config.json to add apps, window title patterns, and weights from -0.5 (distracting) to 1.0 (deep work). Run the analyzer with --calibrate first to see which apps are uncategorized, then verify with a --report run.

Can it detect AI coding agents like Claude Code?

Yes, it detects Claude Code, Codex, Aider, and GitHub Copilot via terminal window title patterns. Switches between terminal and browser during AI sessions are marked ai_assisted and excluded from Focus Score penalties.

What are the limitations of the Focus Guard app blocker?

Focus Guard only works on macOS because it relies on osascript for notifications and app control. In warn-only mode it shows notifications without quitting apps; hard blocking requires disabling warn_only in focus_config.json.