github-repo-setup
npx machina-cli add skill 0GiS0/ghcp-agent-skills/github-repo-setup --openclawGitHub Repository Setup
Prepare GitHub repositories for publication with proper configuration including privacy settings, metadata, and feature management using GitHub CLI.
â ď¸ Note: This skill keeps repositories simple and minimal. It does NOT add LICENSE files, CODEOWNERS, CONTRIBUTING.md, SECURITY.md, or issue templates. It focuses only on core GitHub repository configuration.
Prerequisites
- GitHub CLI (
gh) installed and authenticated - Repository name defined
- (Optional) Repository description for the about section
Checking GitHub CLI
Before using this skill, verify that GitHub CLI is installed and authenticated:
# Check if gh is installed
which gh
# If not installed, install it (macOS):
brew install gh
# For other systems:
# Windows: choco install gh
# Linux: Follow https://github.com/cli/cli/blob/trunk/docs/install_linux.md
# Authenticate with GitHub (if not already authenticated)
gh auth login
If gh is not installed, you'll see an error. Use the installation command for your operating system above.
Basic setup
Create and configure a new private GitHub repository (always private):
# Create a private repository
gh repo create <repo-name> --private --source=. --remote=origin --push
# Configure repository settings (add description)
gh repo edit <owner>/<repo-name> --description="Your repository description"
Complete setup workflow
Use this comprehensive workflow to set up a private repository with all recommended settings:
#!/bin/bash
# Variables
REPO_NAME="my-repository"
REPO_DESCRIPTION="Brief description of the repository"
OWNER="your-github-username" # or your organization
# Step 0: Check if gh CLI is installed
if ! command -v gh &> /dev/null; then
echo "GitHub CLI is not installed. Install it with:"
echo " macOS: brew install gh"
echo " Other systems: https://github.com/cli/cli#installation"
exit 1
fi
# Step 1: Create private repository (always private)
gh repo create "${REPO_NAME}" \
--private \
--source=. \
--remote=origin \
--push \
--description="${REPO_DESCRIPTION}"
# Step 2: Add description to about section (if needed)
gh repo edit "${OWNER}/${REPO_NAME}" --description="${REPO_DESCRIPTION}"
# Step 3: Disable wikis and discussions
gh repo edit "${OWNER}/${REPO_NAME}" --enable-wiki=false --enable-discussions=false
# Step 4: Open repository in browser
gh repo view "${OWNER}/${REPO_NAME}" --web
Configuration options
Repository type
Always private (default for this skill): All repositories created with this skill are automatically set to private for security and control.
If you need to change visibility later:
gh repo edit <owner>/<repo-name> --visibility private
Repository description
Set the description that appears in the repository's about section:
gh repo edit <owner>/<repo-name> --description "Your repository description"
The description should be concise and clearly communicate the repository's purpose.
Disable features
Disable releases: Releases are managed via branch protection rules and GitHub Actions workflows. To prevent accidental releases:
- Use branch protection on main/master
- Limit who can create releases via repository permissions
Disable environments:
# Environments are disabled by default for private repositories
# For public repositories, restrict environment access:
gh repo edit <owner>/<repo-name> --enable-discussions=false
Additional settings
Branch protection (protect main branch):
gh api repos/<owner>/<repo-name>/branches/main/protection \
-X PUT \
-F enforce_admins=true \
-F require_code_review_count=1 \
-F dismiss_stale_reviews=true
Disable wikis and discussions:
gh repo edit <owner>/<repo-name> --enable-wiki=false --enable-discussions=false
Add topics (optional):
gh repo edit <owner>/<repo-name> --add-topic python --add-topic github
Verifying configuration
Once setup is complete, your repository will open in the browser via gh repo view --web. You can also manually verify settings:
# View repository details
gh repo view <owner>/<repo-name>
# Check specific settings
gh api repos/<owner>/<repo-name> --jq '.{name, private, description, has_releases, has_environments}'
Tips
- Test setup commands on a test repository first
- Use environment variables for repetitive parameters
- Automate setup with the provided script for consistency
- Always verify settings after configuration
- Use
gh repo edit --helpto see all available options
Source
git clone https://github.com/0GiS0/ghcp-agent-skills/blob/main/personal-skills/github-repo-setup/SKILL.mdView on GitHub Overview
Prepare GitHub repositories for publication by configuring privacy, the about description, and essential feature toggles. This skill emphasizes always private repos, adding a concise description, and turning off nonessential features like wikis, discussions, releases, and environments for a minimal setup.
How This Skill Works
The process uses GitHub CLI (gh) to create a private repository, apply an about description, disable nonessential features, and then verify by opening the repo in a browser. It centers on core configuration without adding licenses, CODEOWNERS, or issue templates.
When to Use It
- Preparing a new repository for publication with privacy and metadata
- Ensuring a repository remains private and has a clear about description
- Disabling nonessential features such as wikis and discussions for a minimal setup
- Updating repository settings as part of a secure publication workflow
- Reviewing the repository in a browser after setup
Quick Start
- Step 1: Ensure gh is installed and authenticated
- Step 2: Create a private repository and set its description
- Step 3: Disable nonessential features (wiki, discussions) and verify in browser
Best Practices
- Create the repo with --private to enforce privacy from the start
- Add a concise description for the repository about section
- Disable nonessential features like wiki and discussions for a minimal footprint
- Verify gh is installed and authenticated before running setup
- Use a script-driven workflow for consistency across repos; no licenses or templates are added
Example Use Cases
- Setting up a private internal library with clear metadata for a team
- Initializing a private CLI tool under development with a minimal feature set
- Creating a private starter template repository with a purpose description
- Preparing a private API client repo for internal use with reduced surface area
- Backing up an existing project as a private repo with validated description