From calendrome
Push the user's calendrome timesheet to Harvest. Use when the user runs `/calendrome:harvest-push`, says "push my timesheet", "send hours to Harvest", "submit timesheet", "push the week to Harvest", or asks about logging Harvest hours from calendrome. Thin wrapper over the existing `mcp__calendrome__harvest_push_timesheet` MCP tool with date-range parsing and a dry-run preview.
How this skill is triggered — by the user, by Claude, or both
Slash command
/calendrome:harvest-push [range] — 'today', 'week' (Mon–Fri), 'last-week', or two ISO dates[range] — 'today', 'week' (Mon–Fri), 'last-week', or two ISO datesThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Push calendrome time entries to Harvest as worklog rows. The actual work happens in `mcp__calendrome__harvest_push_timesheet`; this skill resolves the date range, previews what's about to be sent, and pushes only on user confirmation.
Push calendrome time entries to Harvest as worklog rows. The actual work happens in mcp__calendrome__harvest_push_timesheet; this skill resolves the date range, previews what's about to be sent, and pushes only on user confirmation.
calendar_timezone — used to resolve "today" / "week" boundariespersonal_email — informational, surfaced in the confirmation blockIf settings are missing, default to America/Chicago and proceed.
Resolve the requested range:
| Argument | Resolution |
|---|---|
today (or no arg) | today 00:00 → today 23:59 in <calendar_timezone> |
week | this Monday → this Friday |
last-week | previous Monday → previous Friday |
<ISO from> <ISO to> | use as-is |
If the user passes anything else, ask: "Push hours for: today, this week, last week, or a specific date range?"
Call mcp__calendrome__get_timesheet_summary { from, to } first. Show the rows that would be pushed:
Timesheet preview — [from] to [to]
| Project | Date | Hours | Notes |
|---------|------------|------:|-------|
| acme | 2026-05-04 | 1.50 | Sprint planning |
| acme | 2026-05-08 | 4.75 | Straight Arrow work |
| globex | 2026-05-06 | 3.00 | Pipeline migration |
Total: 9.25h across 2 projects.
Push these to Harvest? (y/N)
Before pushing, confirm each project has Harvest IDs configured. Call mcp__calendrome__list_projects {} and check for harvest_project_id and harvest_task_id on each project that appears in the preview.
If any project is missing Harvest IDs, stop and tell the user:
Cannot push — these projects are not mapped to Harvest:
- globex (Globex Industries)
Set them with:
mcp__calendrome__update_project { id: "globex", harvest_project_id: <id>, harvest_task_id: <id> }
Or run mcp__calendrome__harvest_list_projects {} to find the right IDs.
On confirmation, call:
mcp__calendrome__harvest_push_timesheet {
from: "<ISO date>",
to: "<ISO date>"
}
Surface the result. Note any rows that failed (e.g., already-submitted Harvest entries that the API rejects).
Pushed N entries to Harvest.
Total: X.YYh
harvest_push_timesheet should already round, but if the preview shows odd durations (1.9h, 47-min entries), warn the user before pushing. See the user's feedback_time_log_increments preference.HARVEST_TOKEN / HARVEST_ACCOUNT_ID env vars on the calendrome MCP server.npx claudepluginhub mklute101/calendrome --plugin calendromeCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.