CommunityProgramación y desarrollogithub.com

Baton

Coordina agentes de codificación en un proyecto local compartido con asignación de tareas, reclamos de archivos, puntos de control en Git, traspasos de contexto, revisión independiente y recuperación. Úsalo cuando el usuario solicite colaboración entre agentes como Codex, Claude Code o Antigravity.

¿Qué es Baton?

Baton es una habilidad que permite coordinar múltiples agentes de codificación (como Codex, Claude Code o Antigravity) en un mismo proyecto local, gestionando la propiedad de tareas, los reclamos de archivos, los puntos de control en Git, los traspasos de contexto entre agentes, las revisiones independientes y la recuperación de errores. Proporciona un motor Python integrado como libro de contabilidad autorizado de tareas, que se invoca explícitamente mediante comandos (como `/baton handover TASK-01 to pc1-codex`). La habilidad no inicia un demonio ni detecta límites de uso del modelo automáticamente. Las acciones clave incluyen añadir tareas, iniciarlas, tomar posesión, hacer checkpoints, traspasar tareas a otro agente, revisar y marcar como completadas. También ofrece capacidades de recuperación ante fallos y gestión de ramas de Git. Es útil para flujos de trabajo colaborativos donde diferentes agentes necesitan trabajar en el mismo proyecto sin interferencias, asegurando un seguimiento claro de la propiedad y el progreso.

Compatible con✓Claude Code✓Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/Harshit1garg1/Baton/tree/HEAD/skills/baton

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

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

Documentación

¿Qué hace Baton?

Usa el motor Python incluido como el libro de contabilidad local autorizado de tareas. Ejecuta los comandos explícitamente; esta habilidad no inicia un demonio, no detecta límites de uso del modelo ni se comunica con otros agentes automáticamente.

Interpretar acciones del chat

Los usuarios normalmente invocan esta habilidad en el chat, como /baton handover TASK-01 to pc1-codex, $baton continue TASK-01, o /baton:baton status, dependiendo del anfitrión. Interpreta las palabras restantes como una solicitud de acción y ejecuta el comando del motor correspondiente para el usuario. Estas son solicitudes dirigidas a esta única habilidad, no comandos registrados por separado ni comandos de terminal.

Acción solicitadaAcción del motor
initInicializar si es necesario; inspeccionar el proyecto; InitFresh solo para un tablero nuevo.
joinJoinExisting.
status, tasks, packet TASKStatus, Tasks, WebPacket.
add TASK "Título" with files ...AddTask, con dependencias cuando se proporcionen.
start TASK, claim TASKSilentHandshake; usa --git-branch para trabajo en Git y un árbol de trabajo aislado cuando se solicite. Luego implementa solo si el usuario pidió implementación.
checkpoint TASK with message ...Checkpoint; añade --push solo dentro de la autorización de carga del usuario.
progress TASK to 60 percentUpdateProgress, con una cifra de progreso veraz y notas.
handover TASK to AGENT, handoff TASK to AGENTAtomicHandoff; incluye el prompt actual, los cambios y el trabajo restante de la conversación.
continue TASK, resume TASKCheckOrContinue; actúa según su decisión de propiedad antes de editar.
done TASKEjecuta las comprobaciones relevantes del proyecto, luego Done cuando la implementación esté lista.
review TASKInspecciona los cambios fijados y las comprobaciones relevantes como un agente diferente, luego SubmitReview.
reopen TASK, merge TASK, release TAG, revert TASK, recover TAGReopenTask, MergeTask, ReleaseTag, RevertTask, RecoverTag respectivamente.
release files ... from TASKReleaseFiles para los reclamos especificados.
resolve recoveryResolveRecovery; conserva el trabajo no resuelto y su diario si se rechaza.
abandon recoveryResolveRecovery --abandon-recovery solo cuando se solicite explícitamente el abandono. Informa sobre las reparaciones restantes.
selftestSelfTest.
reset workspaceResetWorkspace --confirm-reset solo para un restablecimiento explícito autorizado por el líder.

Resuelve los IDs y rutas de tareas a partir de la solicitud y el tablero actual. Pide información genuinamente faltante, como la clave de un nuevo proyecto o una identidad de colaborador ambigua. Pasa siempre el ID de colaborador de esta conversación explícitamente a las acciones del motor que requieren identidad; otro agente podría haber cambiado el ID guardado de la sesión local compartida. Respeta la autorización previa en la conversación. MergeTask y ReleaseTag intentan una subida remota, por lo que no las uses contra un remoto configurado cuando la solicitud del usuario prohíba la subida.

Configurar un proyecto

Requisitos: Python 3.10+ y Git. Selecciona un intérprete de Python 3 disponible (python3, python o py -3 en Windows); no supongas que el alias python3 de Windows funciona.

Antes del primer comando del motor en un proyecto, localiza el scripts/bootstrap.py propio de esta habilidad y ejecútalo con el intérprete elegido y --project <ruta-absoluta-del-proyecto>. Copia el motor empaquetado en .collab/collab_engine.py y añade /.collab/ al .gitignore del proyecto. No inicializa el libro de contabilidad ni reemplaza un motor existente diferente. Resuelve una actualización por separado si se niega.

Los comandos siguientes se ejecutan desde la raíz del proyecto. Reemplaza python3 con el intérprete seleccionado cuando sea necesario. Para tareas respaldadas por Git, primero verifica que el proyecto sea un repositorio Git con un commit base y una identidad Git configurada. Usa su rama base real con --base-branch <rama> cuando no sea main.

Establecer la propiedad antes de editar

  1. Ejecuta Status. Únete al espacio de trabajo inicializado con un ID de colaborador distinto; obtén la clave del proyecto a través del contexto local autorizado del usuario. Para un espacio de trabajo nuevo, usa InitFresh con el líder elegido y una clave de proyecto. Mantén la clave y la sesión local fuera de Git.
  2. Añade una tarea con sus rutas de archivo previstas y dependencias si no existe.
  3. Ejecuta SilentHandshake antes de editar. Un BUSY_REDIRECT es una negativa a reclamar esa tarea; elige una alternativa elegible. Usa --use-worktree para tareas simultáneas respaldadas por ramas que compartan el mismo proyecto.
  4. Haz checkpoint del progreso significativo. Al transferir la propiedad, usa AtomicHandoff; el agente receptor ejecuta CheckOrContinue. Un agente que ha realizado un traspaso debe respetar SKIP_ALREADY_HANDED_OFF.
  5. Ejecuta Done cuando la implementación esté lista, luego haz que un agente diferente revise el commit fijado. Una revisión genuina significa inspeccionar los cambios y las comprobaciones relevantes antes de enviar el veredicto.

Respeta el alcance del usuario y la autorización existente para commits, cargas, fusiones y lanzamientos. La aprobación de un par no autoriza por sí sola la publicación externa. No envíes mensajes a otros agentes o personas sin autorización; los registros de traspaso pueden ser consumidos por el siguiente agente cuando se ejecute.

Comandos del motor

Prefija cada fila con python3 .collab/collab_engine.py --local-path .. Proporciona un --collaborator-id <agente> estable cuando corresponda.

AcciónArgumentos y comportamiento
InitFresh--project-key <clave> --collaborator-id <líder>; rechaza un libro de contabilidad existente.
JoinExisting--project-key <clave> --collaborator-id <agente> --device-cluster-id <clúster> --same-device true para colaboración en el mismo PC.
Status / TasksInspecciona propiedad, progreso y entrega. Status acepta --render-format CLI o Markdown.
AddTask--task-id T1 --task-title "Implementar funcionalidad" --files src/feature.py; opcional --depends-on T0.
SilentHandshake--task-id T1 --collaborator-id <propietario> --git-branch; opcional --use-worktree.
Checkpoint--task-id T1 --collaborator-id <propietario> --commit-message "checkpoint: progreso significativo"; opcional --push. Confirma los archivos actualmente propiedad del agente.
ReleaseFiles--task-id T1 --collaborator-id <propietario> --files <rutas> para liberación intencional de reclamos.
AtomicHandoff--task-id T1 --collaborator-id <propietario> --target-agent-id <receptor> --reason "Continuar implementación"; añade contexto con --last-prompt, --changes-summary, --remaining-todo; opcional --push.
CheckOrContinue--task-id T1 --collaborator-id <agente>; carga el traspaso o respeta la protección de reanudación/salto.
Done--task-id T1 --collaborator-id <propietario>; fija el trabajo limpio para revisión; opcional --push.
SubmitReview`--task-id T1 --collaborator-id --review-verdict APPROVED
ReopenTask--task-id T1 --collaborator-id <propietario-o-líder> para revisar trabajo pendiente o revertido.
MergeTask--task-id T1 --collaborator-id <agente> --squash; intenta un push. Usa --use-worktree para preservar el checkout compartido de otra tarea; --reapply reaplica explícitamente el trabajo revertido.
ReleaseTag--tag v1.0.0 --tag-message "Hito aceptado" --collaborator-id <agente>; etiqueta la rama base verificada e intenta la subida.
RevertTask--task-id T1 --collaborator-id <agente>; crea un commit de deshacer; opcional --push y --use-worktree.
RecoverTag--tag v1.0.0 --recovery-branch recover/v1.0.0 para crear una rama a partir de un hito.
ResolveRecoveryResuelve solo después de que el checkout afectado esté reparado. --abandon-recovery archiva explícitamente el diario y enumera las reparaciones manuales; no realiza dichas reparaciones.
SelfTestEjecuta la suite de 42 etapas del motor en fixtures desechables.

Para una tarea respaldada por rama que use un árbol de trabajo, edita y ejecuta las comprobaciones del proyecto dentro del worktreePath registrado de la tarea.

Límites y recuperación

  • Los reclamos son comprobaciones cooperativas a nivel del motor; los editores y comandos arbitrarios de Git pueden eludirlos. Los IDs de colaborador son etiquetas, no identidades autenticadas.
  • El tablero de un PC es la autoridad local. PCs separados usan ramas y sincronización Git; las réplicas del tablero sincronizadas no proporcionan un bloqueo distribuido. No trates una carpeta compartida como un libro de contabilidad transaccional compartido.
  • --backup-path <carpeta-local-sincronizada> escribe una instantánea unidireccional del tablero. El cliente de sincronización maneja la subida a la nube; el motor no tiene un adaptador nativo de API de Drive, OneDrive o TeraBox.
  • La aprobación de revisión marca la tarea como completada y libera sus reclamos; la fusión/entrega verificada es una operación separada. Informa DELIVERY: COMPLETE solo cuando el motor verifique el push remoto; conserva LOCAL_ONLY o INCOMPLETE cuando se devuelva.
  • Si la recuperación informa UNRESOLVED, conserva el diario y los archivos locales. Inspecciona el checkout nombrado, guarda las ediciones relevantes y vuelve a intentar después de la limpieza. No uses el abandono como sustituto de la conservación de archivos.
  • ResetWorkspace archiva el tablero y requiere identidad de líder más --confirm-reset; úsalo solo cuando restablecer el espacio de trabajo esté dentro de la solicitud del usuario.

La habilidad requiere un agente de codificación con acceso al sistema de archivos y al shell. Usa la invocación real de la habilidad del anfitrión; /baton no es un comando de terminal o API de chatbot registrado universalmente.

Skills relacionados