diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-06 21:59:52 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-06 21:59:52 -0500 |
| commit | d81b23ad6b6e437dfe3c338a00a4be39bc555146 (patch) | |
| tree | 2d4b0d7890fd1fc70d81282b81fed2808c28a106 /.ai/workflows/edit-calendar-event.org | |
| parent | 201377f57430ef28d02e703a2191434bbee55c75 (diff) | |
| download | rulesets-d81b23ad6b6e437dfe3c338a00a4be39bc555146.tar.gz rulesets-d81b23ad6b6e437dfe3c338a00a4be39bc555146.zip | |
chore(ai): initialize project notes and Claude tooling surfaces
Replace the seed notes.org with project-specific context (layout, install modes, task tracker location, recent inflection point). Bring in the synced template surfaces (protocols, workflows, scripts, references, retrospectives, someday-maybe) as tracked content for this content/documentation project.
Diffstat (limited to '.ai/workflows/edit-calendar-event.org')
| -rw-r--r-- | .ai/workflows/edit-calendar-event.org | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/.ai/workflows/edit-calendar-event.org b/.ai/workflows/edit-calendar-event.org new file mode 100644 index 0000000..662f0b4 --- /dev/null +++ b/.ai/workflows/edit-calendar-event.org @@ -0,0 +1,186 @@ +#+TITLE: Edit Calendar Event Workflow +#+AUTHOR: Craig Jennings & Claude +#+DATE: 2026-02-01 + +* Overview + +Workflow for editing existing calendar events. Uses the Google Calendar MCP server (preferred) or gcalcli (fallback, personal account only). + +The MCP server supports direct event updates via =update-event= — no delete-and-recreate needed. gcalcli fallback still uses delete-and-recreate since gcalcli's edit command is interactive. + +* Triggers + +- "edit the meeting" +- "change my appointment" +- "reschedule" +- "update the event" +- "move my appointment" + +* Prerequisites + +- Google Calendar MCP server configured and authenticated (=@cocal/google-calendar-mcp=) +- Two accounts available: =personal= (Craig Google) and =work= (Craig Deepsat) +- Fallback: gcalcli installed (personal account only) +- Event must exist on calendar + +* CRITICAL: Check All Calendars Before Rescheduling + +When rescheduling an event, ALWAYS check for conflicts at the new time across ALL calendars: + +1. *MCP server* — check both personal and work accounts via =list-events= or =get-freebusy= +2. *Emacs org files* — for Proton calendar (not accessible via MCP or gcalcli): + +#+begin_src bash +grep "TARGET_DATE" ~/.emacs.d/data/pcal.org # Proton calendar +#+end_src + +Verify the new time is free across all calendars before rescheduling. + +* Workflow Steps + +** 1. Parse User Request + +Extract: +- Which event (title, partial match, or date hint) +- What to change (if mentioned) + +Examples: +- "Edit the dentist appointment" → search for "dentist" +- "Reschedule tomorrow's meeting" → search tomorrow's events +- "Change the 3pm call to 4pm" → search by time + +** 2. Search for Event + +*** MCP (preferred) +Use =search-events= or =list-events= MCP tool with appropriate =account_id= ("personal" or "work"). + +*** gcalcli (fallback, personal only) +#+begin_src bash +gcalcli --calendar "Calendar Name" search "event title" +gcalcli --calendar "Calendar Name" agenda "date" "date 11:59pm" +#+end_src + +** 3. Handle Multiple Matches + +If search returns multiple events: + +#+begin_example +Found 3 events matching "meeting": + +1. Team Meeting - Feb 3, 2026 at 9:00 AM +2. Project Meeting - Feb 4, 2026 at 2:00 PM +3. Client Meeting - Feb 5, 2026 at 10:00 AM + +Which event do you want to edit? (1-3) +#+end_example + +** 4. Display Full Event Details + +Show the current event state: + +#+begin_example +Event: Team Meeting +When: Monday, Feb 3, 2026 at 9:00 AM +Duration: 1 hour +Location: Conference Room A +Description: Weekly sync +Reminders: 5 min, 0 min +Calendar: Craig +#+end_example + +** 5. Ask What to Change + +Options: +- Title +- Date/Time +- Duration +- Location +- Description +- Reminders + +Can change one or multiple fields. + +** 6. Show Updated Summary + +Before applying changes: + +#+begin_example +Updated Event: +Event: Team Standup (was: Team Meeting) +When: Monday, Feb 3, 2026 at 9:30 AM (was: 9:00 AM) +Duration: 30 minutes (was: 1 hour) +Location: Conference Room A +Description: Weekly sync +Reminders: 5 min, 0 min +Calendar: Craig + +Apply these changes? (yes/no) +#+end_example + +** 7. Explicit Confirmation + +*Do NOT apply changes until user confirms.* + +** 8. Execute Edit + +*** MCP (preferred — direct update) +Use the =update-event= MCP tool: +- =account_id=: "personal" or "work" +- =calendar_id=: calendar name or ID +- =event_id=: event ID (from search/list results) +- Only pass the fields that changed (summary, start, end, location, description, etc.) + +*** gcalcli (fallback, personal only — delete + recreate) + +Since gcalcli edit is interactive, use delete + add: + +#+begin_src bash +# Delete original +gcalcli --calendar "Calendar Name" delete "Event Title" --iamaexpert + +# Recreate with updated fields +gcalcli --calendar "Calendar Name" add \ + --title "Updated Title" \ + --when "new date/time" \ + --duration NEW_MINUTES \ + --where "Location" \ + --description "Description" \ + --reminder 5 \ + --reminder 0 \ + --noprompt +#+end_src + +*Warning:* The gcalcli delete+recreate approach deletes ALL instances of a recurring event. The MCP =update-event= tool handles this more gracefully. + +** 9. Verify + +*** MCP +Use =search-events= or =get-event= to verify the update. + +*** gcalcli (fallback) +#+begin_src bash +gcalcli --calendar "Calendar Name" search "Updated Title" +#+end_src + +Report success or failure. + +* Error Handling + +** Event Not Found +- Verify spelling +- Try partial match +- Check date range + +** Multiple Matches +- Show all matches +- Ask user to select one +- Use more specific search terms + +** MCP Authentication Error +Use =manage-accounts= MCP tool with =action: "add"= to re-authenticate. + +* Related + +- [[file:add-calendar-event.org][Add Calendar Event]] - create events +- [[file:read-calendar-events.org][Read Calendar Events]] - view events +- [[file:delete-calendar-event.org][Delete Calendar Event]] - remove events |
