aboutsummaryrefslogtreecommitdiff
path: root/.ai/workflows/edit-calendar-event.org
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-06 21:59:52 -0500
committerCraig Jennings <c@cjennings.net>2026-05-06 21:59:52 -0500
commitd81b23ad6b6e437dfe3c338a00a4be39bc555146 (patch)
tree2d4b0d7890fd1fc70d81282b81fed2808c28a106 /.ai/workflows/edit-calendar-event.org
parent201377f57430ef28d02e703a2191434bbee55c75 (diff)
downloadrulesets-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.org186
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