← Back to list

calendar
by edmundmiller
⭐ 0🍴 0📅 Jan 11, 2026
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:
- "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/Rightorh/l: Navigate between daysnorPageDown: Next weekporPageUp: Previous weekt: Jump to todayqorEsc: Quit
Meeting picker scenario:
- Mouse click: Select a free time slot
Left/Right: Navigate weekst: Jump to todayqorEsc: Cancel selection
Selection Result
interface MeetingPickerResult {
startTime: string; // ISO datetime
endTime: string; // ISO datetime
duration: number; // Minutes
}
Tool Response
The canvas_pick_meeting_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"
}
Score
Total Score
60/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
✓LICENSE
ライセンスが設定されている
+10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
Reviews
💬
Reviews coming soon