Calendar Defrag Skill
Calendars fragment the way disks did: nothing big fits anywhere, and every week costs more than it returns. This skill audits the week like a capacity planner (what each meeting costs, what the fragments waste), proposes the defrag, and — only with approval — executes the moves through an agent with calendar access.
What This Skill Produces
- The audit — every recurring meeting priced (hours × attendees), fragmentation map of the week, the largest contiguous focus block currently possible
- The defrag proposal — meetings to shorten / merge / make async / decline-with-note, moves that consolidate fragments into 2h+ focus blocks
- The execution plan — exact calendar operations, shown before any are made
Required Inputs
Ask for these if not provided:
- Calendar scope — which week(s), work hours, timezone
- The user's real priorities — defrag serves deep work on something; name it
- Untouchables — meetings that are politically or contractually fixed
- Meeting-owner etiquette — may the agent propose times to others, or only move solo/owned events?
Framework
- Price everything: duration × attendees = cost; recurring cost × 26 = the six-month bill. Print it — the bill changes minds that advice can't.
- The fragment rule: a gap under 45 minutes is lost time; count the week's fragment waste in hours.
- The defrag moves, in preference order: delete (with a note) → make async (doc + comments) → halve the duration → merge with an adjacent ritual → move to the edge of the day.
- Focus blocks are placed first — 2h+ blocks at the user's stated peak hours; meetings pack around them, not vice versa.
- Respect other people's calendars: moves affecting others become proposals (draft messages), never unilateral moves.
Output Format
Calendar Defrag: week of [date]
The bill: [n] meeting-hours (× attendees = [n] person-hours) · fragments waste [n]h · largest focus block today: [n]min
| Meeting |
Cost |
Verdict |
Move |
| After defrag: [n] focus blocks ([hours]), [n]h returned per week. |
|
|
|
Quality Checks
Anti-Patterns
Execution
For agents with calendar access (Google/Microsoft APIs or UI). Without tools, the audit + proposal is the deliverable. Rules per SKILLSPEC.md §5.
Preconditions
- The defrag proposal has been produced and explicitly approved by a human, line-item vetoes honored.
- Calendar access authenticated; the week(s) in scope named; the untouchables list confirmed.
- The execution plan (exact create/move/shorten/decline operations) displayed and confirmed.
Allowed actions
- Create the approved focus blocks (named, with decline-meetings visibility set as approved).
- Move or shorten only events the user owns, per the approved plan.
- Decline events on the approved list, attaching the approved note.
- Save (never send) the drafted proposals for meetings owned by others.
- Nothing else: no deleting events outright, no touching other calendars, no auto-accepting, no changes outside the approved week(s).
Verification
- Re-read the week: focus blocks exist at approved times; moved events at new times; declined events show the note; nothing outside the plan changed.
- Report the before/after fragment-waste numbers.
Rollback
- Every move is recorded (event, old time, new time) — undo restores old times and removes created blocks.
- Stop and ask a human if: an event was modified by someone else after approval, a move conflicts with a new event, or any API action fails.
1---2name: calendar-defrag-23description: Defragment a work calendar through a tool-using agent — find the meeting debt, propose the consolidation, and (approval-gated) execute the moves. Use when asked to defrag my calendar, get me focus time, audit my meetings, or fix my week. Produces the calendar audit (cost per meeting, fragmentation map), a defrag proposal with focus blocks, and an approval-gated execution plan.4---56# Calendar Defrag Skill78Calendars fragment the way disks did: nothing big fits anywhere, and every week costs more than it returns. This skill audits the week like a capacity planner (what each meeting costs, what the fragments waste), proposes the defrag, and — only with approval — executes the moves through an agent with calendar access.910## What This Skill Produces1112- **The audit** — every recurring meeting priced (hours × attendees), fragmentation map of the week, the largest contiguous focus block currently possible13- **The defrag proposal** — meetings to shorten / merge / make async / decline-with-note, moves that consolidate fragments into 2h+ focus blocks14- **The execution plan** — exact calendar operations, shown before any are made1516## Required Inputs1718Ask for these if not provided:19- **Calendar scope** — which week(s), work hours, timezone20- **The user's real priorities** — defrag serves deep work on *something*; name it21- **Untouchables** — meetings that are politically or contractually fixed22- **Meeting-owner etiquette** — may the agent propose times to others, or only move solo/owned events?2324## Framework25261. **Price everything:** duration × attendees = cost; recurring cost × 26 = the six-month bill. Print it — the bill changes minds that advice can't.272. **The fragment rule:** a gap under 45 minutes is lost time; count the week's fragment waste in hours.283. **The defrag moves, in preference order:** delete (with a note) → make async (doc + comments) → halve the duration → merge with an adjacent ritual → move to the edge of the day.294. **Focus blocks are placed first** — 2h+ blocks at the user's stated peak hours; meetings pack around them, not vice versa.305. **Respect other people's calendars:** moves affecting others become *proposals* (draft messages), never unilateral moves.3132## Output Format3334# Calendar Defrag: week of [date]35**The bill:** [n] meeting-hours (× attendees = [n] person-hours) · fragments waste [n]h · largest focus block today: [n]min36| Meeting | Cost | Verdict | Move |37|---|---|---|---|38**After defrag:** [n] focus blocks ([hours]), [n]h returned per week.3940## Quality Checks41- [ ] Every recurring meeting carries its six-month price42- [ ] Every removal has a draft note to the organizer — silent declines burn trust43- [ ] Focus blocks land on stated peak hours, not leftovers44- [ ] Moves touching other people are proposals with drafts, not actions4546## Anti-Patterns47- [ ] Do not judge meetings by name — a "sync" can be load-bearing; price and ask what it decides48- [ ] Do not create focus blocks and leave them unlabeled — an empty slot gets colonized in a day49- [ ] Do not defrag someone into back-to-back meetings to serve the user — fragmentation exported is not fragmentation solved50- [ ] Do not touch the untouchables list, even when they're obviously the problem — name it, don't move it5152## Execution5354For agents with calendar access (Google/Microsoft APIs or UI). Without tools, the audit + proposal is the deliverable. Rules per [SKILLSPEC.md §5](../../SKILLSPEC.md).5556### Preconditions57- The defrag proposal has been produced and **explicitly approved by a human**, line-item vetoes honored.58- Calendar access authenticated; the week(s) in scope named; the untouchables list confirmed.59- The execution plan (exact create/move/shorten/decline operations) displayed and confirmed.6061### Allowed actions62- Create the approved focus blocks (named, with decline-meetings visibility set as approved).63- Move or shorten **only** events the user owns, per the approved plan.64- Decline events on the approved list, attaching the approved note.65- Save (never send) the drafted proposals for meetings owned by others.66- Nothing else: **no deleting events outright, no touching other calendars, no auto-accepting, no changes outside the approved week(s).**6768### Verification69- Re-read the week: focus blocks exist at approved times; moved events at new times; declined events show the note; nothing outside the plan changed.70- Report the before/after fragment-waste numbers.7172### Rollback73- Every move is recorded (event, old time, new time) — undo restores old times and removes created blocks.74- Stop and ask a human if: an event was modified by someone else after approval, a move conflicts with a new event, or any API action fails.