Skip to main content
skill CX Codex

calendar-automation — Claude Code skill: what it does, how to install

Automates Google Calendar and Outlook workflows: allocates focus time blocks, sends morning Slack briefings, and prepares meeting notes with context.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add claude-office-skills/skills --skill calendar-automation -a claude-code
Open on GitHub

What calendar-automation does

This skill translates n8n workflow templates into assistant actions. It calculates daily schedule stats and delivers morning summaries directly to Slack. When someone books a slot through Calendly, the workflow pushes contact details into HubSpot CRM and adds the event to Google Calendar.

Meeting preparation triggers one hour before scheduled calls. The assistant aggregates attendee details from email and CRM history to draft talking points. For weekly planning, it pulls priority tasks from Todoist or Asana and protects focus slots while capping meetings at 5 per day.

Executing calendar actions requires the google-workspace-mcp server. Without permissions for tools like calendar_create_event and slack_notify, automated calendar edits and Slack alerts will fail. The recommended model is claude-sonnet-4.

What it helps with

  • send daily calendar digests to a Slack channel
  • schedule deep work blocks around existing appointments
  • generate briefing docs and agendas before meetings
  • log new Calendly appointments into HubSpot CRM

Example prompts for the agent

  • Generate a morning calendar briefing for today and post it to Slack
  • Block focus time for next week using priority tasks from Todoist
  • Create a prep document and agenda for my upcoming meeting in an hour

How to install calendar-automation

1Skills CLI (Vercel)

npx skills add claude-office-skills/skills --skill calendar-automation -a claude-code

2Manually: put the files in place

~/.claude/skills/calendar-automation/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/calendar-automation/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about calendar-automation

How to install calendar-automation in Claude Code?

Run npx skills add claude-office-skills/skills --skill calendar-automation -a claude-code. Alternatively, add the file directly at ~/.claude/skills/calendar-automation/SKILL.md.

What does the calendar-automation skill do?

It automates calendar operations across Google Calendar and Outlook using n8n-style workflows. The skill coordinates time blocking, attendee prep, and morning Slack briefings.

What MCP tools are required for calendar-automation?

It requires google-workspace-mcp with calendar_create_event, calendar_list_events, calendar_update, and slack_notify. Several workflows also connect with Calendly, HubSpot, Asana, and Todoist.

Source text

SKILL.md · MIT
---
name: calendar-automation
description: "Google Calendar and Outlook automation - scheduling optimization, meeting workflows, time blocking, and Slack/Sheets integration"
version: "1.0.0"
author: claude-office-skills
license: MIT

category: productivity
tags:
  - calendar
  - scheduling
  - google-calendar
  - outlook
  - automation
department: Operations

models:
  recommended:
    - claude-sonnet-4

mcp:
  server: google-workspace-mcp
  tools:
    - calendar_create_event
    - calendar_list_events
    - calendar_update
    - slack_notify

capabilities:
  - meeting_scheduling
  - time_blocking
  - calendar_sync
  - meeting_prep
  - daily_digest

languages:
  - en
  - zh

related_skills:
  - gmail-workflows
  - meeting-notes
  - task-management
---

# Calendar Automation

Automate Google Calendar and Outlook workflows for meeting management, time blocking, daily digests, and cross-platform synchronization. Based on n8n workflow templates.

## Overview

This skill covers:
- Meeting scheduling automation
- Time blocking strategies
- Daily calendar digests to Slack
- Meeting prep reminders
- Calendar analytics

---

## Core Workflows

### 1. Daily Calendar Digest to Slack

```yaml
workflow: "Morning Calendar Briefing"

schedule: "6:00 AM daily"

steps:
  1. get_today_events:
      calendar: primary
      time_min: today_start
      time_max: today_end
      
  2. categorize_events:
      categories:
        meetings: has_attendees == true
        focus_time: title contains "Focus" OR "Deep Work"
        one_on_ones: title contains "1:1" OR "1-on-1"
        interviews: title contains "Interview"
        
  3. calculate_stats:
      total_meetings: count(meetings)
      total_hours: sum(duration)
      free_time: 8 - total_hours
      back_to_back: count(gap < 15min)
      
  4. format_message:
      template: |
        ☀️ *Good morning! Here's your day:*
        
        📅 *{date}*
        
        *Schedule Overview:*
        • {total_meetings} meetings ({total_hours}h)
        • {free_time}h of free time
        • {back_to_back} back-to-back slots ⚠️
        
        *Today's Events:*
        {event_list}
        
        💡 *Tip:* {daily_tip}
        
  5. send_to_slack:
      channel: "#daily-schedule" or DM
      
  6. log_to_sheets:
      spreadsheet: "Calendar Analytics"
      data: [date, meetings, hours, categories]
```

**Event List Format**:
```
• 9:00 AM - Team Standup (15m) 📞 Zoom
• 10:00 AM - 1:1 with Sarah (30m) 👥
• 11:00 AM - Focus Time (2h) 🧠
• 2:00 PM - Client Call (1h) 🤝 Google Meet
• 4:00 PM - Interview - PM Role (45m) 🎯
```

