canvas

Spawn and control interactive terminal TUI canvases for calendars, documents, and flight bookings.

2|Updated Mar 21, 2026
One-click install
npx skills add https://github.com/ghoshsam/claude-code-skills --skill canvas-ghoshsam
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: canvas
Source: https://github.com/ghoshsam/claude-code-skills/tree/main/skills/canvas/canvas
Command: npx skills add https://github.com/ghoshsam/claude-code-skills --skill canvas-ghoshsam

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Coordinating interactive terminal interfaces for tasks like picking meeting times, editing documents, or selecting flight seats requires managing tmux panes, IPC messaging, and scenario configuration, which is tedious to wire up manually. ## Core Features & Use Cases - Canvas Spawning: Launch calendar, document, or flight canvases in tmux split panes with scenario-specific JSON configuration. - IPC Communication: Exchange structured messages (ready, selected, cancelled, update, close) with canvases over Unix domain sockets. - High-Level API: Call functions like pickMeetingTime, editDocument, and bookFlight programmatically and await user selections. - Use Case: Ask the assistant to find a time when two teammates are free; it spawns a calendar meeting-picker canvas, you click a slot, and the selected time is returned to the conversation. ## Quick Start Ask the assistant to schedule a meeting or pick a flight, and it will spawn the appropriate interactive canvas in a tmux split for you to make a selection.

Frequently Asked Questions about canvas

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I spawn an interactive terminal canvas in tmux?

Run bun run src/cli.ts spawn with a canvas kind, a --scenario flag, and a --config JSON payload. This opens the canvas in a tmux split pane while keeping the conversation terminal available.

What canvas types and scenarios are available?

Three canvas types exist: calendar (display, meeting-picker), document (display, edit, email-preview), and flight (booking). Each scenario defines a specific interaction mode for that canvas.

How does the canvas communicate selections back to the controller?

Canvases communicate over Unix domain sockets using JSON messages. The canvas emits ready, selected, cancelled, and error events, while the controller can send update, close, and ping messages.

Can I use the canvas API programmatically instead of the CLI?

Yes, import pickMeetingTime, editDocument, or bookFlight from the src/api module. Each function spawns the canvas, waits for the user selection, and returns a result object with success status and data.

Why does canvas spawning fail outside tmux?

Spawning requires an active tmux session because canvases open in split panes. Without tmux, use the show command to run a canvas directly in the current terminal instead.