- workspace: capmetro-monitor, github-notifications, model-selector - workspace-security: vt-monitor, monitor-unauthorized - workspace-home: cron-manager, monitor-unauthorized - extensions: vt-sentinel (VT-Sentinel plugin) Includes sync.sh for pull/push, README, AGENTS.md, .gitignore.
3.3 KiB
3.3 KiB
name, description
| name | description |
|---|---|
| github-notifications | Check GitHub notifications for PR activity and major releases. Filters for PRs where user is mentioned/author, and major releases (v*.0.0) plus all Mirrowel/LLM-API-Key-Proxy dev builds. Tracks state to avoid duplicate alerts. Use for periodic GitHub notification checking via cron jobs or manual checks. |
GitHub Notifications Checker
Efficiently check GitHub notifications with smart filtering and state tracking.
What It Does
- Fetches notifications via GitHub CLI (
gh api) - Filters intelligently:
- PRs where you're mentioned, author, or review requested
- Major releases (v*.0.0 format)
- ALL releases from
Mirrowel/LLM-API-Key-Proxy(including dev builds) - Excludes: rc/pre/beta/alpha/nightly releases
- Tracks state to avoid duplicate notifications
- Returns JSON for easy parsing
Usage
Basic Check
bash skills/github-notifications/scripts/check.sh
Output when nothing new:
{"hasNew":false}
Output with new activity:
{
"hasNew": true,
"newPRs": [
{
"repo": "openclaw/openclaw",
"title": "feat: Add cron silent mode",
"url": "https://api.github.com/repos/openclaw/openclaw/pulls/1234",
"updated": "2026-02-03T14:30:00Z",
"reason": "mention",
"id": "openclaw/openclaw#feat: Add cron silent mode"
}
],
"newReleases": [
{
"repo": "some/repo",
"title": "v2.0.0",
"updated": "2026-02-03T12:00:00Z",
"id": "some/repo@v2.0.0"
}
]
}
Environment Variables
STATE_FILE- Path to state tracking file (default:memory/github-check-state.json)WORKSPACE- Workspace directory (default:/home/node/.openclaw/workspace)
State Tracking
State is stored in memory/github-check-state.json:
{
"lastCheck": "2026-02-03T14:00:00Z",
"seenPRs": ["repo#PR Title", ...],
"seenReleases": ["repo@v1.0.0", ...]
}
Integration with Cron
This skill is designed to work with OpenClaw cron jobs. The script handles all filtering and state management, only calling the LLM when there's actual content to summarize.
Recommended cron setup:
- Script runs periodically (every 4 hours)
- If
hasNew: false, script exits silently - no LLM call, no message - If
hasNew: true, cron job can format the summary and deliver it
This approach:
- ✅ Saves tokens (no LLM call when nothing new)
- ✅ Handles errors gracefully (GitHub API failures logged)
- ✅ Avoids duplicate notifications (state tracking)
- ✅ Faster execution (no LLM parsing)
Error Handling
If GitHub API fails, returns:
{
"error": "GitHub API failed",
"details": "..."
}
Check for .error field in output to detect failures.
Auto-Dismiss Low-Value Notifications
# Dry run (see what would be dismissed)
DRY_RUN=true bash skills/github-notifications/scripts/auto-dismiss.sh
# Actually dismiss
bash skills/github-notifications/scripts/auto-dismiss.sh
Auto-dismisses:
- Title matches: nightly, preview, checkpoint, pre-release, canary, alpha, beta, snapshot
- Releases with empty release notes
Output:
{"dismissed":3,"checked":12}
Requirements
ghCLI authenticatedjqfor JSON parsing- GitHub token with
notificationsscope