Claude Code no tiene pantalla. Le di una.
Claude Code lo pregunta todo por texto, incluso cuando la respuesta es una elección, no una frase. claude-canvas le da un panel visual real para decidir directa
Santiago Gómez

Todo lo que Claude Code necesita preguntarte viaja por el mismo canal estrecho: texto. Funciona bien cuando la respuesta es texto. Pero es un mal encaje para las preguntas que salen todo el rato en el trabajo real. Cuál de estos archivos refactorizo. Aprueba este cambio, rechaza este otro. Cuál de estos tres horarios te viene bien.
Eso no son frases. Son decisiones. Y forzar una decisión a través de prosa significa que Claude tiene que adivinar qué quisiste decir, y tú tienes que hacer el trabajo de describir una elección en lugar de simplemente tomarla.
Ese desajuste es lo que claude-canvas viene a arreglar.
Qué hace en realidad
claude-canvas es un plugin para Claude Code. Cuando la respuesta a la pregunta de Claude es una elección y no un párrafo, abre un panel de terminal real al lado de tu conversación. Actúas ahí directamente, con las flechas del teclado, checkboxes, una tabla de verdad. Y en el momento en que terminas, el valor exacto vuelve a Claude por un socket local. Sin parsear, sin el clásico "entendió lo que quería decir o no".
Trae nueve tipos de panel de fábrica:
- picker, para elegir una o varias opciones de una lista
- form, para rellenar campos estructurados y enviarlos juntos
- table, para leer datos tabulares con cabecera fija y cuerpo scrollable
- diff, para revisar un diff bloque a bloque, aprobando o rechazando cada uno
- image, para ver un PNG en el panel, a resolución completa en terminales compatibles con kitty, iTerm2 o Sixel, y renderizado con caracteres de bloque de colores en el resto (sí, hasta en una sesión SSH pelada sin ningún protocolo de imagen)
- dashboard, que combina varios de los anteriores en un solo panel
- calendar, para mostrar eventos o elegir un hueco entre varios calendarios
- document, para ver o editar markdown con selección de texto real
- flight, una demo de comparador de vuelos y selector de asiento que enseña toda la maquinaria junta
Por qué esto fue ingeniería de verdad y no una capa bonita
Habría sido fácil sacar algo que se ve bien en una demo y se rompe la primera vez que alguien toca un caso límite. Una terminal más estrecha de lo esperado, una config con un typo, una tecla que llega más rápido de lo que el render espera.
Este proyecto no tomó ese atajo. Cada primitivo pasó por rondas de revisión independientes buscando específicamente los fallos que no aparecen a la primera. Estado obsoleto bajo input rápido, config malformada que crashea en lugar de dar un error limpio, cálculos de layout que solo funcionan a un ancho de terminal concreto. La suite tiene más de 600 tests, corriendo en macOS, Linux y Windows en CI, incluyendo los problemas específicos de cada plataforma que solo aparecen en una de las tres. Windows especialmente, con todas esas cosas que las convenciones POSIX dan por sentadas y que ahí sencillamente no son ciertas.
Nada de eso se ve cuando instalas el plugin. Y es justo por eso que instalarlo no se siente como instalar una demo.
Cómo probarlo
/plugin marketplace add sgomez-dev/claude-canvas
/plugin install canvas@claude-canvas
Necesitas Bun, el plugin viene precompilado así que no hay build después de instalar, y una sesión de tmux activa o Windows Terminal. El canvas se abre en un panel dividido, así que uno de los dos tiene que estar alojando tu shell.
Una vez instalado, arranca tmux y pregúntale a Claude cualquier cosa cuya respuesta sea una elección:
- "Enséñame los tests que fallan en una tabla"
- "¿Cuál de estos archivos refactorizo? Déjame elegir"
- "Enséñame el diff antes de aplicarlo, bloque a bloque"
- "Busca un hueco la semana que viene en que Alice y Bob estén libres"
Se abre un panel, actúas, y Claude sigue con tu respuesta.
Es un fork de la prueba de concepto original de David Siegel, extendida de forma sustancial. Licencia MIT, código en GitHub, y hay un walkthrough completo en claude-canvas.sgomez.dev.
Si lo pruebas y le encuentras un uso que no había previsto, me encantaría saberlo.
Nos leemos.
Santi
