Skip to main content
Generalbendrucker

github:notifications

Managing GitHub notifications inbox. Use when listing, filtering, or triaging notifications (mark read, done, unsubscribe).

Stars
13
Source
bendrucker/claude
Updated
2026-05-31
Slug
bendrucker--claude--notifications
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/bendrucker/claude/HEAD/plugins/github/skills/notifications/SKILL.md -o .claude/skills/notifications.md

Drops the SKILL.md into .claude/skills/notifications.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

GitHub Notifications

Manage the inbox via GraphQL (list) and REST (actions). Requires notifications scope.

Listing (Inbox)

Query: graphql/inbox.graphql

gh api graphql -f query="$(cat graphql/inbox.graphql)" \
  --jq '[.data.viewer.notificationThreads.nodes[] | select(.isDone == false)]'

Fields

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)

Actions

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 } }'

Filtering

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)]'

Bulk Mark Done

gh api graphql -f query='...' --jq '.data.viewer.notificationThreads.nodes[] | select(.isDone == false) | .summaryId' | \
  xargs -I {} gh api -X DELETE /notifications/threads/{}