Communitygithub.com

JetBrains/thinkrail

Vibe code con pi en un IDE real y ligero - El Vibe que Necesitas

¿Qué es thinkrail?

Este skill, **Chat TODO plan**, proporciona un sistema de planificación de tareas dentro del chat, diseñado para ayudar tanto al agente de IA como al usuario a mantener el seguimiento del trabajo en curso. La funcionalidad principal es mantener una lista de tareas 'viva' y compartida, donde el agente propone un plan al inicio de una solicitud y luego avanza paso a paso, actualizando el estado de cada ítem. Los ítems se organizan en grupos (tareas) que contienen pasos individuales, y cada paso tiene un estado (`pendiente`, `en_progreso`, `hecho`). Además, hay un 'carril del usuario' al final de la lista para que el usuario pueda agregar tareas sobre la marcha, que el agente debe procesar sin interrumpir el trabajo actual. El skill enfatiza la sincronización constante con la lista real (re-leyéndola antes de cada paso), la edición quirúrgica (usando `todo_update` y `todo_add` en lugar de `todo_write` para modificaciones), y la importancia de no eliminar ítems completados. Está diseñado para entornos de desarrollo donde el agente (como Claude Code) y el usuario colaboran en tiempo real, proporcionando una ventana de estado clara y concisa.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add JetBrains/thinkrail

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Chat TODO plan

Qué es

  • Un plan limitado a este chat — tus tareas para la conversación. Se muestra al usuario en el panel de Tareas; vive con la sesión (no se confirma en el repositorio).
  • Grupo = tarea, elemento = paso. Una pregunta del usuario = un grupo; su título es el resultado ("Corregir redirección de inicio de sesión"), no el proceso. Los pasos internos son los elementos — cada uno tiene un título, un estado (pendiente → en_progreso → hecho) y una nota opcional (pon el criterio de finalización allí, por ejemplo, "prueba e2e de inicio de sesión verde"). El estado de una tarea nunca se almacena — se deriva de sus pasos.
  • Los elementos sueltos son el carril del usuario — y se colocan al FINAL del plan. Contienen lo que el usuario añade desde la IU; tú los trabajas, pero nunca los agrupas, reescribes o eliminas. todo_list los muestra al final, después de cada grupo, a propósito: una solicitud que el usuario añade a mitad de tarea se coloca después de tu trabajo actual. Así que termina (o reanuda) la tarea en la que estás antes de recoger un elemento suelto — no saltes a un elemento de usuario recién añadido y abandones un paso que tenías en progreso. No creas elementos sueltos (las herramientas requieren un grupo o un ancla después); una pregunta pequeña es un grupo pequeño (1–2 pasos está bien), o ninguna lista.
  • Es compartido y en vivo: tú lo mantienes, y el usuario lo edita mientras trabajas — añadiendo tareas, eliminando las que han descartado. La lista almacenada es la fuente de verdad; lo que recuerdas es solo una instantánea. Vuelve a leerla (todo_list) para mantenerte sincronizado, no confíes en tu memoria.
  • Es la ventana de estado del usuario — cómo siguen lo que sucede de un vistazo, sin leer el chat. Títulos de pasos cortos y concretos; estados siempre actualizados.

Granularidad

Tamaño de la preguntaForma en el plan
Trivial (una respuesta, una edición)ninguna lista
1–7 pasosun grupo (una pregunta pequeña = un grupo de 1–2 pasos, está bien)
más de ~10 pasosesos no son pasos, son tareas — divídelos en varios grupos

Los pasos son verificables y de tamaño ≈ de commit: "fáciles de marcar mientras avanzas", no "fase 1".

Cómo trabajar con ello

  1. Propón el plan primero — es el propósito de la lista. En el momento en que entiendas una solicitud que requiera más de un par de pasos, tu primera acción es todo_write con tu plan propuesto — un grupo por tarea, pasos dentro — antes de hacer preguntas aclaratorias y antes de comenzar el trabajo. Luego refínalo en el lugar a medida que aprendas más. (Una respuesta única no necesita lista.)
  2. Trabaja las tareas estrictamente en orden, un paso a la vez:
    • Cambia un paso a en_progreso cuando lo inicies, a hecho cuando termines. Al iniciar un nuevo paso, cualquier otro paso en_progreso vuelve automáticamente a pendiente — así que termina (marca hecho) antes de continuar, o el paso anterior retrocede visiblemente a abierto.
    • No comiences el siguiente grupo mientras el actual tenga pasos abiertos. La única excepción: una tarea realmente bloqueada — registra por qué en la nota del paso, informa al usuario y continúa con el siguiente grupo.
    • Antes del siguiente paso, todo_list nuevamente. El usuario puede haber editado a mitad del trabajo: anota cualquier cosa nueva (se agrega en el carril del usuario al final — tómalo después del paso en el que estás, no te adelantes al trabajo en progreso), y si un elemento que planeaste ha desaparecido, lo descartaron — omítelo, no lo vuelvas a agregar.
    • Los resultados de la herramienta te ayudan: después de un hecho nombran el siguiente paso de la tarea; cuando no hay nada en_progreso te recuerdan cambiar el paso en el que estás. Actúa según esos avisos.
  3. Una nueva pregunta a mitad de sesión = un nuevo grupo añadido (todo_add con grupo:, uno por paso — o presenta los pasos de la nueva tarea con varias llamadas todo_add). Nunca mezcles los pasos de una nueva pregunta en el grupo actual. Un paso que descubras a mitad de tarea se inserta con todo_add después: <id del paso actual> (ancla a uno de tus pasos — anclar a uno de los elementos del usuario es rechazado, ya que tus elementos nunca viven en su carril) — no reconstruyas el plan con todo_write para eso.
  4. Reconcilia antes de terminar. Al final de un turno, todo_list una vez más. Si quedan pasos abiertos (incluyendo elementos que el usuario acaba de añadir), hazlos o di claramente qué queda y por qué — no te quedes inactivo en silencio dejando elementos nuevos sin tocar.

Invariantes

  • Hecho permanece. Completar un paso = todo_update → hecho. Nunca elimines un elemento hecho — es el historial del usuario. todo_remove es solo cuando el usuario pide explícitamente descartar algo.
  • Edita quirúrgicamente. Después del primer plan, usa todo_update / todo_add (tocan un elemento). Nunca uses todo_write para ajustar una lista existente — reemplaza todo; todo_write es solo para presentar un plan nuevo.
  • Respeta las ediciones del usuario. La lista es compartida; trata sus adiciones como nuevas solicitudes y sus eliminaciones como cancelaciones. Los elementos sueltos son suyos — hazlos, pero no los reescribas ni elimines cuando replanifiques. (todo_write conserva los elementos del usuario y los elementos hechos por ti, pero no confíes en eso — usa todo_add/todo_update para editar, y reserva todo_write para un plan realmente nuevo.)

Herramientas

  • todo_list — leer el plan actual (la fuente de verdad; vuelve a leer para capturar las ediciones del usuario).
  • todo_add — añadir un paso (en un grupo, o después de un paso existente; deja el resto intacto).
  • todo_update — progresar un paso (en_progreso al inicio, hecho al terminar; hecho permanece).
  • todo_remove — eliminar un elemento (solo cuando el usuario lo pide).
  • todo_write — presentar un plan nuevo (solo grupos — uno por tarea; reemplaza tus elementos abiertos; úsalo una vez, al inicio).

Skills relacionados