Skip to content

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

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions