Repository navigation
Releases: jmanuelcorral/bond
Release list
bond v1.10.0
Llega el modo hub: un repo de operaciones que agrupa otros repos (como submódulos o como
symlinks a tus clones) y trabaja con ellos en vertical, con una rama del mismo nombre en todos y
un agente por repo. La web estrena diseño y una página de novedades con un vídeo del modo hub.
hub.toml, la sesión del hub: el nombre y la base del hub y, por repo,path,base,
link = "submodule"o"symlink",url,agentydescription. Las rutas a tus clones van
en.bond/hub.local.toml(en.gitignore, admite~), y~/.bond/hubs.tomlpermite encontrar
el hub desde un repo enlazado por symlink.bond hub init, asistente para crear un hub o prepararlo en un repo que ya existe:- primero hace
bond initen el propio hub (conplan-teamy la memoria de decisiones, para
que los runs del equipo queden en el hub); - importa los submódulos que ya hubiera y añade repos por URL (submódulo) o desde un clon local
(symlink), que se elige navegando por el disco; los repos nuevos van enrepos/<nombre>; - hace
bond initcon la config del hub en los repos que no tienen bond (los que ya lo tienen
conservan la suya) y commitea esa config si el repo estaba limpio; en un submódulo avisa de
que ese commit hay que subirlo congit pushantes que el hub; - deja un hub nuevo con su config generada y un commit inicial.
- primero hace
bond hub add <url|ruta>añade un repo (--path,--base,--link,--agent,
--description);bond hub syncdeja el disco como dicehub.toml(junctions en Windows
si no se puede crear el symlink) y hace elbond initque falte;bond hubenseña la
sesión.bond hub checkrevisa cada repo de la sesión y dice cómo arreglar lo que falla: enlace,
base,bond inity config, agentes, worktrees, cambios sin commitear y ramas verticales a
medias. Los avisos (un repo fuera derepos/, una base atrasada respecto a su remoto) no
cambian el código de salida.--fixarregla lo seguro (enlaces y submódulos sin iniciar),
pregunta antes de cada cambio salvo con--yes, y nunca descarta cambios ni cambia de rama.
--jsonda unlevel(ok,warnofail) por comprobación, por repo y por informe, como
bond doctor, que resume el hub en su fila.bond hub pullpone al día la base del hub y de cada repo congit fetchy avance solo en
fast-forward; si la base no está en uso en ningún worktree (un submódulo con HEAD separado),
avanza la rama sin tocar la carpeta de trabajo. Salta, explicando por qué, lo que tiene cambios
o ha divergido; nunca hace merge, rebase ni push.- En un hub,
bond syncgenera en suAGENTS.mdun bloque (bond:hub) con la tabla de
repos y las reglas del hub, para que el orquestador sepa qué es cada repo; lo que escribas fuera
del bloque se conserva. bond teamen un hub:bond team fix/xabre una rama vertical, con un worktree y un agente
en cada repo de la sesión (o en los de--repos), cada uno desde su base; solo cabe una abierta
a la vez.bond team promptmanda la tarea a todos con una nota que nombra a los demás agentes;
collect --repoguarda los runs en el hub ycleanlo deja todo como estaba.statusy la
tabla en vivo (tabla · <hub>) enseñan toda la sesión, también desde dentro de un repo.- Las skills
plan-teamybond-teamsaben trabajar en un hub: una fase o tarea es una rama
vertical, se ponen al día las bases antes de abrirla y se recoge repo a repo. Al integrar
recuerdan subir los punteros de los submódulos, sin hacerlo ellas. bond team promptreintenta una vez un encargo que no llega a un agente recién arrancado
(agent_prompt_stalled) y, si vuelve a fallar, da error en lugar de un aviso.- La skill global
bond-teamvuelve a cargar en pi: sudescriptionno era YAML válido. Una
prueba comprueba ahora el frontmatter de todas las skills globales. bonddentro de su propio workspace de Herdr abre el agente por defecto (o el de--agent) en
el panel donde lo escribes, en la raíz del repo; al salir del agente vuelves a la shell. Antes
solo decía que el workspace ya estaba abierto.- La web (josecorral.dev/bond) estrena diseño y logo, y una página de Novedades / What's
new con el modo hub y un vídeo en castellano y otro en inglés.
Instalar
curl -fsSL https://raw.githubusercontent.com/jmanuelcorral/bond/main/install.sh | shWindows: irm https://raw.githubusercontent.com/jmanuelcorral/bond/main/install.ps1 | iex
bond v1.9.1
bond inity el asistente debond setupya ofrecen Antigravity (agy) cuando su instalador
lo deja en~/.local/biny esa carpeta no está en el PATH, como ya hacíanbond doctory
bond team. Antes no salía en la lista de agentes.
Instalar
curl -fsSL https://raw.githubusercontent.com/jmanuelcorral/bond/main/install.sh | shWindows: irm https://raw.githubusercontent.com/jmanuelcorral/bond/main/install.ps1 | iex
bond v1.9.0
Antigravity (agy) entra en bond como un agente más, también en equipos, y aceptar decisiones
deja de pedirte una segunda validación: lo que apruebas en la conversación queda aceptado.
- Antigravity (
agy) como agente del repo:bond init --agents agyybond syncgeneran un
plugin de bond en.agents/plugins/bond/con los servidores MCP (del catálogo y los de
[mcp_servers]) y los comandos del catálogo y propios, cada uno como skill (/commit,
/review...).agyya leíaAGENTS.mdy.agents/skills/por su cuenta. Quitaragyde
agentsborra el plugin.bond doctorenseña la versión deagyy avisa si no está
instalado o si está en~/.local/binpero fuera del PATH. bond setupconagy: deja un plugin global,bond-global, en
~/.gemini/config/plugins/bond/con tus instrucciones, las reglas de bond y las skills
bond-delegate,bond-teamyherdr, así queagylas carga en cualquier repo. Instala
también la integraciónantigravity-clide Herdr, ybond doctorcomprueba las dos cosas. No
toca nada más de~/.gemini/config/; sinagyentre tus agentes, no crea nada.agyen equipos y delegaciones (bond team <rama>:agy, skillbond-delegate):- arranca aunque solo esté en
~/.local/bin(bond añade esa carpeta al PATH de la shell del
panel) y con--dangerously-skip-permissions, porque sin él pide permiso por cada comando y
no avanza; tus argumentos tras--lo sustituyen; - si
agypregunta si confías en la carpeta, la rama salebloqueadoypromptno manda
nada; el aviso de novedades al arrancar («esc to dismiss») ya no cuenta como pregunta; bond team collecttoma su respuesta de la conversación deagy(con la integración de
Herdr) o, si no, del panel, sin el banner, el encargo repetido ni las líneas de herramientas.
- arranca aunque solo esté en
- Confianza del orquestador en
bond team: si el agente del panel que lanza el equipo (pi,
Claude Code oagy) confía en el checkout principal, todos los agentes pi, Claude Code yagy
del equipo arrancan confiando en su worktree, aunque su agente no hubiera abierto nunca el
repo (enagy, entrustedWorkspacesde~/.gemini/antigravity-cli/settings.json). Sin esa
confianza, cada agente hereda la que él mismo daba al checkout, como hasta ahora;--no-trust
lo desactiva. - Aceptar al aprobar:
bond decisions add(yrecord_decisionen pi) admite
--confirmed-by "<lo que dijo el usuario>"(confirmed_byen el JSON) y registra la
decisión yaaccepted, con esa cita yaccepted_via. Las skillsplan-create,
decision-record,plan-executeyconvention-documentlo usan: las decisiones que apruebas
con un plan quedan aceptadas sin tener que aceptarlas otra vez; solo quedanproposedlas que
un agente toma por su cuenta. - Sin cuadro de permiso para aceptar:
bond syncya no deja reglasaskparabond decisions accept,rejectysupersedeen.claude/settings.json, y quita las que dejó la 1.8.0
conservando las tuyas. Si lo has pedido por chat, no hay que validar el comando otra vez. bond team collectcon agentes Claude Code: toma el informe de su transcript
(~/.claude/projects/*/<sesión>.jsonl) en vez del panel; cuenta como decisiones del agente
solo las firmadasagent:<kind>/<nombre>que no estaban en la base (antes sumaba las del
orquestador del mismo tipo y las ya existentes); y compara con la base guardada al mandar el
encargo, así que recoger después de integrar la rama sigue mostrando sus commits y decisiones.bond decisions checkmira solo los trailersDecision:de la rama actual: antes leía los de
todas las ramas y, con agentes en paralelo, una rama fallaba por las decisiones de otra.
Instalar
curl -fsSL https://raw.githubusercontent.com/jmanuelcorral/bond/main/install.sh | shWindows: irm https://raw.githubusercontent.com/jmanuelcorral/bond/main/install.ps1 | iex
bond v1.8.0
Aceptar decisiones sin salir de la conversación con tu agente: le dices cuáles aceptas y queda
constancia de que lo pediste tú y de quién lo ejecutó.
bond decisions accept,rejectysupersedeadmiten--confirmed-by "<lo que dijo el usuario>"y con él no necesitan terminal. La decisión guarda esa referencia enaccepted_by
y enaccepted_viaquién lo ejecutó (agent:<kind>/<nombre>desde un panel de Herdr,user
fuera);checkvalida su formato. Aceptan varios ids y--all-proposed: un id desconocido o
que no estáproposedse informa sin cortar los demás, y la salida es distinta de 0 si alguno
falla. Sin terminal y sin--confirmed-byse siguen negando, y un--confirmed-byvacío se
rechaza.- Comando nuevo del catálogo,
/accept: enseña las decisionesproposed, te pregunta cuáles
quieres y solo entonces las acepta, rechaza o sustituye citando tus palabras. - En Claude Code, con
[decisions],bond syncañade a.claude/settings.jsonreglasask
paraaccept,rejectysupersede: cada una pasa por el cuadro de permiso de Claude Code.
Se fusionan con las reglas del repo sin pisarlas, y al quitar[decisions]solo se van las de
bond. bond decisions supersededejaba ensupersedesde la decisión nueva su propio id en lugar
del de la sustituida.- El comentario de
[decisions]que escribebond initen.bond/bond.tomlya no habla de un
índice en el README (desde la 1.7.0 no lo hay) y dice que los trailersAgent:yDecision:
son opcionales.
Instalar
curl -fsSL https://raw.githubusercontent.com/jmanuelcorral/bond/main/install.sh | shWindows: irm https://raw.githubusercontent.com/jmanuelcorral/bond/main/install.ps1 | iex
bond v1.7.0
Memoria de decisiones de los agentes: en un repo con bond, las decisiones, los encargos a otros
agentes y lo que respondieron quedan por escrito en el repo, para auditar después qué hizo cada
uno. La escritura la hace bond, no el modelo: funciona también con modelos locales que no
siguen formatos a mano.
- Se activa por repo con la sección
[decisions]de.bond/bond.toml(dir = "docs/decisions",
ajustable dentro del repo).bond initla propone cuando eliges la skilldecision-record,
marcada por defecto; al reinicializar, una sección que ya tuvieras se conserva.bond sync
crea<dir>/README.mdcon el formato si falta; después es del repo. Sin[decisions], nada
cambia. bond decisions addregistra una decisión: el agente pasa el título, el contexto, la decisión
y, si las hay, alternativas, consecuencias y enlaces (por flags o JSON con--stdin), y bond
escribe<dir>/<YYYY-MM-DD-slug>.mdcon su frontmatter, la rama y el HEAD. La autoría la pone
bond: en un panel de Herdr, el agente de ese panel (agent:pi/kevin); fuera,user. Siempre
entra comoproposed.bond decisions accept,rejectysupersedeson del usuario: piden terminal interactiva y
confirmación, y se niegan desde el shell de un agente. Evita aceptaciones por descuido; no es
una medida de seguridad (la integridad la da git).- Para auditar:
bond decisionslista (--status,--agent,--json),show <id>enseña una
decisión o un run,runslista los encargos ycheckvalida frontmatter, ids, sustituciones y
trailersDecision:(sale con 1 si hay errores).bond doctorañade una fila con los errores
y las decisiones pendientes de aceptar. - En pi, la herramienta
record_decision(Bond Extensions) llama abond decisions add. - Encargos e informes: con la memoria activa,
bond team promptguarda el encargo exacto en
<dir>/runs/antes de mandarlo (--no-recordpara no guardarlo; si falla al escribir, avisa
y manda el prompt igual) y le pide al agente que commitee en su rama lo que registre. La nueva
bond team collect <rama>guarda en el run la última respuesta del agente (de su fichero de
sesión o, si no se puede, del panel sin el banner de arranque), el estado, los commits de la
rama y las decisiones de ese agente; se niega mientras el agente trabaja o espera una respuesta
y repetirlo no duplica nada. Con--requesty--agentsirve también para delegaciones sin
equipo. - Las decisiones viajan con la rama y se revisan con el código; no hay un índice compartido que
dé conflictos entre agentes en paralelo. - Skills:
decision-recordes nueva;plan-create,plan-execute,git-conventional-commit,
delivery-review-githubyconvention-documentregistran y enlazan sus decisiones con la
herramienta;bond-team,plan-teamybond-delegateguardan encargos e informes con
promptycollect. Con la memoria activa, los commits pueden llevar los trailers opcionales
Agent:yDecision:; sin ella, las skills no firman nada. Una regla global debond setup
pide usar la memoria en los repos que la tienen. bond catalog checkfalla si el frontmatter de una skill no es YAML válido (por ejemplo, una
descriptionsin comillas con:dentro), que pi se niega a cargar aunque Claude Code lo
tolere.
Instalar
curl -fsSL https://raw.githubusercontent.com/jmanuelcorral/bond/main/install.sh | shWindows: irm https://raw.githubusercontent.com/jmanuelcorral/bond/main/install.ps1 | iex
bond v1.6.3
bond team statusda porintegradauna rama que entró en la base por fast-forward o con un
merge (antes salíasin commits, como si no hubiera empezado), y por esobond team clean
sin argumentos ya la quita. Lo distingue el reflog de la rama: si avanzó desde que se creó, ya
trabajó. Una rama recién creada sigue saliendosin commits.- Nuevo vídeo en la web (https://josecorral.dev/bond/): Claude, solo en su panel, planifica una
web, la reparte entre dos agentes pi conbond team, revisa, integra y limpia el equipo.
Instalar
curl -fsSL https://raw.githubusercontent.com/jmanuelcorral/bond/main/install.sh | shWindows: irm https://raw.githubusercontent.com/jmanuelcorral/bond/main/install.ps1 | iex
bond v1.6.2
- La tool
repo_mapde pi (y el scriptrepo-mapde la skillcode-context) ya no falla en
repos con mucha historia: la lista de ficheros más tocados cortaba la tubería conheady,
conpipefail, el script terminaba con error (SIGPIPE) aunque hubiera escrito el mapa. - La web de la documentación (https://josecorral.dev/bond/) tiene vídeos de bond en acción sobre
un proyecto real:bond init, el puesto de trabajo, un equipo de agentes y los catálogos.
Instalar
curl -fsSL https://raw.githubusercontent.com/jmanuelcorral/bond/main/install.sh | shWindows: irm https://raw.githubusercontent.com/jmanuelcorral/bond/main/install.ps1 | iex
bond v1.6.1
bond initinteractivo vuelve a marcar de partida lo que el repo ya usa (o, en un repo nuevo,
lo del catálogo por defecto). En la 1.6.0 la lista salía sin marcar y, si confirmabas sin
tocarla, guardaba lo del catálogo de bond con prefijo ("bond:context7"en vez de
"context7"): funcionaba, pero no era lo esperado. Unbond.tomlcon esos prefijos sigue
valiendo;bond initlo deja otra vez con los nombres a secas.- La documentación tiene web propia, en castellano e inglés: https://josecorral.dev/bond/
(los mismosdocs/, con buscador).
Instalar
curl -fsSL https://raw.githubusercontent.com/jmanuelcorral/bond/main/install.sh | shWindows: irm https://raw.githubusercontent.com/jmanuelcorral/bond/main/install.ps1 | iex
bond v1.6.0
Catálogos del equipo: un equipo reúne en un repo sus skills, comandos y servidores MCP, y cada
proyecto lo usa con bond como usa el catálogo de bond.
bond catalog create: prepara el repo actual como catálogo propio de un equipo. Pregunta el
nombre (por defecto, el de la carpeta;--namepara no preguntar) y creacatalog.tomly
las carpetasskills/,commands/ymcps/, cada una con unREADME.mdque explica cómo
añadir lo suyo. No mete ejemplos instalables. Si ya haycatalog.toml, no lo toca y solo
añade lo que falte.bond catalog check [dir]: comprueba un catálogo (skills conSKILL.mdynameigual a su
carpeta, comandos condescription, servidores MCP concommandourl, entradas de
catalog.tomlque existen) y sale con 1 si hay errores, para CI. Avisa de secretos escritos
tal cual enenvoheaders.- Catálogos del equipo en un repo:
[[catalog]]conpathen.bond/bond.toml. Sus skills,
comandos y servidores MCP salen enbond init(y en--list, con el nombre del catálogo) y
bond synclos genera para cada agente como los del catálogo de bond; en pi, sus comandos van
a.pi/prompts/. Con el mismo nombre que una de bond, gana la del equipo (bond:nombrepide
la de bond); en dos catálogos del equipo, se elige concatalogo:nombre.sync
valida el catálogo comobond catalog checky no escribe nada si tiene errores; avisa si la
carpeta está fuera del repo. Sin[[catalog]], nada cambia. - Catálogos del equipo por git:
bond catalog add <url> [--ref tag|rama|sha]los declara en
.bond/bond.toml([[catalog]]conname,gityref) y fija el commit en
.bond/lock.json, que se commitea.syncusa ese commit (aunque la rama avance) y lo descarga
a~/.bond/catalogs/si falta; con la caché llena funciona sin red.bond catalog update
vuelve a resolver la ref y mueve el lock;list,remove(quita también lo elegido de él) y
clean(poda la caché).addyupdateenseñan antes los servidores MCP que llegan o cambian
y lo que pasa a venir de otro catálogo, y piden confirmación (--yes).addtambién acepta
una carpeta ([[catalog]] path). bond doctorañade una fila por cada catálogo del equipo en.bond/bond.toml: el commit
fijado en.bond/lock.json, si está descargado en~/.bond/catalogsy si la ref tiene un
commit más nuevo (avisa conbond catalog update <nombre>; con--quicko sin acceso, «sin
verificar» — no toca la red). Los catálogos locales salen con su carpeta, y falla si no
existe.bond doctorya no se corta cuando.bond/bond.toml,.bond/lock.jsono un catálogo del
equipo no valen (lock ilegible o que no cuadra, catálogo con errores, nombre desconocido): la
fila «repo» falla con el motivo y el arreglo, y el resto de comprobaciones, incluida la fila
de cada catálogo, sale igual.- Skill nueva en el catálogo de bond:
catalog-maintain(opcional,default = false). Ayuda a
llenar y mantener un catálogo de equipo creado conbond catalog create: añadir skills,
comandos y servidores MCP con el formato de losREADME.mdquecreatedeja en cada
carpeta, mantenercatalog.tomly pasarbond catalog checkantes de publicar. No duplica
la estructura que ya dacreate. - Los servidores MCP del catálogo van ahora en un fichero por servidor (
catalog/mcps/<nombre>.json
en lugar decatalog/mcp.json), el mismo formato que los catálogos propios. Lo que genera
bond syncno cambia. - Documentado el ciclo de vida de los catálogos externos (crear, comprobar, publicar, añadir,
sincronizar, actualizar y diagnosticar) con las notas de seguridad y de CI con repos privados
endocs/reference.md; atajo para equipos endocs/getting-started.md.
Instalar
curl -fsSL https://raw.githubusercontent.com/jmanuelcorral/bond/main/install.sh | shWindows: irm https://raw.githubusercontent.com/jmanuelcorral/bond/main/install.ps1 | iex
bond v1.5.1
bond doctor: ejecutándose desde el repo de bond, si~/.bond/piapunta a un runtime
instalado (~/.bond/runtime/<versión>con su marca.complete) la fila «Bond Extensions»
avisa en vez de fallar: pi está usando las extensiones de esa versión instalada y no las
del repo en desarrollo. Sigue fallando si el destino no es ni el repo ni un runtime válido.
Instalar
curl -fsSL https://raw.githubusercontent.com/jmanuelcorral/bond/main/install.sh | shWindows: irm https://raw.githubusercontent.com/jmanuelcorral/bond/main/install.ps1 | iex