https://github.com/dazz/harvest-skill
https://github.com/dazz/harvest-skill
Last synced: 1 day ago
JSON representation
- Host: GitHub
- URL: https://github.com/dazz/harvest-skill
- Owner: dazz
- Created: 2026-05-06T08:08:36.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-06T08:12:59.000Z (2 months ago)
- Last Synced: 2026-06-24T12:31:28.283Z (13 days ago)
- Language: Shell
- Size: 6.84 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# harvest — Claude Code Skill
A Claude Code skill for logging time in [Harvest](https://www.getharvest.com/)
from the command line. No AI logic in the script — the agent handles
intelligence, the script handles HTTP.
## What it does
- List your projects and tasks
- Log time entries with optional notes
- Update existing entries
- Delete entries
- List entries for a given day
Designed to be driven by a Claude Code agent: describe your day, hand the
agent a screenshot of your weekly hours, or tell it what you worked on — it
formats and books everything in Harvest.
## Requirements
- `curl`
- `jq`
- A Harvest account with a [Personal Access Token](https://id.getharvest.com/developers)
## Installation
```bash
# Clone into your Claude Code skills directory
git clone https://github.com/your-org/harvest-skill skills/harvest
chmod +x skills/harvest/harvest
```
Then run setup once (interactive, requires human input):
```bash
skills/harvest/harvest setup
```
Setup validates your token against the API, fetches your user ID, and saves
everything to `skills/harvest/config` (gitignored).
## CLI usage
The skill is intended to be called by a Claude Code agent. See `SKILL.md` for
agent instructions. You can also call it directly:
```bash
# List your projects and task IDs
./harvest projects list
# Log time
./harvest log \
--project-id 456789 \
--task-id 987654 \
--date 2026-04-14 \
--hours 7.5 \
--notes "Meetings: Daily, Sprint Review
Development: PROJ-124, PROJ-543"
# List entries for a day
./harvest list --date 2026-04-14
# Update an entry
./harvest update --id 636718192 --notes "Meetings: Daily"
# Delete an entry
./harvest delete --id 636718192
```
All commands (except `setup`) output JSON and use exit code `0` for success,
`1` for errors.
## Config
Created by `harvest setup`, stored next to the `harvest` binary:
```ini
HARVEST_TOKEN=your_personal_access_token
HARVEST_USER_ID=4008116
```
To update credentials, re-run `harvest setup`. The `config` file is gitignored
— never commit it.
## Agent workflow examples
**Single day:**
> "Log 7.5h for today on the client project. I was in the daily and sprint
> review, and worked on PROJ-124 and PROJ-543."
The agent will check for existing entries, look up project and task IDs if
needed, format the notes, and book the entry.
**Full week from a screenshot:**
> "Here's a screenshot of my weekly hours. Log them all to the client project."
The agent reads hours per day from the screenshot, checks what is already
booked, and calls `log` once per day — skipping days with zero hours or
entries already present.
## API reference
[Harvest API v2 — Time Entries](https://help.getharvest.com/api-v2/timesheets-api/timesheets/time-entries/)
## License
MIT