Next Steps: sugestões de prompt do Claude Code após cada turno
Dois ou três prompts prováveis acima da entrada depois de cada turno. Pressione 1, 2 ou 3 para criar um rascunho.
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.*).
- testado com
- v2.1.291
- último teste
- requer
- Claude Code ≥ 2.1.287
- superfícies
- acima do prompt
- código-fonte
- Hamza Zafar (hamzafer) (MIT)
Instale dentro do Claude Code:
/plugin install next-steps --marketplace hamzafer/claude-code-modsO que este mod faz?
O Next Steps oferece sugestões de prompt do Claude Code. É um mod da comunidade criado por Hamza Zafar (hamzafer), parte da coleção claude-code-mods dele. Quando um turno termina, ele mostra, em uma faixa acima da entrada, dois ou três prompts curtos que você provavelmente vai digitar em seguida. Por exemplo, depois que o Claude explica um arquivo, ele pode oferecer Write a test for the login function.
Enquanto a entrada está vazia, pressionar 1, 2 ou 3 coloca a sugestão correspondente na caixa como rascunho, e 0 fecha a lista. Nada é enviado sozinho: você edita o rascunho ou pressiona Enter. Em um terminal largo, as sugestões dividem uma linha (next: 1 ... · 2 ... · 0 dismiss). Quando não cabem em uma linha, cada uma ganha a sua, a menos que a faixa tenha poucas linhas livres; nesse caso, usa-se uma única linha, cortada no final.
As sugestões vêm de uma chamada ao modelo haiku depois do turno. A faixa fica escondida enquanto o Claude trabalha ou há uma pesquisa aberta, quando a resposta tem menos de 20 caracteres e enquanto agentes em segundo plano ainda estão rodando. Turnos de subagentes são ignorados. O mod where-am-i do autor lê um sinalizador compartilhado para omitir a própria parte "next" enquanto esta lista aparece.
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 src/login.js e o explique em duas frases. Quando o turno termina, aparece acima da entrada uma faixa next: com três sugestões numeradas, como Add error handling for empty strings e Write a test for the login function, e a indicação 0 dismiss. O vídeo fica parado nessa tela; depois 1 é pressionado no prompt vazio e a primeira sugestão aparece na entrada como um rascunho não enviado. O clipe está acelerado, então as pausas são mais curtas do que parecem.
Instalação
Use qualquer um dos métodos do bloco de instalação; eles instalam direto do marketplace do próprio autor. A faixa aparece depois do próximo turno concluído.
$ install next-steps
Requer Claude Code ≥ 2.1.287
Instala a partir do marketplace do autor: hamzafer/claude-code-mods
1.Uma linha, dentro do Claude Code
/plugin install next-steps --marketplace hamzafer/claude-code-modsCole 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 hamzafer/claude-code-mods claude plugin install next-steps@claude-code-modsDepois execute /reload-plugins em qualquer sessão que já esteja aberta.
3.Experimente sem instalar
git clone https://github.com/hamzafer/claude-code-mods claude --plugin-dir ./claude-code-mods/mods/next-stepsCarrega o mod só para uma sessão. Nada é adicionado às suas configurações.
Como funciona
O mod guarda a lista atual em um átomo $.state mantido pelo host e a desenha no ponto de renderização AbovePrompt, abaixo das faixas de outros mods. O tratamento das teclas, de hooks/register.tsx:
on('prompt.edit', async ($, e, next) => {
if (hasSurvey || !e.key || e.key.ctrl || e.key.meta || e.text !== '' || e.start !== 0 || e.end !== 0 || !/^[0-9]$/.test(e.inputText)) return next(e)
const s = await read($, steps)
if (!s) return next(e)
if (e.inputText === '0') {
await setSteps($, () => null)
return { text: '', cursor: 0 } // consumed: the box stays empty
}
const pick = s.items[Number(e.inputText) - 1]
if (!pick) return next(e)
return next({ ...e, inputText: pick }) // a draft: the person edits it or presses Enter
})Em turn.complete (só o agente principal), suggest chama $.model.complete com maxTokens: 200 e tempo limite de 20 segundos. Pede-se ao modelo 2 ou 3 prompts no imperativo com menos de 60 caracteres, um por linha, ou NONE. Depois, parseSteps remove blocos de código, marcadores, numeração, aspas e travessões, descarta preâmbulos e linhas com mais de 120 caracteres (descartadas, nunca cortadas), remove duplicatas e mantém no máximo três. O resultado só é gravado se, nesse meio-tempo, nenhum novo prompt nem novo turno tiver começado, então uma resposta atrasada nunca substitui um estado mais novo. prompt.submit e turn.start limpam a lista.
Personalize
Não há opções em /config. Para mudar o comportamento, edite as constantes no início de register.tsx: MODEL (padrão haiku), MAX_ITEMS (3), MAX_CHARS (60, o que se pede ao modelo), MAX_KEPT (120, a linha mais longa que é mantida) e MIN_ANSWER (20, a resposta mais curta que dispara uma chamada). O texto do pedido ao modelo está nas strings system e prompt de suggest.
Permissões e segurança
Lemos todos os arquivos que o plugin pode executar antes de rodar qualquer coisa: .claude-plugin/plugin.json, hooks/hooks.json, hooks/register.tsx (o único módulo), as declarações de tipos e os testes. Não há package.json, script de instalação, binário nem código empacotado ou minificado, e nada é carregado de fora da pasta do plugin.
- Chamada ao modelo. Depois de cada turno concluído do agente principal,
suggestenvia ao modelo haiku, por$.model.complete, até as últimas 6 mensagens da sessão (cada uma cortada em 800 caracteres) e a última resposta (cortada em 2.000 caracteres). Isso usa a sua conta do Claude Code como qualquer outra chamada ao modelo, e o mod não abre nenhuma outra conexão de rede. O texto é conteúdo da sessão, então pode incluir tudo o que você e o Claude conversaram. - Texto do prompt. As instruções do próprio mod para o modelo são strings simples e legíveis. Ele não injeta nada nos seus prompts nem no contexto do Claude: a saída do modelo só chega à caixa de entrada como rascunho que você mesmo precisa enviar. Como as sugestões são escritas a partir da transcrição, o texto de um arquivo que o Claude leu ainda poderia influenciar o que é sugerido, e você o veria antes de enviar.
- Hooks de teclas e de prompt.
prompt.edittroca um dígito digitado em um prompt vazio pelo texto da sugestão, ou consome o0.prompt.submitapenas limpa a lista e repassa o prompt sem alterações. Oclaude plugin validateregistra queprompt.submité um hook de bloqueio sem.catch, mas ele nunca bloqueia nem reescreve um prompt. - Nada mais. Não executa comandos, não lê nem grava arquivos, não toca em configurações, arquivos de shell nem daemons, não lê variáveis de ambiente e não tem telemetria. O estado fica na memória do host. A licença é MIT, com um arquivo LICENSE no repositório.
O claude plugin validate não reportou erros nem avisos, e os 16 testes do autor passaram no Claude Code 2.1.291.
- 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.*).
Compatibilidade e solução de problemas
Verificado com o Claude Code 2.1.291 no macOS (validate, testes e a gravação da demonstração). Se nenhuma sugestão aparecer:
- A última resposta foi muito curta (menos de 20 caracteres) ou o modelo não tinha nada sensato a acrescentar.
- Agentes em segundo plano ainda estão rodando; a chamada espera até o agente principal retomar o trabalho.
- O Claude ainda está trabalhando, ou há uma pesquisa aberta acima do prompt. A faixa aparece quando o turno termina.
- Você pressionou um dígito com texto já na caixa, ou o colou. Dígitos só agem em um prompt vazio.
- Você enviou um prompt ou começou um novo turno, o que limpa a lista até o turno terminar.
Perguntas frequentes
- O Next Steps envia meus prompts por mim?
- Não. Um dígito só coloca a sugestão na caixa de entrada como rascunho. Você pode editá-la ou pressionar Enter. Nada é enviado até que você faça isso.
- Ele gasta tokens?
- Sim, um pouco. Depois de cada turno ele faz uma chamada ao modelo haiku pela própria API de modelos do Claude Code, com até 6 mensagens recentes e a última resposta como entrada. Ele pula a chamada para respostas com menos de 20 caracteres e enquanto agentes em segundo plano ainda estiverem rodando.
- Como digito um prompt que começa com um dígito enquanto a lista aparece?
- Pressione 0 primeiro. Isso fecha a lista e deixa a caixa vazia, então o próximo dígito entra como texto. Dígitos digitados depois de outro texto e dígitos colados sempre entram como texto.
- Quando a lista some?
- Quando você envia um prompt (inclusive um comando com barra), quando um novo turno começa, quando você pressiona 0 e enquanto o Claude trabalha ou há uma pesquisa aberta acima do prompt.
- Posso mudar o modelo ou o número de sugestões?
- Não há configurações, mas as constantes no início de hooks/register.tsx controlam isso: MODEL, MAX_ITEMS, MAX_CHARS, MAX_KEPT e MIN_ANSWER. O prompt para o modelo está na função suggest do mesmo arquivo.
# Mods relacionados
DestaqueContext Bar
A janela de contexto do Claude Code como uma barra empilhada acima do prompt, uma cor por categoria, com tokens.
- acima do prompt
- Altera a interface
- Adiciona comandos/ferramentas
- Armazena dados
testado com v2.1.291
Destaquemd-preview
Os arquivos Markdown que o Claude edita, renderizados como no GitHub num painel ao lado do chat, com antes e depois.
- painel
- notificação
- Lê arquivos
- Grava arquivos
- Executa comandos
- Intercepta chamadas de ferramentas
- Altera a interface
- Adiciona comandos/ferramentas
testado com v2.1.291
Mais em Timers, tarefas e standups.