[H1][GITHUB-TOOLS]
Dictum: Standardized invocation reduces agent errors.
Invokes gh CLI commands through Python wrapper.
[IMPORTANT] Zero-arg commands default to state=open , limit=30 . System auto-configures OAuth scopes.
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]
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]
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]
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]
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
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
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
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
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
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
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
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]
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]
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}