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_listlos 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 ungrupoo un ancladespué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 pregunta | Forma en el plan |
|---|---|
| Trivial (una respuesta, una edición) | ninguna lista |
| 1–7 pasos | un grupo (una pregunta pequeña = un grupo de 1–2 pasos, está bien) |
| más de ~10 pasos | esos 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
- 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_writecon 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.) - Trabaja las tareas estrictamente en orden, un paso a la vez:
- Cambia un paso a
en_progresocuando lo inicies, ahechocuando termines. Al iniciar un nuevo paso, cualquier otro pasoen_progresovuelve automáticamente apendiente— así que termina (marcahecho) 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
notadel paso, informa al usuario y continúa con el siguiente grupo. - Antes del siguiente paso,
todo_listnuevamente. 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
hechonombran el siguiente paso de la tarea; cuando no hay nadaen_progresote recuerdan cambiar el paso en el que estás. Actúa según esos avisos.
- Cambia un paso a
- Una nueva pregunta a mitad de sesión = un nuevo grupo añadido (
todo_addcongrupo:, uno por paso — o presenta los pasos de la nueva tarea con varias llamadastodo_add). Nunca mezcles los pasos de una nueva pregunta en el grupo actual. Un paso que descubras a mitad de tarea se inserta contodo_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 contodo_writepara eso. - Reconcilia antes de terminar. Al final de un turno,
todo_listuna 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_removees 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 usestodo_writepara ajustar una lista existente — reemplaza todo;todo_writees 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_writeconserva los elementos del usuario y los elementos hechos por ti, pero no confíes en eso — usatodo_add/todo_updatepara editar, y reservatodo_writepara 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 ungrupo, odespuésde un paso existente; deja el resto intacto).todo_update— progresar un paso (en_progresoal inicio,hechoal 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).