Summary
Add a rate command that scores a single gem (or owner/repo) against a "Good First Repo" rubric and prints a breakdown. Proof-of-concept for the scoring logic before review (batch mode across a full lockfile) is built.
gem-contribute rate zeitwerk
gem-contribute rate rails/rails
Motivation
Based on Chael's talk ("find a Good First Repo, not just a Good First Issue"). Most of the raw signal is already fetchable via HostAdapter#community_profile and the existing issues fetch — this is mostly a display and aggregation problem.
Signals
Welcoming (from community_profile — one cached call):
- README, CONTRIBUTING, CoC, license, issue template, PR template — present/absent
- GitHub's
health_percentage as a sanity baseline
Active (one additional call — latest commit on default branch):
- Days since last commit on default branch
- Open PR count + recent throughput
Issue quality (from the existing issues fetch):
- Count of open
good first issue / help wanted issues
- Age of the oldest still-open good-first-issue (stale backlog = red flag)
Display
Two labeled axes rather than a single grade — respects the user's judgment and matches the project's "render, don't editorialize" ethos (ADRs 0005 + 0007):
zeitwerk — Good First Repo rating
Welcoming ████████░░ 80% README ✓ CONTRIBUTING ✓ CoC ✗ issue template ✓ PR template ✗
Active ██████████ last commit 2d · 3 open PRs · 2 merged last 30d
3 open "good first issue" issues · oldest 14d
To contribute: gem-contribute fix zeitwerk/<issue#>
Notes
- Composable with future
review command: review will just run rate over every github.com gem in the lockfile.
- Needs an ADR before implementation — signal selection and the two-axis display shape both brush against ADR-0005 and ADR-0007.
- Self-rating use case:
gem-contribute rate gem-contribute as a forcing function to ensure this repo would score well on its own rubric.
- Use
allow_owner_repo: true in resolve_target — already supported by the Workflow mixin.
Out of scope for this issue
- Batch mode across a lockfile (
review command — separate issue)
- Persisting scores or comparing across time
- GitLab / Codeberg (post-v1 host adapters)
Summary
Add a
ratecommand that scores a single gem (orowner/repo) against a "Good First Repo" rubric and prints a breakdown. Proof-of-concept for the scoring logic beforereview(batch mode across a full lockfile) is built.Motivation
Based on Chael's talk ("find a Good First Repo, not just a Good First Issue"). Most of the raw signal is already fetchable via
HostAdapter#community_profileand the existing issues fetch — this is mostly a display and aggregation problem.Signals
Welcoming (from
community_profile— one cached call):health_percentageas a sanity baselineActive (one additional call — latest commit on default branch):
Issue quality (from the existing issues fetch):
good first issue/help wantedissuesDisplay
Two labeled axes rather than a single grade — respects the user's judgment and matches the project's "render, don't editorialize" ethos (ADRs 0005 + 0007):
Notes
reviewcommand:reviewwill just runrateover every github.com gem in the lockfile.gem-contribute rate gem-contributeas a forcing function to ensure this repo would score well on its own rubric.allow_owner_repo: trueinresolve_target— already supported by theWorkflowmixin.Out of scope for this issue
reviewcommand — separate issue)