agent-wave
Ejecuta un lote declarado de elementos de cola aceptados utilizando las capacidades que este host realmente expone. Los presupuestos cuentan elementos u olas. Un tope horario opcional detiene nuevas olas, nunca un elemento en ejecución. La automatización de larga duración usa la facilidad de programación del host (ver README); esta sesión no promete sobrevivirse a sí misma.
Precondiciones y capacidad del host
Antes de preguntar parámetros, lee el punto de entrada del repositorio, las convenciones,
la cola y el prompt autónomo. Resuelve todas las rutas de artefactos, incluyendo _agent/,
contra la raíz registrada. Requiere una puerta real y la cola que recorre.
| Modo registrado | Ejecución |
|---|---|
| Escritor único | Detener y dirigir al operador al prompt autónomo secuencial, en cada ancho solicitado. |
| Checkout compartido, integración directa | Un ejecutor a la vez en ese checkout, usando estado del elemento y filas de bloqueo. Sin rama de reclamo ni worktree de integración. |
| Checkout compartido, integración PR | Detener antes de reclamar; requerir worktrees separados para olas de PR. |
| Worktrees separados | Cada ejecutor usa su propio worktree; la integración sigue el modelo registrado. |
Obtén/poda el remoto registrado y requiere su rama de integración. Imprime el SHA base obtenido. Compara la ref de integración local: reporta commits no empujados o divergencia antes de proceder, nunca los descartes silenciosamente. Un checkout atrasado y limpio puede ser fast-forwardeado cuando sea seguro; de lo contrario déjalo como está. El estado y la sonda de la ola provienen de la base obtenida, no de archivos no confirmados en el checkout del operador. Si la cola remota está vacía pero la cola local difiere, explica esa diferencia.
Deriva si el host puede delegar, aislar checkouts, ejecutar concurrentemente, usar una facilidad de orquestación ya habilitada por el operador, y requerir resultados formados. Elige el escalón más alto disponible:
- Facilidad de orquestación habilitada: un fan-out para esta ola solamente. Mantén los bucles de ola, verificaciones de reloj y preguntas en el orquestador.
- Subagentes simples: paralelo si está disponible, secuencial en caso contrario. Usa el aislamiento de worktree del host solo si su cabeza inicial es igual a la base declarada; de lo contrario, crea explícitamente cada worktree en esa base.
- El orquestador ejecuta un elemento a la vez, en su propio worktree o el checkout compartido según lo permita el modo registrado.
Reporta Ejecución: escalón N — razón. El operador puede reducir esta elección;
nunca la eleves más allá de la capacidad observada ni solicites habilitación. Una
habilidad que menciona una facilidad no es una aceptación del operador. El mismo breve
canónico a continuación se usa en cada escalón. Sin un techo de concurrencia probado, usa uno.
Evaluación y declaración
Reutiliza respuestas aplicables ya dadas, incluyendo profundidad; los valores predeterminados nunca reemplazan elecciones explícitas. Una especificación completamente provista no necesita un selector repetido o confirmación. Pregunta solo por una elección material faltante o conflictiva; una preferencia registrada por sí sola no es autoridad de ejecución actual. De lo contrario, pregunta una pregunta a la vez con una respuesta recomendada y una razón, usando un selector estructurado si está disponible. Cuando la profundidad no está resuelta, ofrece profundidad expresa (predeterminados), guiada (presupuesto/supervisión) o completa, con la profundidad registrada preseleccionada. Honra 'predeterminados desde aquí' o 'ir más profundo'.
- Ancho solicitado: recomienda min(profundidad elegible de la cola, 3, techo del host).
- Presupuesto: elementos u olas; recomienda una ola. Opcionalmente un tope horario suave.
- Supervisión: punto de control tras cada ola (recomendado), o continua.
- Integración: usa el perfil del repositorio a menos que se sobrescriba explícitamente. La integración directa es legítima con barreras de concurrencia registradas; su integración es serial. Una sobrescritura no puede hacer válido un modo no soportado.
Declara y confirma la especificación resultante antes de la ejecución (los parámetros de invocación explícitos ya constituyen confirmación). Incluye:
- Nombre de la ola, fecha, remoto, rama de integración y SHA base obtenido.
- Ancho solicitado/efectivo, escalón/razón, techo del host y cualquier límite de token.
- Presupuesto, supervisión y tope suave; nunca conviertas límites de token en conteos de elementos.
- Clave de cada elemento, decisiones propietarias, dependencias, variante de reclamo, artefactos exactos propiedad, identificadores reservados con sus secuencias, y bandera Continuar.
- Perfil de aislamiento e integración; acciones de integración/mezcla realmente otorgadas.
- Concesión: "Ola atendida: el operador confirmó estos parámetros y este elemento en ; implementa solo el elemento nombrado, nunca elijas otro."
Reserva solo los identificadores que un elemento creará, en bloques finitos disjuntos. Incluye reservas vivas existentes; los elementos continuados mantienen las suyas originales. Nunca asignes a dos escritores la misma decisión o cuerpo de plan. INDEX se deriva: un ejecutor cambia solo sus propias filas, y la integración regenera toda la tabla. Las reservas agotadas detienen el elemento; no se roban espacios.
Después de la confirmación, crea un worktree de integración/sonda separado en la base para el modo de worktrees separados, fuera del árbol del operador. Reutiliza un worktree sobrante solo después de probar que está limpio y es propiedad. Sonda la puerta exacta allí con archivos rastreados y el entorno existente solamente. En caso de fallo ambiental, detente antes del envío y reporta el comando, la salida y el código de salida; no instales dependencias faltantes ni impliques que seleccionar el escalón tres repara la puerta. Reporta la ruta efectiva de hooks y el origen de la configuración de firma.
Recolectar antes de cada ola
Obtén/poda nuevamente; lee el estado del elemento, puntas de reclamo, worktrees y estado del PR. Usa esta precedencia, resolviendo cada elemento en la base y la punta del reclamo:
| Clase | Evidencia y acción |
|---|---|
| No verificable | Evidencia remota/PR requerida no disponible o contradictoria: detener la ejecución. |
| Enviado | Entrada 'done' en la rama de integración con commit de pie de página alcanzable o PR fusionado confirmado. Excluir. |
| Fusionado pero no enviado | Trabajo/PR fusionado pero el elemento aún en cola en la base. Excluir y solicitar reconciliación. |
| Detenido | Campo 'Stopped' en la base o la punta del reclamo. Excluir a menos que se continúe explícitamente. |
| Vivo | Reclamo remoto no fusionado o PR en borrador/listo, o propietario/bloqueos actuales del checkout compartido. Excluir a menos que se continúe explícitamente. |
| Obsoleto | Propiedad local respaldada por rama después de confirmada desaparición de ref remota. Reportar limpieza; no reasignar sobras inciertas. |
| Elegible | Propiedad aceptada, dependencias satisfechas, sin conflicto de reclamo/detención/obsoleto. Seleccionar en orden de cola. |
Un PR listo puede haber movido el elemento a 'done' en su propia rama. Resuelve ese movimiento a través del PR/historial vinculado; sigue siendo vivo, no huérfano. Verifica fusiones de PR confirmadas cuando squash/rebase hace que la ascendencia fuente sea inconclusa. Los reclamos compartidos se evalúan desde elemento/bloqueos, nunca por ausencia de reclamo remoto. Los worktrees separados no son reclamos ni están obsoletos. Una ref de reclamo local adelantada significa trabajo no empujado: devuelve desconocido y consérvalo.
En profundidad guiada/completa, ofrece Continuar solo para un reclamo vivo/detenido existente; por defecto, exclúyelo. Express excluye y lista cómo continuar. Una invocación que nombra el reclamo o el elemento es la respuesta explícita. Continuar no crea un nuevo reclamo o reserva; reporta cualquier worktree sobrante. Después de la selección, vuelve a verificar la superposición de rutas propiedad y las dependencias.
Breve canónico del ejecutor
Pasa este breve completo con la especificación del elemento, sin cambios en todos los escalones:
- Abrir y orientar. Verifica la ascendencia de la base y el elemento nombrado. Un checkout continuado debe igualar la punta del reclamo obtenido; el movimiento de finalización de un PR listo vinculado es contexto válido. Lee el punto de entrada y el prompt autónomo. Una discrepancia se bloquea, nunca es permiso para trabajar otro elemento.
- Reclamar. Obtén nuevamente. Para un nuevo elemento en worktree separado, crea
claim/<clave-del-elemento>desde la base; haz commit 'Claimed by' con actor/fecha/rama y pon la rama de reclamo real, la ola, las reservas y los artefactos propiedad en el mensaje de su primer commit. Antes de publicar, leegit show -s --format=%B HEADygit show HEAD:<ruta-del-plan-propietario>. Verifica la rama real literal tanto en el mensaje como en 'Claimed by', el nombre de la ola, las reservas (incluyendo ninguna), y las rutas exactas propiedad. Verificagit diff-tree --no-commit-id --name-only -r HEAD: este commit inicial cambia solo el Estado del elemento propiedad, sin salida de implementación. Repara metadatos faltantes localmente antes de la adquisición. Un commit posterior no puede reparar un reclamo inicial deficiente. Valida la clave congit check-ref-format --branch; nunca uses un marcador de posición literal. Adquiere congit push --porcelain --force-with-lease=refs/heads/claim/<clave-del-elemento>: origin HEAD:refs/heads/claim/<clave-del-elemento>. Requiere código de salida cero y el resultado*new-ref de porcelana para ese destino. Las refs existentes, incluyendo resultados de misma punta/actualizados, no otorgan propiedad. Espera a que ese push termine e inspecciona su recibo exitoso de new-ref antes de emitir cualquier escritura de implementación. No agrupes adquisición e implementación en la misma llamada de herramienta. Un fallo de firma/push se detiene antes de la implementación; conserva resultados desconocidos. Nunca sobrescribas otro reclamo. Establece upstream después de la adquisición. Para modo PR, abre/reutiliza inmediatamente el PR en borrador con elemento, actor, rama, reservas, rutas propiedad y bloque de cierre; el fallo bloquea la implementación. Continúa separándote en la punta remota existente, reteniendo reservas y actualizando 'Claimed by' en el primer commit, luego empuja de vuelta a esa ref. Checkout compartido: reclama a través del estado del elemento y las filas de bloqueo antes de cada edición, incluyendo nuevos registros; nunca crees o cambies una rama de reclamo. - Implementar. Sigue el prompt autónomo para este único elemento. No aceptes/supersedas decisiones, insertes o renumeres elementos de cola existentes, excedas reservas, hagas version-bump, etiquetes, publiques o preguntes al operador. Devuelve un bloqueador cuando el breve no pueda ser honrado.
- Verificar y hacer commit. Ejecuta la puerta grabada exactamente. Repara fallos de implementación entendidos y vuelve a ejecutar. Si la puerta no puede ejecutarse, no instales nada que ella misma no instale: registra el error exacto en Bloqueadores, haz commit/empuja trabajo recuperable dentro de la concesión y devuelve bloqueado, nunca verificado o enviado. Sigue las reglas de firma, Razón e integridad de la puerta.
- Integrar según el perfil. Integración directa con worktree separado: empuja el reclamo verificado y devuelve listo; el orquestador invoca el modo integrador de ship-item. Checkout compartido: invoca ship-item en el árbol activo. Modo PR: invoca ship-item en el PR real, incluyendo rebase, comprobaciones de colisión, reparación de número propio, ambas puertas y commit de finalización. Mantén su cuerpo/informe actualizado; 'ready' requiere comprobaciones en la cabeza actual. Mezcla solo dentro de la concesión y reporta enviado solo después de aterrizaje confirmado. Reintenta una base movida como máximo dos veces; conserva reclamos no resueltos en caso de fallo.
- Detener y reportar. Pon fecha/razón y las tres etiquetas de informe en el campo 'Stopped' del elemento en cola, o en el cuerpo del PR si ya se ha movido allí. Haz commit/empuja solo dentro de la concesión. Devuelve los campos a continuación y el bloque final. Nunca crees una instantánea de coordinación ni elimines silenciosamente trabajo sucio.
Ejecutar, integrar y recolectar resultados
Despacha la ola declarada con el mecanismo derivado. El ancho efectivo es uno en el escalón tres y para checkouts compartidos. En el escalón tres, reclamar inicia un elemento: crea ramas de reclamo locales o remotas y llena 'Claimed by' solo para el elemento actual, nunca pre-reclames el lote restante. Inspecciona su resultado de puerta antes de emitir los comandos del siguiente elemento. Un pre-reclamo posterior no es un ejecutor ya en ejecución. En el escalón tres, termina e integra cada elemento antes de iniciar el siguiente. Antes de avanzar el bucle, verifica el resultado de la puerta del último ejecutor. Un bloqueador ambiental termina la ola completa inmediatamente, incluso si el siguiente elemento es independiente y el presupuesto tiene espacio. No inicies el siguiente elemento ni otra integración. Esta regla tiene precedencia sobre la supervisión continua y el umbral numérico de fallos. Recolecta ejecutores ya en ejecución sin iniciar nuevo trabajo, luego reporta el bloqueador sistémico. Conserva sus reclamos recuperables. Una sonda de base exitosa no anula un fallo ambiental después de la implementación.
Para trabajo directo paralelo, invoca el modo integrador de ship-item para reclamos listos en orden de cola, usando el worktree de integración separado. La mecánica de integración vive en ship-item, no en un segundo procedimiento aquí. Los hosts de PR serializan las fusiones de PR autorizadas.
Normaliza cada retorno a: clave del elemento; resultado (enviado, listo, falló,
bloqueado, detenido, desconocido); rama de reclamo/real; SHA de integración o PR;
identificadores usados/renumerados; bloqueador; archivos en conflicto; bloque final textual.
Sin retorno significa desconocido. El resultado es separado del vocabulario de 'Overall'.
Para un reclamo listo esperando integración, escribe Resultado: listo y
General: parcialmente verificado; listo y enviado nunca son valores de 'Overall'.
Reporta cada elemento y un resumen de la ola con Estado de un vistazo; cualquier desconocido
limita la ola a parcialmente verificado. Incluye reclamos excluidos/retirados,
ancho efectivo, escalón, resultados de puerta, orígenes de hooks/firma y trabajo restante.
En la respuesta final, conserva un bloque 'Estado de un vistazo' para cada elemento,
luego un bloque separado para la ola. Cada uno tiene 'Esta ejecución', 'General' y 'Por hacer'.
Una tabla de resultados por elemento puede acompañar a estos bloques pero nunca los
reemplaza, incluso en el escalón secuencial. Verifica su conteo antes de devolver.
Pon la clave del elemento o "Ola" en un encabezado separado arriba de su bloque. Mantén el
encabezado del bloque exactamente Estado de un vistazo, sin sufijo de elemento ni prefijo de ola.
Pon Ola en su propio encabezado de ámbito, igual que con un elemento. Por ejemplo:
## Elemento <clave>
### Estado de un vistazo
- **Esta ejecución:** <acciones observadas y salida/código de salida de la puerta>
- **General:** <vocabulario permitido>
- **Por hacer:** <trabajo restante o Ninguno>
El punto de control pregunta antes de otra ola. El modo continuo recolecta nuevamente de git y procede dentro del presupuesto confirmado. Lee el reloj del shell en el primer despacho y después de cada ola; si no está disponible, reporta el tope suave como no aplicado. Deja de iniciar olas más allá del tope; nunca interrumpas un elemento en vuelo.
Detener y limpiar
Una denegación explícita de permiso del host/herramienta detiene la ejecución y no permite continuar ni iniciar nuevos elementos. Reporta el motivo y el estado actual de cada elemento. Conserva los reclamos recuperables y worktrees sobrantes para posible inspección manual.
Notas finales
Este skill no debe usarse para redactar decisiones, encolar nuevos elementos ni modificar el repositorio fuera del alcance de la ola declarada. Toda la comunicación con el operador debe ser clara, concisa y en español, preservando los términos técnicos en inglés cuando correspondan (por ejemplo, 'checkout', 'pull request', 'commit', 'branch').