Skip to content
CLI Tools
Skill

/calendar

Calendar canvas for displaying events and picking meeting times. Use when showing calendar views or when users need to select available time slots.

BOOST
From plugin
claude-canvas
1.5k4 skills1 command
Install
$ npx -y skills add dvdsgl/claude-canvas --skill calendar --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/calendar

Context preview

The summary Claude sees to decide when to auto-load this skill.

Calendar canvas for displaying events and picking meeting times. Use when showing calendar views or when users need to select available time slots.

SKILL.md

calendar.SKILL.md
name: calendar
description: |
  Calendar canvas for displaying events and picking meeting times.
  Use when showing calendar views or when users need to select available time slots.

Calendar Canvas

Display calendar views and enable interactive meeting time selection.

Example Prompts

Try asking Claude:

  • "Schedule a 30-minute meeting with Alice and Bob sometime next week"
  • "Find a time when the engineering team is all free on Tuesday"
  • "Show me my calendar for this week"
  • "When is everyone available for a 1-hour planning session?"
  • "Block off 2-4pm on Friday for focused work"

Scenarios

`display` (default)

View-only calendar display. User can navigate weeks but cannot select times.

bun run src/cli.ts show calendar --scenario display --config '{
  "title": "My Week",
  "events": [
    {"id": "1", "title": "Meeting", "startTime": "2025-01-06T09:00:00", "endTime": "2025-01-06T10:00:00"}
  ]
}'

`meeting-picker`

Interactive scenario for selecting a free time slot when viewing multiple people's calendars.

  • Shows multiple calendars overlaid with different colors
  • User can **click** on free slots to select a meeting time
  • Selection is sent back via IPC
  • Supports configurable time slot granularity (15/30/60 min)
bun run src/cli.ts spawn calendar --scenario meeting-picker --config '{
  "calendars": [
    {
      "name": "Alice",
      "color": "blue",
      "events": [
        {"id": "1", "title": "Standup", "startTime": "2025-01-06T09:00:00", "endTime": "2025-01-06T09:30:00"}
      ]
    },
    {
      "name": "Bob",
      "color": "green",
      "events": [
        {"id": "2", "title": "Call", "startTime": "2025-01-06T14:00:00", "endTime": "2025-01-06T15:00:00"}
      ]
    }
  ],
  "slotGranularity": 30,
  "minDuration": 30,
  "maxDuration": 120
}'

Configuration

Display Config

interface CalendarConfig {
  title?: string;
  events: CalendarEvent[];
}

interface CalendarEvent {
  id: string;
  title: string;
  startTime: string;  // ISO datetime
  endTime: string;    // ISO datetime
  color?: string;     // blue, green, red, yellow, magenta, cyan
}

Meeting Picker Config

interface MeetingPickerConfig {
  calendars: Calendar[];
  slotGranularity?: number;  // 15, 30, or 60 minutes (default: 30)
  minDuration?: number;      // Minimum meeting duration in minutes
  maxDuration?: number;      // Maximum meeting duration in minutes
}

interface Calendar {
  name: string;              // Person's name
  color: string;             // Calendar color
  events: CalendarEvent[];   // Their busy times
}

Controls

**Display scenario:**

  • `←/→` or `h/l`: Navigate between days
  • `n` or `PageDown`: Next week
  • `p` or `PageUp`: Previous week
  • `t`: Jump to today
  • `q` or `Esc`: Quit

**Meeting picker scenario:**

  • **Mouse click**: Select a free time slot
  • `←/→`: Navigate weeks
  • `t`: Jump to today
  • `q` or `Esc`: Cancel selection

Selection Result

interface MeetingSelection {
  startTime: string;  // ISO datetime
  endTime: string;    // ISO datetime
  duration: number;   // Minutes
}

API Usage

import { pickMeetingTime } from "${CLAUDE_PLUGIN_ROOT}/src/api";

const result = await pickMeetingTime({
  calendars: [
    { name: "Alice", color: "blue", events: [...] },
    { name: "Bob", color: "green", events: [...] },
  ],
  slotGranularity: 30,
});

if (result.success && result.data) {
  console.log(`Selected: ${result.data.startTime} - ${result.data.endTime}`);
}
Read more
Ships withclaude-canvas

A TUI toolkit that gives Claude Code its own display. Spawn interactive terminal interfaces for emails, calendars, flight bookings, and more. Note: This is a proof of concept and is unsupported.

Get the whole plugin
Stats
1,515
Stars
138
Forks
Quiet
Maintenance
TypeScript
Language
MIT
License
9mo ago
Last commit
9mo ago
Created
11d ago
Added

Repo: dvdsgl/claude-canvas

Other skills on claude-canvas.

canvas
Skill

canvas

**The primary skill for terminal TUI components.** Covers spawning, controlling, and interacting with terminal canvases. Use when…