edmundmiller/opencode-canvas · Archived

canvas

**The primary skill for terminal TUI components.** Covers spawning, controlling, and interacting with terminal canvases. Use when displaying calendars, documents, or flight bookings.

First seen Apr 2, 2026

Installation

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

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,629 B
  • docs SUMMARY.md 196 B

History

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

SKILL.md

Canvas TUI Toolkit

Start here when using terminal canvases. This skill covers the overall workflow, canvas types, and IPC communication.

Example Prompts

Try asking 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 can be spawned and controlled via OpenCode tools. 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

OpenCode Tools

Low-Level Tools (Full Control)

Tool Purpose
canvas_spawn Spawn a canvas in tmux split pane
canvas_env Detect terminal environment (tmux, mouse support)
canvas_update Send configuration updates to active canvas
canvas_close Close an active canvas
canvasgetselection Get text selection from document canvas
canvasgetcontent Get full content from document canvas

High-Level Tools (Convenience)

Tool Purpose
canvasdisplaydocument Display markdown document (read-only)
canvaseditdocument Open document for text selection
canvaspickmeeting_time Calendar picker for scheduling
canvasdisplaycalendar Display calendar events (read-only)

Quick Start

Check environment first:

Use canvas_env to verify tmux is available

Spawn a canvas:

Use canvas_spawn with kind="calendar", scenario="meeting-picker"

Or use high-level tools:

Use canvas_display_document with content="# Hello\n\nMarkdown here."

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

Requirements

  • tmux: Canvas spawning requires a tmux session
  • Terminal with mouse support: For click-based interactions
  • Bun: Runtime for executing canvas commands

CLI Usage (Standalone)

The canvas CLI is also available for standalone use:

# 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 '{...}'

Skills Reference

Skill Purpose
calendar Calendar display and meeting picker details
document Document rendering and text selection
flight Flight comparison and seat map details