An open API service indexing awesome lists of open source software.

https://github.com/dazz/harvest-skill


https://github.com/dazz/harvest-skill

Last synced: 1 day ago
JSON representation

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