calendar
Calendar canvas for displaying events and picking meeting times. Use when showing calendar views or when users need to select…
**The primary skill for terminal TUI components.** Covers spawning, controlling, and interacting with terminal canvases. Use when displaying calendars, documents, or flight bookings.
$ npx -y skills add dvdsgl/claude-canvas --skill canvas --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/canvasContext preview
The summary Claude sees to decide when to auto-load this skill.
**The primary skill for terminal TUI components.** Covers spawning, controlling, and interacting with terminal canvases. Use when displaying calendars, documents, or flight bookings.
name: canvas description: | **The primary skill for terminal TUI components.** Covers spawning, controlling, and interacting with terminal canvases. Use when displaying calendars, documents, or flight bookings.
**Start here when using terminal canvases.** This skill covers the overall workflow, canvas types, and IPC communication.
Try asking Claude things like:
**Calendar:**
**Document:**
**Flight:**
Canvas provides interactive terminal displays (TUIs) that Claude can spawn and control. Each canvas type supports multiple scenarios for different interaction modes.
| Canvas | Purpose | Scenarios | |--------|---------|-----------| | `calendar` | Display calendars, pick meeting times | `display`, `meeting-picker` | | `document` | View/edit markdown documents | `display`, `edit`, `email-preview` | | `flight` | Flight comparison and seat selection | `booking` |
cd ${CLAUDE_PLUGIN_ROOT}
# Run canvas in current terminal
bun run src/cli.ts show calendar
# Spawn canvas in new tmux split
bun run src/cli.ts spawn calendar --scenario meeting-picker --config '{...}'**Always use `spawn` for interactive scenarios** - this opens the canvas in a tmux split pane while keeping the conversation terminal available.
bun run src/cli.ts spawn [kind] --scenario [name] --config '[json]'
**Parameters:**
Interactive canvases communicate via Unix domain sockets.
**Canvas → Controller:**
{ type: "ready", scenario } // Canvas is ready
{ type: "selected", data } // User made a selection
{ type: "cancelled", reason? } // User cancelled
{ type: "error", message } // Error occurred**Controller → Canvas:**
{ type: "update", config } // Update canvas configuration
{ type: "close" } // Request canvas to close
{ type: "ping" } // Health checkFor programmatic use, import the API module:
import { pickMeetingTime, editDocument, bookFlight } from "${CLAUDE_PLUGIN_ROOT}/src/api";
// Spawn meeting picker and wait for selection
const result = await pickMeetingTime({
calendars: [...],
slotGranularity: 30,
});
if (result.success && result.data) {
console.log(`Selected: ${result.data.startTime}`);
}| Skill | Purpose | |-------|---------| | `calendar` | Calendar display and meeting picker details | | `document` | Document rendering and text selection | | `flight` | Flight comparison and seat map details |
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.
Calendar canvas for displaying events and picking meeting times. Use when showing calendar views or when users need to select…
Document canvas for displaying and editing markdown content. Use when showing documents, emails, or when users need to select…