I had Claude build a CLI tool that analyzes GitHub forks to surface changes that haven't been submitted as PRs.
The core idea is convergence: when multiple independent forks touch the same file and make the same change, that's a strong signal something needs fixing upstream.
Example: I ran forkwatch against a Ruby API client library and found 11 independent forks all upgrading the same stale dependency. 4 of them made byte-for-byte identical changes to another file.
$ forkwatch analyze maximadeka/convertkit-ruby
convertkit-ruby.gemspec (11 forks converge here)
WebinarGeek +1 -2 — Change gitspec faraday version
- spec.add_runtime_dependency "faraday", "~> 1.0"
- spec.add_runtime_dependency "faraday_middleware", "~> 1.0"
+ spec.add_runtime_dependency "faraday", '>= 2.0'
...
lib/convertkit/connection.rb (4 forks converge here) Most common change pattern:
require "faraday"
-require "faraday_middleware"
require "json"
WebinarGeek, chaiandconversation, alexbndk, excid3
It filters out noise (dependabot, lock files, CI config), groups forks by files changed, and deduplicates identical patches. There's a --json flag for scripting/AI and a --patch flag that outputs a unified diff you can pipe to git apply.Uses the GitHub CLI for auth and one API call per fork. Written in Go.
It would be cool if this was paired with a skill to assist in interpreting results and separate out bug fixes from features.
"Based on the output of running forkwatch against the maximadeka/convertkit-ruby repo, what would you suggest for a PR to that repo?"
That resulted in Claude forking the repo, applying patches from the forks and offering to open this PR: https://github.com/maximadeka/convertkit-ruby/pull/41