Saltar al contenido
claudemods

cc-arcade: mod de juegos para Claude Code sobre el prompt

Snake, Tetris, Doom, 2048 y más juegos sobre el prompt de Claude Code, además de una mascota que crece con su trabajo.

Permisos

  • Intercepta llamadas a herramientasVe cada llamada a herramienta que hace Claude (tool.call / tool.check) y podría bloquearla o modificarla.
  • Modifica la interfazDibuja en la interfaz de Claude Code: bandas, paneles, texto de estado, avisos (ui.render / $.ui.*).
  • Añade comandos/herramientasRegistra nuevos comandos de barra o herramientas invocables por ti o por Claude ($.command.register / $.tool.register).
  • Guarda datosConserva datos entre sesiones en el almacén privado del plugin ($.store.*).
probado con
v2.1.291
última prueba
requiere
Claude Code ≥ 2.1.287
superficies
sobre el prompt, aviso

Instalar dentro de Claude Code:

/plugin install cc-arcade --marketplace sezaakgun/cc-arcade
Todas las opciones de instalación ↓

¿Qué hace este mod?

cc-arcade es un mod de juegos para Claude Code, de la comunidad, creado por Seza Akgün (sezaakgun). Pone pequeños juegos sobre el prompt de Claude Code para los minutos que Claude pasa trabajando. Ejecuta /arcade y aparece una fila de botones sobre el cuadro de entrada, uno por juego más pet, random, auto y close. Haz clic en uno, o nómbralo con /arcade tetris, y el tablero ocupa el espacio sobre el prompt. Haz clic en el tablero para darle el teclado; Esc devuelve el teclado al prompt.

Hay nueve juegos: Snake, Tetris, Doom (un shooter de pasillos en primera persona con cuatro plantas, tres monstruos y tres armas, con raycasting en medios bloques), 2048, Buscaminas, Flappy, Pong, un test de mecanografía y Space Invaders. Cada juego guarda la mejor puntuación entre sesiones, y un nuevo récord muestra un toast. Cuando Claude termina un turno, el juego abierto se pausa y su línea de estado se vuelve amarilla con ● Claude is done, para que no te pierdas la respuesta.

También hay una mascota. Crece con el trabajo que hace Claude: una ejecución de tests que pasa, un git commit correcto y las ediciones de archivos con Edit, Write o NotebookEdit le dan XP y le suben el ánimo, mientras que los tests que fallan se lo bajan. El autor aclara que los juegos son clones del género y no están afiliados a los editores originales. El README indica que necesita Claude Code 2.1.269 o posterior, una terminal interactiva que informe del ratón y una fuente con caracteres de dibujo de cajas y de bloque.

Demo

La grabación abre el selector de /arcade y después abre Doom con /arcade doom. El tablero aparece sobre el prompt con su vista en raycasting y un cartel CLICK HERE TO PLAY; el juego solo toma el teclado después de hacer clic en el tablero, así que el clip no llega a jugar. Las teclas siguen yendo al prompt hasta que haces clic.

Instalación

Usa cualquiera de los métodos del bloque de instalación; instalan directamente desde el marketplace del propio autor. Después ejecuta /arcade en cualquier sesión. Si instalas en una sesión que ya estaba abierta, ejecuta antes /reload-plugins.

$ install cc-arcade

Requiere Claude Code ≥ 2.1.287

Se instala desde el marketplace del autor: sezaakgun/cc-arcade

  1. 1.Una línea, dentro de Claude Code

    /plugin install cc-arcade --marketplace sezaakgun/cc-arcade

    Pégala en una sesión abierta (v2.1.275+). Claude Code te pedirá primero añadir el marketplace.

  2. 2.Desde tu shell

    claude plugin marketplace add sezaakgun/cc-arcade
    claude plugin install cc-arcade@cc-arcade

    Después ejecuta /reload-plugins en cualquier sesión que ya esté abierta.

  3. 3.Pruébalo sin instalarlo

    git clone https://github.com/sezaakgun/cc-arcade
    claude --plugin-dir ./cc-arcade

    Carga el mod solo para una sesión. No se añade nada a tu configuración.

Cómo funciona

hooks/register.tsx es el módulo de hooks. Registra /arcade, dibuja el selector o el tablero abierto en el punto de renderizado AbovePrompt, guarda las mejores puntuaciones y la mascota en $.store, y pausa el juego abierto en turn.complete. Cada tablero de hooks/boards/ es un módulo de superficie montado como elemento Client, con su propio reloj de fotogramas, teclado y ratón. Las reglas de los juegos están en hooks/games/ como funciones puras. Así se alimenta a la mascota, según hooks/register.tsx:

on('tool.call', async ($, e, next) => {
  const r = await next(e)
  const command = (e as { command?: unknown }).command
  const event = petEvent(e.tool, typeof command === 'string' ? command : undefined, 'deny' in r ? undefined : !r.isError)
  if (!event) return r
  const saved = await $.store.get('pet').catch(() => undefined)
  const current = isPet(saved) ? saved : pet ?? newPet($.clock.now())
  const fed = feed(current, event, $.clock.now())
  pet = fed
  await $.store.set('pet', fed).catch(err => $.ui.log(`cc-arcade: store write failed: ${err}`))
  // ...
  return r
})

