{"id":"d032d259-6105-4045-8f4a-73b730507adb","shortId":"4CRdp5","kind":"skill","title":"github","tagline":"GitHub issues, pull requests, repos, code search, and Actions via the gh CLI. Use when the user mentions GitHub, an issue/PR number, a repo, a commit, or code review.","description":"Use the `gh` CLI for everything. The user's OAuth access token is exported\nas `$GH_TOKEN`; `gh` reads it automatically — `gh auth status` will say\n\"not logged in\" because gh keeps no config file in the sandbox, but every\nauthenticated subcommand works regardless.\n\n`gh --help` and `gh <subcommand> --help` are always current. When unsure,\nread the help first instead of guessing flags.\n\n## Two ways to call gh — prefer subcommands\n\n### Style A: First-class subcommands — START HERE\n\n`gh issue`, `gh pr`, `gh repo`, `gh search`, `gh release`, `gh workflow`,\n`gh run`, `gh status`, `gh project`, `gh label`, `gh secret`,\n`gh variable`, `gh gist`. Use these whenever they cover the task; they\noutput formatted text by default and structured JSON via\n`--json <fields> [--jq <expr>]`.\n\n### Style B: Raw REST / GraphQL via `gh api`\n\n`gh api <endpoint>` for REST, `gh api graphql -f query='…'` for GraphQL.\nUseful when no first-class subcommand exists. Notable flags:\n\n- `-X POST|PATCH|PUT|DELETE` — override method (default `GET`, becomes\n  `POST` automatically when `-f`/`-F` is set).\n- `-f key=value` — string field; `-F key=value` — JSON-typed field\n  (`true`/`123`/`@file.json`); both URL-encode for `GET` and JSON-encode\n  for body methods.\n- `-q '<jq>'` — same as `--jq`. With a primitive top-level value (string\n  / number) it prints the raw value (no quotes).\n- `-H 'Accept: application/vnd.github.raw'` — fetch a file's raw bytes\n  instead of the JSON wrapper.\n- `--paginate` — auto-walk `Link: rel=\"next\"`.\n\n## Recipes\n\n### Triage what's on my plate (issues + PRs + reviews + mentions)\n\n```sh\ngh status\n```\n\n### List recent issues in a repo\n\n```sh\ngh issue list --repo OWNER/REPO --limit 20\ngh issue list --repo OWNER/REPO --state all --limit 20 \\\n  --json number,title,state,author,updatedAt,labels --jq '.[]'\n```\n\n### View an issue with comments\n\n```sh\ngh issue view 123 --repo OWNER/REPO --comments\ngh issue view 123 --repo OWNER/REPO --json title,body,comments \\\n  --jq '{title, body, comments: [.comments[] | {author: .author.login, body, createdAt}]}'\n```\n\n### Create / comment / close an issue\n\n```sh\ngh issue create --repo OWNER/REPO --title \"Bug: foo\" --body \"Repro steps…\" --label bug\ngh issue comment 123 --repo OWNER/REPO --body \"LGTM\"\ngh issue close 123 --repo OWNER/REPO --comment \"Fixed in #456\"\n```\n\n### List PRs assigned to / authored by me\n\n```sh\ngh search prs --assignee=@me --state=open --json number,title,repository,updatedAt\ngh search prs --author=@me --state=open\n```\n\n### View a PR with diff and CI checks\n\n```sh\ngh pr view 456 --repo OWNER/REPO\ngh pr diff 456 --repo OWNER/REPO\ngh pr checks 456 --repo OWNER/REPO\n```\n\n### Comment / review / merge a PR\n\n```sh\ngh pr comment 456 --repo OWNER/REPO --body \"Please rebase on main.\"\ngh pr review 456 --repo OWNER/REPO --approve --body \"LGTM\"\ngh pr review 456 --repo OWNER/REPO --request-changes --body \"See nits\"\ngh pr merge 456 --repo OWNER/REPO --squash --delete-branch\n```\n\n### Search code across GitHub\n\n```sh\ngh search code 'someFunction language:typescript' --limit 20 \\\n  --json repository,path,url --jq '.[] | \"\\(.repository.nameWithOwner) \\(.path)\"'\n```\n\n### Read a file from a repo (raw bytes, no base64 dance)\n\n```sh\ngh api \"repos/OWNER/REPO/contents/path/to/file.ts\" \\\n  -H 'Accept: application/vnd.github.raw'\n```\n\n### List recent commits on the default branch\n\n```sh\ngh api \"repos/OWNER/REPO/commits?per_page=20\" \\\n  --jq '.[] | \"\\(.sha[0:7]) \\(.commit.author.date) \\(.commit.message | split(\"\\n\")[0])\"'\n```\n\n### Trigger / inspect Actions workflows\n\n```sh\ngh workflow list --repo OWNER/REPO\ngh workflow run ci.yaml --repo OWNER/REPO --ref main -f key=value\ngh run list --repo OWNER/REPO --workflow ci.yaml --limit 5\ngh run view <RUN_ID> --repo OWNER/REPO --log-failed\n```\n\n### View a repo's metadata\n\n```sh\ngh repo view OWNER/REPO\ngh repo view OWNER/REPO --json description,url,stargazerCount,defaultBranchRef\n```\n\n### GraphQL for things REST can't do (e.g. project board items)\n\n```sh\ngh api graphql -f query='\n  query($owner: String!, $repo: String!, $num: Int!) {\n    repository(owner: $owner, name: $repo) {\n      issue(number: $num) {\n        title\n        timelineItems(first: 50) {\n          nodes { __typename ... on CrossReferencedEvent { source { ... on PullRequest { number title state } } } }\n        }\n      }\n    }\n  }' -f owner=OWNER -f repo=REPO -F num=123\n```\n\n## Notes\n\n- For private repos the user MUST have granted `repo` scope when they\n  authorized the connection at `auth.acedata.cloud/user/connections`.\n  A 404 on a repo you know exists usually means missing scope, not a\n  wrong URL.\n- When `--json` rejects a field name, gh prints the full list of valid\n  fields — re-read the error and pick from there.\n- `gh issue list --search` and `gh search issues` use the GitHub search\n  syntax (`is:open`, `assignee:@me`, `repo:owner/name`, etc.). Use\n  `gh search issues` / `gh search prs` for cross-repo queries; use\n  `gh issue list` for one repo.\n- `gh api --paginate` only works on endpoints that emit a `Link` header;\n  for cursor-paginated endpoints you have to follow `pagination.next`\n  yourself.","tags":["github","skills","acedatacloud","acedata-cloud","agent-skills","agentskills","ai-image","ai-music","ai-tools","ai-video","claude-code","cursor"],"capabilities":["skill","source-acedatacloud","skill-github","topic-acedata-cloud","topic-agent-skills","topic-agentskills","topic-ai-image","topic-ai-music","topic-ai-tools","topic-ai-video","topic-claude-code","topic-cursor","topic-gemini-cli","topic-github-copilot","topic-mcp"],"categories":["Skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/AceDataCloud/Skills/github","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add AceDataCloud/Skills","source_repo":"https://github.com/AceDataCloud/Skills","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 7 github stars · SKILL.md body (5,111 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:14:02.011Z","embedding":null,"createdAt":"2026-05-18T13:21:32.340Z","updatedAt":"2026-05-18T19:14:02.011Z","lastSeenAt":"2026-05-18T19:14:02.011Z","tsv":"'/user/connections':676 '0':538,544 '123':212,322,329,367,375,656 '20':295,304,496,535 '404':678 '456':381,421,427,433,445,456,465,477 '5':574 '50':637 '7':539 'accept':248,520 'access':41 'across':486 'action':10,547 'alway':81 'api':160,162,166,517,531,615,756 'application/vnd.github.raw':249,521 'approv':459 'assign':384 'assigne':393,731 'auth':53 'auth.acedata.cloud':675 'auth.acedata.cloud/user/connections':674 'authent':71 'author':309,341,386,405,670 'author.login':342 'auto':263 'auto-walk':262 'automat':51,193 'b':154 'base64':513 'becom':191 'board':611 'bodi':225,334,338,343,359,370,448,460,471 'branch':483,528 'bug':357,363 'byte':255,511 'call':96 'chang':470 'check':416,432 'ci':415 'ci.yaml':558,572 'class':104,177 'cli':14,34 'close':347,374 'code':7,29,485,491 'comment':317,325,335,339,340,346,366,378,436,444 'commit':27,524 'commit.author.date':540 'commit.message':541 'config':64 'connect':672 'cover':138 'creat':345,353 'createdat':344 'cross':745 'cross-repo':744 'crossreferencedev':641 'current':82 'cursor':769 'cursor-pagin':768 'danc':514 'default':146,189,527 'defaultbranchref':601 'delet':186,482 'delete-branch':481 'descript':598 'diff':413,426 'e.g':609 'emit':763 'encod':217,223 'endpoint':761,771 'error':711 'etc':735 'everi':70 'everyth':36 'exist':179,684 'export':44 'f':168,195,196,199,204,563,617,648,651,654 'fail':582 'fetch':250 'field':203,210,697,706 'file':65,252,506 'file.json':213 'first':88,103,176,636 'first-class':102,175 'fix':379 'flag':92,181 'follow':775 'foo':358 'format':143 'full':702 'get':190,219 'gh':13,33,46,48,52,61,75,78,97,108,110,112,114,116,118,120,122,124,126,128,130,132,159,161,165,280,289,296,319,326,351,364,372,390,402,418,424,430,442,453,462,474,489,516,530,550,555,566,575,589,593,614,699,716,721,737,740,749,755 'gist':133 'github':1,2,20,487,726 'grant':665 'graphql':157,167,171,602,616 'guess':91 'h':247,519 'header':766 'help':76,79,87 'inspect':546 'instead':89,256 'int':625 'issu':3,109,275,284,290,297,315,320,327,349,352,365,373,631,717,723,739,750 'issue/pr':22 'item':612 'jq':152,230,312,336,501,536 'json':149,151,208,222,259,305,332,397,497,597,694 'json-encod':221 'json-typ':207 'keep':62 'key':200,205,564 'know':683 'label':127,311,362 'languag':493 'level':236 'lgtm':371,461 'limit':294,303,495,573 'link':265,765 'list':282,291,298,382,522,552,568,703,718,751 'log':58,581 'log-fail':580 'main':452,562 'mean':686 'mention':19,278 'merg':438,476 'metadata':587 'method':188,226 'miss':687 'must':663 'n':543 'name':629,698 'next':267 'nit':473 'node':638 'notabl':180 'note':657 'num':624,633,655 'number':23,239,306,398,632,645 'oauth':40 'one':753 'open':396,408,730 'output':142 'overrid':187 'owner':620,627,628,649,650 'owner/name':734 'owner/repo':293,300,324,331,355,369,377,423,429,435,447,458,467,479,554,560,570,579,592,596 'page':534 'pagin':261,757,770 'pagination.next':776 'patch':184 'path':499,503 'per':533 'pick':713 'plate':274 'pleas':449 'post':183,192 'pr':111,411,419,425,431,440,443,454,463,475 'prefer':98 'primit':233 'print':241,700 'privat':659 'project':125,610 'prs':276,383,392,404,742 'pull':4 'pullrequest':644 'put':185 'q':227 'queri':169,618,619,747 'quot':246 'raw':155,243,254,510 're':708 're-read':707 'read':49,85,504,709 'rebas':450 'recent':283,523 'recip':268 'ref':561 'regardless':74 'reject':695 'rel':266 'releas':117 'repo':6,25,113,287,292,299,323,330,354,368,376,422,428,434,446,457,466,478,509,553,559,569,578,585,590,594,622,630,652,653,660,666,681,733,746,754 'repos/owner/repo/commits':532 'repos/owner/repo/contents/path/to/file.ts':518 'repositori':400,498,626 'repository.namewithowner':502 'repro':360 'request':5,469 'request-chang':468 'rest':156,164,605 'review':30,277,437,455,464 'run':121,557,567,576 'sandbox':68 'say':56 'scope':667,688 'search':8,115,391,403,484,490,719,722,727,738,741 'secret':129 'see':472 'set':198 'sh':279,288,318,350,389,417,441,488,515,529,549,588,613 'sha':537 'skill' 'skill-github' 'somefunct':492 'sourc':642 'source-acedatacloud' 'split':542 'squash':480 'stargazercount':600 'start':106 'state':301,308,395,407,647 'status':54,123,281 'step':361 'string':202,238,621,623 'structur':148 'style':100,153 'subcommand':72,99,105,178 'syntax':728 'task':140 'text':144 'thing':604 'timelineitem':635 'titl':307,333,337,356,399,634,646 'token':42,47 'top':235 'top-level':234 'topic-acedata-cloud' 'topic-agent-skills' 'topic-agentskills' 'topic-ai-image' 'topic-ai-music' 'topic-ai-tools' 'topic-ai-video' 'topic-claude-code' 'topic-cursor' 'topic-gemini-cli' 'topic-github-copilot' 'topic-mcp' 'triag':269 'trigger':545 'true':211 'two':93 'type':209 'typenam':639 'typescript':494 'unsur':84 'updatedat':310,401 'url':216,500,599,692 'url-encod':215 'use':15,31,134,172,724,736,748 'user':18,38,662 'usual':685 'valid':705 'valu':201,206,237,244,565 'variabl':131 'via':11,150,158 'view':313,321,328,409,420,577,583,591,595 'walk':264 'way':94 'whenev':136 'work':73,759 'workflow':119,548,551,556,571 'wrapper':260 'wrong':691 'x':182","prices":[{"id":"906bf1fb-3e8d-4f86-a4b4-fc02d7aca931","listingId":"d032d259-6105-4045-8f4a-73b730507adb","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"AceDataCloud","category":"Skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:21:32.340Z"}],"sources":[{"listingId":"d032d259-6105-4045-8f4a-73b730507adb","source":"github","sourceId":"AceDataCloud/Skills/github","sourceUrl":"https://github.com/AceDataCloud/Skills/tree/main/skills/github","isPrimary":false,"firstSeenAt":"2026-05-18T13:21:32.340Z","lastSeenAt":"2026-05-18T19:14:02.011Z"}],"details":{"listingId":"d032d259-6105-4045-8f4a-73b730507adb","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"AceDataCloud","slug":"github","github":{"repo":"AceDataCloud/Skills","stars":7,"topics":["acedata-cloud","agent-skills","agentskills","ai-image","ai-music","ai-tools","ai-video","claude-code","cursor","gemini-cli","github-copilot","mcp","npm","openai-codex","roo-code"],"license":"other","html_url":"https://github.com/AceDataCloud/Skills","pushed_at":"2026-05-18T07:35:03Z","description":"Agent Skills for AceDataCloud AI services — music, image, video generation, web search, and more. Compatible with Claude Code, GitHub Copilot, Gemini CLI, and all agentskills.io-compatible agents.","skill_md_sha":"43ee6d3941b1481a84bf4f532dd6f516afb65c07","skill_md_path":"skills/github/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/AceDataCloud/Skills/tree/main/skills/github"},"layout":"multi","source":"github","category":"Skills","frontmatter":{"name":"github","license":"Apache-2.0","description":"GitHub issues, pull requests, repos, code search, and Actions via the gh CLI. Use when the user mentions GitHub, an issue/PR number, a repo, a commit, or code review."},"skills_sh_url":"https://skills.sh/AceDataCloud/Skills/github"},"updatedAt":"2026-05-18T19:14:02.011Z"}}