Scheduler
Find, rank, validate, create, and update calendar meeting times with deterministic availability planning and guarded calendar writes. Use when the user asks to schedule, book, arrange, reschedule, move, or update a meeting; compare availability across people; find mutual free time next week or in a date range; turn proposed availabilities into candidate slots; or create/update calendar events after explicit confirmation.From its SKILL.md
npx -y skills add sidmohan0/skills --skill schedulerAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.9 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
Scheduler
Core Route
Use calendar connectors for profile/calendar discovery, event fetching, and final writes. Use the bundled script for deterministic date-range bounds, mutual availability, slot ranking, slot validation, and reviewed create/update action plans:
SKILL_DIR="${CODEX_SKILL_DIR:-$HOME/.codex/skills/scheduler}"
python3 "$SKILL_DIR/scripts/scheduler.py" window --start-date 2026-07-06 --end-date 2026-07-11 --timezone America/Los_Angeles
python3 "$SKILL_DIR/scripts/scheduler.py" rank-slots --input /tmp/scheduler-input.json
python3 "$SKILL_DIR/scripts/scheduler.py" validate-slot --input /tmp/scheduler-input.json --start 2026-07-06T10:30:00-07:00 --end 2026-07-06T11:00:00-07:00
python3 "$SKILL_DIR/scripts/scheduler.py" action-plan --input /tmp/scheduler-input.json --action create --slot-id slot-002
The script does not call calendar providers and does not mutate calendars. Build a JSON envelope from connector results and user-provided availability, pass it to the script, and use the script output to drive the scheduling conversation.
Scheduling Workflow
- Resolve the requested date range and timezone to exact bounds. Convert relative dates such as
next weekbefore querying connectors. - Discover the relevant calendars and source account labels with connector tools. Use connector returned labels; do not hard-code personal account names.
- Fetch busy events for every selected required participant/calendar over the exact range. Include user-provided availability windows when the user gives them.
- Build the scheduler JSON envelope.
- Run
rank-slotsto compute deterministic candidate slots. - Present candidate slots to the user. Do not create or update anything yet.
- After the user chooses a slot, run
validate-slotagainst the latest envelope. If the slot is no longer available, show the conflict and ask for another slot. - Run
action-planforcreateorupdate. - Use calendar write tools only after explicit confirmation of the action plan.
Envelope Shape
{
"request": {
"title": "Raju sync",
"duration_minutes": 30,
"timezone": "America/Los_Angeles",
"range": { "start": "2026-07-06", "end": "2026-07-11" },
"workday": ["09:00", "17:00"],
"step_minutes": 15,
"max_results": 10,
"target_calendar": {
"source": "google",
"calendar_label": "primary",
"calendar_id": "primary"
}
},
"participants": [
{
"id": "sid",
"label": "Sid",
"email": "[email protected]",
"required": true,
"availability": [
{ "start": "2026-07-06T09:00:00-07:00", "end": "2026-07-06T12:00:00-07:00" }
],
"events": [
{ "title": "Standup", "start": "2026-07-06T09:00:00-07:00", "end": "2026-07-06T09:30:00-07:00" }
]
}
]
}
If a participant has no explicit availability, the script treats the request workday as their availability and subtracts busy events. Transparent/free, declined, canceled, and deleted events are ignored as busy blocks. Required participants must all be free; optional participants are reported as available or conflicting.
Guarded Writes
Before any create or update tool call, the answer must include:
- Operation: create or update.
- Target calendar source and label/id.
- Title.
- Exact start, end, and timezone.
- Attendees.
- Location or conferencing expectation when provided.
Do not create or update an event until the user explicitly confirms the exact action plan. If the user asks to update a recurring event, read the event first and ask whether the change applies to one instance, the whole series, or this-and-following before writing.
For cancellations or deletes, read the target event first, identify whether the signed-in user is organizer or attendee, and ask for explicit confirmation. The planner script does not perform cancellation planning.
Deterministic Boundaries
The script owns:
- date-range bounds
- busy/free interval normalization
- buffers before and after busy events
- mutual availability intersection
- candidate slot ranking
- proposed slot validation
- create/update action-plan formatting
The agent owns:
- resolving ambiguous people, calendars, and relative dates
- calling Google/Outlook calendar connectors
- asking clarification when duration, attendees, target calendar, or write intent is ambiguous
- performing confirmed writes through connector tools
- explaining tradeoffs beyond the deterministic slot table
If the script fails, report the failure and do not silently switch to hand-computed scheduling math.
What ships with it: 4 files
37.7 KB alongside SKILL.md, 2 of them executable
agents/
- openai.yaml168 B
fixtures/
- raju_next_week.json2.3 KB
scripts/
- scheduler.pyruns31.7 KB
tests/
- test_scheduler.pyruns3.5 KB
Gives 0 of the 12 instructions most automation workflows skills give in ~1.1k tokens
Counted across 745 of the 1,008 authors here whose files we hold, read 2026-08-07
- Write conventional commit messagesin 36 of 745, across 35 files
- Delete branches after mergein 30 of 745, across 21 files
- Make atomic commitsin 25 of 745, across 15 files
- Write minimal code to pass testsin 22 of 745, across 10 files
- Re-snapshot after navigation or DOM changesin 21 of 745, across 13 files
- Use try-catch for error handlingin 20 of 745, across 8 files
- Run tests before committingin 20 of 745, across 12 files
- Write tests before implementationin 20 of 745, across 8 files
- Configure branch protection rulesin 19 of 745, across 5 files
- Explain the why in commit messagesin 19 of 745, across 9 files
- Refactor code while tests remain greenin 19 of 745, across 6 files
- Interact with elements using refsin 19 of 745, across 11 files
Said here and by no other author read
- use calendar connectors for discovery, fetching, and writes
- use the bundled script for deterministic availability planning
- build a JSON envelope from connector and user-provided data
- convert relative dates to exact bounds before querying
- fetch busy events for all required participants
- run rank-slots to compute candidate slots
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.