El hook deja que la herramienta se ejecute primero con await next(e) y devuelve su resultado sin cambios, así que nunca bloquea ni altera una llamada. petEvent, en hooks/games/pet.ts, compara el comando de Bash con una lista de ejecutores de tests (bun test, npm test, pytest, go test, cargo test y otros) y con git commit. La mascota se vuelve a leer del almacén antes de cada actualización, así que varias sesiones en paralelo alimentan a la misma mascota. Cuando termina una partida, el tablero envía su puntuación con surface.post, y un hook de ui.message la conserva si supera el récord guardado.

Personalízalo

Todas las opciones pasan por /arcade:

  • /arcade abre el selector; /arcade <game> abre un juego directamente.
  • /arcade random elige cualquier juego excepto la mascota y el que acabas de jugar.
  • /arcade auto elige según el momento: la mascota si una ejecución de tests falló en los últimos cinco minutos, un juego más largo si Claude lleva un minuto o más trabajando, una partida rápida mientras trabaja, y 2048 o Buscaminas cuando está inactivo.
  • /arcade list muestra todos los juegos con tu mejor puntuación.
  • /arcade colorblind cambia Doom a una paleta que no depende del contraste entre rojo y verde, y el ajuste se recuerda.
  • /arcade stop cierra el arcade.

Permisos y seguridad

Leímos todos los archivos que carga el plugin antes de ejecutarlo. El plugin no hace llamadas de red, no ejecuta comandos y no lee ni escribe archivos. Modifica la interfaz cubre los tableros sobre el prompt y los toasts. Añade comandos/herramientas cubre /arcade. Guarda datos cubre las mejores puntuaciones, la mascota y el ajuste para daltonismo, todo en el $.store propio del plugin.

Intercepta llamadas a herramientas aparece porque se engancha a cada tool.call sin filtro, así que ve el texto de cada comando de Bash y si la llamada falló. Solo observa: espera a que la llamada termine y devuelve el resultado sin cambios, y solo guarda contadores, nunca el texto del comando. claude plugin validate no informó de avisos.

Intercepta llamadas a herramientas
Ve cada llamada a herramienta que hace Claude (tool.call / tool.check) y podría bloquearla o modificarla.
Modifica la interfaz
Dibuja en la interfaz de Claude Code: bandas, paneles, texto de estado, avisos (ui.render / $.ui.*).
Añade comandos/herramientas
Registra nuevos comandos de barra o herramientas invocables por ti o por Claude ($.command.register / $.tool.register).
Guarda datos
Conserva datos entre sesiones en el almacén privado del plugin ($.store.*).

Compatibilidad y solución de problemas

Lo validamos con Claude Code 2.1.291 en macOS, y los 32 tests unitarios de bun test del autor pasan. claude plugin test no puede cargarlos porque importan bun:test. No se dibuja nada en claude -p, en la aplicación de escritorio ni en el móvil; el tablero necesita una terminal interactiva.

  • /arcade es un comando desconocido. El README dice que los function hooks deben estar activados: define CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 en el bloque env de ~/.claude/settings.json y comprueba que el plugin está cargado en /plugin.
  • Las teclas van al prompt. Haz clic primero en el tablero.
  • Los clics no hacen nada. Tu terminal no informa del ratón. /arcade <game> sigue abriendo un juego, pero un tablero no puede recibir el teclado sin un clic.
  • Cuadros en lugar de bloques. Usa una fuente de terminal con caracteres de dibujo de cajas y de bloque.

Una terminal más alta da tableros más grandes; la franja recibe aproximadamente la mitad de la altura de la terminal.

Preguntas frecuentes

¿Qué juegos incluye cc-arcade?
Snake, Tetris, Doom (un pequeño shooter de pasillos con raycasting, no un port), 2048, Buscaminas, Flappy, Pong contra el ordenador, un test de mecanografía y Space Invaders. También hay una mascota que crece a medida que Claude trabaja.
¿Por qué mis teclas van al prompt en lugar de al juego?
Un tablero solo recibe el teclado después de hacer clic en él. Pulsa Esc para devolver el teclado al prompt. Tu terminal tiene que informar de los clics del ratón para que esto funcione.
¿Me perderé la respuesta de Claude mientras juego?
No. Cuando el turno termina, el juego abierto se pausa y su línea de estado se vuelve amarilla y empieza por "● Claude is done". Pulsa una tecla para seguir o Esc para ir a leer la respuesta.
¿Jugar gasta tokens?
No. El plugin responde a cada clic y comando por sí mismo sin llamar al modelo, y no hace llamadas de red.
¿Qué ve la mascota?
Se engancha a cada llamada a herramientas para comprobar si un comando de Bash fue una ejecución de tests o un git commit, o si Claude editó un archivo. Solo se guardan contadores, en el almacén propio del plugin; no se conserva el texto de los comandos, las rutas ni los prompts.
Contador de llamadas a herramientas funcionando en Claude Code

Contador de llamadas a herramientas

Cuenta las llamadas a herramientas por turno y sesión, muestra el total junto al spinner y añade /tally con un desglose.

  • spinner
  • transcripción
  • estado
  • Intercepta llamadas a herramientas
  • Modifica la interfaz
  • Añade comandos/herramientas

probado con v2.1.291

Aviso de finalización funcionando en Claude Code

Aviso de finalización

Un toast «Done in 2m 14s» y un sonido al terminar un turno largo de Claude, más un aviso de escritorio opcional.

  • aviso
  • Ejecuta comandos
  • Modifica la interfaz
  • Reproduce sonido

probado con v2.1.291

Más en Temporizadores, tareas y standups, Comandos slash.