Time Tracking with a Claude Skill

Time Tracking with a Claude Skill

Mar 23, 2026

This article is part of the Micro AI series.

This week’s article is a simple one. It’s about a Claude skill I developed for time tracking.

In consulting, you’re often working across multiple companies — or multiple projects within a single company — which raises an immediate question: how do I track my time? There’s no shortage of tools out there. Spreadsheets, obviously, and then the plethora of online systems, which are a nightmare all their own. You’re a consultant, you’re working for another company who actually holds the contract with the vendor, and suddenly you’ve got two or three systems you’re trying to reconcile. Not fun.

So clearly you can track things locally with various tools. I decided it’d be more interesting to do this at the command line with a Claude skill. The data model is bare minimum — really quite simple: project name, task name, amount of time, a description of what you did, and maybe a ticket reference. That’s it.

The skill takes a date (so you can go back and log time for yesterday if you forgot), or if you don’t provide one, it assumes today. It also takes the amount of time and a description. What makes it handy is that you can use voice commands. Anywhere you’re on a command line with access to Claude, you can run the skill and log your time. For me personally, that’s where I spend a good chunk of my day anyway — doing a variety of different things — so this is a model that works.

---
description: "Log a time entry to a project CSV: /time-entry Project, Date, Duration, Description"
---

Parse the following time entry and append it to the correct CSV file:

**Input:** $ARGUMENTS

## Parsing rules

The input has 4 comma-separated fields:
1. **Project** — the project/client name (e.g. "Amplify")
2. **Date** — either a specific date (any common format like 3/2/2026, 2026-03-02, March 2, etc.) or a relative word ("today", "yesterday"). Normalize to `YYYY-MM-DD`.
3. **Duration** — natural language duration in 15-minute increments. Convert to decimal hours:
   - "15 minutes" or "15 min" → 0.25
   - "30 minutes" → 0.50
   - "45 minutes" → 0.75
   - "1 hour" → 1.00
   - "1.5 hours" or "1 hour 30 minutes" → 1.50
   - Round to nearest 0.25 if needed
4. **Description** — everything after the third comma, trimmed of leading/trailing whitespace

## CSV file rules

- **Location:** `entries/{Project}/{YYYY-MM}.csv` relative to this project root (`/Users/charlesemary/projects/timetrack/`)
- **Project folder name:** use the project name exactly as provided (preserve casing)
- **If the CSV file doesn't exist yet**, create it with this header row: `date,duration_hours,description`
- **If it already exists**, append a new row (do NOT rewrite the header)
- **Row format:** `{date},{duration_hours},"{description}"`
  - Always quote the description field to handle commas in free text
  - Format duration_hours with 2 decimal places (e.g. 0.25, 1.00, 2.50)
- **Sort:** rows should be in date order. If appending out of order, re-sort the data rows (keep header on line 1).

## Output

After writing, confirm with a single line like:
`Logged 0.25 hours to Amplify on 2026-03-02: "Zoom meeting to talk about new client"`

Then read the current month's CSV file for the project and calculate the month-to-date total hours. Display it on the next line like:
`📊 beeco MTD: 8.50 hours (12 entries)`

Do NOT ask for confirmation. Just parse, write, and display the summary.

Now, you could argue that every time you run it you’re burning tokens — and that’s true. But write a little command line utility in Bash or Python and you’ve got something to maintain. Use an online tool and you’re burning network bandwidth you’re paying for. There’s always a trade-off.

The skill itself is straightforward, and I’ve shared the skill file above. More than anything, I hope this triggers some ideas for solving your own repetitive work routines with AI.