
CLI em Python que cria repositórios GitHub com padrões seguros — proteção de branch, Dependabot, varredura de segredos e varredura de segurança pré-execução — aplicados automaticamente.
Crie repositórios GitHub com padrões seguros aplicados, em um único comando.
gh-safe-repo create <owner/repo>
A proteção de branches, as tags imutáveis, o bloqueio das Actions, o Dependabot, a verificação de segredos com proteção no push e o relato privado de vulnerabilidades estão todos configurados antes de você fazer o primeiro commit. A mesma ferramenta audita e corrige repositórios que você já tem, e verifica o código local em busca de segredos antes que ele saia da sua máquina.
Status: o fluxo de trabalho principal é estável e verificado de ponta a ponta, mas a CLI ainda está sendo aprimorada. Espere mudanças interruptivas ocasionais antes da 1.0.
--local e --fromOs padrões do GitHub favorecem a descoberta em vez da segurança: um novo repositório não tem
proteção de branch, não tem Dependabot e tem Actions que podem escrever no repositório e
aprovar seus próprios pull requests. O gh-safe-repo muda isso e mostra o
plano antes de tocar em qualquer coisa:
--public para torná-lo público.Todas as configurações são configuráveis. Consulte Padrões seguros para os valores exatos e Configuração para saber como alterá-los.
Requisitos:
gh CLI autenticado (gh auth login), ou
GITHUB_TOKEN definido no ambienteuv para instalar a partir do código-fontePATH
ou executado via podman/docker; sem nenhum dos dois, um scanner de regex é usado.Enviar código com --local ou --from também exige suas credenciais git
normais para o GitHub. Consulte Enviando código.
git clone https://github.com/AriESQ/gh-safe-repo
cd gh-safe-repo
uv tool install .
gh-safe-repo --help
Para executar sem instalar:
uv sync
./gh-safe-repo create <owner/repo>
1. Pré-visualização. --dry-run não faz chamadas de API e não cria nada.
$ 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.
As linhas SKIP são o que um repositório privado num plano gratuito parece. Esses
recursos exigem um repositório público ou um plano pago, e a ferramenta informa isso em vez de
falhar silenciosamente. Consulte Limitações do plano do GitHub.
2. Aplicar. Remova --dry-run. Você vê o mesmo plano e, em seguida, um prompt de
confirmação (--yes o ignora).
gh-safe-repo create AriESQ/demo-repo
3. Comece a trabalhar. Em caso de sucesso, você obtém uma seção Verified (cada configuração lida de volta do GitHub) e um banner com comandos prontos para colar:
╭─ 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-… │
╰──────────────────────────────────────────────────────────╯
Seu protocolo preferido (gh config get -h github.com git_protocol) é
listado primeiro.
gh-safe-repo create <owner/repo> # private (default)
gh-safe-repo create <owner/repo> --public # public: branch and tag protection apply
O repositório é inicializado para que exista um branch padrão (a proteção de branch precisa
de um), e então o README.md gerado automaticamente é excluído para que você comece do zero. Defina
auto_init = true na configuração para mantê-lo. O proprietário deve corresponder à sua
conta autenticada; isso protege contra erros em sistemas com múltiplas contas.
gh-safe-repo create <owner/repo> --local ~/projects/myapp