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-17 00:55 | Sessione: #1 | Continua da: — Progetto: agent-registry | Operatore: Giuseppe + Claude Opus 4.8
Rendere agent-registry una skill che fa davvero ciò per cui esiste: coordinare
agenti AI CLI di provider diversi (Claude, Kimi, Gemini, Codex) che lavorano
contemporaneamente sullo stesso progetto, senza sovrascriversi. La 0.1.0 pubblicata
su Tessl aveva un difetto che ne annullava lo scopo. Deliverable: versione corretta,
verificata con test che esercitano il flusso reale, pubblicata su Tessl e GitHub.
~/Claude-Projects/agent-registry, 10 commit, baseline 0.1.0 come primo commit (il prima/dopo è ispezionabile)scripts/check-*.sh, verify.sh, CI spec-verification.yml (pytest), pre-commitopenspec/specs/{file-locking,agent-registry}/spec.md — scritte prima del codicescripts/lock_manager.py riscritto — stato nel contenuto del file, flock solo sulla sezione criticascripts/registry_manager.py riscritto — RMW dentro flock su registry.md.lock (file dedicato, mai rinominato)work-review.md requisito-per-requisito con evidenza file:riga verificatatargets:/Purpose ripristinati dopo l'archivespec-driven-development/agent-registry — latest = 0.2.1, public, moderazione passataspec-driven-development; quello vecchio spec-driven-devlopment archiviato (0.1.0 non più installabile — verificato)~/Claude-Projects/prova-agent-registry: due agenti si contendono src/auth.py, il secondo viene bloccato (exit 1), finish rilascia il lock, il lock altrui resta intattoOnWorking con src/oauth.py e src/auth.py in do_not_touch.~/VibeCoding/hermes-agent-creator) — richiesto dall'utente per generare l'agente con un provider vero (Kimi in Docker) invece di simularlo. Bloccato: mancano TUTTI i prerequisiti (vedi What Didn't Work). Non toccato.latest, ma resta pinnabile e contiene openspec/specs/ nel pacchetto. Da valutare tessl plugin unpublish.~/Desktop/agent-registry/: mono-macchina, mono-progetto, esposto a iCloud (copie in conflitto sul file autorevole). Fuori scope dal change fatto, va affrontato in uno dedicato — vedi Open Questions in openspec/changes/archive/2026-07-16-fix-cross-process-coordination/design.md.~/Claude-Projects/prova-agent-registry — progetto di prova usa-e-getta, cancellabile.flock, tenuto solo per la sezione critica dentro un
processo vivo. L'errore della 0.1.0 non era "usare flock", era chiedere a flock di essere
lo stato. Stessa syscall, ruolo opposto → il verdetto dipende dalla durata richiesta.unlink sostituirebbe l'inode e due processi flockerebbero oggetti diversi
— lo stesso identico errore da un'altra porta.tests/conftest.py::race_varied(): senza, i
processi partono scaglionati dallo startup di Python (~50ms) e si serializzano da soli,
nascondendo la race. Con la barriera, test_concurrent_acquire_elects_single_winner
osserva la contesa vera.HOME finta nella fixture isolated_env: rete di sicurezza, non dettaglio. Un codice
che ignora l'override ricade sul default e scrive nella home reale (è successo, vedi sotto)._fmt_list per
verificare che il test riformulato sappia ancora fallire. Un test che non fallisce mai non
verifica nulla..tesslignore. Vedi PROMPTS.md [PUB-001].design.md prevedeva
O_EXCL + os.link(); implementando è emerso il buco. Aggiornati design.md e tasks.md.
È la disciplina spec che fa il suo lavoro.O_EXCL + os.link() con verifica st_ino/st_mtime_ns (previsto in design.md,
scartato): dà un vincitore unico sull'acquisizione ma non risolve il takeover di uno
stale. unlink() agisce sul nome, non sull'inode: non esiste "cancella solo se è ancora
quello che ho letto", e fra il controllo e l'unlink non c'è atomicità. → Non ritentare questa
strada._OPEN_LOCK_FDS, un dict in RAM, mai dal filesystem. L'unico test cross-process teneva il
worker vivo con sleep — l'unico caso in cui flock regge, cioè l'opposto dell'uso reale.
Il test che avrebbe trovato il bug era scritto in modo da evitarlo. → Mai testare la
concorrenza in-process.LOCK_DIR risolta
all'import, quindi ignorava AGENT_REGISTRY_LOCK_DIR e ha scritto 18 lock in
~/Desktop/agent-registry/ (cartella che prima non esisteva). Rimossa, e fixture blindata
con HOME finta. → Nesso causale importante: il design non testabile ha prodotto i test
ciechi (con LOCK_DIR congelata, l'unico isolamento possibile era il monkeypatch, che
funziona solo in-process).tessl plugin pack dal repo includeva .claude/skills/openspec-* e .claude/commands/opsx/*:
skill di OpenSpec, non nostre. Pubblicarle le avrebbe ridistribuite e iniettate nel
progetto di chi installa. Non esiste .tesslignore. → Pubblicare solo da staging.tile.json creato a mano: ridondante e ignorato. .tessl-plugin/plugin.json è
autoritativo, tile.json è sintetizzato al pack. → Non crearlo.openspec/specs/ dentro, prima che
l'utente chiedesse di escluderle → è servita una 0.2.1. → Chiedere cosa deve viaggiare
prima di pubblicare, non dopo.latest non si aggiorna subito: appena pubblicata la 0.2.1, un npx tessl i non pinnato
scaricava ancora la 0.2.0 (moderazione). Si è sistemato da solo in pochi minuti. → Verificare
con un'installazione pulita, non fidarsi del solo plugin info.uvicorn e fastapi non erano installati: la webapp della 0.1.0 non era mai stata
avviata su questa macchina. Il primo tentativo di lancio è fallito in silenzio (log:
No module named uvicorn).cut --output-delimiter è GNU: su macOS non esiste, usare awk. (Errore mio in un
comando di ispezione, non un bug della skill.)hermes non è
nel PATH, Docker/OrbStack non risponde, ~/.hermes/.env non esiste (quindi niente
KIMI_API_KEY), .venv assente. Non è un pezzo mancante: è l'intero setup..agent-registry/registry.md di
~/Claude-Projects/prova-agent-registry senza leggere SKILL.md, poi cercare bug con
riproduzioni reali. Lo scenario è già vivo (Kimi OnWorking, src/oauth.py bloccato)..venv, installare Hermes, mettere KIMI_API_KEY in
~/.hermes/.env). Decisione dell'utente: coinvolge una chiave API.npx tessl plugin unpublish --plugin spec-driven-development/agent-registry@0.2.0
(contiene le spec nel pacchetto; innocua ma pinnabile).~/Desktop: valutare .agent-registry/ nella root del
progetto. Attenzione: cambia il comportamento per gli utenti esistenti.~/Claude-Projects/prova-agent-registry quando non serve più.KIMI_API_KEY andrebbe in ~/.hermes/.env → non esiste ancora..handoff/CLAUDE.md (regole operative), .handoff/WORKFLOW.md (metodo SDD
con le trappole trovate), .handoff/PROMPTS.md (comandi validati, riproduzione dei difetti).openspec/changes/archive/2026-07-16-fix-cross-process-coordination/design.md: stato nel
contenuto del file, flock solo per la sezione critica, lock file mai cancellati..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