---

### 2. Meeting Prep Automation

```yaml
workflow: "Meeting Preparation"

trigger:
  type: calendar_event
  time: 1_hour_before_meeting
  filter: has_attendees AND duration >= 30min

steps:
  1. get_meeting_details:
      extract: [title, attendees, description, meeting_link]
      
  2. research_attendees:
      for_each: attendee
      actions:
        - linkedin_lookup: get_title_company
        - crm_lookup: get_past_interactions
        - email_search: recent_threads
        
  3. generate_prep_doc:
      template: |
        # Meeting Prep: {title}
        
        **Time:** {start_time}
        **Duration:** {duration}
        **Link:** {meeting_link}
        
        ## Attendees
        {attendee_profiles}
        
        ## Context
        - Last interaction: {last_meeting_date}
        - Open items: {open_tasks}
        - Recent emails: {email_summary}
        
        ## Suggested Agenda
        {ai_suggested_agenda}
        
        ## Talking Points
        {ai_talking_points}
        
  4. send_reminder:
      slack_dm:
        message: |
          ⏰ Meeting in 1 hour: *{title}*
          
          📋 [Prep Doc]({prep_doc_link})
          🔗 [Join Meeting]({meeting_link})
          
          Quick context: {one_line_summary}
```

---

### 3. Smart Time Blocking

```yaml
workflow: "Auto Time Blocking"

schedule: "Sunday 8pm" # Plan for next week

steps:
  1. analyze_calendar:
      range: next_7_days
      identify:
        - existing_meetings
        - recurring_meetings
        - available_slots
        
  2. get_priorities:
      source: [todoist, asana, notion]
      filter: due_this_week AND high_priority
      
  3. allocate_focus_time:
      rules:
        - morning_block: 9-11am (deep work)
        - afternoon_block: 2-4pm (collaborative)
        - minimum_gap: 15min between meetings
        - max_meetings_per_day: 5
        
  4. create_blocks:
      types:
        deep_work:
          duration: 2h
          frequency: daily
          preferred_time: 9-11am
          color: blue
          
        admin_time:
          duration: 1h
          frequency: daily
          preferred_time: 4-5pm
          color: gray
          
        buffer:
          duration: 15min
          after: external_meetings
          color: yellow
          
  5. notify:
      slack: "✅ Weekly time blocks created. {x} hours of focus time protected."
```

---

### 4. Calendly → Calendar + CRM

```yaml
workflow: "Calendly Booking Handler"

trigger:
  type: calendly
  event: booking_created

steps:
  1. get_booking_details:
      extract: [invitee, event_type, scheduled_time, answers]
      
  2. enrich_contact:
      clearbit: lookup_by_email
      linkedin: get_profile
      
  3. create_calendar_event:
      google_calendar:
        title: "{event_type} with {invitee_name}"
        time: scheduled_time
        description: |
          **Booked via Calendly**
          
          Name: {invitee_name}
          Email: {invitee_email}
          Company: {company}
          
          **Pre-meeting questions:**
          {calendly_answers}
        attendees: [invitee_email, owner_email]
        reminders: [1_day, 1_hour, 15_min]
        
  4. update_crm:
      hubspot:
        create_or_update_contact:
          email: invitee_email
          properties:
            last_meeting_booked: scheduled_time
            meeting_type: event_type
        create_engagement:
          type: MEETING
          timestamp: scheduled_time
          
  5. send_confirmation:
      email:
        to: invitee_email
        template: meeting_confirmation
        include: [calendar_invite, prep_questions]
        
  6. notify_slack:
      channel: "#meetings"
      message: "📅 New booking: {event_type} with {invitee_name} on {date}"
```

---

### 5. Calendar Analytics

```yaml
analytics_workflow:
  name: "Weekly Calendar Report"
  schedule: "Friday 5pm"
  
  metrics:
    time_distribution:
      - meetings_total_hours
      - focus_time_hours
      - admin_time_hours
      - 1on1_time_hours
      
    meeting_quality:
      - avg_meeting_length
      - back_to_back_count
      - meetings_with_agenda
      - external_vs_internal
      
    productivity:
      - longest_focus_block
      - fragmentation_score
      - after_hours_meetings
      
  output:
    format: markdown
    destinations: [slack, google_sheets]
    
  report_template: |
    # 📊 Weekly Calendar Analytics
    
    ## Time Distribution
    | Category | Hours | % of Week |
    |----------|-------|-----------|
    | Meetings | {meetings_hours} | {meetings_pct}% |
    | Focus Time | {focus_hours} | {focus_pct}% |
    | Admin | {admin_hours} | {admin_pct}% |
    | Available | {available_hours} | {available_pct}% |
    
    ## Meeting Insights
    - Total meetings: {total_meetings}
    - Average length: {avg_length} min
    - Back-to-back: {b2b_count} ({b2b_pct}%)
    - With agenda: {agenda_pct}%
    
    ## Productivity Score
    🎯 **{productivity_score}/100**
    
    - Longest focus block: {longest_focus}
    - Meeting fragmentation: {fragmentation}
    - After-hours: {after_hours_count}
    
    ## Recommendations
    {ai_recommendations}
```

