SuperAPI AI Directory

task-calendar

Office & productivity

View repository

Updated 10-15 23:46

About this skill

Task Calendar

Bridge Taskwarrior tasks and Google Calendar. Taskwarrior is source of truth for what and when (deadline). Google Calendar is source of truth for time blocks (when you actually sit down to work).

Follow [[task-workflow]] for all task lifecycle rules. This skill adds calendar operations only.

Core Principle

  • due: on a task = deadline, not a work block
  • Calendar event = committed work time for a task
  • Never auto-sync; always confirm with user before writing to Calendar

Tool Selection

At the start of any calendar operation, detect which tool is available:

command -v gog && echo "gogcli available"

Prefer gog (gogcli) when present — runs via Bash, outputs JSON/TSV to stdout, no MCP overhead. Fall back to mcp__claude_ai_Google_Calendar__* MCP tools when gog is absent.

gogcli docs: https://gogcli.sh/quickstart.html

Operations

1. Check availability before setting a due date

When user says "add task due Friday" or asks about scheduling:

# gogcli — list events for target date
gog calendar events --today          # for today
# for a specific date, inspect output and filter by date

# MCP fallback
# mcp__claude_ai_Google_Calendar__list_events (timeMin: date start, timeMax: date end)

→ Report conflicts found
→ Proceed with task add ... due:<date> only after user confirms

2. Block time for a task (write to Calendar)

When user says "schedule this", "block time", "add to calendar":

1. task <id> info                              — get description, due, project
2. gog calendar events --today                 — inspect free windows
3. Show proposed slot to user, get confirmation
4. Create event:

     gogcli:
       gog calendar create \
         --summary "<task description>" \
         --from "YYYY-MM-DDTHH:MM:SS+TZ" \
         --to   "YYYY-MM-DDTHH:MM:SS+TZ"

     MCP fallback:
       mcp__claude_ai_Google_Calendar__create_event

5. task <id> annotate "gcal:<summary> <date> <HH:MM>"

Event format:

  • --summary: task description verbatim
  • Description (if MCP): taskwarrior id: <id> project: <project>
  • Duration: 25–90 min depending on complexity; ask user if unclear
  • Timezone: use local timezone offset (e.g. +02:00 for CEST)

3. Reschedule a task

When user says "move this to next week", "reschedule task 42":

1. task <id> info                              — get existing gcal annotation
2. gog calendar events --today                 — find new free slot
3. Show proposed change, get confirmation
4. Recreate event with new times (gogcli has no edit command — delete + create):
     gog calendar create --summary "..." --from "..." --to "..."
5. task <id> modify due:<new-date>             — only if deadline also changed
6. task <id> annotate "Rescheduled: <old-date> → <new-date>"

4. Daily planning view with calendar context

When user says "plan my day", "what should I work on today":

# Step 1 — tasks
task +TODAY list
task +OVERDUE list

# Step 2 — calendar
gog calendar events --today
# MCP fallback: mcp__claude_ai_Google_Calendar__list_events

→ Report: meetings that consume time, free windows, tasks without blocks
→ Offer to block time for unscheduled tasks

Rules

  • Never create a calendar event without user confirmation
  • Never modify a task's due: date based on calendar data alone — only on explicit user instruction
  • Never delete calendar events without confirmation
  • If gcal: annotation already exists on a task, check that event before creating a new one
  • Keep annotation format consistent: gcal:<summary> YYYY-MM-DD HH:MM

Calendar Tool Reference

Intent gogcli (gog) MCP fallback
List today's events gog calendar events --today mcp__claude_ai_Google_Calendar__list_events
Create event gog calendar create --summary "..." --from "..." --to "..." mcp__claude_ai_Google_Calendar__create_event
Find free slot inspect events --today output mcp__claude_ai_Google_Calendar__suggest_time
Update event delete + recreate (no edit command) mcp__claude_ai_Google_Calendar__update_event

MCP tools require loading via ToolSearch before calling: ToolSearch: select:mcp__claude_ai_Google_Calendar__<tool_name>