Skill per agenti AI · Claude · Codex · Antigravity · Apache-2.0

La privacy di un software si legge nel codice.

Una skill per il tuo agente AI che confronta ciò che il sistema fa davvero con ciò che dichiarano informativa, registro e contratti. Trova gli scostamenti, li documenta con file e riga e prepara le domande per titolare, DPO e legale. Non dichiara mai «conforme».

EsaminatoProvatoIgnoto

Versione 1.4.2 · di Samuele Cucurnia e Pietro Previtali · non sostituisce un DPO o un legale

Apache-2.0Libera, anche per uso professionale
Solo libreria standardPython; PDF con reportlab
51 controlli automaticisu app e pagine finte con difetti noti
Mai «conforme»quattro stati dichiarati e domande pronte

Perché esiste

Un'informativa dice cosa dovrebbe succedere. Il codice dice cosa succede.

Molte valutazioni privacy si fermano ai documenti. Ma i dati li tratta il software: chi scrive l'informativa spesso non sa che una pagina carica font da un server americano o che «elimina account» disattiva soltanto.

Una valutazione tipica
Con gdpr-sentinel
«Il sito è conforme al GDPR»
Quattro stati, mai «conforme»: ogni gap con file, riga, norma e rischio per le persone
L'informativa letta da sola
Informativa contro codice: cosa il sistema raccoglie, invia a terzi e conserva davvero
«C'è il banner dei cookie»
Cosa carica il browser prima della scelta: font, analytics, video, mappe
«Conservazione come da policy»
Esiste un job che cancella? Coincide con i tempi dichiarati? E i backup?
Domande generiche al DPO
Domande pronte per titolare, DPO, legale e fornitori, ciascuna con il materiale che serve

Le due skill

Privacy e sicurezza, con lo stesso metodo

gdpr-sentinel funziona da sola. Con appsec-sentinel condivide la cartella di audit e produce un unico report PDF: l'art. 32 passa alla skill gemella.

Privacy

gdpr-sentinel

Valutazione tecnica e documentale GDPR/ePrivacy sul trattamento che il sistema fa davvero.

  • Mappa dei trattamenti reali e matrice dei controlli A–N
  • Informativa contro codice, cookie, fornitori, retention, diritti
  • Gap strutturati, uno per causa, con file e riga
  • Domande per titolare, DPO, legale e fornitori, con il materiale necessario
Sicurezza

appsec-sentinel

Assessment di application e cloud security: codice, configurazione, API, infrastruttura, supply chain.

  • Gate di autorizzazione prima di qualsiasi test attivo
  • Finding con stato: riprodotto, confermato da codice, ipotesi, non verificabile
  • Copertura con denominatori reali: file, endpoint, controlli
  • Il lato sicurezza dell'art. 32, collegato ai gap privacy
Le due skill condividono una cartella di audit e producono un solo report PDF
Dalla privacy alla sicurezza e ritorno: sicurezza <repo> e privacy <repo> passano il lavoro alla skill gemella.

Per chi è

DPO e consulenti privacy

Evidenze tecniche con file e riga da mettere accanto ai documenti, e domande già formulate per titolare e fornitori.

PA, scuole e associazioni

Chi usa un gestionale web e deve capire se l'informativa racconta davvero cosa fa il software con i dati di soci, utenti e dipendenti.

Sviluppatori e team piccoli

Privacy by design prima del rilascio: tracker, log, conservazione, cancellazione ed esportazione controllati nel codice.

Il metodo

Quattordici controlli, dalla mappa dei trattamenti ai casi italiani

