Coordina multipli agenti AI CLI (Kimi, Claude, Gemini, OpenAI, ecc.) che lavorano contemporaneamente sullo stesso progetto e mantiene una memoria collettiva (wiki) di tutte le sessioni passate. Usa questa skill SEMPRE quando lavori in parallelo con altre AI CLI, quando devi salvare lo stato di una sessione condivisa, quando vuoi evitare sovrascritture su file toccati da altri agenti, quando devi chiedere "questo lavoro è già stato fatto? questo bug si è già visto?", o quando l'utente parla di "multi-tap", "registry agenti", "coordination", "lock file", "handoff condiviso", "wiki delle sessioni", "chi sta lavorando su cosa" o "evitare che le AI si pestino i piedi".
72
90%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Data: 2026-07-22 20:15 | Sessione: #3 | Continua da: HANDOFF-002.md Progetto: agent-registry | Operatore: Giuseppe + Claude Opus 4.8
Dockerizzare la skill come sandbox a 5 servizi (OrbStack) con notifiche WhatsApp automatiche su ogni evento degli agenti, renderlo il comportamento standard per ogni AI, e pubblicare pulito in pubblico. Obiettivo di HANDOFF-002 → in questa sessione raggiunto e rilasciato come v0.4.0.
github.com/GiuseppeDiCanosa/agent-registry
era GIÀ a v0.3.1 (completo). Lavoro fatto in clone pulito ~/Claude-Projects/agent-registry-oss.
Il vecchio ~/Claude-Projects/agent-registry è obsoleto (stale, v0.2.1).docker-compose.yml): db (persistenza+sync), dashboard
(:8765 sempre accesa), code (runtime agenti), wa-gateway (open-wa), watchdog (notifiche).
Immagine unica python:3.13-slim. Domini OrbStack *.agent-registry.orb.local.notifier/watchdog.py + wa_client.py): eventi executed/stopped/idle(>1h),
ognuno una sola volta, messaggi random con placeholder. Cold-start anti-flood.notifier/messages.local.json (gitignored, generati da subagente Sonnet 5);
pool pubblico clean messages.default.json. Montati nel watchdog via docker-compose.override.yml.SKILL.md (ogni agente coperto perché il
watchdog osserva il registry condiviso).AGENT_REGISTRY_DATA_SOURCE: sorgente /data configurabile. Default = volume isolato;
abilitato in locale al bind-mount della home reale ~/.agent-registry → ogni agente sul
Mac notifica. Verificato dal vivo (eventi stopped reali arrivati su WhatsApp).ready, numero in .env. Pipeline end-to-end OK.check-spec-links + check-target-ownership PASSED. Spec SDD:
container-deployment + whatsapp-notifications.main 55757bc + tag v0.4.0, plugin.json bumpato.
Scansione segreti pulita (0 in history/tracked).db fermato in bind-mode: in bind-mount il git-sync della home lo fa l'host; il
container db è stato stoppato per non fare doppio sync in conflitto. Da decidere se
reintrodurlo (con auth git dedicata) o lasciarlo all'host.WA_SESSION_ID è l'UUID della sessione open-wa; cambia se ri-scansioni
il QR. Miglioria proposta: risoluzione automatica nome→UUID via GET /api/sessions.stopped: al passaggio sulla home reale sono partite notifiche per
vecchie sessioni zombie che si assestavano. Da verificare che non sia rumoroso a regime..handoff in pubblico: HANDOFF-001/002/003 sono tracciati nel repo pubblico. Valutare
se tenerli o escluderli.lsof -iTCP:8765 + ps eww | grep AGENT_REGISTRY
ha svelato la dashboard puntata al registry sbagliato (bug iniziale della sessione).curl :2785/api/docs-json ha rivelato che
send-text vuole il sessionId = UUID (non il nome) e body chatId@c.us + header X-API-Key.
Confermato con GET per nome (400 "uuid expected") vs UUID (200).AGENT_REGISTRY_DATA_SOURCE parametrizzato: bind-mount come config (env), default
pubblico isolato. docker-compose.override.yml (gitignored) per i segreti/pool locali → repo
pubblico pulito.WA_SESSION_ID = nome sessione o default: send-text → HTTP 400. Serve l'UUID.urllib nasconde il corpo dell'errore: un 400 era illeggibile; risolto facendo rilanciare a
wa_client.send_text il body dell'HTTPError.... | head -5 && echo "trovato" scatta sempre perché
head esce 0. Usare un conteggio (grep -c), non head.idle e stopped di sessioni con PID vivo).wa_client/watchdog: se WA_SESSION_ID non è un UUID,
risolverlo da GET /api/sessions all'avvio → sopravvive ai re-link del QR.db in bind-mode (reintrodurre con auth git dedicata vs host-only).registry_manager sull'host
(fuori dal container) e confermare la notifica — chiude la verifica "ogni AI".~/Claude-Projects/agent-registry (stale) per non confondere le sorgenti.~/Claude-Projects/agent-registry-oss (branch
feat/docker-sandbox-whatsapp, mergiato in main, tag v0.4.0)..env (gitignored) — WA_API_KEY, WA_RECIPIENT,
WA_SESSION_ID (UUID), AGENT_REGISTRY_DATA_SOURCE, KIMI_API_KEY. Mai committare. → vedi .env.dashboard, code, watchdog, wa-gateway UP sulla home reale
~/.agent-registry; db fermato. Monitor watchdog persistente attivo in sessione.X-API-Key; body {chatId:"<num>@c.us", text};
immagine ghcr.io/rmyndharis/openwa:latest, porta 2785.container-deployment + whatsapp-notifications, openspec/changes/2026-07-22-dockerize-sandbox/..claude
commands
.tessl-plugin
docker
openspec
changes
2026-07-22-dockerize-sandbox
agent-registry-sync-setup-wizard
archive
2026-07-16-fix-cross-process-coordination
schemas
spec-as-source
templates
scripts
templates
tests
docker
notifier