Integrates with Timewarrior (timew) for zero-friction time tracking across Claude Code sessions. Activate this skill when: - Session starts (check ~/.claude-timew-current for an active task) - User runs /task, /timew, or /timetrack commands - User mentions "time tracking", "track time", "log my time", "how long did I spend", "weekly report", "time report" - User says they are starting, switching, pausing, finishing, or completing a task - User asks about time spent on a project or task
Handles time tracking for coding sessions using the Timewarrior CLI (timew).
brew install timewarriorsudo apt install timewarriorsudo dnf install timew${CLAUDE_PLUGIN_ROOT}/scripts/ (plugin install) or scripts/ (manual install).~/.claude-timew-current.~/.claude-timew-current stores the active task context as key=value pairs:
PROJECT=nke-agent
TASK=fix-etcd-quorum-loss
TYPE=bugfix
timew-start.sh on every new starttimew-start.sh --resume and at session starttimew-stop.sh (normal stop) for later resumetimew-stop.sh --done when the task is fully complete~/.timewarrior/data/ is the source of truth for interval data/task start <project> "<task-description>" [type]Start tracking a new task. If a timer is already running, it is stopped first.
/task start nke-agent "fix etcd quorum loss" bugfix
Runs: ${CLAUDE_PLUGIN_ROOT}/scripts/timew-start.sh nke-agent "fix etcd quorum loss" bugfix
/task stopStop the current timer, preserve state for later resume.
Runs: ${CLAUDE_PLUGIN_ROOT}/scripts/timew-stop.sh
/task doneStop the timer and clear state (task fully complete).
Runs: ${CLAUDE_PLUGIN_ROOT}/scripts/timew-stop.sh --done
/task resumeResume tracking using saved state from ~/.claude-timew-current.
Runs: ${CLAUDE_PLUGIN_ROOT}/scripts/timew-start.sh --resume
/task statusShow current tracking state, saved context, and today's summary.
Runs: ${CLAUDE_PLUGIN_ROOT}/scripts/timew-status.sh
/task switch <project> "<task-description>" [type]Stop current timer and start a new one (shorthand for stop + start).
Runs: ${CLAUDE_PLUGIN_ROOT}/scripts/timew-stop.sh then ${CLAUDE_PLUGIN_ROOT}/scripts/timew-start.sh <project> <task> [type]
/task report [period] [filter]Generate a time report.
Runs: ${CLAUDE_PLUGIN_ROOT}/scripts/timew-report.sh [period] [filter]
| Period argument | Time range |
|---|---|
today (default) | current day |
yesterday | previous day |
week | current week |
lastweek | previous week |
month | current month |
lastmonth | previous month |
<project-name> | treated as project filter, week range |
Examples:
/task report
/task report week
/task report week project:nke-agent
/task report month type:bugfix
All Timewarrior intervals use colon-prefixed tags:
| Tag | Format | Example | Required |
|---|---|---|---|
| project | project:<name> | project:nke-agent | Yes |
| task | task:<description> | task:fix-etcd-quorum-loss | Yes |
| type | type:<category> | type:bugfix | No (default: feature) |
Valid types: bugfix, feature, chore, review, investigation
Conventions:
nke-agent, forge)fix-etcd-quorum-loss)timew start calls should go through the scripts to keep tags consistent~/.claude-timew-current exists and has content."Last session you were working on {PROJECT}/{TASK} ({TYPE}). Want to resume tracking, or start a new task?"
"What are you working on? I can start time tracking with
/task start."
"Timer is still running for {PROJECT}/{TASK}. Want me to stop it?"
${CLAUDE_PLUGIN_ROOT}/scripts/timew-stop.sh.| Natural language | Command |
|---|---|
| "how long today?" | /task report today |
| "what did I work on this week?" | /task report week |
| "show time on nke-agent" | /task report week project:nke-agent |
| "last month's bugfix time" | /task report lastmonth type:bugfix |
| "yesterday's summary" | /task report yesterday |
timew-status.sh to check timew's actual state, then recreate the state file from that information if the user confirms.timew modify) → Always confirm with the user before proceeding.timew stop outside scripts → Status script will detect and warn that state is out of sync.