Prima un pre-passaggio automatico e sempre uguale (fornitori, conservazione, indizi privacy nel codice), poi ogni controllo compilato a mano rispondendo alle sue domande minime. Un controllo con il solo testo del modello o la sola evidenza automatica non passa la consegna.

  1. Mappa dei trattamenti e ruoliTitolari, responsabili, contitolari; flussi, copie, log, backup, provider AI. Chi è titolare quando il software serve più enti.
  2. Principi e basi giuridicheArtt. 5 e 6: la stessa base giuridica in informativa, registro e codice; il consenso è libero solo se non condiziona il servizio.
  3. Dati particolari, penali, minoriArtt. 9 e 10: dati sanitari, giudiziari, biometrici, minori; dati di terzi raccolti dall'utente.
  4. TrasparenzaArtt. 13 e 14: l'informativa è raggiungibile, completa e coerente con interfacce, contratti e codice?
  5. Cookie e trackingePrivacy e linee guida del Garante: cosa parte prima della scelta, e se il banner offre davvero il rifiuto.
  6. Diritti degli interessatiAccesso, cancellazione, portabilità: cosa resta dopo «elimina account», cosa manca (o è di troppo) nell'esportazione.
  7. Conservazione e cancellazioneJob di cancellazione, soft delete, repliche, log, backup: tempi reali contro tempi dichiarati.
  8. Privacy by design e sicurezzaArtt. 25 e 32: dati personali in log e URL, cifratura dichiarata e reale; collegamento ai finding di appsec-sentinel.
  9. Fornitori e accordiArt. 28: ogni fornitore che riceve dati, il suo accordo e la sua presenza nell'informativa.
  10. Trasferimenti internazionaliCosa esce dal SEE, anche solo l'indirizzo IP del browser verso font e video, e con quale meccanismo.
  11. GovernanceArtt. 24, 30, 35–39: registro, DPIA, nomina e indipendenza del DPO; modelli vuoti contro documenti veri.
  12. Incidenti e data breachArtt. 33–34: rilevazione, registro, notifiche; la decisione resta sempre al titolare.
  13. Profilazione, AI e marketingArt. 22: punteggi e decisioni automatiche, anche sui lavoratori; consensi di marketing non pre-spuntati.
  14. Casi italiani e settorialiControllo a distanza dei lavoratori (art. 4 L. 300/1970), geolocalizzazione, sanità, scuole, ACN/NIS2.

Anatomia di un gap

Ogni gap dice anche quanto è provato

Scegli uno stato: vedi cosa significa e cosa serve per salire al livello successivo. Esempio tratto dal banco di prova pubblico.

ALTAL'informativa esclude trasferimenti fuori dal SEE, ma ogni pagina carica font dai server di Google
Statoconfermato da codice o configurazione
ControlliD (trasparenza) e J (trasferimenti) · art. 13, par. 1, lett. f; art. 44 GDPR
Riferimentisrc/app/layout.tsx:12 · public/privacy.md:31
OsservatoIl layout comune include i font da un dominio Google: l'indirizzo IP di ogni visitatore arriva a un fornitore statunitense prima di qualsiasi scelta.
Rischio per le personeDato inviato a terzi senza che l'informativa lo dica; nessuna possibilità di opporsi.
InterventoServire i font dal proprio dominio, oppure aggiornare informativa e registro e valutare il meccanismo di trasferimento.
DomandaPer il titolare: il caricamento da Google è voluto? Per il DPO: va citato fra i destinatari?
SmentitaVerificatore diverso dall'autore, in una sessione nuova: ha cercato un proxy dei font o un'esclusione nella build e non l'ha trovata (esito «resiste»).

Misure, non promesse

Quanto trova, e quanto due giri si somigliano

Banco di prova pubblico: un portale soci finto con informativa e 15 difetti noti, più 5 esche che sembrano problemi ma non lo sono. Poi giri ripetuti su un gestionale reale, di cui nessuno conosce l'elenco vero dei gap.

