edmundmiller/opencode-canvas · Archived

calendar

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

First seen Feb 26, 2026

Installation

$ npx skills add edmundmiller/opencode-canvas --skill calendar

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from edmundmiller/opencode-canvas.

npx skills add edmundmiller/opencode-canvas

Browse all from edmundmiller/opencode-canvas

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Declared

Repository health

License LICENSE
Default branch main
Open issues 0
Status Archived

Skill metadata

Parsed from SKILL.md frontmatter.

Declared agents opencode

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 3,470 B
  • docs SUMMARY.md 163 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 3 installs

SKILL.md

Calendar Canvas

Display calendar views and enable interactive meeting time selection.

Example Prompts

Try asking:

  • "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"

OpenCode Tools

High-Level (Recommended)

Pick a meeting time:

Use canvas_pick_meeting_time with:
  calendars: [
    {
      name: "Alice",
      events: [
        { id: "1", title: "Standup", start: "2025-01-06T09:00:00", end: "2025-01-06T09:30:00" }
      ]
    },
    {
      name: "Bob", 
      events: [
        { id: "2", title: "Call", start: "2025-01-06T14:00:00", end: "2025-01-06T15:00:00" }
      ]
    }
  ]
  durationMinutes: 30
  startHour: 9
  endHour: 17

Display calendar (read-only):

Use canvas_display_calendar with:
  events: [
    { id: "1", title: "Team Meeting", start: "2025-01-06T10:00:00", end: "2025-01-06T11:00:00" }
  ]

Low-Level (Full Control)

Use canvas_spawn with:
  kind: "calendar"
  scenario: "meeting-picker" or "display"
  config: { calendars: [...], durationMinutes: 30 }

Scenarios

display (default)

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

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 returned via IPC
  • Supports configurable time slot granularity (15/30/60 min)

Configuration

Display Config

interface CalendarConfig {
  events: CalendarEvent[];
}

interface CalendarEvent {
  id: string;
  title: string;
  start: string;      // ISO datetime
  end: string;        // ISO datetime
  calendar?: string;  // Calendar name
  location?: string;
  description?: string;
}

Meeting Picker Config

interface MeetingPickerConfig {
  calendars: NamedCalendar[];
  durationMinutes?: number;  // Default: 30
  startHour?: number;        // Default: 9
  endHour?: number;          // Default: 17
}

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

Controls

Display scenario:

  • Left/Right 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
  • Left/Right: Navigate weeks
  • t: Jump to today
  • q or Esc: Cancel selection

Selection Result

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

Tool Response

The canvaspickmeeting_time tool returns:

{
  success: true,
  data: {
    startTime: "2025-01-06T10:00:00",
    endTime: "2025-01-06T10:30:00",
    duration: 30
  }
}
// or
{
  success: true,
  cancelled: true  // User pressed Esc/q
}
// or
{
  success: false,
  error: "Canvas requires a tmux session"
}