Track your time in timesheet.io from Claude: start and stop timers, log past work, and manage projects, tasks, absences, contracts, expenses, todos, and team data. The plugin includes:
- Timesheet connector: the Timesheet MCP server at
https://mcp.timesheet.io. Sign in with your Timesheet account the first time you use it. It works in Claude Code, on claude.ai, and in Cowork, and needs nothing installed. - Timesheet skill: a portable agentic skill for the
@timesheet/clicommand-line tool. It gives any skills-aware agent (Claude Code, Clawdbot, or anything that loadsSKILL.mdfiles) structured knowledge of every CLI command, flag, and common workflow. - Commands for everyday steps: start and stop the timer, check today's hours, log finished work, and see the week. See Usage.
- Agents: a reporter that sums up your hours for a period, and a reviewer that checks your entries for gaps, overlaps, and missing descriptions. They run in Claude Code and Cowork.
- Session reminders in Claude Code and Cowork: the plugin notes when each session starts. When your last session in a folder ran 15 minutes or more and no time was logged, it reminds you at the next start. Turn them off with
/plugin configure timesheet@timesheetor in/config.
The connector needs only a Timesheet account. For the skill, install the CLI globally:
npm install -g @timesheet/cliAuthenticate once via OAuth:
timesheet auth loginFor automation, store an API key in the CLI instead:
timesheet auth apikey --set <your-api-key>Recommended: install from the plugin marketplace.
/plugin marketplace add timesheetIO/timesheet-plugin
/plugin install timesheet@timesheet
This repository is a self-contained marketplace: .claude-plugin/marketplace.json lists a single plugin whose source is the repo root, so adding the marketplace and installing the plugin pulls in the connector and the skill directly. To sign in, run /mcp, select the Timesheet server, and follow the sign-in steps.
Or install only the skill from the bundled CLI (no Git access required):
timesheet skill install # ~/.claude/skills/timesheet
timesheet skill install --project # ./.claude/skills/timesheet
timesheet skill install --force # overwrite if presentOr copy the skill manually:
mkdir -p ~/.claude/skills
cp -r skills/timesheet ~/.claude/skills/After install, invoke with /timesheet or let the model pick it up from natural-language requests.
Workspace skills:
cp -r skills/timesheet <your-workspace>/skills/User skills:
cp -r skills/timesheet ~/.clawdbot/skills/Or, with the CLI installed: timesheet skill install --clawdbot.
Or register via extraDirs in ~/.clawdbot/clawdbot.json:
{
"skills": {
"load": {
"extraDirs": ["/path/to/this/skills"]
}
}
}Install into any supported agent (Claude Code, Codex, Cursor, OpenCode, and more) with the skills CLI:
npx skills add timesheetIO/timesheet-pluginAny tool that reads a single SKILL.md with YAML frontmatter can consume the skill. Point it at skills/timesheet/SKILL.md and the agent gets the full command reference.
| Command | What it does |
|---|---|
/timesheet:start [project] [description] |
Starts the timer for a project |
/timesheet:stop [description] |
Stops the timer and saves the entry |
/timesheet:status |
Shows the timer and today's hours |
/timesheet:log [project] [time] [description] |
Adds a finished entry, also for this or the last session |
/timesheet:week [last] |
Shows this week's or last week's hours by project |
timesheet:reporterbuilds a report for a period, with hours by project, billable time, and an optional export.timesheet:reviewerchecks the entries of a period for gaps, overlaps, missing descriptions, very long entries, and unbilled work. It reports what to fix and changes nothing.
Ask for them in your own words, such as "review my timesheet for last week", or with @agent-timesheet:reviewer.
/timesheet
- "Start a timer for project X"
- "What is my timer status?"
- "Show my tasks for today"
- "Create an expense of 42 EUR on task "
- "Approve the pending absence "
- "List my organizations and their members"
| Category | Commands |
|---|---|
| Auth | login, logout, status, apikey |
| Timer | start, stop, pause, resume, status, update |
| Tasks | list, show, create, update, delete |
| Projects | list, show, create, update, delete, members (list/add/update/remove) |
| Teams | list, members (list/add/update/remove/status) |
| Organizations | list, show, create, update, delete, members (list/show/add/update/remove) |
| Contracts | list, show, create, update, delete, activate, suspend, reactivate, terminate |
| Absences | list, show, create, update, delete, approve, reject, cancel |
| Absence types | list, show, create, update, delete |
| Todos | list, show, create, update, close, reopen, delete |
| Tags | list, show, create, update, delete |
| Notes | list, show, create, update, delete, file-url |
| Expenses | list, show, create, update, delete, refund, file-url |
| Pauses | list, show, create, update, delete |
| Rates | list, show, create, update, delete |
| Reports | summary, export |
| Profile | show, update, settings, settings-update |
| Config | show, set, reset |
timesheet-plugin/
├── .claude-plugin/
│ ├── marketplace.json # marketplace catalog (one plugin, source ".")
│ └── plugin.json # Claude Code plugin manifest
├── .mcp.json # Timesheet connector (MCP server)
├── agents/ # reporter and reviewer
├── commands/ # start, stop, status, log, week
├── hooks/
│ └── hooks.json # session reminders
├── scripts/ # the session reminder scripts
├── skills/
│ └── timesheet/
│ └── SKILL.md # YAML frontmatter + command reference
└── README.md
The skill needs no configuration of its own. The CLI keeps its sign-in in ~/.timesheet-cli/, so every agent uses the account you signed in with timesheet auth login or the key you stored with timesheet auth apikey --set. The connector signs in separately, through the Timesheet sign-in page.
- timesheet.io
- Timesheet MCP server docs
- @timesheet/cli on npm
- Claude Code skills docs
- Claude Code plugin marketplaces
- Clawdbot skills docs
MIT