15 su 15
difetti noti trovati, in entrambi i giri indipendenti
0 su 5
falsi allarmi sulle esche (cookie tecnico, font locale, coordinate della sede…)
63%
accordo fra due giri sul gestionale reale, dopo la regola «un gap = una causa» (prima 44–46%)
≈ ½
delle cause trovate in totale da più giri, viste da un giro solo: su un'app grande conviene doppio
ControlloDifetto noto del banco (esempi)
EAnalytics caricati senza consenso, mentre l'informativa dice che non si usano strumenti di analisi
I · JMonitoraggio degli errori con dati personali e registrazione della sessione, fornitore non dichiarato
CDiagnosi e certificati raccolti nelle assenze, mentre l'informativa esclude i dati sanitari
F«Elimina il mio account» disattiva soltanto: i dati restano
NPosizione GPS ad alta precisione dei soci a ogni turno, senza tempi di conservazione
MConsenso alla newsletter pre-selezionato

Secondo banco, cambiando linguaggio e titolare: il sito di una scuola in PHP con 15 difetti (dati sanitari di minori nella modulistica e all'albo, atti oltre il periodo di pubblicazione, dati eccedenti in amministrazione trasparente, consenso unico pre-spuntato per le foto, documenti d'identità in una cartella pubblica) e 5 esche. Due giri indipendenti: 15 su 15 ciascuno, 0 falsi allarmi.

Cosa non dicono questi numeri. I banchi usano classi di problemi su cui la skill fa domande esplicite: misura se applica il metodo, non se trova tutto. L'accordo dice quanto due giri si somigliano, non quanto sono completi. Dettagli in BENCHMARK.

Automazioni

Script che accelerano, senza decidere al posto tuo

Solo libreria standard di Python, salvo il PDF (reportlab) e la scansione dei cookie (playwright). Ognuno dichiara il proprio limite; nessuno decide se un trattamento è lecito.

ScriptCosa faLimite dichiarato
gdpr_prepass.pyRegistro e fornitori in bozza, conservazione e indizi privacy in ordine fisso; pre-compila solo l'evidenza tecnica della matriceStesso risultato tra due giri; gli indizi non sono gap
privacy_scan.pyIndizi nel codice per tracker, cookie, consenso, dati particolari, minori, geolocalizzazione, log, diritti, marketing, documentiEuristico: ogni riga va letta
draft_ropa.pyBozza del registro art. 30 e dei fornitori dal codice, anche dai sottodominiTutto «ipotesi»: ruoli e basi giuridiche le conferma il titolare
draft_dpia.pyBozza di scheda DPIA (art. 35) dalla mappa dei trattamenti, con indicatori di necessitàNon è una DPIA e non decide se serve
retention_check.pyEvidenze di cancellazione nel codice e confronto con i tempi dichiaratiL'assenza di evidenza non è una violazione
cookie_scan.pyCookie, storage e terze parti prima del consenso, in un browser pulitoSolo URL locali o con conferma scritta del titolare
check_matrix.pyControlla matrice A–N, mappa e gaps.csv: controlli non compilati, gap senza riga, smentite mancantiMeccanico: non giudica il merito
merge_audits.py · apply_refutations.pyUnisce più giri per causa e misura l'accordo; applica gli esiti della smentita indipendenteUna causa vista da un solo giro non è meno vera
redact_check.py · check_delivery.pySegreti e dati personali nei file; controllo di consegna in un solo passoUn esito pulito non prova che la valutazione sia corretta
build_report_pdf.pyReport PDF in ambra, con gap, domande, piano e confronto fra i giriNessuna percentuale di «conformità»

Gli script sono collaudati contro un'app e un portale finti con difetti noti (tests/run_checks.py). Guida breve in inglese: README.en.md nel repository.

Report PDF

Un documento da consegnare al titolare

Copertina, sintesi, mappa dei trattamenti, matrice A–N, gap con priorità, domande per titolare, DPO, legale e fornitori, piano di intervento. Tema ambra per la privacy; con appsec-sentinel il report è unico. Clic su una pagina per ingrandirla.

Copertina · privacy
Sintesi e priorità
Matrici
Con appsec-sentinel · sicurezza

Opzioni: --sintetico per la direzione, --lang en per le etichette in inglese, --previous per il confronto con una valutazione precedente.

