Pular para o conteúdo
claudemods

cc-arcade: mod de jogos para Claude Code acima do prompt

Snake, Tetris, Doom, 2048 e outros jogos acima do prompt do Claude Code, mais um bichinho que cresce com o trabalho.

Permissões

  • Intercepta chamadas de ferramentasVê cada chamada de ferramenta que o Claude faz (tool.call / tool.check) e pode bloqueá-la ou alterá-la.
  • Altera a interfaceDesenha na interface do Claude Code: faixas, painéis, texto de status, notificações (ui.render / $.ui.*).
  • Adiciona comandos/ferramentasRegistra novos comandos de barra ou ferramentas que você ou o Claude podem acionar ($.command.register / $.tool.register).
  • Armazena dadosGuarda dados entre sessões no armazenamento privado do plugin ($.store.*).
testado com
v2.1.291
último teste
requer
Claude Code ≥ 2.1.287
superfícies
acima do prompt, notificação

Instale dentro do Claude Code:

/plugin install cc-arcade --marketplace sezaakgun/cc-arcade
Todas as opções de instalação ↓

O que este mod faz?

O cc-arcade é um mod de jogos para Claude Code, da comunidade, criado por Seza Akgün (sezaakgun). Ele coloca pequenos jogos acima do prompt do Claude Code para os minutos em que o Claude passa trabalhando. Execute /arcade e uma fileira de botões aparece acima da caixa de entrada, um por jogo, mais pet, random, auto e close. Clique em um, ou chame pelo nome com /arcade tetris, e o tabuleiro ocupa o espaço acima do prompt. Clique no tabuleiro para dar o teclado a ele; Esc devolve o teclado ao prompt.

São nove jogos: Snake, Tetris, Doom (um shooter de corredores em primeira pessoa com quatro andares, três monstros e três armas, com raycasting em meios blocos), 2048, Campo Minado, Flappy, Pong, um teste de digitação e Space Invaders. Cada jogo guarda a melhor pontuação entre sessões, e um novo recorde mostra um toast. Quando o Claude termina um turno, o jogo aberto pausa e a linha de status dele fica amarela com ● Claude is done, para você não perder a resposta.

Também há um bichinho virtual. Ele cresce com o trabalho que o Claude faz: uma execução de testes que passa, um git commit bem-sucedido e edições de arquivos via Edit, Write ou NotebookEdit dão XP e melhoram o humor dele, enquanto testes falhando pioram o humor. O autor observa que os jogos são clones do gênero e não têm ligação com as editoras originais. O README diz que ele precisa do Claude Code 2.1.269 ou mais recente, de um terminal interativo que informe o mouse e de uma fonte com caracteres de desenho de caixas e de bloco.

Demonstração

A gravação abre o seletor do /arcade e depois abre o Doom com /arcade doom. O tabuleiro aparece acima do prompt com a visão em raycasting e um aviso CLICK HERE TO PLAY; o jogo só assume o teclado depois que você clica no tabuleiro, então o vídeo não chega a jogar. As teclas continuam indo para o prompt até você clicar.

Instalação

Use qualquer um dos métodos do bloco de instalação; eles instalam direto do marketplace do próprio autor. Depois execute /arcade em qualquer sessão. Se instalar em uma sessão que já estava aberta, execute /reload-plugins antes.

$ install cc-arcade

Requer Claude Code ≥ 2.1.287

Instala a partir do marketplace do autor: sezaakgun/cc-arcade

  1. 1.Uma linha, dentro do Claude Code

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

    Cole em uma sessão em andamento (v2.1.275+). O Claude Code pede primeiro para adicionar o marketplace.

  2. 2.Pelo seu shell

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

    Depois execute /reload-plugins em qualquer sessão que já esteja aberta.

  3. 3.Experimente sem instalar

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

    Carrega o mod só para uma sessão. Nada é adicionado às suas configurações.

Como funciona

hooks/register.tsx é o módulo de hooks. Ele registra o /arcade, desenha o seletor ou o tabuleiro aberto no ponto de renderização AbovePrompt, guarda as melhores pontuações e o bichinho em $.store e pausa o jogo aberto em turn.complete. Cada tabuleiro em hooks/boards/ é um módulo de superfície montado como elemento Client, com o seu próprio relógio de quadros, teclado e mouse. As regras dos jogos ficam em hooks/games/ como funções puras. Veja como o bichinho é alimentado, de 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
})

O hook deixa a ferramenta rodar primeiro com await next(e) e retorna o resultado sem alterações, então nunca bloqueia nem modifica uma chamada. petEvent, em hooks/games/pet.ts, compara o comando Bash com uma lista de executores de testes (bun test, npm test, pytest, go test, cargo test e outros) e com git commit. O bichinho é relido do armazenamento antes de cada atualização, então várias sessões lado a lado alimentam o mesmo bichinho. Quando uma partida termina, o tabuleiro envia a pontuação com surface.post, e um hook ui.message a guarda se ela superar o recorde salvo.

Personalize

