Help us improve
Share bugs, ideas, or general feedback.
From github
Manages GitHub notifications inbox: lists via GraphQL/gh api, triages (mark read/done/unsubscribe/mute) via REST, filters with jq. Use for inbox management.
npx claudepluginhub bendrucker/claude --plugin githubHow this skill is triggered — by the user, by Claude, or both
Slash command
/github:notificationsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Manage the inbox via GraphQL (list) and REST (actions). Requires `notifications` scope.
Polls GitHub notifications and handles items that dedicated workflows miss — fork PR comments, cross-repo mentions, and stale unanswered items. Runs on a schedule.
Manages Linear notifications inbox: lists unread notifications, filters by type or status, archives items, marks all read using bash and Linear GraphQL API. Useful for triaging alerts.
Fetches unread GitHub PR review requests filtered by team. Use to find PRs needing review, check team queue, or show your review requests.
Share bugs, ideas, or general feedback.
Manage the inbox via GraphQL (list) and REST (actions). Requires notifications scope.
Query: graphql/inbox.graphql
gh api graphql -f query="$(cat graphql/inbox.graphql)" \
--jq '[.data.viewer.notificationThreads.nodes[] | select(.isDone == false)]'
| Field | Description |
|---|---|
id | GraphQL node ID for mutations |
summaryId | Numeric ID for REST actions |
isUnread | Unread status |
isDone | Done status (hidden from inbox) |
isSaved | Saved for later |
reason | ASSIGN, AUTHOR, COMMENT, MANUAL, MENTION, REVIEW_REQUESTED, SUBSCRIBED, CI_ACTIVITY, STATE_CHANGE |
url | Browser URL (direct, no transform needed) |
REST (use summaryId):
gh api -X PATCH /notifications/threads/{summaryId} # Mark read
gh api -X DELETE /notifications/threads/{summaryId} # Mark done
gh api -X PUT /notifications # Mark all read
gh api -X DELETE /notifications/threads/{summaryId}/subscription # Unsubscribe
gh api -X PUT /notifications/threads/{summaryId}/subscription -f ignored=true # Mute
GraphQL mutations (use id):
gh api graphql -f query='mutation { markNotificationAsUnread(input: {id: "{id}"}) { success } }'
gh api graphql -f query='mutation { markNotificationAsUndone(input: {id: "{id}"}) { success } }'
Filter in jq after the GraphQL query:
# By reason
... --jq '[.data.viewer.notificationThreads.nodes[] | select(.isDone == false and .reason == "MENTION")]'
# Unread only
... --jq '[.data.viewer.notificationThreads.nodes[] | select(.isDone == false and .isUnread == true)]'
gh api graphql -f query='...' --jq '.data.viewer.notificationThreads.nodes[] | select(.isDone == false) | .summaryId' | \
xargs -I {} gh api -X DELETE /notifications/threads/{}