thiagowfx's avatar

Β¬ just serendipity πŸ€ (not just serendipity)

β˜… friendly_ping: track your stale GitHub pull requests

β€’ 332 words β€’ 2 min

I released a new tool: friendly_ping, a shell script to list all your open GitHub pull requests (still) waiting for review.

Problem #

When contributing to multiple repositories on GitHub, it’s easy to lose track of which PRs are waiting for reviewer feedback1. You end up doing one of:

  • Manually checking GitHub every few days2
  • Forgetting about contributions entirely3
  • Having no visibility into the review status across various projects

Solution #

friendly_ping queries the GitHub API and groups your open PRs by repository:

bash
$ friendly_ping

helm/helm
  fix(helm-lint): do not validate metadata.name for List resources
  https://github.com/helm/helm/pull/31169
  Reviewers: john, jane

  docs: update helm plugin installation guide
  https://github.com/helm/helm/pull/31204
  Reviewers: jane

loeffel-io/ls-lint
  feat: introduce a json schema file for ls-lint
  https://github.com/loeffel-io/ls-lint/pull/256

(The examples above are semi-fictitious.)

Features #

Filtering:

  • Filter by organization: friendly_ping --org helm (your company)
  • Filter by date range: friendly_ping --created-after "30 days" (find old PRs)
  • Filter by specific repos: friendly_ping thiagowfx/.dotfiles thiagowfx/pre-commit-hooks (or one repo at a time)
  • Filter by reviewer/assignee: friendly_ping --involves alice --detailed (filter by a specific teammate, handy for your 1:1s)

Grouping:

  • By reviewer: friendly_ping --group-by reviewer --detailed
  • By assignee: friendly_ping --group-by assignee --detailed
  • By user (reviewers and assignees combined): friendly_ping --group-by user --detailed

The default grouping is per repo.

Comments:

  • Add “friendly ping” comments to PRs: friendly_ping --comment
  • Custom messages: friendly_ping --comment "Please review when you get a chance. Deadline is approaching!"
  • Automatically skips PRs wherein you already commented
  • Appends context about how long the PR has been waiting (“waiting for 3 days”)

Other modes:

  • JSON output: friendly_ping --json
  • Quiet mode for scripts: friendly_ping --quiet && echo "You have open PRs"

Prerequisites #

  • gh (GitHub CLI) β€” preferred method, or curl as fallback
  • jq β€” for JSON processing
  • Git configured with user.name (or use --user flag)

Repository #

Contributions welcome. This was fully vibe-coded with Amp Code. The CLI design was fully my own.

This could be extended beyond GitHub, naturally.


  1. Some people take forever to review PRs / CLs… ↩︎

  2. Or multiple times a day. ↩︎

  3. The non-urgent ones. ↩︎