Skip to content

feat: gem-contribute rate <gem|owner/repo> — Good First Repo scoring #49

Description

@cdhagmann

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    v1.xTargeted for a v1.x point release (after v1.0 lands real users)

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions