From math-coach
Prompts for work details like date, description, start/end times; calculates hours; appends/updates Markdown timesheet in .campaign/timesheet.md. Supports clock in/out with timezone.
npx claudepluginhub cgbarlow/skills --plugin math-coachThis skill uses the workspace's default tool permissions.
Update the project timesheet at `.campaign/timesheet.md`.
Controls timesheet.io CLI for time tracking: start/stop/pause timers, manage projects/tasks/teams/tags, generate summaries and export reports via bash commands.
Automates Clockify time tracking: create, query, delete time entries; manage workspaces and retrieve user info via natural language commands in Claude Code.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Share bugs, ideas, or general feedback.
Update the project timesheet at .campaign/timesheet.md.
Before creating a new timesheet, search for an existing one using Glob (**/.campaign/timesheet.md). If found, use that path. Only create a new one if none exists — create it in the nearest directory that already has a .campaign/ folder, or in the project root.
The timesheet file may contain a Timezone: line (e.g. Timezone: Pacific/Auckland). When getting the current time via Bash, always use this timezone: TZ=<timezone> date '+%Y-%m-%d %I:%M %p'. If no timezone line is found in the timesheet, ask the user for their timezone using AskUserQuestion and add it to the timesheet file (below the Instructions heading).
If the user's arguments contain "clock in":
date via Bash with the configured timezone, round down to the nearest 15 minutes (e.g. 8:37 PM → 8:30 PM)(Clocked in... description pending), the rounded start time, and leave End Time and Hours blank (—)If the user's arguments contain "clock out":
(Clocked in... description pending) as its descriptiondate via Bash with the configured timezone, round down to the nearest 15 minutesAskUserQuestion to collect the description of work doneIf the user is NOT clocking in/out, follow this flow:
AskUserQuestion to collect the following for each entry:
.campaign/timesheet.mdEvery time an entry is added, edited, or removed, recalculate the Weekly Summary table above the Entries table. Weeks are identified by their Monday start date (ISO week, Mon–Sun). The total hours line below the weekly summary must always equal the sum of all entry hours.
Calculating the week-starting Monday for a date:
For example, Sunday 2026-03-01 belongs to the week starting Monday 2026-02-23 (subtract 6 days). Monday 2026-03-02 starts a new week. Always use this calculation — do NOT treat the entry date itself as the week start.
If .campaign/timesheet.md does not exist, create it with this content:
# Timesheet
## How to update
Run `/timesheet` in Claude Code to add entries, or use clock in/out:
- `/timesheet clock in` — starts a new entry at the current time
- `/timesheet clock out` — ends the open entry and prompts for a description
- `/timesheet` — manually add an entry (date, description, start/end times)
Timezone: (ask user)
---
## Weekly Summary
| Week Starting | Hours |
|---------------|-------|
**Total: 0.00 hours**
---
## Entries
| Date | Description | Start Time | End Time | Hours |
|------------|-------------|------------|----------|-------|