Un handoff escrito por el propio agente se autocertifica: puede decir que probó lo que no probó, y el archivo puede ni haberse grabado. Desde el 17/10/2026 la prueba salió del texto: un script graba sello, commit y huella digital de los archivos, y el hook verifica en la transcripción si el handoff realmente se guardó.
2Bloque de estado: commit y sha256 grabados por el script
3--conferir: igual (0), divergente (2), sin bloque (3)
4Preguntas de prueba y la nota N/5 al retomar
Objetivo: grabar un handoff con el script, verificar su frescura con --conferir y saber cuándo el hook cobra, graba solo o avisa que no se guardó.
01 · Del pedido a la retomada verificada
Skills session-handoff y prime del kit agente-claude-codex 1.8.3, con el hook-longrun 1.9.6.
Un handoff divergente es una pista, no un hecho: verifica antes de actuar
Haz clic en cada bloque del diagrama para ver qué hace.
Regla de decisión: si sigue siendo verdad después de la tarea → memoria persistente (CLAUDE.md, AGENTS.md). Estado de esta tarea → handoff. Registro de lo que pasó → historial (git, progress, failures, decisions).
02 · Cuatro reglas de un handoff que sirve
Del análisis del 17/10/2026 del kit.
1. Puntero, no texto corrido
El mapa de retomada, las fuentes de las preguntas de prueba y las evidencias son rutas y commits. Eso sobrevive a la compactación, a la sesión nueva y al cambio de modelo.
Un historial largo entierra lo que el próximo agente necesita hacer.
2. Prueba fuera del texto
El bloque de estado es del script, no del agente. Cada [confirmed] apunta a commit, teste: o arquivo:.
En la ejecución larga, quien decide si terminó sigue siendo la prueba ejecutada por el loop (clase 6).
Tarea y criterio de terminado; última decisión y por qué; lo que no puede cambiar; lo que está a medias; próxima acción y por qué. La fuente de cada una es un archivo del proyecto, nunca el propio handoff.
Después de compactar o de --resume, el hook pide las 5 respuestas de memoria antes de abrir el handoff, y el agente registra la nota con nota-retomada.py.
4. Límites conocidos
La nota la da el propio agente: las respuestas quedan escritas antes, lo que permite auditarlas, pero no es una comprobación independiente.
En Codex no hay hook: pedir y comprobar el handoff queda con la regla escrita y contigo. El handoff y el /prime funcionan igual en los dos.
03 · Instalar las skills y ensayar el --conferir
Las skills vienen del kit agente-claude-codex (1.8.3). El ensayo corre en un repositorio descartable en /tmp.
Terminal · instalar session-handoff y prime (Claude y Codex)
git clone https://github.com/inematds/agente-claude-codex ~/projetos/agente-claude-codex
cd ~/projetos/agente-claude-codex
cp -r skills/session-handoff/dist/claude/session-handoff skills/prime/dist/claude/prime ~/.claude/skills/
mkdir -p ~/.agents/skills
cp -r skills/session-handoff/dist/codex/session-handoff skills/prime/dist/codex/prime ~/.agents/skills/
mkdir -p ~/projetos/<seu-projeto>/handoffs/history # el hook solo pide handoff donde esta carpeta existe
Terminal · ensayo del --conferir
rm -rf /tmp/ensaio-handoff && mkdir -p /tmp/ensaio-handoff/handoffs/history && cd /tmp/ensaio-handoff
git init -q && git config user.name ensaio && git config user.email ensaio@local
echo "def f(): return 1" > app.py && git add -A && git commit -qm base
H=~/.claude/skills/session-handoff/scripts/handoff-grava.py
cat > /tmp/corpo-handoff.md <<'EOF'
# Handoff — ensaio-conferir
## Estado aceito
- [confirmed] `app.py` devuelve 1 (commit: base; teste: python3 -c "import app; print(app.f())" → 1)
## Não fazer
- No cambiar la firma de f().
## Próxima ação
Cambiar el retorno de f() a 2 y correr la misma prueba, que debe imprimir 2.
## Perguntas-teste
1. ¿Cuál es la tarea y el criterio de terminado? (fuente: app.py)
2. ¿Cuál fue la última decisión y por qué? (fuente: git log)
3. ¿Qué no puede cambiar? (fuente: app.py)
4. ¿Qué está a medias? (fuente: app.py)
5. ¿Cuál es la próxima acción y por qué? (fuente: app.py)
EOF
python3 $H --assunto ensaio-conferir < /tmp/corpo-handoff.md
F=$(ls handoffs/history/*.md | head -1)
python3 $H --conferir $F; echo "saída: $?"
echo "def f(): return 2" > app.py
python3 $H --conferir $F; echo "saída: $?"
Ejemplo del repositorio
snapshot: handoffs/history/2026-10-19T070502Z-ensaio-conferir.md
latest.md: 1 assunto(s) aberto(s): ensaio-conferir
commit 8900d4e ensaio <ensaio@local> (sem push)
retomar ESTE handoff numa sessão nova (Codex: /new no lugar de /clear):
/clear
/prime handoffs/history/2026-10-19T070502Z-ensaio-conferir.md
frescor: igual (1 arquivo(s) conferido(s); commit b89d8ad3ba51)
saída: 0
frescor: divergente — o handoff é pista, não fato; confira antes de agir
- app.py: mudou (citado no handoff)
saída: 2
El sello y los hashes cambian en cada ejecución. La línea snapshot: es la que el hook lee en la transcripción para saber qué handoff grabó ESTA sesión.
Sin la sección "Não fazer": el /prime no tendrá la lista de lo que no puede cambiar.
Sin "Perguntas-teste": el /prime no da la nota N/5.
Cuerpo con menos de 200 caracteres: lo rechaza (corpo do handoff vazio ou curto demais).
Más de 200 archivos pendientes: la lista del bloque se corta y el --conferir acusa como cambio los que sobraron (límite registrado en el análisis del 17/10).
04 · Práctica
Las dos primeras no gastan cuota. La tercera usa una sesión tuya.
E10 · Skills instaladas
10 min
Instala session-handoff y prime para Claude y para Codex y crea handoffs/history/ en el proyecto de tu ejecución.
Listo cuando:python3 ~/.claude/skills/session-handoff/scripts/handoff-grava.py --help | grep -c conferir → 1 o más, y ls ~/.agents/skills lista prime y session-handoff.
E11 · Frescura igual y divergente
10 min
Corre el ensayo del --conferir completo.
Listo cuando:frescor: igual con saída: 0, y después de cambiar app.py, frescor: divergente con - app.py: mudou y saída: 2.
E12 · Un handoff real, retomado
20 min
En el proyecto de tu ejecución, pide /session-handoff al final de un bloque de trabajo. Abre una sesión nueva y corre /prime con la ruta que imprimió el script.
Listo cuando: el resumen del /prime muestra la línea de frescura (igual) y Perguntas-teste: N/5; anota el N en el progress.md de la ejecución.
05 · Prueba de la clase
Pregunta 1 de 4
¿Quién escribe el bloque de estado (commit y sha256) del handoff?competencia
Correcto
La prueba salió del texto justamente porque el agente se autocertifica. El script graba el bloque y es con él que el --conferir compara.
No es esa
La prueba salió del texto justamente porque el agente se autocertifica. El script graba el bloque y es con él que el --conferir compara.Repasar: Del pedido a la retomada verificada
Pregunta 2 de 4
--conferir salió con código 2. ¿Qué significa?competencia
Correcto
0 = igual, 2 = divergente (con la lista de lo que cambió), 3 = snapshot antiguo sin bloque. Divergente pide comprobar antes de actuar.
El hook pidió un handoff y, en 8 eventos, no apareció nada en handoffs/history/. ¿Qué pasa?
Correcto
La comprobación mira la transcripción: si lo encontró, "Handoff conferido"; si no, cobra hasta 2 veces y luego avisa. Grabar solo ocurre únicamente en la inactividad, sobre una copia de la sesión.
No es esa
La comprobación mira la transcripción: si lo encontró, "Handoff conferido"; si no, cobra hasta 2 veces y luego avisa. Grabar solo ocurre únicamente en la inactividad, sobre una copia de la sesión.Repasar: Del pedido a la retomada verificada
Pregunta 4 de 4
"Corremos las pruebas de integración solo con --fast en esta máquina" vale para siempre en este proyecto. ¿Dónde va?
Correcto
Sigue siendo verdad después de la tarea: memoria persistente. El handoff guarda el estado de esta tarea; el historial registra lo que pasó.
No es esa
Sigue siendo verdad después de la tarea: memoria persistente. El handoff guarda el estado de esta tarea; el historial registra lo que pasó.Repasar: Del pedido a la retomada verificada
Prueba terminada
Acertaste {a} de {n}. Si aciertas todas, la clase se marca como completada.
Elige una alternativa. La explicación aparece después de tu intento.
06 · En tres frases
El script graba la pruebaSello real, archivo nuevo, commit y sha256 de los archivos; [confirmed] solo con commit, prueba o archivo.
El hook verificaBusca la grabación en la transcripción, insiste hasta 2 veces y avisa cuando no se guardó; a los 45 min detenido graba en una copia.
La retomada se mide/prime ejecuta el --conferir, revisa las pruebas y da la nota de las preguntas de prueba.