¿Cómo le digo a un agente de IA qué significa «hecho»?
Escribe los criterios de aceptación como una lista. Cómo acceptance_criteria y check_criterion de Done dan al agente un listón contra el que trabajar, y por qué marcar todas las casillas no es terminar.

Por Alejandro Rioja4 min de lectura
Escribe qué significa «hecho» en la propia tarea, como lista markdown, antes de que el agente empiece. En Done es el campo acceptance_criteria de la tarea: una línea por condición que alguien pueda verificar, escrita como «- [ ] los tests pasan en la punta de la rama». El agente la lee primero, marca cada línea con check_criterion cuando la cumple de verdad y después pide completarla. Marcar todas las casillas no cierra la tarea: sigue aprobando una persona.
¿Por qué no basta con una buena descripción de la tarea?
Una descripción dice al agente qué hacer. No dice cómo es un resultado terminado, así que lo decide el agente, y un agente que decide por su cuenta suele parar en la primera salida plausible. Los criterios de aceptación son la otra mitad: el listón comprobable con el que se juzga el resultado, no más instrucciones. Las propias descripciones de las herramientas de Done trazan esa línea y piden al agente que contraste su trabajo con ese listón antes de proponer la finalización.
¿Cómo es un criterio que un agente puede usar?
- Que otra persona pueda comprobarlo: «los tests pasan en la punta de la rama», «la página carga en menos de 200 ms», «el resumen lista todas las facturas vencidas». «Se ve bien» no es una condición.
- Una línea por condición, para poder marcarlas por separado y que una tarea a medias se lea como 2/4 y no como nada.
- Escríbelo como lista de tareas markdown, con líneas que empiecen por «- [ ] ». Una lista con viñetas normales o un párrafo se guarda bien, pero para Done es prosa: la tarea no informa de criterios y el agente no tiene nada que marcar.
- Pon el cómo en notes_for_agent o en la descripción y deja en los criterios solo el qué. Si se mezclan, el listón se mueve con las instrucciones.
¿Cómo informa el agente de su avance respecto a los criterios?
Llama a get_task, que devuelve los criterios con met, total y el índice (desde cero) de cada elemento, y luego a check_criterion con el id de la tarea y ese índice a medida que cumple cada línea. Con done:false se desmarca una, y marcar una casilla ya marcada no cambia nada. Cada cambio real deja una línea en el historial de la tarea, como «met 'tests pass' (2/4 criteria met)», así ves cómo avanzó el trabajo sin un comentario continuo en el hilo. Solo se puede marcar en tareas del carril del propio agente.
¿Terminar todos los criterios da la tarea por hecha?
No, y es a propósito. check_criterion es un informe de progreso; la respuesta solo avisa al agente de que todos los criterios están cumplidos y de que puede proponer la finalización. Cerrar es otro acto. Una tarea que no es agent_ok pasa a pending_approval con propose_completion y espera por ti, y solo en una tarea agent_ok el agente puede llamar él mismo a complete_task. La lista hace más fácil comprobar lo que afirma el agente; la puerta de aprobación evita que esa afirmación sea definitiva.
¿Puede el agente reescribir sus propios criterios?
Puede editar el campo con update_task, y por eso no conviene fiarse de una lista completa sin más. En la tarea de una persona puede usar propose_edit, que te muestra el cambio como diff actual frente a propuesto, y tú lo aceptas o descartas campo a campo. Al revisar, get_evidence devuelve el progreso de los criterios junto con cada recibo, entregable y traza de ejecución, además del historial de ediciones y agent_edits_since_human, el número de ediciones del agente desde que una persona tocó la tarea por última vez. Si no es cero, lee los criterios antes de fiarte de las marcas: unos criterios reescritos después de empezar el trabajo no son el listón que acordaste.
Preguntas frecuentes
¿Cómo le digo a un agente de IA qué significa «hecho»?
Ponlo en acceptance_criteria de la tarea como lista markdown, una condición verificable por línea. En Done el agente la lee antes de empezar y marca cada línea con check_criterion cuando la cumple.
¿Cerrar todos los puntos de la lista da la tarea por terminada?
No. En Done, marcar todos los criterios solo indica al agente que puede proponer la finalización. Una tarea que no es agent_ok pasa a pending_approval y espera a una persona.
¿Por qué mi agente dice que la tarea no tiene criterios que marcar?
Porque se escribieron como prosa. check_criterion solo funciona con una lista markdown donde cada línea empieza por «- [ ] »; si no, criteria.total es 0.
¿Puede un agente cambiar los criterios con los que se le juzga?
Puede editar el campo, y cada edición queda registrada. Antes de aprobar, get_evidence muestra el historial de ediciones y cuántas hizo el agente desde que una persona tocó la tarea por última vez.