This skill provides GitHub REST and GraphQL API access for repository exploration, user investigation, issue management, and starring or watching repositories. It supports both unauthenticated and authenticated read operations with different rate limits. Developers should use it when building agents that need to interact with GitHub data programmatically.
Resources
6Install
npx skillscat add imoonkey/openweb/src-sites-github Install via the SkillsCat registry.
This skill provides GitHub REST and GraphQL API access for repository exploration, user investigation, issue management, and starring or watching repositories. It supports both unauthenticated and authenticated read operations with different rate limits. Developers should use it when building agents that need to interact with GitHub data programmatically.
GitHub
Overview
GitHub REST + GraphQL API — code hosting platform (developer tools archetype).
Workflows
Explore a repository
searchRepos(q)→ pick result →owner,repofromfull_namegetRepo(owner, repo)→ description, stars, languagegetRepoReadme(owner, repo)→ base64-encoded README contentlistIssues(owner, repo)→ open issueslistPullRequests(owner, repo)→ open PRs
Investigate a user's work
getUserProfile(username)→ bio, public_repos, followerssearchRepos(q: "user:username")→ their repositories
File an issue
searchRepos(q)→owner,repofromfull_name(or use known repo)createIssue(owner, repo, title, body)→number,html_url
Manage issues
listIssues(owner, repo)→issue_number,title,statecloseIssue(owner, repo, issue_number ← listIssues)→state: "closed"reopenIssue(owner, repo, issue_number ← listIssues)→state: "open"createComment(owner, repo, issue_number ← listIssues, body)→comment_id,html_urldeleteComment(owner, repo, comment_id ← createComment)→ 204
Star / watch a repo
searchRepos(q)→owner,repofromfull_namestarRepo(owner, repo)→ 204unstarRepo(owner, repo)→ 204watchRepo(owner, repo)→subscribedunwatchRepo(owner, repo)→ 204
Operations
| Operation | Intent | Key Input | Key Output | Notes |
|---|---|---|---|---|
| searchRepos | find repositories | q | total_count, items[].full_name, stargazers_count, language | entry point, paginated |
| getRepo | repository details | owner, repo | full_name, description, stargazers_count, forks_count, language | entry point |
| getUserProfile | user profile | username | login, name, bio, public_repos, followers, following | entry point |
| getRepoReadme | repository README | owner ← getRepo, repo ← getRepo | name, content (base64), encoding | |
| listIssues | repository issues | owner ← getRepo, repo ← getRepo | number, title, state, user.login, labels | paginated |
| listPullRequests | repository PRs | owner ← getRepo, repo ← getRepo | number, title, state, user.login, head.ref, base.ref | paginated |
| listContributors | repository contributors | owner ← getRepo, repo ← getRepo | login, contributions | paginated |
| createIssue | create an issue | owner ← getRepo, repo ← getRepo, title, body | number, html_url | write, CAUTION |
| closeIssue | close an issue | owner, repo, issue_number ← listIssues | data (GraphQL response) | write, CAUTION. Routes through github.com /_graphql |
| reopenIssue | reopen a closed issue | owner, repo, issue_number ← listIssues | data (GraphQL response) | write, CAUTION — reverse of closeIssue. Routes through github.com /_graphql |
| createComment | comment on issue/PR | owner, repo, issue_number ← listIssues, body | id, body, html_url | write, CAUTION |
| deleteComment | delete a comment | owner, repo, comment_id ← createComment | — (204) | write, CAUTION — reverse of createComment |
| forkRepo | fork a repository | owner ← getRepo, repo ← getRepo | full_name | write, CAUTION |
| starRepo | star a repository | owner ← getRepo, repo ← getRepo | — (204) | write, SAFE. (api.github.com — currently rejected by cookie_session, see DOC.md) |
| unstarRepo | unstar a repository | owner ← getRepo, repo ← getRepo | count (watcher count) | write, CAUTION — reverse of starRepo. Routes through github.com rails endpoint |
| watchRepo | watch a repository | owner ← getRepo, repo ← getRepo | count (watcher count) | write, CAUTION. Routes through github.com /notifications/subscribe |
| unwatchRepo | unwatch a repository | owner ← getRepo, repo ← getRepo | count (watcher count) | write, CAUTION — reverse of watchRepo. Routes through github.com /notifications/subscribe |
| graphqlQuery | execute GraphQL | query, variables | data | write (unrestricted mutations possible) |
Quick Start
# Search repositories
openweb github exec searchRepos '{"q":"react language:typescript","per_page":5}'
# Get repository details
openweb github exec getRepo '{"owner":"anthropics","repo":"claude-code"}'
# List issues
openweb github exec listIssues '{"owner":"anthropics","repo":"claude-code","per_page":5}'
# Get user profile
openweb github exec getUserProfile '{"username":"anthropics"}'
# Close an issue
openweb github exec closeIssue '{"owner":"imoonkey","repo":"openweb-test","issue_number":1,"state":"closed"}'
# Comment on an issue
openweb github exec createComment '{"owner":"imoonkey","repo":"openweb-test","issue_number":1,"body":"Looks good!"}'
# Star / unstar a repo
openweb github exec starRepo '{"owner":"imoonkey","repo":"openweb-test"}'
openweb github exec unstarRepo '{"owner":"imoonkey","repo":"openweb-test"}'
# Watch / unwatch a repo
openweb github exec watchRepo '{"owner":"imoonkey","repo":"openweb-test"}'
openweb github exec unwatchRepo '{"owner":"imoonkey","repo":"openweb-test"}'Known Limitations
closeIssue,reopenIssue,watchRepo,unwatchRepo,unstarReporoute through github.com web UI (transport: page) instead of api.github.com REST. They use the user's_gh_sessbrowser cookie + page-scrapedX-Fetch-Nonce+ per-formauthenticity_token. Verify: 5/5 PASS (2026-04-19). The persisted-query hashes for close/reopen are hardcoded and will drift with GitHub web releases — re-capture from a real click via DevTools_graphqlrequest when they break.starRepo,createIssue,createComment,deleteComment,forkRepo,graphqlQuerystill target api.github.com and remain affected by the cookie-session/Bearer mismatch. Same web-rewrite pattern applies (seeadapters/github-web.ts).- Read ops on public repos work without auth (rate-limited to 60 req/h); authenticated read ops via cookies work too (5000 req/h).