
Python-CLI, die GitHub-Repos mit sicheren Standardeinstellungen erstellt — Branch Protection, Dependabot, Secret Scanning und Pre-Flight-Sicherheitsscans — automatisch angewendet.
Erstelle GitHub-Repositories mit sicheren Standardeinstellungen – mit einem einzigen Befehl.
gh-safe-repo create <owner/repo>
Der Branch-Schutz, unveränderliche Tags, abgesicherte Actions, Dependabot, Secret-Scanning mit Push-Schutz und private Schwachstellenmeldung sind alle konfiguriert, bevor du deinen ersten Commit pushst. Dasselbe Tool prüft und repariert bereits vorhandene Repos und scannt lokalen Code auf Secrets, bevor er deine Maschine verlässt.
Status: Der Kern-Workflow ist stabil und durchgängig verifiziert, aber die CLI wird noch überarbeitet. Vor 1.0 sind gelegentliche Breaking Changes zu erwarten.
--local und --fromGitHubs Standardwerte bevorzugen Auffindbarkeit gegenüber Sicherheit: Ein neues Repo hat keinen Branch-Schutz, kein Dependabot und Actions, die in das Repo schreiben und ihre eigenen Pull Requests genehmigen können. gh-safe-repo ändert das und zeigt dir den Plan, bevor irgendetwas angefasst wird:
--public, um es öffentlich zu machen.Jede Einstellung ist konfigurierbar. Die genauen Werte findest du unter Sichere Standardwerte, wie du sie änderst unter Konfiguration.
Voraussetzungen:
gh CLI eingeloggt (gh auth login) oder
GITHUB_TOKEN in der Umgebung gesetztuv zur Installation aus dem QuellcodePATH
gefunden oder über podman/docker ausgeführt; ohne beides wird ein Regex-Scanner verwendet.Das Pushen von Code mit --local oder --from erfordert außerdem deine normalen Git-Anmeldedaten für GitHub. Siehe Code pushen.
git clone https://github.com/AriESQ/gh-safe-repo
cd gh-safe-repo
uv tool install .
gh-safe-repo --help
Zur Ausführung ohne Installation:
uv sync
./gh-safe-repo create <owner/repo>
1. Vorschau. --dry-run führt keine API-Aufrufe aus und erstellt nichts.
$ 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.
Die SKIP-Zeilen zeigen, wie ein privates Repository in einem kostenlosen Plan aussieht. Diese Funktionen erfordern ein öffentliches Repository oder einen kostenpflichtigen Plan, und das Tool teilt dies mit, anstatt stillschweigend zu scheitern. Siehe GitHub plan limitations.
2. Apply. Entfernen Sie --dry-run. Sie sehen denselben Plan, dann eine Bestätigungsaufforderung (--yes überspringt diese).
gh-safe-repo create AriESQ/demo-repo
3. Loslegen. Bei Erfolg erhalten Sie einen Abschnitt Verified (jede Einstellung wird von GitHub zurückgelesen) und ein Banner mit sofort einsetzbaren Befehlen:
╭─ 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-… │
╰──────────────────────────────────────────────────────────╯
Dein bevorzugtes Protokoll (gh config get -h github.com git_protocol) wird
zuerst aufgeführt.
gh-safe-repo create <owner/repo> # private (default)
gh-safe-repo create <owner/repo> --public # public: branch and tag protection apply
Das Repo wird initialisiert, sodass ein Standard-Branch existiert (Branch-Schutz benötigt
einen), dann wird die automatisch generierte README.md gelöscht, damit du sauber startest. Setze
auto_init = true in der Konfiguration, um sie zu behalten. Der Eigentümer muss mit deinem
authentifizierten Konto übereinstimmen; dies schützt vor Fehlern auf Systemen
mit mehreren Konten.
gh-safe-repo create <owner/repo> --local ~/projects/myapp