Communitygithub.com

JetBrains/thinkrail

Vibe code com pi em uma IDE leve e real - A Vibe Que Você Precisa

O que é thinkrail?

Este é um plano de chat TODO para agentes de IA que trabalham em IDEs reais como JetBrains, Cursor ou Codex. Ele descreve como o agente deve manter uma lista de tarefas dentro da sessão de chat, com grupos (tarefas) e itens (passos). Cada grupo corresponde a uma solicitação do usuário e seus passos são marcados como 'pending', 'in_progress' ou 'done'. Itens soltos (loose items) representam tarefas adicionadas pelo usuário diretamente pela interface, que ficam no final da lista e não devem ser modificadas ou reordenadas pelo agente. O plano é compartilhado e ao vivo — o usuário pode editá-lo enquanto o agente trabalha, e o agente deve reler a lista a cada passo para se manter sincronizado. As ferramentas incluem todo_list, todo_add, todo_update, todo_remove e todo_write, cada uma com regras específicas de uso, como nunca deletar itens concluídos e editar cirurgicamente em vez de reescrever o plano inteiro.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add JetBrains/thinkrail

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Plano TODO do Chat

O que é

  • Um plano escopo desta conversa — suas tarefas para a conversa. Exibido ao usuário no painel Todo; vive com a sessão (não é commitado no repositório).
  • Grupo = tarefa, item = passo. Um pedido do usuário = um grupo; seu título é o resultado ("Corrigir redirecionamento de login"), não o processo. Os passos dentro são os itens — cada um tem um título, um status (pending → in_progress → done) e uma nota opcional (coloque o critério de conclusão ali, ex. "teste e2e de login verde"). O status de uma tarefa nunca é armazenado — ele deriva de seus passos.
  • Itens soltos são a pista do usuário — e ficam no FINAL do plano. Eles contêm o que o usuário adiciona pela interface; você os executa, mas nunca os agrupa, reescreve ou descarta. todo_list renderiza eles por último, depois de cada grupo, de propósito: uma solicitação que o usuário adiciona no meio de uma tarefa fica na fila após seu trabalho atual. Então termine (ou retome) a tarefa em que está antes de pegar um item solto — não pule para um item recém-adicionado pelo usuário e abandone um passo que estava em andamento. Você não cria itens soltos (as ferramentas exigem um group ou um after); um pedido pequeno é um grupo pequeno (1–2 passos é suficiente), ou nenhuma lista.
  • É compartilhado e ao vivo: você o mantém, e o usuário o edita enquanto você trabalha — adicionando tarefas, removendo aquelas que abandonaram. A lista armazenada é a fonte da verdade; o que você lembra é apenas uma foto. Releia-a (todo_list) para se manter sincronizado, não confie na sua memória dela.
  • É a janela de status do usuário — como eles acompanham o que está acontecendo de relance, sem ler o chat. Títulos de passo curtos e concretos; status sempre atuais.

Granularidade

Tamanho do pedidoForma no plano
Trivial (uma resposta, uma edição)nenhuma lista
1–7 passosum grupo (um pedido pequeno = um grupo de 1–2 passos, tudo bem)
mais de ~10 passosesses não são passos, são tarefas — divida em vários grupos

Passos são verificáveis e têm aproximadamente o tamanho de um commit: "fácil de marcar como concluído conforme você avança", não "fase 1".

Trabalhando com ele

  1. Proponha o plano primeiro — é o objetivo da lista. No momento em que você entender uma solicitação que leva mais do que alguns passos, sua primeira ação é todo_write com seu plano proposto — um grupo por tarefa, passos dentro — antes de fazer perguntas esclarecedoras e antes de começar o trabalho. Em seguida, refine-o no local à medida que aprende mais. (Uma resposta única não precisa de lista.)
  2. Trabalhe as tarefas estritamente em ordem, um passo de cada vez:
    • Mude um passo para in_progress quando começar, done quando terminar. Iniciar um novo passo retorna automaticamente qualquer outro passo in_progress para pending — então termine (marque done) antes de prosseguir, ou o passo anterior volta visivelmente para aberto.
    • Não comece o próximo grupo enquanto o grupo atual tiver passos abertos. A única exceção: uma tarefa bloqueada de verdade — registre o motivo na note do passo, avise o usuário e passe para o próximo grupo.
    • Antes de cada próximo passo, todo_list novamente. O usuário pode ter editado durante o trabalho: anote qualquer coisa nova (é anexada na pista do usuário no final — trate disso depois do passo em que está, não antecipe o trabalho em andamento), e se um item que você planejou sumiu, eles o descartaram — pule-o, não o readicione.
    • Os resultados da ferramenta ajudam você: após um done eles nomeiam o próximo passo da tarefa; quando nada está in_progress eles lembram você de mudar o passo em que está. Aja com base nesses lembretes.
  3. Um novo pedido no meio da sessão = um novo grupo anexado (todo_add com group:, um por passo — ou organize os passos da nova tarefa com várias chamadas todo_add). Nunca misture passos de um novo pedido no grupo atual. Um passo descoberto no meio de uma tarefa é encaixado com todo_add after: <id do passo atual> (ancore a um de seus passos — ancorar a um dos itens do próprio usuário é rejeitado, pois seus itens nunca vivem na pista deles) — não reconstrua o plano com todo_write para isso.
  4. Reconcilie antes de terminar. Ao final de uma rodada, todo_list mais uma vez. Se passos abertos permanecerem (incluindo itens que o usuário acabou de adicionar), ou os execute ou diga claramente o que falta e por que — não fique ocioso silenciosamente deixando itens novos intocados.

Invariantes

  • Concluído permanece. Completar um passo = todo_update → done. Nunca delete um item concluído — é o histórico do usuário. todo_remove é apenas quando o usuário pede explicitamente para descartar algo.
  • Edite cirurgicamente. Após o primeiro plano, use todo_update / todo_add (eles tocam um item). Nunca use todo_write para ajustar uma lista existente — ele substitui tudo; todo_write é apenas para criar um plano novo.
  • Respeite as edições do usuário. A lista é compartilhada; trate as adições deles como novas solicitações e suas remoções como cancelamentos. Itens soltos são deles — execute-os, mas não os reescreva ou descarte ao replanejar. (todo_write preserva itens do usuário e itens concluídos para você, mas não dependa disso — recorra a todo_add/todo_update para editar, e mantenha todo_write para um plano genuinamente novo.)

Ferramentas

  • todo_list — leia o plano atual (a fonte da verdade; releia para captar as edições do usuário).
  • todo_add — adicione um passo (em um group, ou after um passo existente; deixa o resto intocado).
  • todo_update — progrida um passo (in_progress no início, done quando terminar; concluído permanece).
  • todo_remove — exclua um item (apenas quando o usuário pedir).
  • todo_write — crie um plano novo (apenas grupos — um por tarefa; substitui seus itens abertos; use uma vez, no início).

Habilidades Relacionadas