---
name: GitHub Repository Management
slug: github-repository-management
category: DevOps
description: GitHub Repository Management creates, clones, forks, and configures GitHub repositories. Use it to manage remotes, releases, settings, secrets, and deletion from the command line or API.
github: "https://github.com/HezaoHezao/poirot/tree/master/poirot/backend/agents/skill/builtin_skills/software-development/github-repo-management"
language: Python
stars: 187
forks: 9
install: "npx degit https://github.com/HezaoHezao/poirot/tree/master/poirot/backend/agents/skill/builtin_skills/software-development/github-repo-management ~/.claude/skills/github-repo-management"
installs_to: ~/.claude/skills/github-repo-management
source_path: poirot/backend/agents/skill/builtin_skills/software-development/github-repo-management/SKILL.md
collection_size: 37
category_size: 798
collection_url: "https://dirskills.com/collections/HezaoHezao/poirot"
added: 2026-08-12T04:44:30.514Z
last_synced: 2026-08-12T04:44:30.514Z
canonical_url: "https://dirskills.com/skills/github-repository-management"
---

# GitHub Repository Management

GitHub Repository Management creates, clones, forks, and configures GitHub repositories. Use it to manage remotes, releases, settings, secrets, and deletion from the command line or API.

**Install:**

```bash
npx degit https://github.com/HezaoHezao/poirot/tree/master/poirot/backend/agents/skill/builtin_skills/software-development/github-repo-management ~/.claude/skills/github-repo-management
```

## README

# GitHub Repository Management

Create, clone, fork, configure, and manage GitHub repositories.

## Prerequisites

- Authenticated with GitHub (see `github-auth` skill)

## 1. Clone

```bash
# HTTPS
git clone https://github.com/owner/repo.git

# SSH
git clone git@github.com:owner/repo.git

# With gh (auto-forks if you don't have push access)
gh repo clone owner/repo

# Clone + set up remote for fork
gh repo clone owner/repo -- --origin upstream
git remote add origin https://github.com/$GH_USER/repo.git
```

## 2. Create New Repository

```bash
# With gh (creates on GitHub + clones locally)
gh repo create my-project --public --clone --description "My project"

# Private
gh repo create my-project --private --clone

# With git + curl
mkdir my-project && cd my-project && git init
curl -s -X POST \
  -H "Authorization: token $GITHUB_TOKEN" \
  https://api.github.com/user/repos \
  -d '{"name":"my-project","private":true,"description":"My project"}'
git remote add origin https://github.com/$GH_USER/my-project.git
git push -u origin main
```

## 3. Fork

```bash
# With gh (forks + clones + sets up remotes)
gh repo fork owner/repo --clone

# With curl
curl -s -X POST \
  -H "Authorization: token $GITHUB_TOKEN" \
  https://api.github.com/repos/owner/repo/forks

# Manual fork setup
git remote add upstream https://github.com/owner/repo.git
git remote set-url origin https://github.com/$GH_USER/repo.git
```

## 4. Manage Remotes

```bash
# List remotes
git remote -v

# Add remote
git remote add upstream https://github.com/owner/repo.git

# Change remote URL
git remote set-url origin git@github.com:owner/repo.git

# Remove remote
git remote remove upstream

# Sync fork with upstream
git fetch upstream
git checkout main
git merge upstream/main
git push origin main
```

## 5. Releases

```bash
# Create release with gh
gh release create v1.0.0 --title "v1.0.0" --notes "First stable release"

# Create release with assets
gh release create v1.0.0 ./dist/app.tar.gz ./dist/app.zip --title "v1.0.0"

# List releases
gh release list

# View release
gh release view v1.0.0

# Download release assets
gh release download v1.0.0 --pattern "*.tar.gz"

# With curl
curl -s -X POST \
  -H "Authorization: token $GITHUB_TOKEN" \
  https://api.github.com/repos/$OWNER/$REPO/releases \
  -d '{"tag_name":"v1.0.0","name":"v1.0.0","body":"First stable release"}'
```

## 6. Repository Settings

```bash
# With gh
gh repo edit --description "New description"
gh repo edit --enable-issues=false
gh repo edit --default-branch main

# With curl
curl -s -X PATCH \
  -H "Authorization: token $GITHUB_TOKEN" \
  https://api.github.com/repos/$OWNER/$REPO \
  -d '{"description":"New description","default_branch":"main"}'
```

## 7. Secrets (for GitHub Actions)

```bash
# With gh
gh secret set MY_SECRET --body "secret_value"
gh secret set MY_SECRET < secret_file.txt
gh secret list
gh secret delete MY_SECRET

# With curl (requires public key encryption)
# See https://docs.github.com/en/rest/actions/secrets
```

## 8. Delete Repository

```bash
# With gh (requires --yes for confirmation)
gh repo delete owner/repo --yes

# With curl
curl -s -X DELETE \
  -H "Authorization: token $GITHUB_TOKEN" \
  https://api.github.com/repos/$OWNER/$REPO
```

## Pitfalls

- **Fork visibility**: forks inherit the parent's visibility. Can't make a
  private fork of a public repo (without enterprise).
- **Release tags**: tags must exist before creating a release. `gh release
  create` auto-creates the tag if it doesn't exist.
- **Secret encryption**: API secrets require RSA encryption with the repo's
  public key. Use `gh secret set` instead of raw curl.
- **Delete permissions**: deleting a repo requires admin access + cannot be
  undone.
- **Rate limits**: creating many repos rapidly may hit secondary rate limits.
  Add delays.
