Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Calculates outside-working-hours overtime from Cursor agent activity and git commit times for leave-replacement claims. Use when the user asks for OT hours, overtime summary, leave replacement, work outside office hours, or to claim OT from Cursor/GitHub activity.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 143% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 60% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 70% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 18% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 10% | 0% |
Produce a leave-replacement claim summary for time worked outside office hours, using:
Never emit the final claim until the user confirms (or adjusts) the proposed hours.
| Setting | Value | |---------|--------| | Timezone | Asia/Singapore (UTC+8) | | Weekdays | Mon–Fri 08:00–16:45 = normal hours | | Outside hours | Before 08:00, after 16:45, or all day Sat/Sun | | Public holidays | Treat as outside hours only if the user says so |
Override timezone only when the user says otherwise.
Apply when the user says any of:
mermaidflowchart TD trigger[User runs OT leave claim] askStart{Start time given?} promptStart[Ask for start time] gather[Gather git commits and Cursor transcripts] clip[Clip to outside office hours] propose[Propose OT ranges and hours] confirm[User confirms or adjusts] tasks[Task description per OT range] summary[Final leave-replacement claim] trigger --> askStart askStart -->|no| promptStart --> gather askStart -->|yes| gather --> clip --> propose --> confirm --> tasks --> summary
Copy this checklist and track progress:
OT claim progress:
- [ ] Step 1: Start time confirmed
- [ ] Step 2: Evidence gathered
- [ ] Step 3: Proposal shown (not final)
- [ ] Step 4: Hours confirmed by user
- [ ] Step 5: Task descriptions per range
- [ ] Step 6: OT reason confirmed (rephrase if needed)
- [ ] Step 7: Final claim summary outputIf the user did not specify a start time, stop and ask:
> What is the start time for this OT claim? (e.g. 2026-07-18 18:00 or today 6pm)
Do not gather evidence until start time is known.
Parse relative forms (today 6pm, yesterday 19:30) in Asia/Singapore unless told otherwise.
End time default: latest evidence at or after start (see Step 3). User may override when confirming.
OT reason (overall why for the leave-replacement request):
> What is the OT / leave-replacement reason? (e.g. urgent post-rollout bug fixes after Friday training)
From the active git repo (cwd / workspace root):
Commits (author = current user):
bashgit log --since="<START_ISO>" --until="<END_OR_NOW>" \ --author="$(git config user.email)" \ --pretty=format:"%h|%ad|%s" --date=iso
If user.email is empty, try --author="$(git config user.name)". If still empty, use unfiltered local log and note that in the justification.
Cursor activity:
~/.cursor/projects/<project-slug>/agent-transcripts/ (match the current workspace path).<timestamp>... lines inside .jsonl).Also note the repo name / path in the claim (which app was worked on).
Default calculation:
[start, end] with outside office hours only.If the window crosses midnight or multiple days, split into one range per calendar day (or per discontinuous block) so each can get its own task description.
Present a Proposal block only:
markdown## OT proposal (awaiting confirmation) **Claim window start:** <start> **Suggested end:** <end> (last evidence: <source>) **Timezone:** Asia/Singapore (UTC+8) ### Proposed ranges | # | Date | Start | End | Hours | |---|------|-------|-----|-------| | 1 | ... | ... | ... | ... | **Proposed total:** Xh ### Evidence - Commits: ... - Cursor sessions: ... ### Draft OT reason <rephrased reason if user already gave one; otherwise “pending”> ### Justification ... Confirm these hours, or tell me the adjusted total / ranges.
Hard stop: do not print the final claim template until the user confirms or adjusts.
Output this copy-paste friendly report:
markdown# Leave Replacement Claim — Outside Working Hours **Timezone:** Asia/Singapore (UTC+8) **Office hours:** Mon–Fri 08:00–16:45 **Claim window start:** <user start> **Generated:** <now> **Repo / app:** <name> ## Summary - Total OT claimed: **Xh** - Leave replacement days: **Zd** (`Xh ÷ 8.75`) - Confirmed by user: yes ## OT reason <professional rephrased reason for this leave-replacement request> ## Leave replacement days - Standard working day: **8.75h** (Mon–Fri 08:00–16:45) - Calculation: `Xh ÷ 8.75 = Y` → claim **Zd** leave replacement - Round to nearest **0.5 day** unless the user specifies otherwise ## OT ranges | # | Date | Start | End | Hours | Task description | |---|------|-------|-----|-------|------------------| | 1 | ... | ... | ... | ... | ... | ## Evidence (supporting) - Commits: ... - Cursor sessions: ... ## Justification ...
Always include OT reason and the leave-day conversion in the final summary. Formula: OT hours ÷ 8.75, round to nearest 0.5 day.
Saving to disk is optional: only if the user asks, write ~/Desktop/ot-claims/YYYY-MM-DD.md (create the folder if needed). Default is chat-only.
See examples.md for weekday evening and weekend sample flows.
Other measured skills in the registry, with their headline benchmark lift.