Pular para o conteúdo
claudemods

After: uma fila de prompts do Claude Code que não desvia

Fila de prompts para o Claude Code: /after roda a próxima tarefa quando a atual termina, sem desviá-la.

Permissões

  • Chama o modelo (usa sua cota)Pode enviar suas próprias requisições ao Claude, que contam no uso do seu plano ($.model.* / $.agent.spawn).
  • Lê seus promptsPode ver o que você digita e a transcrição da conversa (prompt.* / session.append / session.messages).
  • 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.303
último teste
requer
Claude Code ≥ 2.1.287
superfícies
acima do prompt, painel, notificação, status

Instale dentro do Claude Code:

/plugin install after --marketplace midudev/better-claude
Todas as opções de instalação ↓

O que este mod faz?

O After é um mod da comunidade de Miguel Ángel Durán (midudev) e funciona como uma fila de prompts do Claude Code. /after <task> adiciona uma tarefa que roda quando o Claude termina o que está fazendo; se o Claude estiver ocioso, a tarefa começa na hora. /before <task> coloca uma tarefa na frente para que seja a próxima. O ponto é que as tarefas enfileiradas não desviam o turno atual: o Claude não as vê até chegar a vez delas.

Cada comando responde com um cartão com borda na transcrição que mostra o que mudou: uma tarefa nova, movida, editada ou removida. Enquanto houver algo na fila, uma faixa de uma linha acima do prompt mostra o que roda agora e o que vem depois. /after sozinho abre um painel em que você escolhe, edita, reordena e apaga tarefas pelo teclado. Você também pode digitar em linguagem natural, como /after remove the tests one ou /after tests, write a README explaining them; o Haiku descobre o que você quer dizer quando o texto pode se referir a algo já enfileirado.

Outros comandos: /after rm 2, mv 3 1, edit 2 <text>, pause, resume, undo, clear, list e help. O README do autor pede uma versão do Claude Code com mods, a 2.1.289 ou mais recente.

Demonstração

A gravação inicia o Claude Code com o mod carregado no pequeno projeto de demonstração e pede ao Claude que leia README.md e diga em uma frase o que é o projeto. Enquanto o Claude ainda trabalha, o clipe digita /after read src/login.js and say what it does in one sentence. Aparece um cartão com o título After mostrando Queued #1 e a tarefa marcada com ← new, e a faixa acima do prompt exibe a tarefa. Quando a primeira resposta termina, o mod envia a tarefa enfileirada como mensagem ("Prompt from the after plugin"), a faixa muda para ▶ read src/login.js and say what… nothing else queued e o Claude começa nela. O clipe termina aí.

Instalação

Use qualquer um dos métodos do bloco de instalação; eles instalam direto do marketplace do autor. Se instalar em uma sessão já aberta, execute /reload-plugins primeiro. Depois experimente /after <task> enquanto o Claude trabalha.

$ install after

Requer Claude Code ≥ 2.1.287

Instala a partir do marketplace do autor: midudev/better-claude

  1. 1.Uma linha, dentro do Claude Code

    /plugin install after --marketplace midudev/better-claude

    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 midudev/better-claude
    claude plugin install after@better-claude

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

  3. 3.Experimente sem instalar

    git clone https://github.com/midudev/better-claude
    claude --plugin-dir ./better-claude/plugins/after

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

Como funciona

O mod inteiro é um módulo de hooks, hooks/register.tsx, sobre JavaScript simples em src/. /after e /before são registrados como comandos imediatos, então funcionam até no meio de um turno. A fila fica em $.state para a faixa e o painel, e é salva em $.store por sessão. Quando um turno termina, a próxima tarefa é entregue ao Claude:

on('turn.complete', async ($, e, next) => {
  const result = await next(e)
  if (e.agentId === undefined) await finishTurn($, e.reason === 'answer')
  return result
})
// ...
reason = (await $.prompt.submit({ text: item.text, asUser: true })).drop

Só os turnos respondidos do agente principal movem a fila; Esc, uma recusa ou um erro da API a seguram até um turno terminar normalmente. Para manter as tarefas fora do contexto do Claude, o comando responde apenas com uma referência curta como #lq2x9k-3, um hook ui.render em CommandOutput desenha o cartão no lugar dela, e um hook session.append esvazia os argumentos do comando no registro da transcrição, como mostra a linha /after da demonstração. O texto em linguagem natural só vai para $.model.complete quando pode se referir à fila, e heurísticas locais assumem se o modelo não responder.

Personalize

/config lista três opções, ou defina-as em pluginConfigs.after.options no settings.json:

  • smart (padrão ativada): pergunta a um modelo pequeno o que um comando significa. Desativada usa só correspondência local.
  • model (padrão haiku): um alias ou um id de modelo completo para essas solicitações.
  • display (padrão band): band acima do prompt, status como uma linha abaixo, ou none.