---

## Time Blocking Templates

### Maker Schedule (Individual Contributor)
```
┌─────────────────────────────────────┐
│ 9:00 - 11:00  │ Deep Work Block 1  │
├─────────────────────────────────────┤
│ 11:00 - 11:30 │ Email/Slack        │
├─────────────────────────────────────┤
│ 11:30 - 12:30 │ Meetings Window    │
├─────────────────────────────────────┤
│ 12:30 - 1:30  │ Lunch              │
├─────────────────────────────────────┤
│ 1:30 - 3:30   │ Deep Work Block 2  │
├─────────────────────────────────────┤
│ 3:30 - 4:00   │ Buffer/Admin       │
├─────────────────────────────────────┤
│ 4:00 - 5:00   │ Meetings Window    │
├─────────────────────────────────────┤
│ 5:00 - 5:30   │ Daily Wrap-up      │
└─────────────────────────────────────┘
```

### Manager Schedule
```
┌─────────────────────────────────────┐
│ 8:00 - 8:30   │ Daily Planning     │
├─────────────────────────────────────┤
│ 8:30 - 9:00   │ Team Standup       │
├─────────────────────────────────────┤
│ 9:00 - 12:00  │ 1:1s / Meetings    │
├─────────────────────────────────────┤
│ 12:00 - 1:00  │ Lunch              │
├─────────────────────────────────────┤
│ 1:00 - 2:00   │ Focus Time         │
├─────────────────────────────────────┤
│ 2:00 - 5:00   │ Meetings           │
├─────────────────────────────────────┤
│ 5:00 - 5:30   │ Email/Wrap-up      │
└─────────────────────────────────────┘
```

---

## Output Example

**Request**: "Set up daily calendar digest for my Slack"

**Output**:

```markdown
# Daily Calendar Digest Setup

## Workflow Configuration

```yaml
name: "Morning Calendar Briefing"
schedule: "6:00 AM weekdays"
timezone: "Asia/Shanghai"

trigger:
  type: cron
  expression: "0 6 * * 1-5"

actions:
  1. fetch_events:
      calendar: primary
      date: today
      
  2. send_slack:
      channel: "@you" # or #your-channel
```

## Sample Output

```
☀️ Good morning! Here's your Thursday:

📅 January 30, 2026

━━━━━━━━━━━━━━━━━━━━━━

📊 Overview:
• 5 meetings (4.5h)
• 3.5h free time
• 1 back-to-back warning ⚠️

━━━━━━━━━━━━━━━━━━━━━━

🗓️ Schedule:

9:00 AM │ Team Standup (15m)
        │ 📞 Google Meet
        │
10:00 AM │ 1:1 with Sarah (30m)
         │ 👥 Conference Room B
         │
11:00 AM │ 🧠 Focus Time (2h)
         │ 
1:00 PM │ Lunch
        │
2:00 PM │ Client Call - Acme (1h)
        │ 🤝 Zoom (link attached)
        │
3:30 PM │ Product Review (1h)
        │ 📋 Agenda attached
        │
5:00 PM │ ✅ Day ends

━━━━━━━━━━━━━━━━━━━━━━

💡 Tip: You have 2h of focus time - tackle your highest priority task!
```

## n8n Setup Instructions

1. Create new workflow
2. Add Schedule Trigger node (6am weekdays)
3. Add Google Calendar node (Get Events)
4. Add Code node (format message)
5. Add Slack node (send message)
6. Activate workflow

Would you like me to generate the full n8n workflow JSON?
```

---

*Calendar Automation Skill - Part of Claude Office Skills*

© claude-office-skills · MIT · claude-office-skills/skills

Similar skills

Everything for Notes, tasks and projects →

From the same set109

airtable-automation Gives an agent patterns for Airtable base design, views, formulas and automation flows. Use it when tasks, projects or n8n workflows need a clear data structure. CX Codex +1 6,200installs telegram-bot A skill for building Telegram bots: chatbots, notifications, AI assistants and group automation. Useful when you need message handlers and workflows fast. CX Codex +1 6,200installs academic-search Builds academic search strategies, reviews supplied papers and abstracts, and helps synthesize findings. Use it when planning a literature review or assessing research methods. CX Codex +1 6,100installs docx-manipulation The skill builds and edits Word files through python-docx: headings, tables, images, headers. Useful when a report or contract has to come out of code. CX Codex +1 6,100installs pdf-to-docx Turns PDF files into editable Word documents with the pdf2docx library. Useful when a report or contract needs changes, not just reading. CX Codex +1 6,000installs proposal-writer Generates structured business proposals, quick service quotes, and partnership pitches. Useful for client negotiations and RFP responses. CX Codex +1 5,900installs PDF OCR Extraction Pulls text out of scanned and image-based PDFs with OCR. Useful when a document won't let you select anything but still needs to be searchable. CX Codex +1 5,700installs image-generation Turns a rough visual idea into a working prompt for DALL-E, Midjourney or Stable Diffusion, shaped for the tool you actually use. CX Codex +1 5,600installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor