惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
云风的 BLOG
云风的 BLOG
Microsoft Security Blog
Microsoft Security Blog
WordPress大学
WordPress大学
GbyAI
GbyAI
C
Check Point Blog
M
MIT News - Artificial intelligence
T
The Blog of Author Tim Ferriss
Jina AI
Jina AI
博客园 - 【当耐特】
U
Unit 42
月光博客
月光博客
腾讯CDC
Y
Y Combinator Blog
小众软件
小众软件
博客园_首页
Last Week in AI
Last Week in AI
酷 壳 – CoolShell
酷 壳 – CoolShell
The GitHub Blog
The GitHub Blog
博客园 - 聂微东
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
MongoDB | Blog
MongoDB | Blog
博客园 - Franky
T
Tailwind CSS Blog

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
🦞 GitHub PR Watchdog — Never Let a PR Go Cold Again
Precious Pen · 2026-04-25 · via DEV Community

Precious Pendo

Challenge: OpenClaw Build Showcase
Category: Developer Productivity / Automation


The Problem

If you've ever juggled multiple open pull requests, you know the feeling: you open GitHub at the end of the day and realize a reviewer left a comment three hours ago, CI silently failed, or a PR you marked "ready for review" has been sitting untouched for two days.

Context-switching to babysit PRs is expensive. But missing a review window is worse — it stalls your whole team.

I wanted a fix that required zero tab-switching. No dashboards. No email notifications buried under newsletters. Just a message, right where I already am.


What I Built

GitHub PR Watchdog is an OpenClaw skill that monitors your open pull requests and delivers smart, actionable alerts directly to your messaging app of choice — Telegram, Slack, Discord, or WhatsApp.

It runs silently in the background on a heartbeat schedule you control, and reaches out only when something actually needs your attention.


How It Works

The skill connects to GitHub's REST API using a personal access token stored securely in your local OpenClaw config. Every N minutes (configurable — I use 20), it:

  1. Fetches all open PRs across your watched repos
  2. Checks each PR for new activity since your last check:
    • New review comments or change requests
    • CI status changes (pass / fail / pending)
    • PRs that have been open longer than your staleness threshold
    • Approvals that are ready to merge
  3. Sends you a concise digest — only for PRs where something changed
  4. Drafts a suggested response for review comments, which you can approve and post with a single reply

No noise. No duplicates. Just signal.


Example Alert (via Telegram)

🔴 CI Failed — my-app / feat/auth-refresh
  ↳ 3 checks failed | View run →

💬 New Review — my-api / fix/rate-limiter
  @sarah_dev: "Can we extract this into a helper?"
  Suggested reply ready — send "reply 1" to post it

✅ Approved & Ready — my-app / chore/upgrade-deps
  2 approvals | No conflicts | Safe to merge

Enter fullscreen mode Exit fullscreen mode


The Skill File

The core logic lives in a single SKILL.md with a small Node.js runner. OpenClaw handles the scheduling, secret management, and message routing — I just had to write the GitHub API calls and the formatting logic.

# skill.yaml (excerpt)
name: pr-watchdog
description: Monitor GitHub PRs and alert on review activity, CI status, and stale PRs
schedule: every 20 minutes
inputs:
  - GITHUB_TOKEN
  - WATCHED_REPOS       # comma-separated list
  - STALE_THRESHOLD_HRS # default: 24
  - ALERT_CHANNEL       # telegram | slack | discord

Enter fullscreen mode Exit fullscreen mode

Total code: ~180 lines of JavaScript. Most of it is just formatting the output to be readable at a glance.


What Surprised Me

OpenClaw made the hard parts trivial.

Secret management, message routing, scheduling — all handled by the platform. I didn't write a single line of cron syntax or deal with webhook setup. The skill just declares what it needs and OpenClaw wires it together.

The part I didn't expect: once the skill was running, I found myself replying to the bot to take action. Typing merge 3 to merge an approved PR, or reply 2 to post a suggested response — all from Telegram, without opening a browser. That emergent interaction pattern wasn't something I planned; it just fell naturally out of how OpenClaw handles conversational context.


Impact

Since deploying PR Watchdog two weeks ago:

  • Average time-to-first-response on reviews dropped from ~4 hours to ~35 minutes
  • Caught 6 CI failures before they were flagged by teammates
  • Zero PRs have gone stale past 24 hours

Small numbers, but real ones — for a solo dev managing 3 active repos.


Try It Yourself

@openclaw skill install pr-watchdog

Enter fullscreen mode Exit fullscreen mode

Check out the full documentation on ClawHub

🦞 PR Watchdog — OpenClaw Skill

Monitor your GitHub pull requests and get smart Telegram alerts when something needs your attention. No dashboards. No tab switching. Just a message.

What it alerts on

  • 🔴 CI failed (or recovered)
  • 💬 New review comments or change requests
  • ✅ PR approved and ready to merge
  • ⏳ PR gone stale (no activity past your threshold)

Reply to take action






























Reply Action
reply 42 Sounds good, will fix Post a review comment on PR #42
merge 42 Squash-merge PR #42
close 42 Close PR #42
remind 42 in 2h Snooze stale alert for 2 hours
status Summary of all open PRs


Setup

Prerequisites

  • Node.js 22.16+ (Node 24 recommended)
  • OpenClaw installed and running
  • Telegram account

Step 1 — Install OpenClaw

npm install -g openclaw@latest
openclaw onboard --install-daemon

Enter fullscreen mode Exit fullscreen mode

Follow the prompts to set up your workspace and connect your first channel.


Step 2 — Create a Telegram

Requirements: OpenClaw installed, a GitHub personal access token, and a connected messaging channel.


What's Next

  • Multi-user support — share a watchdog across a team with role-based alerting
  • PR health scoring — surface PRs at risk of merge conflicts early
  • Auto-assign reviewers based on CODEOWNERS file