Skip to content

feat: preferred_labels config for non-canonical good-first-issue labels#60

Merged
cdhagmann merged 5 commits intomainfrom
preferred-labels-config
May 5, 2026
Merged

feat: preferred_labels config for non-canonical good-first-issue labels#60
cdhagmann merged 5 commits intomainfrom
preferred-labels-config

Conversation

@cdhagmann
Copy link
Copy Markdown
Owner

@cdhagmann cdhagmann commented May 4, 2026

Summary

Adds a preferred_labels config key so users can customise which issue labels scan and issues treat as "contributable". Defaults to ["good first issue", "good-first-issue", "help wanted"]. Because GitHub's label API applies AND semantics when multiple labels are joined in one request, each label is fetched separately and results are deduped client-side by issue number.

Linked issue / ADR

Closes #1. Touches ADR-0005 (label normalisation is still out of scope — this is label selection, not normalisation).

Working agreement

  • Single concern (multi-concern PRs get bounced — see CLAUDE.md)
  • bin/rubocop and bin/rspec pass locally
  • New behavior has a test; bug fix has a regression test
  • Async work goes through Rooibos Commands (no direct threads / Async / synchronous shellouts)

Test plan

  • bundle exec rspec spec/gem_contribute/config_spec.rb — preferred_labels default, array override, comma-string coercion
  • bundle exec rspec spec/gem_contribute/cli/scan_spec.rb spec/gem_contribute/cli/issues_spec.rb — per-label fetch, dedup
  • bundle exec rspec — all passing
  • bin/rubocop — no offenses

Notes for reviewer

gem-contribute config set preferred_labels "bug,help wanted" coerces the comma-separated string to an array at write time, so the YAML is always an array. Reading always returns an Array regardless.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 4, 2026

✅ PR template check passed. Thanks for filling out the template.

Chris Hagmann and others added 2 commits May 5, 2026 08:36
…ls (closes #1)

Adds `preferred_labels` config key (default: "good first issue",
"good-first-issue", "help wanted"). scan and issues now query each
label separately and dedupe results by issue number, so repos using
label variants like "Good first issue 🎉" surface in scan output
without additional configuration.

Set with: gem-contribute config set preferred_labels "label1,label2"

Also updates CHANGELOG for this change and for #10 (owner-of-upstream
message) which shipped in a parallel PR.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
The Configuration table previously only listed clone_root. Expand it to
cover all five keys (clone_root, editor, ai_tool, comment_on_fix,
preferred_labels) with defaults and usage notes. Add YAML example for
comment_on_fix_overrides. Update scan/issues command descriptions to say
"contributable" rather than hard-coding "good first issue".

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
@cdhagmann cdhagmann force-pushed the preferred-labels-config branch from c9990fa to 9ae5fac Compare May 5, 2026 12:37
Chris Hagmann and others added 3 commits May 5, 2026 08:40
Check off #1, #10, #40#43, #45, #54 in the Phase 6 checklist with PR
references. Update "In flight" (PR #55 long merged), "What hasn't
started" (README/CONTRIBUTING done; #9 and plugin smoke deferred), and
"What's already done" to summarise the Phase 6 landing.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
…sues #63 and #64

Q3a resolved: bare bundle/gem contribute runs scan, matching bundle fund.
Tracked as #63. Update OPEN_QUESTIONS and ROADMAP with the decision.
Issue #64 opened for visual identity / branding design.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
@cdhagmann cdhagmann merged commit b3e65f2 into main May 5, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add preferred_labels config so non-canonical good-first-issue labels are caught

1 participant