Track billable hours for clients. This skill should be used when the user requests to log work hours, record time spent on client projects, view worklog entries, calculate total billable hours, or summarize recent work. Automatically prompts for missing information (client, hours, description) and validates client names against the invoice skill's client database.
Track billable hours for clients with automatic client validation and integration with the invoice skill.
This skill helps track time spent on client work by maintaining a detailed worklog with client names, dates, hours worked, and work descriptions. It integrates with the invoice skill by reading client information from ~/.claude/skills/invoice/clients.json to ensure consistency and enable accurate billing.
Use this skill when:
When the user requests to log work:
Determine the current date - ALWAYS check the system clock using date +%Y-%m-%d to get the current date. Never assume the date based on training cutoff.
Identify required information:
Validate client name - The script automatically validates against the invoice skill's client list. Valid client names are:
Create work description:
Add the entry using the worklog manager script
python3 scripts/worklog_manager.py clients
This displays all clients from the invoice skill with their billing type and hourly rate (if applicable).
python3 scripts/worklog_manager.py add \
--client "Client Name" \
--hours 2.5 \
--description "Work description here" \
--date 2025-11-01 # Optional, defaults to today
Important:
For convenience, the worklog skill supports client name aliases:
You can use these aliases in any command that accepts a client name:
# These are equivalent:
python3 scripts/worklog_manager.py add --client "ALT" --hours 2 --description "Work done"
python3 scripts/worklog_manager.py add --client "American Laboratory Trading" --hours 2 --description "Work done"
# Aliases also work for filtering and totals:
python3 scripts/worklog_manager.py list --client "ALT"
python3 scripts/worklog_manager.py total --client "alt"
All entries are stored using the canonical client name ("American Laboratory Trading"), so aliases are purely a convenience for input.
# List all entries
python3 scripts/worklog_manager.py list
# Filter by client
python3 scripts/worklog_manager.py list --client "American Laboratory Trading"
# Filter by date range
python3 scripts/worklog_manager.py list --start-date 2025-10-01 --end-date 2025-10-31
# Get JSON output for processing
python3 scripts/worklog_manager.py list --format json
# Total hours for all clients
python3 scripts/worklog_manager.py total
# Total for specific client
python3 scripts/worklog_manager.py total --client "Empirico"
# Total for date range
python3 scripts/worklog_manager.py total --start-date 2025-10-01 --end-date 2025-10-31
For hourly clients, this also calculates the billable amount using the rate from the invoice skill.
# First list entries to see indices
python3 scripts/worklog_manager.py list
# Delete entry at index (0-based)
python3 scripts/worklog_manager.py delete 0
Example 1: User provides all information
User: "Log 3 hours for American Laboratory Trading - implemented user authentication system with JWT tokens"
Action: Add entry with provided information using current date
Example 2: User asks to log work without details
User: "Log my work hours"
Claude: "I'll help you log your work hours. Which client is this for? Available clients:
- American Laboratory Trading ($100/hr)
- Empirico (subscription)
- Versa Computing ($100/hr)"
User: "American Laboratory Trading"
Claude: "How many hours did you work?"
User: "2.5 hours"
Claude: "What work did you complete?"
User: "Fixed the login bug and updated the database schema"
Action: Add entry with gathered information
Example 3: User asks to summarize session work
User: "Log my work for Versa Computing - summarize what we did today"
Claude: [Analyzes conversation and recent changes, creates summary like:]
"During this session, implemented a new worklog tracking system that integrates with the existing invoice skill. Created a Python script for managing time entries with client validation, date handling, and reporting features. The system maintains worklog data in JSON format and reads client information from the invoice skill to ensure consistency. Added functionality for adding entries, listing work by client and date range, calculating total hours, and deleting entries."
Action: Ask user to confirm hours, then add entry with generated summary
Example 4: Retroactive entry
User: "Add a worklog entry for yesterday - 4 hours on Empirico, worked on the subscription billing integration"
Action: Calculate yesterday's date using system clock, add entry with that date
~/.claude/skills/worklog/worklog.json~/.claude/skills/invoice/clients.json (read-only)The worklog skill never modifies the invoice skill's client data - it only reads it for validation and billing rate information.
This skill integrates with the invoice skill by:
When creating invoices, reference worklog entries to ensure accurate billing.
date +%Y-%m-%d before logging entries to ensure accuracy