
safer-dependencies v0.6.0
Livello di sicurezza automatico delle dipendenze per assistenti di codifica AI che controlla i pacchetti per CVE, typosquatting, abbandono, problemi di vetustà delle versioni e integrità degli hash negli ecosistemi npm, PyPI, RubyGems, Maven, Go e Rust.
Dipendenze più sicure per Claude Code
Quando gli assistenti di codifica AI come Claude aggiungono pacchetti al tuo progetto, spesso scelgono qualunque versione sembri giusta — senza verificare se presenta vulnerabilità di sicurezza note, se il pacchetto è ancora mantenuto attivamente, o se il nome è a un refuso di distanza da un clone malevolo.
safer-dependencies è un livello di sicurezza per Claude Code: si posiziona tra Claude e i tuoi file manifest ed esegue automaticamente i suoi controlli di sicurezza: le installazioni vulnerabili vengono bloccate prima di essere eseguite, e una versione rischiosa scritta in un manifest viene corretta su disco subito dopo la scrittura. Rileva e corregge dipendenze rischiose — CVE, typosquatting, pacchetti abbandonati e problemi di età della versione, oltre a un periodo di attesa per le nuove release — su npm, PyPI, RubyGems, Maven, Go, Rust e PHP (Composer). Vedi CAPABILITIES.md per sapere esattamente cosa è e cosa non è coperto.
Nuovo qui? GETTING-STARTED.md ti porta da zero a un'installazione funzionante in circa cinque minuti.
Sicurezza e privacy: vedi SECURITY.md (divulgazione delle vulnerabilità), PRIVACY.md (trasmissione dati, nessuna telemetria) e CAPABILITIES.md (cosa lo strumento difende e cosa no).
Licenza (source-available — NON "open source" OSI): Libero da usare e modificare per i tuoi scopi, incluso l'uso interno aziendale/for-profit e la creazione di prodotti che vendi. È richiesta una licenza a pagamento separata solo per monetizzare il software stesso — venderlo, distribuirlo all'interno di un prodotto o servizio venduto, o offrirne le funzionalità a terzi a pagamento (incluso hosted/SaaS/API). La ridistribuzione e i derivati devono mantenere la licenza e citare questo progetto. Vedi LICENSE (Sezione 4 per la restrizione commerciale); richieste di licenza commerciale via github.com/robert-auger.
Contenuti
- Per iniziare — da zero a installato in circa cinque minuti
- Cosa fa
- Cosa lo attiva
- Cosa c'è in questo repository
- Ecosistemi supportati
- Installazione
- Livelli di avviso
- Come funziona
- Registro di controllo
- Requisiti
- FAQ
Per iniziare
GETTING-STARTED.md ti porta da zero a un'installazione funzionante in circa cinque minuti — prerequisiti, installazione interattiva e verifica. Per il riferimento completo all'installazione (installazioni globali/progetto/manuali, specifiche Windows, la allowlist dei permessi, aggiornamento e disinstallazione), vedi INSTALLATION.md.
Uso quotidiano: una volta installati gli hook, non c'è nulla da eseguire — safer-dependencies funziona automaticamente in background. Quando Claude aggiunge o installa pacchetti, segnala le dipendenze rischiose e aggiorna le versioni vulnerabili a una sicura sul posto — e blocca un'installazione nota come vulnerabile prima ancora che venga eseguita — così i pacchetti non sicuri vengono individuati e corretti senza che tu debba chiederlo. Puoi comunque invocarlo direttamente in qualsiasi momento: "è sicuro [email protected]?", "verifica la configurazione di safer-dependencies", o "mostra le statistiche di safer-dependencies".
Cosa fa
Quando Claude sta per aggiungere un pacchetto al tuo progetto, safer-dependencies intercetta ed esegue 5 controlli:
- Provenienza -- registro ufficiale, rilevamento typosquatting (npm/PyPI/RubyGems/Maven/crates.io), età del pacchetto
- Età della versione -- seleziona la versione stabile più recente pubblicata 7+ giorni fa (finestra di attesa)
- Scansione vulnerabilità -- API OSV, con strumenti nativi dell'ecosistema (npm audit, pip-audit, bundle audit) quando disponibili
- Integrità hash-pin -- per le righe di
requirements.txtPyPI con pin--hash=sha256:..., l'hash dichiarato viene validato rispetto agli hash pubblicati da PyPI; una discrepanza genera un AVVISO - Pacchetti abbandonati e obsoleti -- i pacchetti noti come abbandonati (es.
paperclip,request,pycrypto,github.com/dgrijalva/jwt-go) vengono bloccati immediatamente con un sostituto suggerito; i pacchetti senza release stabile da 2+ anni ricevono un avviso consultivoSTALE:. I pacchetti bloccati vengono rimossi dal manifest e Claude chiederà come procedere; i pacchetti solo obsoleti vengono lasciati al loro posto.
Se vengono rilevati problemi, Claude emette avvisi e può fare un passo indietro verso una versione più sicura. Tutti i controlli vengono registrati in ~/.claude/safer-dependencies-audit-YYYY-MM.log (un file per mese di calendario).
Cosa lo attiva
La skill si attiva automaticamente quando Claude:
Operazioni su manifest / installazione
- Aggiunge o aggiorna un pacchetto in
package.json,requirements.txt,Gemfile,pom.xml,build.gradle,Cargo.toml,go.modo qualsiasi altro manifest supportato - Scrive un
import,requireouseper un pacchetto non già dichiarato nel manifest - Genera o aggiorna un file di lock (controlla solo le voci nuove/modificate)
- Esegue un'installazione del package manager tramite Bash (
npm install,bundle install,poetry install,uv sync,go mod tidy, ecc.) — Pre-Install controlla gli argomenti del comando, Post-Install controlla il lockfile risultante - Scrive un
Dockerfileo un workflow CI (.github/workflows/*.yml, ecc.) che incorpora passaggi di installazione del package manager con versioni pinnate
Domande di selezione e raccomandazione
- Confronti librerie/framework: "dovrei usare axios o node-fetch?", "moment vs dayjs?", "quale è meglio X o Y?"
- Richieste di raccomandazione: "qual è un buon client HTTP per Python?", "raccomanda una libreria di logging per Go", "quale pacchetto gestisce CSV in Node?"
- Selezione della versione: "quale versione di Django dovrei usare?", "ultima Flask stabile?"
Espressioni di intenzione d'uso (pre-aggiunta)
- "Voglio usare FastAPI per questo", "sto pensando di aggiungere Celery", "stiamo valutando Prisma come ORM", "usiamo Tailwind"
Domande su salute e affidabilità dei pacchetti
- "moment.js è ancora mantenuto?", "questa gemma è ancora attiva?", "X è abbandonato?", "X è EOL?", "posso fidarmi di questo pacchetto?", "quando è stato aggiornato l'ultima volta faker?"
Comandi di scaffolding
npx create-react-app,npm create vite@latest,django-admin startproject,rails new,cargo new+cargo add, "bootstrap di un nuovo progetto FastAPI"