Skip to content
Back to skills

Github Tools

ASecurity

Executes GitHub operations via gh CLI wrapper. Use when managing issues, pull requests, workflows, CI runs, projects, releases, cache, labels, or searching repositories and code.

  • 666 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added February 8, 2026
toolspythongobashreactnodegitapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill github-tools --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Github Tools?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Github Tools
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-github-tools/badge)](https://www.skillsdirectory.com/skills/majiayu000-github-tools)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: github-tools
type: complex
depth: base
user-invocable: false
description: >-
  Executes GitHub operations via gh CLI wrapper. Use when managing issues,
  pull requests, workflows, CI runs, projects, releases, cache, labels, or
  searching repositories and code.
---

# [H1][GITHUB-TOOLS]
>**Dictum:** *Standardized invocation reduces agent errors.*

<br>

Invokes gh CLI commands through Python wrapper.

[IMPORTANT] Zero-arg commands default to `state=open`, `limit=30`. System auto-configures OAuth scopes.

```bash
# Zero-arg commands
uv run .claude/skills/github-tools/scripts/gh.py issue-list
uv run .claude/skills/github-tools/scripts/gh.py pr-list
uv run .claude/skills/github-tools/scripts/gh.py run-list
uv run .claude/skills/github-tools/scripts/gh.py workflow-list
uv run .claude/skills/github-tools/scripts/gh.py label-list
uv run .claude/skills/github-tools/scripts/gh.py release-list
uv run .claude/skills/github-tools/scripts/gh.py cache-list
uv run .claude/skills/github-tools/scripts/gh.py project-list
uv run .claude/skills/github-tools/scripts/gh.py repo-view
```

---
## [1][ISSUES]

```bash
uv run .claude/skills/github-tools/scripts/gh.py issue-list --state closed
uv run .claude/skills/github-tools/scripts/gh.py issue-view --number 42
uv run .claude/skills/github-tools/scripts/gh.py issue-create --title "Bug report" --body "Details"
uv run .claude/skills/github-tools/scripts/gh.py issue-comment --number 42 --body "Comment"
uv run .claude/skills/github-tools/scripts/gh.py issue-close --number 42
uv run .claude/skills/github-tools/scripts/gh.py issue-edit --number 42 --title "New title" --labels "bug,urgent"
```

---
## [2][PULL_REQUESTS]

```bash
uv run .claude/skills/github-tools/scripts/gh.py pr-list --state closed
uv run .claude/skills/github-tools/scripts/gh.py pr-view --number 99
uv run .claude/skills/github-tools/scripts/gh.py pr-create --title "Feature" --body "Description" --base main
uv run .claude/skills/github-tools/scripts/gh.py pr-diff --number 99
uv run .claude/skills/github-tools/scripts/gh.py pr-files --number 99
uv run .claude/skills/github-tools/scripts/gh.py pr-checks --number 99
uv run .claude/skills/github-tools/scripts/gh.py pr-merge --number 99
uv run .claude/skills/github-tools/scripts/gh.py pr-review --number 99 --event APPROVE --body "LGTM"
```

---
## [3][WORKFLOWS]

```bash
uv run .claude/skills/github-tools/scripts/gh.py run-list --limit 10
uv run .claude/skills/github-tools/scripts/gh.py run-view --run-id 12345
uv run .claude/skills/github-tools/scripts/gh.py run-logs --run-id 12345 --failed
uv run .claude/skills/github-tools/scripts/gh.py run-rerun --run-id 12345
uv run .claude/skills/github-tools/scripts/gh.py workflow-view --workflow ci.yml
uv run .claude/skills/github-tools/scripts/gh.py workflow-run --workflow ci.yml --ref main
```

---
## [4][SEARCH]

```bash
uv run .claude/skills/github-tools/scripts/gh.py search-repos --query "nx monorepo" --limit 10
uv run .claude/skills/github-tools/scripts/gh.py search-code --query "dispatch table" --limit 10
uv run .claude/skills/github-tools/scripts/gh.py search-issues --query "is:open label:bug" --limit 10
```

---
## [5][DISCUSSIONS]

**Queries**
```bash
uv run .claude/skills/github-tools/scripts/gh.py discussion-list
uv run .claude/skills/github-tools/scripts/gh.py discussion-list --category "D_kwDOCat123" --limit 10 --answered
uv run .claude/skills/github-tools/scripts/gh.py discussion-view --number 42
uv run .claude/skills/github-tools/scripts/gh.py discussion-category-list
uv run .claude/skills/github-tools/scripts/gh.py discussion-pinned
```

**Lifecycle**
```bash
uv run .claude/skills/github-tools/scripts/gh.py discussion-create --category-id "D_kwDOCat123" --title "Topic" --body "Content"
uv run .claude/skills/github-tools/scripts/gh.py discussion-update --discussion-id "D_kwDOABC123" --title "New title" --body "Updated"
uv run .claude/skills/github-tools/scripts/gh.py discussion-delete --discussion-id "D_kwDOABC123"
uv run .claude/skills/github-tools/scripts/gh.py discussion-close --discussion-id "D_kwDOABC123" --reason RESOLVED
uv run .claude/skills/github-tools/scripts/gh.py discussion-reopen --discussion-id "D_kwDOABC123"
```

**Moderation**
```bash
uv run .claude/skills/github-tools/scripts/gh.py discussion-lock --discussion-id "D_kwDOABC123" --reason SPAM
uv run .claude/skills/github-tools/scripts/gh.py discussion-unlock --discussion-id "D_kwDOABC123"
```

**Comments**
```bash
uv run .claude/skills/github-tools/scripts/gh.py discussion-comment --discussion-id "D_kwDOABC123" --body "Comment"
uv run .claude/skills/github-tools/scripts/gh.py discussion-comment --discussion-id "D_kwDOABC123" --body "Reply" --reply-to "DC_kwDOCmt456"
uv run .claude/skills/github-tools/scripts/gh.py discussion-comment-update --comment-id "DC_kwDOCmt456" --body "Edited"
uv run .claude/skills/github-tools/scripts/gh.py discussion-comment-delete --comment-id "DC_kwDOCmt456"
```

**Answers**
```bash
uv run .claude/skills/github-tools/scripts/gh.py discussion-mark-answer --comment-id "DC_kwDOCmt456"
uv run .claude/skills/github-tools/scripts/gh.py discussion-unmark-answer --comment-id "DC_kwDOCmt456"
```

**Labels**
```bash
uv run .claude/skills/github-tools/scripts/gh.py discussion-add-label --discussion-id "D_kwDOABC123" --label-ids '["LA_kwDOLbl789"]'
uv run .claude/skills/github-tools/scripts/gh.py discussion-remove-label --discussion-id "D_kwDOABC123" --label-ids '["LA_kwDOLbl789"]'
```

**Reactions**
```bash
uv run .claude/skills/github-tools/scripts/gh.py discussion-react --subject-id "D_kwDOABC123" --reaction THUMBS_UP
```

[NOTE] Get `discussion-id` from `discussion-view` output `id` field. Get `category-id` from `discussion-category-list`. Get `comment-id` from comment nodes in `discussion-view`. Get `label-ids` from `label-list` (use `node_id` field). Reaction values: `THUMBS_UP`, `THUMBS_DOWN`, `LAUGH`, `HOORAY`, `CONFUSED`, `HEART`, `ROCKET`, `EYES`.

---
## [6][PROJECTS_V2]

```bash
# View/List
uv run .claude/skills/github-tools/scripts/gh.py project-view --project 1
uv run .claude/skills/github-tools/scripts/gh.py project-item-list --project 1
uv run .claude/skills/github-tools/scripts/gh.py project-field-list --project 1

# CRUD
uv run .claude/skills/github-tools/scripts/gh.py project-create --title "Sprint 1"
uv run .claude/skills/github-tools/scripts/gh.py project-close --project 1
uv run .claude/skills/github-tools/scripts/gh.py project-delete --project 1

# Items
uv run .claude/skills/github-tools/scripts/gh.py project-item-add --project 1 --url "https://github.com/owner/repo/issues/42"
uv run .claude/skills/github-tools/scripts/gh.py project-item-edit --id ITEM_ID --project-id PROJECT_NODE_ID --field-id FIELD_ID --single-select-option-id OPT_ID
uv run .claude/skills/github-tools/scripts/gh.py project-item-delete --project 1 --id ITEM_ID
uv run .claude/skills/github-tools/scripts/gh.py project-item-archive --project 1 --id ITEM_ID

# Fields
uv run .claude/skills/github-tools/scripts/gh.py project-field-create --project 1 --name "Priority" --data-type SINGLE_SELECT --single-select-options "High,Medium,Low"
```

[NOTE] Get `ITEM_ID`, `FIELD_ID` from `project-item-list`/`project-field-list`. Get `PROJECT_NODE_ID` from `project-view` output `id` field. Field edit supports: `--text`, `--number`, `--date`, `--single-select-option-id`, `--iteration-id`.

---
## [7][OTHER]

```bash
uv run .claude/skills/github-tools/scripts/gh.py release-view --tag v1.0.0
uv run .claude/skills/github-tools/scripts/gh.py api --endpoint "/repos/{owner}/{repo}/issues" --method GET
```

---
## [8][OUTPUT]

Commands return: `{"status": "success|error", ...}`.

| [INDEX] | [PATTERN]         | [RESPONSE]                           |
| :-----: | ----------------- | ------------------------------------ |
|   [1]   | List commands     | `{items: object[]}`                  |
|   [2]   | View commands     | `{item: object}`                     |
|   [3]   | Mutation commands | `{number: int, action: bool}`        |
|   [4]   | Search commands   | `{query: string, results: object[]}` |
|   [5]   | Diff commands     | `{number: int, diff: string}`        |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.