GitHub
Full-featured GitHub integration via the gh CLI. Manage repositories, issues, pull requests, CI/CD workflows, releases, and make raw API calls.
When to Use
- Managing GitHub repositories (list, create, clone, fork, archive, delete)
- Working with issues (create, edit, close, assign, label, search)
- Managing pull requests (create, review, merge, check CI status)
- Monitoring or triggering GitHub Actions workflows
- Creating or managing releases and release assets
- Making raw GitHub REST or GraphQL API calls
When NOT to Use
- Non-GitHub version control (GitLab, Bitbucket) — use their respective skills
- Local-only git operations (commit, branch, rebase) — use git directly
- GitHub Packages or Container Registry management — use
gh_api for unsupported endpoints
Tools
All tools return { "result": "..." } on success (human-readable formatted text) or { "error": "..." } on failure.
gh_repo
Manage GitHub repositories: list, view, clone, create, fork, archive, delete, rename.
Parameters:
| Name |
Type |
Required |
Description |
action |
string |
yes |
One of: list, view, clone, create, fork, archive, delete, rename |
repo |
string |
no |
Repository in owner/name format |
name |
string |
no |
Repository name (for create) |
description |
string |
no |
Repository description (for create) |
private |
boolean |
no |
Whether the repo should be private (for create) |
limit |
number |
no |
Max results to return (default 30) |
topic |
string |
no |
Filter by topic |
language |
string |
no |
Filter by primary language |
Returns: { "result": "..." } — for view, includes name, visibility, stars, forks, languages, and URL. For list, includes a formatted list of repositories with stars, language, and description.
Examples:
{ "action": "list", "limit": 10 } — list your repositories
{ "action": "create", "name": "my-app", "private": true } — create a private repo
{ "action": "view", "repo": "owner/repo" } — view repo details
gh_issue
Manage GitHub issues: list, view, create, edit, close, reopen, comment, assign, label, search, transfer, pin, lock.
Parameters:
| Name |
Type |
Required |
Description |
action |
string |
yes |
One of: list, view, create, edit, close, reopen, comment, assign, label, search, transfer, pin, lock |
repo |
string |
no |
Repository in owner/name format |
number |
number |
no |
Issue number (for view, edit, close, reopen, comment) |
title |
string |
no |
Issue title (for create, edit) |
body |
string |
no |
Issue body text (for create, edit, comment) |
labels |
string[] |
no |
Labels to apply |
assignees |
string[] |
no |
Users to assign |
milestone |
string |
no |
Milestone name or number |
state |
string |
no |
Filter by state: open, closed, all |
query |
string |
no |
Search query (for search action) |
limit |
number |
no |
Max results (default 30) |
sort |
string |
no |
Sort field: created, updated, comments |
Returns: { "result": "..." } — for view, includes number, title, state, author, labels, assignees, body, and URL. For list, includes a formatted table of issues. For create, includes the new issue number and URL.
Examples:
{ "action": "list", "repo": "owner/repo", "state": "open" } — list open issues
{ "action": "create", "repo": "owner/repo", "title": "Bug: ...", "labels": ["bug"] } — create an issue
{ "action": "search", "query": "is:open label:bug" } — search issues
gh_pr
Manage pull requests: list, view, create, edit, merge, close, reopen, comment, review, diff, checks, ready, draft.
Parameters:
| Name |
Type |
Required |
Description |
action |
string |
yes |
One of: list, view, create, edit, merge, close, reopen, comment, review, diff, checks, ready, draft |
repo |
string |
no |
Repository in owner/name format |
number |
number |
no |
PR number |
title |
string |
no |
PR title (for create, edit) |
body |
string |
no |
PR body (for create, edit, comment, review) |
base |
string |
no |
Base branch (for create) |
head |
string |
no |
Head branch (for create) |
draft |
boolean |
no |
Create as draft PR |
merge_method |
string |
no |
Merge method: merge, squash, rebase |
review_event |
string |
no |
Review event: APPROVE, REQUEST_CHANGES, COMMENT |
labels |
string[] |
no |
Labels to apply |
assignees |
string[] |
no |
Users to assign |
reviewers |
string[] |
no |
Reviewers to request |
state |
string |
no |
Filter: open, closed, merged, all |
limit |
number |
no |
Max results (default 30) |
Returns: { "result": "..." } — for view, includes number, title, state, author, base/head branches, review status, and URL. For diff, includes the full diff text. For checks, includes CI check results.
Examples:
{ "action": "create", "repo": "owner/repo", "title": "Feature X", "head": "feature-x" } — create a PR
{ "action": "merge", "repo": "owner/repo", "number": 99, "merge_method": "squash" } — squash merge
{ "action": "checks", "repo": "owner/repo", "number": 99 } — check CI status
gh_workflow
Manage GitHub Actions: list workflows, view/trigger/cancel/rerun runs, view logs, list/download artifacts.
Parameters:
| Name |
Type |
Required |
Description |
action |
string |
yes |
One of: list, runs, view, trigger, cancel, rerun, logs, artifacts, download |
repo |
string |
no |
Repository in owner/name format |
workflow |
string |
no |
Workflow filename or ID (for trigger, runs) |
run_id |
string |
no |
Run ID (for view, cancel, rerun, logs) |
ref |
string |
no |
Git ref for trigger (branch/tag) |
inputs |
object |
no |
Workflow dispatch inputs |
limit |
number |
no |
Max results (default 10) |
Returns: { "result": "..." } — for runs, includes a formatted list with run ID, status, conclusion, branch, and event. For logs, includes the run's log output. For trigger, confirms the workflow was dispatched.
Examples:
{ "action": "trigger", "repo": "owner/repo", "workflow": "ci.yml", "ref": "main" } — trigger a workflow
{ "action": "logs", "repo": "owner/repo", "run_id": "12345" } — view run logs
gh_release
Manage releases: list, view, create, edit, delete, upload/download assets.
Parameters:
| Name |
Type |
Required |
Description |
action |
string |
yes |
One of: list, view, create, edit, delete, upload, download |
repo |
string |
no |
Repository in owner/name format |
tag |
string |
no |
Release tag (e.g. v1.0.0) |
title |
string |
no |
Release title |
notes |
string |
no |
Release notes |
draft |
boolean |
no |
Create as draft |
prerelease |
boolean |
no |
Mark as prerelease |
generate_notes |
boolean |
no |
Auto-generate release notes |
files |
string[] |
no |
File paths to upload as assets |
target |
string |
no |
Target commitish (branch or SHA) |
limit |
number |
no |
Max results (default 10) |
Returns: { "result": "..." } — for view, includes tag, title, release notes, assets, and URL. For create, confirms the release was created with tag and URL.
Examples:
{ "action": "create", "repo": "owner/repo", "tag": "v1.0.0", "generate_notes": true } — create a release
{ "action": "list", "repo": "owner/repo" } — list releases
gh_api
Make raw GitHub API requests. Supports REST and GraphQL. Use for any endpoint not covered by other tools.
Parameters:
| Name |
Type |
Required |
Description |
endpoint |
string |
yes |
REST API path (e.g. /repos/{owner}/{repo}/branches) or graphql for GraphQL |
method |
string |
no |
HTTP method: GET, POST, PUT, PATCH, DELETE (default GET) |
body |
object |
no |
Request body (for POST, PUT, PATCH) |
query |
string |
no |
GraphQL query string (when endpoint is graphql) |
variables |
object |
no |
GraphQL variables |
jq |
string |
no |
jq expression to filter response |
paginate |
boolean |
no |
Auto-paginate results |
Returns: { "result": "..." } — the raw API response as JSON text, optionally filtered by jq.
Examples:
{ "endpoint": "/repos/owner/repo/branches", "jq": ".[].name" } — list branch names
{ "endpoint": "graphql", "query": "{ viewer { login } }" } — GraphQL query
Notes
- Requires
gh CLI installed and authenticated (gh auth login)
- Requires
git installed
- All tools return
{ "result": "..." } with human-readable formatted text or { "error": "..." } on failure
- Long outputs are truncated to prevent context overflow
1---2name: github3description: GitHub4---5# GitHub67Full-featured GitHub integration via the `gh` CLI. Manage repositories, issues, pull requests, CI/CD workflows, releases, and make raw API calls.89## When to Use1011- Managing GitHub repositories (list, create, clone, fork, archive, delete)12- Working with issues (create, edit, close, assign, label, search)13- Managing pull requests (create, review, merge, check CI status)14- Monitoring or triggering GitHub Actions workflows15- Creating or managing releases and release assets16- Making raw GitHub REST or GraphQL API calls1718## When NOT to Use1920- Non-GitHub version control (GitLab, Bitbucket) — use their respective skills21- Local-only git operations (commit, branch, rebase) — use git directly22- GitHub Packages or Container Registry management — use `gh_api` for unsupported endpoints2324## Tools2526All tools return `{ "result": "..." }` on success (human-readable formatted text) or `{ "error": "..." }` on failure.2728### `gh_repo`2930Manage GitHub repositories: list, view, clone, create, fork, archive, delete, rename.3132**Parameters:**3334| Name | Type | Required | Description |35|------|------|----------|-------------|36| `action` | string | yes | One of: `list`, `view`, `clone`, `create`, `fork`, `archive`, `delete`, `rename` |37| `repo` | string | no | Repository in `owner/name` format |38| `name` | string | no | Repository name (for `create`) |39| `description` | string | no | Repository description (for `create`) |40| `private` | boolean | no | Whether the repo should be private (for `create`) |41| `limit` | number | no | Max results to return (default 30) |42| `topic` | string | no | Filter by topic |43| `language` | string | no | Filter by primary language |4445**Returns:** `{ "result": "..." }` — for `view`, includes name, visibility, stars, forks, languages, and URL. For `list`, includes a formatted list of repositories with stars, language, and description.4647**Examples:**4849- `{ "action": "list", "limit": 10 }` — list your repositories50- `{ "action": "create", "name": "my-app", "private": true }` — create a private repo51- `{ "action": "view", "repo": "owner/repo" }` — view repo details5253---5455### `gh_issue`5657Manage GitHub issues: list, view, create, edit, close, reopen, comment, assign, label, search, transfer, pin, lock.5859**Parameters:**6061| Name | Type | Required | Description |62|------|------|----------|-------------|63| `action` | string | yes | One of: `list`, `view`, `create`, `edit`, `close`, `reopen`, `comment`, `assign`, `label`, `search`, `transfer`, `pin`, `lock` |64| `repo` | string | no | Repository in `owner/name` format |65| `number` | number | no | Issue number (for `view`, `edit`, `close`, `reopen`, `comment`) |66| `title` | string | no | Issue title (for `create`, `edit`) |67| `body` | string | no | Issue body text (for `create`, `edit`, `comment`) |68| `labels` | string[] | no | Labels to apply |69| `assignees` | string[] | no | Users to assign |70| `milestone` | string | no | Milestone name or number |71| `state` | string | no | Filter by state: `open`, `closed`, `all` |72| `query` | string | no | Search query (for `search` action) |73| `limit` | number | no | Max results (default 30) |74| `sort` | string | no | Sort field: `created`, `updated`, `comments` |7576**Returns:** `{ "result": "..." }` — for `view`, includes number, title, state, author, labels, assignees, body, and URL. For `list`, includes a formatted table of issues. For `create`, includes the new issue number and URL.7778**Examples:**7980- `{ "action": "list", "repo": "owner/repo", "state": "open" }` — list open issues81- `{ "action": "create", "repo": "owner/repo", "title": "Bug: ...", "labels": ["bug"] }` — create an issue82- `{ "action": "search", "query": "is:open label:bug" }` — search issues8384---8586### `gh_pr`8788Manage pull requests: list, view, create, edit, merge, close, reopen, comment, review, diff, checks, ready, draft.8990**Parameters:**9192| Name | Type | Required | Description |93|------|------|----------|-------------|94| `action` | string | yes | One of: `list`, `view`, `create`, `edit`, `merge`, `close`, `reopen`, `comment`, `review`, `diff`, `checks`, `ready`, `draft` |95| `repo` | string | no | Repository in `owner/name` format |96| `number` | number | no | PR number |97| `title` | string | no | PR title (for `create`, `edit`) |98| `body` | string | no | PR body (for `create`, `edit`, `comment`, `review`) |99| `base` | string | no | Base branch (for `create`) |100| `head` | string | no | Head branch (for `create`) |101| `draft` | boolean | no | Create as draft PR |102| `merge_method` | string | no | Merge method: `merge`, `squash`, `rebase` |103| `review_event` | string | no | Review event: `APPROVE`, `REQUEST_CHANGES`, `COMMENT` |104| `labels` | string[] | no | Labels to apply |105| `assignees` | string[] | no | Users to assign |106| `reviewers` | string[] | no | Reviewers to request |107| `state` | string | no | Filter: `open`, `closed`, `merged`, `all` |108| `limit` | number | no | Max results (default 30) |109110**Returns:** `{ "result": "..." }` — for `view`, includes number, title, state, author, base/head branches, review status, and URL. For `diff`, includes the full diff text. For `checks`, includes CI check results.111112**Examples:**113114- `{ "action": "create", "repo": "owner/repo", "title": "Feature X", "head": "feature-x" }` — create a PR115- `{ "action": "merge", "repo": "owner/repo", "number": 99, "merge_method": "squash" }` — squash merge116- `{ "action": "checks", "repo": "owner/repo", "number": 99 }` — check CI status117118---119120### `gh_workflow`121122Manage GitHub Actions: list workflows, view/trigger/cancel/rerun runs, view logs, list/download artifacts.123124**Parameters:**125126| Name | Type | Required | Description |127|------|------|----------|-------------|128| `action` | string | yes | One of: `list`, `runs`, `view`, `trigger`, `cancel`, `rerun`, `logs`, `artifacts`, `download` |129| `repo` | string | no | Repository in `owner/name` format |130| `workflow` | string | no | Workflow filename or ID (for `trigger`, `runs`) |131| `run_id` | string | no | Run ID (for `view`, `cancel`, `rerun`, `logs`) |132| `ref` | string | no | Git ref for trigger (branch/tag) |133| `inputs` | object | no | Workflow dispatch inputs |134| `limit` | number | no | Max results (default 10) |135136**Returns:** `{ "result": "..." }` — for `runs`, includes a formatted list with run ID, status, conclusion, branch, and event. For `logs`, includes the run's log output. For `trigger`, confirms the workflow was dispatched.137138**Examples:**139140- `{ "action": "trigger", "repo": "owner/repo", "workflow": "ci.yml", "ref": "main" }` — trigger a workflow141- `{ "action": "logs", "repo": "owner/repo", "run_id": "12345" }` — view run logs142143---144145### `gh_release`146147Manage releases: list, view, create, edit, delete, upload/download assets.148149**Parameters:**150151| Name | Type | Required | Description |152|------|------|----------|-------------|153| `action` | string | yes | One of: `list`, `view`, `create`, `edit`, `delete`, `upload`, `download` |154| `repo` | string | no | Repository in `owner/name` format |155| `tag` | string | no | Release tag (e.g. `v1.0.0`) |156| `title` | string | no | Release title |157| `notes` | string | no | Release notes |158| `draft` | boolean | no | Create as draft |159| `prerelease` | boolean | no | Mark as prerelease |160| `generate_notes` | boolean | no | Auto-generate release notes |161| `files` | string[] | no | File paths to upload as assets |162| `target` | string | no | Target commitish (branch or SHA) |163| `limit` | number | no | Max results (default 10) |164165**Returns:** `{ "result": "..." }` — for `view`, includes tag, title, release notes, assets, and URL. For `create`, confirms the release was created with tag and URL.166167**Examples:**168169- `{ "action": "create", "repo": "owner/repo", "tag": "v1.0.0", "generate_notes": true }` — create a release170- `{ "action": "list", "repo": "owner/repo" }` — list releases171172---173174### `gh_api`175176Make raw GitHub API requests. Supports REST and GraphQL. Use for any endpoint not covered by other tools.177178**Parameters:**179180| Name | Type | Required | Description |181|------|------|----------|-------------|182| `endpoint` | string | yes | REST API path (e.g. `/repos/{owner}/{repo}/branches`) or `graphql` for GraphQL |183| `method` | string | no | HTTP method: `GET`, `POST`, `PUT`, `PATCH`, `DELETE` (default `GET`) |184| `body` | object | no | Request body (for `POST`, `PUT`, `PATCH`) |185| `query` | string | no | GraphQL query string (when endpoint is `graphql`) |186| `variables` | object | no | GraphQL variables |187| `jq` | string | no | jq expression to filter response |188| `paginate` | boolean | no | Auto-paginate results |189190**Returns:** `{ "result": "..." }` — the raw API response as JSON text, optionally filtered by `jq`.191192**Examples:**193194- `{ "endpoint": "/repos/owner/repo/branches", "jq": ".[].name" }` — list branch names195- `{ "endpoint": "graphql", "query": "{ viewer { login } }" }` — GraphQL query196197## Notes198199- Requires `gh` CLI installed and authenticated (`gh auth login`)200- Requires `git` installed201- All tools return `{ "result": "..." }` with human-readable formatted text or `{ "error": "..." }` on failure202- Long outputs are truncated to prevent context overflow