Permissões e segurança

Lemos todos os arquivos que o plugin carrega antes de executar qualquer coisa: plugin.json, hooks/hooks.json, hooks/register.tsx, todo o src/ (JavaScript puro sem APIs do Node e sem importações fora do plugin), os tipos e os testes. O plugin não tem package.json, script de instalação, código empacotado ou minificado, nem binário. O repositório tem um arquivo LICENSE MIT.

Altera a interface abrange a faixa, o painel, os cartões e um aviso, "After · all queued tasks done". Adiciona comandos abrange /after e /before. Armazena dados abrange a fila e os cartões, no $.store próprio do plugin, limpos após 7 e 30 dias.

Achados que você deve conhecer:

  • Ele envia prompts por você. $.prompt.submit manda cada tarefa enfileirada como sua própria mensagem quando um turno termina. O Claude então trabalha sob suas configurações de permissão normais, mas as tarefas enfileiradas rodam sem supervisão, então confira a fila com /after list ou a faixa.
  • Ele envia o texto da fila a um modelo. Comandos em linguagem natural enviam o comando e os textos das tarefas enfileiradas ao Haiku pelo cliente do próprio Claude Code ($.model.complete, limite de 25 s). É a mesma conta que você já usa, sem host nem chave extras; desative com smart.
  • Ele reescreve o registro da transcrição. O hook session.append remove os argumentos de /after e /before do que o modelo lê. Ele não bloqueia nem altera chamadas de ferramentas ou seus prompts; o validate o lista como hook de controle sem .catch, e o código corresponde ao README.
  • Ele não usa a rede por conta própria, não executa comandos de shell, não lê variáveis de ambiente nem escreve fora do seu armazenamento. O scripts/eval-haiku.js inicia claude -p, mas é um script de desenvolvimento que o plugin nunca carrega.
  • Ele verifica se há arquivos antigos after.md e before.md em ~/.claude/commands e apenas registra uma mensagem pedindo que você os apague. Não mexe neles.

O claude plugin validate não relatou erros nem avisos, e os 20 testes do autor passaram no Claude Code 2.1.303.

Chama o modelo (usa sua cota)
Pode enviar suas próprias requisições ao Claude, que contam no uso do seu plano ($.model.* / $.agent.spawn).
Lê seus prompts
Pode ver o que você digita e a transcrição da conversa (prompt.* / session.append / session.messages).
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

Verificado com o Claude Code 2.1.303 no macOS (validate, testes e demonstração). Se não funcionar:

  • Falta /after: confirme que o plugin está carregado em /plugin e execute /reload-plugins após instalar.
  • Um arquivo after.md ou before.md em ~/.claude/commands (deixado pelo After 0.1) esconde o mod; apague-o.
  • Nada roda: a fila pode estar pausada, então execute /after resume. Após Esc ou um erro, ela espera até um turno terminar normalmente.
  • O painel precisa de suporte a entrada na sua superfície; sem isso, use os comandos diretamente.
  • Para montar uma fila antes de qualquer coisa começar com o Claude ocioso, execute /after pause, adicione as tarefas e depois /after resume.

Perguntas frequentes

Qual a diferença entre digitar enquanto o Claude trabalha e usar /after?
O texto digitado durante um turno é injetado nesse turno e pode mudar o que o Claude está fazendo. Uma tarefa enfileirada com /after fica fora do contexto do Claude até o turno atual terminar e, então, chega como sua própria mensagem.
O After chama um modelo?
Só para comandos em linguagem natural como "/after remove the tests one", e só quando o texto pode se referir a uma tarefa enfileirada. Ele pergunta ao Haiku pelo cliente do próprio Claude Code, então não precisa de chave de API. Com a opção smart desativada, usa apenas correspondência local.
O que acontece se eu apertar Esc?
O Esc interrompe a tarefa em andamento como sempre, e a fila espera até um turno posterior terminar normalmente. Você também pode segurá-la com /after pause e liberá-la com /after resume.
A fila sobrevive a uma reinicialização ou ao /clear?
Sim. A fila é salva por sessão no armazenamento próprio do plugin, então uma sessão retomada a encontra sem nada marcado como em execução, e o /clear a mantém para a nova conversa.
Como escondo a faixa acima do prompt?
Defina a opção display como status para uma linha abaixo do prompt, ou none para ver a fila apenas por meio de /after. As opções ficam em /config.
Aviso de conclusão em execução no Claude CodeDestaque

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

Contador de chamadas de ferramentas em execução no Claude CodeDestaque

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

Mais em Timers, tarefas e standups, Comandos slash.