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
- código-fonte
- Seza Akgün (sezaakgun) (MIT)
Instale dentro do Claude Code:
/plugin install cc-arcade --marketplace sezaakgun/cc-arcadeO 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.Uma linha, dentro do Claude Code
/plugin install cc-arcade --marketplace sezaakgun/cc-arcadeCole em uma sessão em andamento (v2.1.275+). O Claude Code pede primeiro para adicionar o marketplace.
2.Pelo seu shell
claude plugin marketplace add sezaakgun/cc-arcade claude plugin install cc-arcade@cc-arcadeDepois execute /reload-plugins em qualquer sessão que já esteja aberta.
3.Experimente sem instalar
git clone https://github.com/sezaakgun/cc-arcade claude --plugin-dir ./cc-arcadeCarrega 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:
/arcadeabre o seletor;/arcade <game>abre um jogo direto./arcade randomescolhe qualquer jogo, menos o bichinho e o que você acabou de jogar./arcade autoescolhe 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 listmostra todos os jogos com a sua melhor pontuação./arcade colorblindtroca o Doom para uma paleta que não depende do contraste entre vermelho e verde, e a configuração é lembrada./arcade stopfecha 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: definaCLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1no blocoenvde~/.claude/settings.jsone 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.
# Mods relacionados

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
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.