Spawning and controlling interactive terminal-based user interfaces.
Install
mkdir -p .claude/skills/canvas && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/1592" && unzip -o skill.zip -d .claude/skills/canvas && rm skill.zipInstalls to .claude/skills/canvas
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
**The primary skill for terminal TUI components.** Covers spawning, controlling, and interacting with terminal canvases.
Use when displaying calendars, documents, or flight bookings.Key capabilities
- →Spawn interactive terminal canvases
- →Control TUI components via IPC
- →Display calendars and meeting pickers
- →Render and edit markdown documents
- →Manage flight booking interfaces
How it works
It uses Unix domain sockets to facilitate bidirectional communication between the controller and the spawned TUI process.
Inputs & outputs
When to use canvas
- →Display interactive calendar
- →Edit markdown documents in terminal
- →Select flight booking options
About this skill
Canvas TUI Toolkit
Start here when using terminal canvases. This skill covers the overall workflow, canvas types, and IPC communication.
Example Prompts
Try asking Claude things like:
Calendar:
- "Schedule a meeting with the team next week"
- "Find a time when Alice and Bob are both free"
Document:
- "Draft an email to the sales team about the new feature"
- "Help me edit this document — let me select what to change"
Flight:
- "Find flights from SFO to Denver next Friday"
- "Book me a window seat on the morning flight"
Overview
Canvas provides interactive terminal displays (TUIs) that Claude can spawn and control. Each canvas type supports multiple scenarios for different interaction modes.
Available Canvas Types
| 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 |
Quick Start
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 '{...}'
Spawning Canvases
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:
kind: Canvas type (calendar, document, flight)--scenario: Interaction mode (e.g., display, meeting-picker, edit)--config: JSON configuration for the canvas--id: Optional canvas instance ID for IPC
IPC Communication
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 check
High-Level API
For 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}`);
}
Requirements
- tmux: Canvas spawning requires a tmux session
- Terminal with mouse support: For click-based interactions
- Bun: Runtime for executing canvas commands
Skills Reference
| Skill | Purpose |
|---|---|
calendar | Calendar display and meeting picker details |
document | Document rendering and text selection |
flight | Flight comparison and seat map details |
When not to use it
- →In environments without tmux or mouse support
Prerequisites
Limitations
- →Requires a terminal with mouse support
- →Dependent on tmux for split-pane spawning
How it compares
It enables interactive, stateful UI components within the terminal rather than static text output.
Compared to similar skills
canvas side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| canvas (this skill) | 4 | 7mo | Review | Intermediate |
| webapp-testing | 353 | 3mo | Review | Intermediate |
| resolve-conflicts | 81 | 8mo | Review | Intermediate |
| telegram-bot-builder | 106 | 6mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by dvdsgl
View all by dvdsgl →You might also like
webapp-testing
anthropics
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
resolve-conflicts
antinomyhq
Use this skill immediately when the user mentions merge conflicts that need to be resolved. Do not attempt to resolve conflicts directly - invoke this skill first. This skill specializes in providing a structured framework for merging imports, tests, lock files (regeneration), configuration files, and handling deleted-but-modified files with backup and analysis.
telegram-bot-builder
davila7
Expert in building Telegram bots that solve real problems - from simple automation to complex AI-powered bots. Covers bot architecture, the Telegram Bot API, user experience, monetization strategies, and scaling bots to thousands of users. Use when: telegram bot, bot api, telegram automation, chat bot telegram, tg bot.
dev-browser
SawyerHood
Browser automation with persistent page state. Use when users ask to navigate websites, fill forms, take screenshots, extract web data, test web apps, or automate browser workflows. Trigger phrases include "go to [url]", "click on", "fill out the form", "take a screenshot", "scrape", "automate", "test the website", "log into", or any browser interaction request.
openspec-onboard
studyzy
Guided onboarding for OpenSpec - walk through a complete workflow cycle with narration and real codebase work.
codex-cli-bridge
alirezarezvani
Bridge between Claude Code and OpenAI Codex CLI - generates AGENTS.md from CLAUDE.md, provides Codex CLI execution helpers, and enables seamless interoperability between both tools