Todas as opções passam pelo /arcade:

  • /arcade abre o seletor; /arcade <game> abre um jogo direto.
  • /arcade random escolhe qualquer jogo, menos o bichinho e o que você acabou de jogar.
  • /arcade auto escolhe conforme o momento: o bichinho se uma execução de testes falhou nos últimos cinco minutos, um jogo mais longo se o Claude já trabalha há um minuto ou mais, uma partida rápida enquanto ele trabalha, e 2048 ou Campo Minado quando ele está ocioso.
  • /arcade list mostra todos os jogos com a sua melhor pontuação.
  • /arcade colorblind troca o Doom para uma paleta que não depende do contraste entre vermelho e verde, e a configuração é lembrada.
  • /arcade stop fecha o arcade.

Permissões e segurança

Lemos todos os arquivos que o plugin carrega antes de rodá-lo. O plugin não faz chamadas de rede, não executa comandos e não lê nem grava arquivos. Altera a interface cobre os tabuleiros acima do prompt e os toasts. Adiciona comandos/ferramentas cobre o /arcade. Armazena dados cobre as melhores pontuações, o bichinho e a configuração para daltonismo, tudo no $.store do próprio plugin.

Intercepta chamadas de ferramentas aparece porque ele usa um hook em todo tool.call sem filtro, então vê o texto de cada comando Bash e se a chamada falhou. Ele apenas observa: espera a chamada terminar e retorna o resultado sem alterações, e guarda só contadores, nunca o texto do comando. O claude plugin validate não relatou avisos.

Intercepta chamadas de ferramentas
Vê cada chamada de ferramenta que o Claude faz (tool.call / tool.check) e pode bloqueá-la ou alterá-la.
Altera a interface
Desenha na interface do Claude Code: faixas, painéis, texto de status, notificações (ui.render / $.ui.*).
Adiciona comandos/ferramentas
Registra novos comandos de barra ou ferramentas que você ou o Claude podem acionar ($.command.register / $.tool.register).
Armazena dados
Guarda dados entre sessões no armazenamento privado do plugin ($.store.*).

Compatibilidade e solução de problemas

Validamos com o Claude Code 2.1.291 no macOS, e os 32 testes unitários bun test do autor passam. O claude plugin test não consegue carregá-los porque eles importam bun:test. Nada é desenhado no claude -p, no app desktop nem no celular; o tabuleiro precisa de um terminal interativo.

  • /arcade é um comando desconhecido. O README diz que os function hooks precisam estar ativados: defina CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 no bloco env de ~/.claude/settings.json e confira se o plugin está carregado em /plugin.
  • As teclas vão para o prompt. Clique primeiro no tabuleiro.
  • Os cliques não fazem nada. O seu terminal não informa o mouse. /arcade <game> ainda abre um jogo, mas um tabuleiro não recebe o teclado sem um clique.
  • Quadrados em vez de blocos. Use uma fonte de terminal com caracteres de desenho de caixas e de bloco.

Um terminal mais alto rende tabuleiros maiores; a faixa ocupa cerca de metade da altura do terminal.

Perguntas frequentes

Quais jogos vêm no cc-arcade?
Snake, Tetris, Doom (um pequeno shooter de corredores com raycasting, não um port), 2048, Campo Minado, Flappy, Pong contra o computador, um teste de digitação e Space Invaders. Há também um bichinho que cresce conforme o Claude trabalha.
Por que as minhas teclas vão para o prompt em vez do jogo?
Um tabuleiro só recebe o teclado depois que você clica nele. Aperte Esc para devolver o teclado ao prompt. O seu terminal precisa informar os cliques do mouse para isso funcionar.
Vou perder a resposta do Claude enquanto jogo?
Não. Quando o turno termina, o jogo aberto pausa e a linha de status dele fica amarela e começa com "● Claude is done". Aperte uma tecla para continuar ou Esc para ir ler a resposta.
Jogar gasta tokens?
Não. O plugin responde a cada clique e comando por conta própria, sem chamar o modelo, e não faz chamadas de rede.
O que o bichinho enxerga?
Ele usa um hook em toda chamada de ferramenta para verificar se um comando Bash foi uma execução de testes ou um git commit, ou se o Claude editou um arquivo. Só contadores são guardados, no armazenamento do próprio plugin; o texto dos comandos, os caminhos e os prompts não são mantidos.
Contador de chamadas de ferramentas em execução no Claude Code

Contador de chamadas de ferramentas

Conta as chamadas de ferramentas do Claude por turno e por sessão, mostra o total junto ao spinner e adiciona /tally.

  • spinner
  • transcrição
  • status
  • Intercepta chamadas de ferramentas
  • Altera a interface
  • Adiciona comandos/ferramentas

testado com v2.1.291

Aviso de conclusão em execução no Claude Code

Aviso de conclusão

Um toast "Done in 2m 14s" e um som curto quando um turno longo do Claude termina, com notificação opcional no desktop.

  • notificação
  • Executa comandos
  • Altera a interface
  • Reproduz som

testado com v2.1.291

Mais em Timers, tarefas e standups, Comandos slash.