| name | github-project |
| description | Set up and coordinate GitHub repositories for team projects. Always search for existing repos first before creating new ones. Supports creating repos, inviting collaborators, branch protection, issues/PRs, and CI/CD monitoring. |
GitHub Project Coordination Skill
This skill enables you to set up and coordinate GitHub repositories for team projects, including creating repos, inviting collaborators, setting up branch protection, and managing issues/PRs.
When to Use
Use this skill when users ask you to:
- Create a new GitHub repository for a project
- Add collaborators to a repository
- Set up branch protection rules
- Create issues for task tracking
- Help with PR workflow and reviews
- Monitor CI/CD status
Prerequisites
The following environment variables must be set:
GH_TOKEN or GITHUB_TOKEN: GitHub personal access token with repo scope
GITHUB_USERNAME: Your GitHub username
The gh CLI is used for all GitHub operations.
Capabilities
0. Search for Existing Repositories (Always Do First)
Before creating new repos, always search for existing repositories to gather context and reference. This helps you understand what's already out there—naming conventions, similar projects, related work.
Important: Even if you find existing repos, you should still create a new repo for the user's request. You (Oliver) may not have contributor access to repos owned by others, so don't assume you can push to or modify found repos.
gh repo list --limit 50
gh search repos "project-name" --owner @me
gh search repos "keyword" --limit 10
gh repo list ORG_NAME --limit 50
gh repo view OWNER/REPO
gh search repos "topic:react language:typescript" --limit 10
gh repo list --json name,description,url --jq '.[] | select(.name | contains("keyword"))'
Purpose of searching:
- Gather context on similar projects, naming patterns, and related work
- Reference existing repos when explaining or setting up new ones
- Avoid naming conflicts with existing repos you own
- Understand the landscape before creating something new
Do NOT:
- Assume you can contribute to repos you don't own
- Skip creating a new repo just because a similar one exists elsewhere
- Try to push to repos without confirmed access
Search Limits: Perform at most 5 search queries before proceeding. Balance efficiency with accuracy—use targeted searches with specific keywords rather than broad sweeps. After gathering context, proceed to create the new repo based on your findings and reasoning.
1. Create a Repository
gh repo create project-name --private --description "Project description"
gh repo create project-name --public --description "Project description"
gh repo create project-name --template owner/template-repo --private
gh repo create project-name --private --clone
2. Invite Collaborators
gh api repos/OWNER/REPO/collaborators/USERNAME -X PUT -f permission=push
gh api repos/OWNER/REPO/collaborators/USERNAME -X PUT -f permission=admin
gh api repos/OWNER/REPO/collaborators/USERNAME -X PUT -f permission=pull
gh api repos/OWNER/REPO/collaborators --jq '.[].login'
3. Set Up Branch Protection
gh api repos/OWNER/REPO/branches/main/protection -X PUT \
-F required_pull_request_reviews='{"required_approving_review_count":1}' \
-F enforce_admins=false \
-F required_status_checks=null \
-F restrictions=null
gh api repos/OWNER/REPO/branches/main/protection -X PUT \
-F required_pull_request_reviews='{"required_approving_review_count":1,"dismiss_stale_reviews":true}' \
-F required_status_checks='{"strict":true,"contexts":["ci/test"]}' \
-F enforce_admins=true \
-F restrictions=null
4. Create Issues for Task Tracking
gh issue create --repo OWNER/REPO \
--title "Implement feature X" \
--body "Description of what needs to be done" \
--assignee alice,bob \
--label "enhancement"
gh issue list --repo OWNER/REPO
gh issue edit ISSUE_NUMBER --repo OWNER/REPO --add-assignee USERNAME
5. Create and Manage Pull Requests
gh pr create --repo OWNER/REPO \
--title "Add feature X" \
--body "Closes #123" \
--base main \
--head feature-branch
gh pr edit PR_NUMBER --repo OWNER/REPO --add-reviewer alice,bob
gh pr status --repo OWNER/REPO
gh pr list --repo OWNER/REPO --state open --json number,title,author,reviewDecision
6. Monitor CI/CD
gh run list --repo OWNER/REPO --limit 5
gh run view RUN_ID --repo OWNER/REPO
gh run watch RUN_ID --repo OWNER/REPO
7. Build and Test Code
After writing code, always compile/build and run tests before committing. Use the appropriate toolchain based on the project language:
Rust:
cargo build
cargo test
Python:
python3 -m py_compile main.py
python3 -m pytest
python3 -m unittest discover
Node.js/TypeScript:
npm install
npm run build
npm test
Go:
go build ./...
go test ./...
If compilation or tests fail, fix the errors before committing. Iterate until the build passes and tests succeed. If you cannot resolve an error after multiple attempts, report the issue to the user with the error details.
Example Workflows
Setting Up a New Project Repository
When a user says: "Create a GitHub repo for our CS 101 project and add Alice, Bob, and Carol"
- Search for context first:
gh repo list --limit 50 | grep -i "cs101\|cs-101"
gh search repos "cs101 final project" --limit 5
Use findings to inform naming and avoid conflicts, but still create a new repo.
- Create the repository:
gh repo create cs101-final-project --private --description "CS 101 Final Project - Group 5"
- Invite collaborators:
gh api repos/YOUR_USERNAME/cs101-final-project/collaborators/alice --method PUT -f permission=push
gh api repos/YOUR_USERNAME/cs101-final-project/collaborators/bob --method PUT -f permission=push
gh api repos/YOUR_USERNAME/cs101-final-project/collaborators/carol --method PUT -f permission=push
- Set up branch protection:
gh api repos/YOUR_USERNAME/cs101-final-project/branches/main/protection -X PUT \
-F required_pull_request_reviews='{"required_approving_review_count":1}' \
-F enforce_admins=false
- Create initial issues:
gh issue create --repo YOUR_USERNAME/cs101-final-project \
--title "Set up project structure" \
--body "Create initial folder structure and README"
- Notify the team:
Send a message via Discord/Slack with:
- Repository URL
- Clone instructions
- Branch protection rules explanation
- How to contribute (create branch, make PR)
Helping with PR Workflow
When a user needs help with a PR:
- Check current status:
gh pr view PR_NUMBER --repo OWNER/REPO
- If CI is failing:
gh run view RUN_ID --repo OWNER/REPO --log-failed
- Request reviews:
gh pr edit PR_NUMBER --repo OWNER/REPO --add-reviewer teammate
- Remind reviewers:
Send a Discord/Slack message to the reviewer
Responding to GitHub Issues
When you receive a GitHub notification about an issue:
- Read the issue:
gh issue view ISSUE_NUMBER --repo OWNER/REPO
- Create a branch and fix:
git checkout -b fix/issue-NUMBER
git add .
git commit -m "Fix issue #NUMBER: description"
git push -u origin fix/issue-NUMBER
- Create a PR:
gh pr create --title "Fix: issue description" --body "Closes #NUMBER"
Best Practices
- Branch naming: Use prefixes like
feature/, fix/, docs/ for clarity
- PR descriptions: Always reference related issues with "Closes #X" or "Relates to #X"
- Review requests: Request reviews from team members after creating a PR
- Small PRs: Encourage breaking large changes into smaller, reviewable PRs
- Commit messages: Use clear, descriptive commit messages
Common Issues
Permission Denied
- Check if the token has the correct scopes
- Verify you're using the correct repository owner/name
Collaborator Invitation Pending
- Collaborators must accept the invitation before they can push
- You can check pending invitations:
gh api repos/OWNER/REPO/invitations
Branch Protection Conflicts
- Users cannot push directly to protected branches
- Must use pull requests for changes