time-lens

Installation
SKILL.md

Project Time Tracker

Combines five data sources → reconciles → produces HTML dashboard + Markdown report.

Scripts

All scripts live in scripts/ next to this SKILL.md. Run them with python3:

Script Purpose Key flags
git_sessions.py Parse git history → sessions → hours <repo> --since YYYY-MM-DD --until YYYY-MM-DD [--raw]
wakatime_fetch.py WakaTime API → daily hours, filtered to project --start YYYY-MM-DD --end YYYY-MM-DD --project name
claude_messages.py Claude Code user prompts + activity timestamps per day --project-path /abs/path or --filter name
codex_messages.py Codex CLI user prompts + activity timestamps per day --project-path /abs/path or --filter name
cursor_messages.py Cursor IDE user prompts + activity timestamps per day --project-path /abs/path or --filter name
reconcile.py Merges the JSON output of the scripts above into a single hour estimate, with an optional supervised-vs-unattended split --git f.json --claude f.json --codex f.json --since Y-M-D --until Y-M-D [--gap-hours 0.5] [--presence-window-min 10] [--tz Area/City] [--daily]

claude_messages.py, codex_messages.py, and cursor_messages.py each output two timestamp arrays: timestamps (user prompts only — for prompt-count metrics) and activity_timestamps (every timestamped event, including tool-call/tool-result cycles and assistant replies — use this one for reconciliation). See "Use activity_timestamps, not timestamps" in references/reconciliation.md for why this distinction matters — using prompt-only timestamps for hour reconciliation silently drops real work time.

Installs
43
GitHub Stars
9
First Seen
Feb 23, 2026