Files
b3nw 3b7d6bb67c Initial commit: custom OpenClaw skills from docker-test
- 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.
2026-02-16 15:32:44 +00:00

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

  1. Fetches notifications via GitHub CLI (gh api)
  2. 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
  3. Tracks state to avoid duplicate notifications
  4. 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:

  1. Script runs periodically (every 4 hours)
  2. If hasNew: false, script exits silently - no LLM call, no message
  3. 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

  • gh CLI authenticated
  • jq for JSON parsing
  • GitHub token with notifications scope