Skip to content

Proposal: Auto-assign contributors to help wanted issues via /assign command #47

@rtibbles

Description

@rtibbles

This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.

Current behavior

When a contributor comments on an unassigned help wanted issue, a Slack notification is sent to #support-dev. A team member then needs to manually review and assign the contributor to the issue. This creates delays and requires manual intervention for every assignment.

Desired behavior

Add a /assign slash command that allows contributors to self-assign to help wanted issues, with safeguards to prevent abuse.

How it works:

  • The help wanted header (automatically added to issues) is updated to include instructions to comment /assign and a note about the 2-issue maximum limit
  • When a contributor comments /assign on an eligible issue (labeled help wanted, currently unassigned), the bot automatically assigns them and posts a confirmation
  • Contributors are limited to a maximum of 2 assigned issues at a time across all community repositories (kolibri, studio, kolibri-design-system, le-utils, .github, ricecooker)
  • To prevent issue shopping (dropping issues to grab more interesting ones), issues unassigned within the last 7 days still count toward the 2-issue limit
  • When a contributor is at the limit, the bot declines and lists their current assignments (and recently dropped issues with remaining cooldown days)

What stays the same:

  • Existing Slack notifications for issue comments
  • Existing bot replies for non-eligible issues (BOT_MESSAGE_ISSUE_NOT_OPEN, BOT_MESSAGE_ALREADY_ASSIGNED)
  • All close contributor and core team handling

/assign behavior

Contributor type Issue type Comment Action
Core team Any /assign No action (not a contributor)
Close contributor Any /assign No action (not processed)
Other Unassigned help-wanted /assign (under limit) Assign user, bot confirms
Other Unassigned help-wanted /assign (at limit) Bot declines, lists current + recently dropped assignments
Other help-wanted assigned to someone else /assign Bot says already assigned (existing behavior)
Other Not help-wanted /assign Bot says not open for contribution (existing behavior)

Value add

  • Eliminates manual assignment overhead for the team - no more monitoring Slack and manually assigning contributors to issues
  • Faster turnaround for contributors - they can start working immediately instead of waiting for a team member to assign them
  • The 2-issue limit and 7-day cooldown enforce good contribution habits (focus on completing work, not grabbing issues)

Possible tradeoffs

  • The GitHub App token needs issue write permissions (assign) in addition to the existing comment permissions - this may need to be verified/updated in consuming repositories
  • The 7-day cooldown on recently unassigned issues requires querying issue timeline events across all community repos, which adds API calls
  • The 2-issue limit is org-wide across all community repos - a contributor can't have e.g. 2 issues in kolibri and 1 in studio. This is intentional but worth noting for the team

Acceptance Criteria

  • The help wanted issue header includes instructions to comment /assign and mentions the 2-issue limit
  • Commenting /assign on an unassigned help wanted issue assigns the commenter and posts a confirmation message
  • Contributors with 2+ currently assigned issues (across all community repos) are declined with a message listing their assignments
  • Issues unassigned within the last 7 days count toward the 2-issue limit
  • The decline message shows both current assignments and recently dropped issues with remaining cooldown days
  • /assign on a non-help wanted issue or an already-assigned issue is handled by existing bot messages
  • Existing Slack notification behavior is unchanged
  • Documentation in docs/community-automations.md is updated

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions