GitHub Operations
Manage all GitHub operations using MCP tools (preferred) and GitHub CLI (fallback).
MCP-first: Use MCP tools for issues and PRs — no extra auth, works everywhere. CLI fallback: Use
ghCLI for Actions, releases, repos, secrets, and API calls.
MCP Priority Protocol (Mandatory)
Follow this protocol for every GitHub task:
- •Identify required operation (issue, PR, search, Actions, release, repo admin, etc.)
- •Check whether an MCP tool exists for that exact operation
- •If MCP exists, use MCP only
- •Use
ghCLI only when no equivalent MCP write tool is available
Devcontainer Reliability Rule
- •Do not run
gh auth loginorgh auth statusin devcontainer workflows unless the user explicitly asks for CLI auth troubleshooting. - •For PR/issue creation, rely on MCP tool authentication by default.
- •If MCP write tools are missing in the current environment, report the limitation explicitly and provide a no-auth fallback path (for example, PR compare URL).
Issues (MCP Tools)
Available Tools
| Tool | Purpose |
|---|---|
mcp_github_list_issues | List repository issues |
mcp_github_issue_read | Fetch issue details |
mcp_github_issue_write | Create/update issues |
mcp_github_search_issues | Search issues |
mcp_github_add_issue_comment | Add comments |
Creating Issues
Required: owner, repo, title, body
Optional: labels, assignees, milestone
Title guidelines:
- •Prefix with type:
[Bug],[Feature],[Docs] - •Be specific and actionable
- •Keep under 72 characters
Body templates by type:
| User says | Template sections |
|---|---|
| Bug, error, broken | Description, Steps to Reproduce, Expected/Actual, Environment |
| Feature, enhancement | Summary, Motivation, Proposed Solution, Acceptance Criteria |
| Task, chore, refactor | Description, Tasks checklist, Acceptance Criteria |
Common Labels
| Label | Use For |
|---|---|
bug | Something isn't working |
enhancement | New feature or improvement |
documentation | Documentation updates |
high-priority | Urgent issues |
Pull Requests (MCP Tools)
Available Tools
| Tool | Purpose |
|---|---|
mcp_github_create_pull_request | Create new PRs |
mcp_github_merge_pull_request | Merge PRs |
mcp_github_update_pull_request | Update PR details |
mcp_github_pull_request_review_write | Create/submit reviews |
mcp_github_request_copilot_review | Copilot code review |
mcp_github_search_pull_requests | Search PRs |
mcp_github_list_pull_requests | List PRs |
Creating PRs
Required: owner, repo, title, head (source branch), base (target branch)
Optional: body, draft
Title guidelines (conventional commit):
- •
feat:,fix:,docs:,refactor: - •Be specific, under 72 characters
Body sections: Summary, Changes, Testing, Checklist
Before creating: Search for PR templates in
.github/PULL_REQUEST_TEMPLATE/orpull_request_template.mdand use if found.
Merging PRs
Required: owner, repo, pullNumber
Optional: merge_method (squash | merge | rebase), commit_title
Default: Use squash unless user specifies otherwise.
Reviewing PRs
Use mcp_github_pull_request_review_write with method: "create":
| Event | Use When |
|---|---|
APPROVE | Changes ready to merge |
REQUEST_CHANGES | Issues must be fixed |
COMMENT | Feedback without blocking |
Complex review workflow:
- •
create(pending review) - •
add_comment_to_pending_review(line comments) - •
submit_pending(finalize)
Repositories (gh CLI)
# Create gh repo create my-project --public --clone --gitignore node --license mit # Clone / Fork gh repo clone owner/repo gh repo fork owner/repo --clone # View / Edit gh repo view owner/repo --json name,description gh repo edit --default-branch main --delete-branch-on-merge # Sync fork gh repo sync # Set default repo (avoid --repo flag) gh repo set-default owner/repo
GitHub Actions (gh CLI)
Workflows
gh workflow list gh workflow run ci.yml --ref main gh workflow enable ci.yml gh workflow disable ci.yml
Runs
gh run list --workflow ci.yml --limit 5 gh run watch <run-id> gh run view <run-id> --log gh run rerun <run-id> gh run rerun <run-id> --failed # Only failed jobs gh run download <run-id> --dir ./artifacts gh run cancel <run-id>
CI/CD Pattern
gh workflow run ci.yml --ref main RUN_ID=$(gh run list --workflow ci.yml --limit 1 --json databaseId --jq '.[0].databaseId') gh run watch "$RUN_ID" gh run download "$RUN_ID" --dir ./artifacts
Releases (gh CLI)
# Create gh release create v1.0.0 --title "v1.0.0" --notes "Release notes" gh release create v1.0.0 --generate-notes # Auto-generate notes gh release create v1.0.0 ./dist/*.tar.gz # With assets # List / View / Download gh release list gh release view v1.0.0 gh release download v1.0.0 --dir ./download # Delete gh release delete v1.0.0 --yes
Secrets & Variables (gh CLI)
# Secrets gh secret set MY_SECRET --body "secret_value" gh secret list gh secret delete MY_SECRET # Variables gh variable set MY_VAR --body "value" gh variable list gh variable get MY_VAR
API Requests (gh CLI)
# GET
gh api /user
gh api /repos/owner/repo --jq '.stargazers_count'
# POST
gh api --method POST /repos/owner/repo/issues \
--field title="Issue title" \
--field body="Issue body"
# Pagination
gh api /user/repos --paginate
# GraphQL
gh api graphql -f query='{
viewer { login repositories(first: 5) { nodes { name } } }
}'
IMPORTANT:
gh api -fdoes not support object values. Use multiple-fflags with hierarchical keys and string values instead.
Auth & Search (gh CLI)
# Auth gh auth login gh auth status gh auth token # Labels gh label create bug --color "d73a4a" --description "Bug report" gh label list # Search gh search repos "azure static web apps" --language javascript gh search code "TableClient" --repo owner/repo gh search issues "label:bug is:open" --repo owner/repo
Global Flags
| Flag | Description |
|---|---|
--repo OWNER/REPO | Target specific repository |
--json FIELDS | Output JSON with fields |
--jq EXPRESSION | Filter JSON output |
--web | Open in browser |
--paginate | Fetch all pages |
DO / DON'T
- •DO: Use MCP tools first for issues and PRs
- •DO: Use
ghCLI for Actions, releases, repos, secrets, API - •DO: Explain when MCP write tools are unavailable and why fallback is required
- •DO: Confirm repository context before creating issues/PRs
- •DO: Search for existing issues/PRs before creating duplicates
- •DO: Check for PR templates before creating PRs
- •DO: Ask for missing critical information rather than guessing
- •DON'T: Create issues/PRs without confirming repo owner and name
- •DON'T: Merge PRs without user confirmation
- •DON'T: Use
ghCLI for issues/PRs when MCP tools are available - •DON'T: Attempt
ghauth flows in devcontainers unless explicitly requested
References
- •GitHub CLI Manual: https://cli.github.com/manual/
- •REST API: https://docs.github.com/en/rest
- •GraphQL API: https://docs.github.com/en/graphql
Conductor Integration
The Conductor invokes this skill for issue and PR management between workflow steps and for CI status checks. Trigger keywords:
- •
create issue— create a GitHub issue for a task - •
create pr— create a pull request for completed work - •
check ci— check CI/CD workflow status
When invoked by the Conductor, this skill handles GitHub operations such as creating issues for discovered tasks (Step 1), opening PRs for code changes (Step 4), checking CI status after deployment (Step 6), and managing labels and milestones throughout the workflow.