
CLI Python che crea repository GitHub con impostazioni sicure predefinite — protezione dei branch, Dependabot, scansione dei segreti e scansione di sicurezza pre-flight — applicate automaticamente.
Crea repository GitHub con impostazioni sicure predefinite, con un solo comando.
gh-safe-repo create <owner/repo>
La protezione dei branch, i tag immutabili, le Actions bloccate, Dependabot, la scansione dei segreti con push protection e la segnalazione privata delle vulnerabilità sono tutte configurate prima che tu effettui il primo commit. Lo stesso strumento verifica e corregge i repository che possiedi già, e scansiona il codice locale alla ricerca di segreti prima che lasci la tua macchina.
Stato: il flusso di lavoro principale è stabile e verificato end to end, ma la CLI è ancora in fase di rifinitura. Aspettati occasionali breaking change prima della 1.0.
--local e --fromI default di GitHub privilegiano la reperibilità rispetto alla sicurezza: un nuovo repository non ha protezione dei branch, né Dependabot, e le Actions possono scrivere nel repository e approvare le proprie pull request. gh-safe-repo cambia tutto questo, e ti mostra il piano prima di toccare qualsiasi cosa:
--public per renderlo pubblico.Ogni impostazione è configurabile. Vedi Default sicuri per i valori esatti e Configurazione per come modificarli.
Requisiti:
gh CLI autenticato (gh auth login), oppure
GITHUB_TOKEN impostato nell'ambienteuv per installare dal sorgentePATH
o eseguito tramite podman/docker; in assenza di entrambi, viene usato uno scanner regex.Il push del codice con --local o --from richiede anche le tue normali credenziali git per GitHub. Vedi Push del codice.
git clone https://github.com/AriESQ/gh-safe-repo
cd gh-safe-repo
uv tool install .
gh-safe-repo --help
Per eseguire senza installare:
uv sync
./gh-safe-repo create <owner/repo>
1. Anteprima. --dry-run non effettua chiamate API e non crea nulla.
$ gh-safe-repo create AriESQ/demo-repo --dry-run
Configuring AriESQ/demo-repo...
Planned Changes
Type Category Setting Value / Note
------ ----------------- -------------------------------------- ----------------------------------------------------------------
ADD repo repository AriESQ/demo-repo
DELETE file readme README.md
UPDATE actions allowed_actions 'all' → 'selected'
UPDATE actions verified_allowed False → True
UPDATE actions sha_pinning_required False → True
UPDATE actions default_workflow_permissions 'write' → 'read'
UPDATE actions can_approve_pull_request_reviews True → False
SKIP branch_protection branch_protection Branch protection requires a public repo or paid GitHub plan
SKIP security dependabot_alerts Requires a public repo or paid GitHub plan
SKIP security secret_scanning Requires a public repo or paid GitHub plan
SKIP security dependabot_security_updates Requires a public repo or paid GitHub plan
SKIP security private_vulnerability_reporting Requires a public repo or paid GitHub plan
SKIP security enable_dependency_graph Requires a public repo or paid GitHub plan
SKIP security enable_secret_scanning_push_protection Requires a public repo or paid GitHub plan
SKIP tag_protection tag_protection Tag protection rulesets require a public repo or paid GitHub plan
7 change(s) to apply, 8 skipped
Dry run — no changes made.
Le righe SKIP sono ciò che un repo privato su un piano gratuito mostra. Tali funzionalità richiedono un repo pubblico o un piano a pagamento, e lo strumento lo segnala invece di fallire silenziosamente. Vedi Limitazioni del piano GitHub.
2. Applica. Rimuovi --dry-run. Vedi lo stesso piano, poi un prompt di conferma (--yes lo salta).
gh-safe-repo create AriESQ/demo-repo
3. Inizia a lavorare. In caso di successo ottieni una sezione Verified (ogni impostazione riletta da GitHub) e un banner con comandi pronti da incollare:
╭─ Done ───────────────────────────────────────────────────╮
│ Repository created successfully! │
│ https://github.com/AriESQ/demo-repo │
│ │
│ Add remote to existing repo: │
│ SSH : git remote add origin [email protected]:AriESQ/… │
│ HTTPS: git remote add origin https://github.com/… │
│ │
│ Clone fresh: │
│ SSH : git clone [email protected]:AriESQ/demo-repo.git │
│ HTTPS: git clone https://github.com/AriESQ/demo-… │
╰──────────────────────────────────────────────────────────╯
Il tuo protocollo preferito (gh config get -h github.com git_protocol) è
elencato per primo.
gh-safe-repo create <owner/repo> # private (default)
gh-safe-repo create <owner/repo> --public # public: branch and tag protection apply
Il repository viene inizializzato in modo che esista un branch predefinito (la protezione del branch ne richiede uno), poi il file README.md generato automaticamente viene eliminato per iniziare da zero. Imposta auto_init = true nella configurazione per conservarlo. Il proprietario deve corrispondere al tuo account autenticato; questo protegge da errori su sistemi con più account.
gh-safe-repo create <owner/repo> --local ~/projects/myapp