
CLI Python qui crée des dépôts GitHub avec des paramètres par défaut sécurisés — protection des branches, Dependabot, scanning des secrets et analyse de sécurité préalable — appliqués automatiquement.
Créez des dépôts GitHub avec des paramètres par défaut sécurisés appliqués, en une seule commande.
gh-safe-repo create <owner/repo>
La protection des branches, les tags immuables, les Actions verrouillées, Dependabot, l'analyse des secrets avec protection push et le signalement privé des vulnérabilités sont tous configurés avant que vous ne poussiez votre premier commit. Le même outil audite et corrige les dépôts que vous possédez déjà, et analyse le code local à la recherche de secrets avant qu'il ne quitte votre machine.
Statut : le workflow principal est stable et vérifié de bout en bout, mais la CLI est encore en cours de finalisation. Attendez-vous à d'occasionnels changements cassants avant la 1.0.
--local et --fromLes valeurs par défaut de GitHub privilégient la découvrabilité à la sécurité : un nouveau dépôt n'a ni
protection de branche, ni Dependabot, et des Actions qui peuvent écrire dans le dépôt et
approuver leurs propres pull requests. gh-safe-repo change cela, et vous montre
le plan avant de toucher à quoi que ce soit :
--public pour le rendre public.Chaque paramètre est configurable. Voir Valeurs par défaut sûres pour les valeurs exactes et Configuration pour savoir comment les modifier.
Prérequis :
gh connectée (gh auth login), ou
GITHUB_TOKEN défini dans l'environnementuv pour installer depuis les sourcesPATH
ou exécuté via podman/docker ; sans l'un ou l'autre, un scanner à expressions régulières est utilisé.Pousser du code avec --local ou --from nécessite également vos identifiants git
habituels pour GitHub. Voir Pousser du code.
git clone https://github.com/AriESQ/gh-safe-repo
cd gh-safe-repo
uv tool install .
gh-safe-repo --help
Pour exécuter sans installation :
uv sync
./gh-safe-repo create <owner/repo>
1. Aperçu. --dry-run n'effectue aucun appel API et ne crée rien.
$ 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.
Les lignes SKIP correspondent à ce à quoi ressemble un dépôt privé sur un plan gratuit. Ces fonctionnalités nécessitent un dépôt public ou un plan payant, et l'outil l'indique plutôt que d'échouer silencieusement. Voir Limitations des plans GitHub.
2. Appliquer. Retirez --dry-run. Vous voyez le même plan, puis une invite de confirmation (--yes la contourne).
gh-safe-repo create AriESQ/demo-repo
3. Commencez à travailler. En cas de succès, vous obtenez une section Verified (chaque paramètre relu depuis GitHub) et une bannière avec des commandes prêtes à coller :
╭─ 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-… │
╰──────────────────────────────────────────────────────────╯
Votre protocole préféré (gh config get -h github.com git_protocol) est
listé en premier.
gh-safe-repo create <owner/repo> # private (default)
gh-safe-repo create <owner/repo> --public # public: branch and tag protection apply
Le dépôt est initialisé afin qu'une branche par défaut existe (la protection de branche en a besoin), puis le fichier README.md généré automatiquement est supprimé pour que vous partiez d'une base propre. Définissez auto_init = true dans la configuration pour le conserver. Le propriétaire doit correspondre à votre compte authentifié ; cela protège contre les erreurs sur les systèmes multi-comptes.