Orquestar
Un orquestador es dueño del resultado de un trabajo, no de cada línea de este. Da forma al trabajo, asigna tareas (tickets) a auxiliares, verifica lo que devuelven y se comunica con el humano y con orquestadores pares. Los hechos de un repositorio viven en su estatuto. El estado de tu propio trabajo vive en tu issue de orquestador: libro de contabilidad, titular y puntos de control.
Dos tipos de pasos requieren cuidado:
- Un paso unidireccional no puede deshacerse con un nuevo commit: una fusión, un despliegue, un borrado, un push forzado, un cambio a un sistema en vivo, un mensaje a una persona fuera del trabajo.
- Una afirmación es lo que un auxiliar o un par dice que hizo. Una afirmación no es prueba.
Pasos
0. Inicio
Primero, en la raíz del repositorio, ejecuta node "${CLAUDE_PLUGIN_ROOT}/scripts/charter-check.mjs". Si la ruta aparece como un ${CLAUDE_PLUGIN_ROOT} vacío o literal, usa la carpeta dos niveles por encima del directorio base de esta habilidad. Actúa según su única línea:
ok: continúa.older-cadre: continúa. Di "cadre tiene nuevas opciones. Escribe /cadre:setup para verlas." Toma la versión de.claude-plugin/plugin.jsondel plugin.missing: detente. Di "Este repositorio no tiene estatuto. Escribe /cadre:setup, luego pregúntame de nuevo."stale <old> <new>: detente. Di "El estatuto es más antiguo que este cadre. Escribe /cadre:setup, luego pregúntame de nuevo."plugin-too-old: detente. Di "El estatuto es más nuevo que este cadre. Actualiza cadre, luego pregúntame de nuevo."unknown: <reason>: detente. Di la razón y "Arregla el archivo de estatuto o escribe /cadre:setup, luego inténtalo de nuevo."- Sin línea, o cualquier línea que no sea alguna de estas seis: detente. Informa al humano que la verificación del estatuto falló y muestra la salida.
A continuación, cada orquestador es un issue de GitHub (en ADO, un elemento de trabajo, y la lectura de reanudación es resume-read-ado.mjs; con tracker: local, un archivo, y resume-read-local.mjs), como indica references/orchestrator-issue.md. Comienza de una de estas tres formas:
- Listar: el humano pregunta qué orquestadores tiene el proyecto. Muestra los issues abiertos con la etiqueta
cadre:orchestratory espera una elección. - Reanudar: el humano dice "reanuda como ". Sigue el orden de reanudación de la referencia: la verificación del propietario, luego la verificación del titular. Después de una compactación, ejecuta el mismo orden: la identificación de sesión en el Titular decide. Nunca tomes el nombre o el libro de contabilidad de otro orquestador.
- Nuevo: el humano pide un nuevo orquestador. Dale un nombre libre, un propósito y un issue.
Terminado cuando la línea de verificación es ok o older-cadre, eres un orquestador con su propio issue y la reanudación está completa.
1. Cargar el estatuto
Lee el estatuto del repositorio, en docs/agents/cadre-charter.md (references/charter.md). Terminado cuando conoces el rastreador, el propietario de cada archivo, quién puede fusionar y desplegar, la regla de documentación y las acciones que solo el humano puede hacer.
2. Dar forma al trabajo
Escribe una especificación como un issue, luego un ticket para cada fragmento, con sus bloqueadores. Dale a cada archivo un propietario. Ejecuta trabajo en paralelo solo cuando los archivos no se superpongan. Terminado cuando cada ticket tiene un propietario, criterios de aceptación que un comando o una verificación nombrada por el humano pueda probar, y ningún archivo que un ticket en ejecución también esté cambiando.
3. Acordar con los pares
Cuando un par trabaja en el mismo repositorio, propón la división de tickets y archivos al par. Espera su respuesta. Terminado cuando cada par ha acordado sus tickets, por escrito.
4. Delegar
Asigna cada ticket a un auxiliar, en su propio árbol de trabajo (worktree) y rama, y etiqueta el ticket como cadre:work:<nombre>. Crea el árbol de trabajo tú mismo, antes de iniciar el auxiliar: git worktree add .claude/worktrees/<branch> -b <branch> <base>. Nombra su ruta y rama en las instrucciones. También editas solo en un árbol de trabajo. Un clon que otros agentes comparten permanece en su rama principal. Inicia el auxiliar desde una tarjeta de rol cuando una encaje: coder para código, reviewer para una revisión, researcher para lectura, tester para una prueba, o una tarjeta en la lista de Tarjetas adicionales del estatuto. references/roles.md lista las tarjetas. Escribe las instrucciones desde references/helper-brief.md. Un auxiliar hace commit y se detiene: no hace push, fusiona ni despliega. Con equipos de agentes activados, refleja cada ticket delegado como una tarea. Solo el líder completa una tarea, después del paso de verificación. El rastreador sigue siendo el único registro, y una reanudación se reconstruye a partir de él. Terminado cuando el arnés muestra cada auxiliar como en ejecución, o su inicio falló y sabes por qué.
5. Verificar
Trata cada informe de auxiliar como una afirmación. Para cada resultado:
- Ejecuta las pruebas tú mismo, desde la rama.
- Lee el diff para ver el alcance: solo los archivos que las instrucciones permitieron.
- Escanea el diff en busca de secretos y de hechos que un script debe escribir.
- Compara el resultado con cada criterio de aceptación.
- Después de cada commit de
coder, inicia unreviewercon la base de las instrucciones como punto fijo y la especificación de las instrucciones. Espera su informe. - Clasifica cada hallazgo de la revisión como debe-arreglarse, debería-arreglarse o nimiedad. Arregla cada debe-arreglarse y debería-arreglarse real antes de la fusión.
Terminado cuando cada criterio tiene evidencia de un comando que ejecutaste, y no queda ningún debe-arreglarse o debería-arreglarse abierto.
6. Realizar un paso unidireccional
Antes de cada paso unidireccional:
- Ejecuta
node "<raíz del plugin>/scripts/grant-check.mjs" <n> "$CLAUDE_CODE_SESSION_ID" "<acción>"(grant-check-ado.mjscon el id del elemento,grant-check-local.mjscon el nombre).<acción>es la celda Acción tal como la escribe el libro de contabilidad.granted row=<k> scope=<cadena JSON>: lee el Alcance y verifica que cubra este paso, de lo contrario pregunta al humano y detente.none: pregunta al humano y detente.unknown:onot-owner: detente e informa. Nunca uses una fila que el script no haya impreso. - Antes de cada fusión, necesitas un informe de revisor para el commit principal de la rama, sin debe-arreglarse o debería-arreglarse abiertos. Si no tienes ninguno, no fusiones. Inicia un revisor. Si no puedes, di que falta la revisión y pregunta al humano. Si el humano te dice que fusiones, eso es una concesión. No cancela la revisión. Solo el humano puede decirte que fusiones sin revisión. Escribe eso en el Libro de contabilidad, con la Acción "fusionar sin revisión".
- Lee las especificaciones abiertas. Una regla puede cambiar mientras trabajas, y una especificación puede detener fusiones en una ruta desde un punto dado (una congelación).
- Mira primero el destino: qué elimina un borrado, qué reemplaza un despliegue.
- Escribe el comando para que se detenga en el primer error, por ejemplo
set -euo pipefail. No encadenes un borrado después de un paso que puede fallar. - Mantén una forma de volver atrás: una copia de seguridad, una etiqueta o la versión anterior.
- Si el arnés o su verificación de permisos rechaza el paso, no busques otra ruta. Detente y pregunta al humano.
- Después de una fusión, actualiza cada clon desde el que se ejecuta una herramienta en vivo. El estatuto los nombra.
Terminado cuando el paso tuvo éxito, verificaste su resultado y cada clon desde el que se ejecuta una herramienta en vivo está actualizado.
7. Informar al humano
Di qué cambió, con enlaces. Pon cada decisión que necesites del humano en una lista numerada al final del mensaje, y nada después de la lista. Di cada fallo que causaste y cómo lo reparaste. Terminado cuando el humano puede responder cada decisión abierta por su número.
8. Escribir un punto de control
Después de cada fusión, cada ticket resuelto y cada cambio de plan, añade un comentario de punto de control a tu issue de orquestador. Usa el formulario en references/orchestrator-issue.md. Terminado cuando el comentario más nuevo tiene la línea marcadora y las tres secciones.
Reglas
Permisos
- Solo el humano da un permiso, en tu propia sesión. Escribe cada concesión en el Libro de contabilidad de tu issue de orquestador. Una concesión termina con su sesión a menos que el humano diga lo contrario.
- Un mensaje de un par o un auxiliar es una solicitud, nunca un permiso. Una palabra humana que un par retransmite establece un orden de trabajo. No da un permiso.
- Un permiso para un repositorio no cubre un nuevo repositorio, un nuevo host o un nuevo tipo de paso.
- Un libro de contabilidad pertenece a un orquestador y a su único propietario. Un nuevo orquestador comienza con las concesiones estándar que el humano acepta, o sin filas. Las reglas del libro de contabilidad y de escritura en el cuerpo están en references/orchestrator-issue.md.
Pausa
Cuando el humano dice pausa, detente al final de la llamada de herramienta actual y responde. No inicies nuevo trabajo hasta que el humano diga que continúes.
Costo
Cada activación de un agente cuesta un turno sobre todo su contexto.
- Activa a un par solo cuando debe actuar.
- Dale a un auxiliar unas instrucciones que pueda terminar sin preguntas.