Installazione

Pronta in due minuti

  1. Scarica gdpr-sentinel.skill dalle Release del repository (e, se vuoi il lato sicurezza, appsec-sentinel.skill).
  2. Caricalo da Impostazioni → Capacità → Skill.
  3. Scrivi /gdpr-sentinel statica <repo>: ti chiederà titolare, perimetro e materiale disponibile prima di iniziare.

Comandi

Una parola e si parte

Scrivi il comando dopo il nome della skill, in italiano o in inglese (static = statica, refute = smentita…).

ComandoCosa fa
statica <repo>Valutazione A–N dal codice e dai documenti, solo analisi statica
doppio <repo>Due giri indipendenti, unione per causa e smentita dei gap ad alta priorità
prepass <repo>Pre-passaggio automatico: fornitori, conservazione, indizi privacy
informativa <repo>Informativa contro codice (controllo D)
cookie <repo> [url]Cookie e terze parti prima del consenso (controllo E)
retention <repo>Cancellazione reale e tempi dichiarati, backup compresi (controllo G)
fornitori <repo>Fornitori e trasferimenti, con le domande per gli accordi (controlli I e J)
bozza-registro · bozza-dpiaBozze dell'art. 30 e di una scheda DPIA, tutte «ipotesi da validare»
richiesta-interessatoScheda, controlli e testi di risposta per i diritti degli interessati
domande · smentita · chiudiDomande per chi decide; verifica indipendente dei gap; controllo di consegna
pdf · confronta · sicurezza <repo>Report, confronto fra due valutazioni, passaggio ad appsec-sentinel per l'art. 32

Limiti

Cosa non fa

  • Non dichiara conformità, non dà punteggi «GDPR» e non sostituisce DPO o legale.
  • Non decide basi giuridiche, ruoli o necessità di una DPIA: li propone come ipotesi e chiede.
  • Non vede contratti, registri e nomine che non le dai: li segna «non verificabili».
  • Non visita siti reali senza la conferma scritta del titolare.
  • Non modifica il software né i documenti: propone interventi.
  • Non porta dati personali o documenti del titolare su servizi di terzi.
Uso responsabile. Usala su sistemi tuoi o con l'incarico del titolare. Le valutazioni contengono dettagli sul trattamento di dati personali: tienile fuori da Git e dai repository pubblici.

Domande frequenti

FAQ

Mi dice se il mio sito è conforme al GDPR?No, e di proposito. Riporta cosa ha riscontrato, cosa ha confermato nel codice, cosa resta un'ipotesi e cosa non può verificare, con le domande per chi può decidere. La valutazione finale spetta al titolare con il DPO e, se serve, con un legale.
Serve l'accesso al sito in produzione?No. La modalità statica lavora su codice e documenti. La scansione dei cookie in un browser va fatta solo su URL locali o con conferma scritta del titolare.
La bozza del registro dei trattamenti è il registro dell'art. 30?No: è una bozza ricavata dal codice, tutta in «ipotesi da validare». Ruoli, basi giuridiche, paesi e tempi di conservazione li conferma il titolare.
Perché a volte due giri trovano gap diversi?Su un'app grande ci sono molte cose da guardare e ogni giro ne vede una parte. Per questo esiste doppio: due giri indipendenti, unione per causa e misura dell'accordo. Sul gestionale reale di prova l'accordo è il 63%.
Funziona con altri agenti, non solo Claude?È stata provata una volta su Codex e su Antigravity. Non è ancora una garanzia di compatibilità: la misura con punteggio è in roadmap; percorsi e limiti in docs/ALTRI-AGENTI.md.
Devo installare anche appsec-sentinel?No. Se c'è, i gap del controllo H (sicurezza del trattamento) si collegano ai suoi finding e il report diventa unico.
Dove finiscono i file di lavoro?In una cartella riservata creata fuori dal repository. Segreti e dati personali non entrano nei report: un controllo di redazione lo verifica prima della consegna.