feat: /assign self-assignment for good first issue (#62)#64
feat: /assign self-assignment for good first issue (#62)#64rtibblesbot wants to merge 9 commits intolearningequality:mainfrom
Conversation
21bfa84 to
d26fee9
Compare
d26fee9 to
f0a9910
Compare
|
Rebased onto |
There was a problem hiding this comment.
This PR shouldn't affect unrelated files
There was a problem hiding this comment.
Restored - this was deleted accidentally.
|
I was unable to complete this task after multiple attempts. Manual review and intervention may be needed. |
4 similar comments
|
I was unable to complete this task after multiple attempts. Manual review and intervention may be needed. |
|
I was unable to complete this task after multiple attempts. Manual review and intervention may be needed. |
|
I was unable to complete this task after multiple attempts. Manual review and intervention may be needed. |
|
I was unable to complete this task after multiple attempts. Manual review and intervention may be needed. |
f0a9910 to
f06626f
Compare
…ngequality#62) Add assignment-related constants (label, limit/cooldown values, bot messages) with validation tests, plus deleteBotComments and getRecentUnassignments utilities with deduplication logic. Include shared test helpers and Jest/ESLint configuration. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ality#62) Add script and standalone workflow that posts an informational comment when the good-first-issue label is applied to a help-wanted issue, guiding contributors to use /assign for self-assignment. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ningequality#62) Restructure issue workflows following the call-pull-request-target / pull-request-target pattern. Rename call-manage-issue-header to call-issue-label, add call-issue-open, and introduce issue-label and issue-open dispatcher workflows that route to the correct handlers. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implement /assign command allowing contributors to self-assign good-first-issue tickets. Enforces cross-repo 2-issue limit and 7-day cooldown on recently dropped issues. Adds /assign guidance to keyword-triggered replies on GFI issues. Routes all /assign Slack notifications to #support-dev-notifications only. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
0162e75 to
5d1e856
Compare
There was a problem hiding this comment.
There is no need to test constants. The file can be removed.
| const ISSUE_LABEL_HELP_WANTED = 'help wanted'; | ||
| const ISSUE_LABEL_GOOD_FIRST_ISSUE = 'good first issue'; | ||
| const MAX_ASSIGNED_ISSUES = 2; | ||
| const COOLDOWN_DAYS = 7; |
There was a problem hiding this comment.
| const COOLDOWN_DAYS = 7; | |
| const ASSIGN_COOLDOWN_DAYS = 7; |
There was a problem hiding this comment.
Renamed to ASSIGN_COOLDOWN_DAYS throughout.
| | **Other** | `help-wanted` assigned to commenter | Regular/keyword | **Yes** | No | No | - | | ||
| | **Other** | `help-wanted` assigned to someone else | Regular | No | Yes | No | - | | ||
| | **Other** | `help-wanted` assigned to someone else | Assignment request | No | Yes | Yes`*` | `BOT_MESSAGE_ALREADY_ASSIGNED` | | ||
| | Any`**` | Private | `/assign` | No | Yes | Yes | `BOT_MESSAGE_ISSUE_NOT_OPEN` | |
There was a problem hiding this comment.
It'd be better to remove all these new 'Any' table entries and organize the new information to the original table structure - that is utilizing Core team, Close contributor, Issue creator, and Other categories, and none other. This will improve understanding the information a lot.
Furthermore let's use the following language for describing comment type
/assigncommand- assign keyword (links to https://github.com/learningequality/.github/blob/main/scripts/constants.js#L44)
- regular
Finally, let's not use shortcuts, such as GFI - it's not immediately clear to what it refers to.
There was a problem hiding this comment.
Restructured: removed Any** rows, integrated /assign command rows under Close contributor/Issue creator/Other contributor types, updated comment type terminology (regular/assign keyword//assign command), and replaced GFI with good first issue throughout.
There was a problem hiding this comment.
Two items missed in the previous pass: split the combined 'Close contributor, Issue creator, Other' rows into separate rows per contributor type (18 rows total — 6 per category), and linked 'assign keyword' to constants.js#L44 throughout the table.
…uality#62) - Remove constants.test.js (constants don't need testing) - Rename COOLDOWN_DAYS to ASSIGN_COOLDOWN_DAYS for clarity - Restructure community-automations.md table: remove Any** rows, integrate /assign command rows under specific contributor types, use regular/assign keyword//assign command terminology, spell out good first issue instead of GFI abbreviation Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…earningequality#62) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…rningequality#62) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
@rtibblesbot we decided not to implement tests for affected GitHub workflows. So all test files, including test setup and changes to package.json and yarn.lock can be removed. |
|
Done. Removed all test files ( |
There was a problem hiding this comment.
There should be no updates to yarn.lock in this PR. Let's revert completely
There was a problem hiding this comment.
Reverted. yarn.lock now matches main exactly.
| es6: true, | ||
| browser: true, | ||
| node: true, | ||
| jest: true, |
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
8493113 to
5485963
Compare
Summary
Implements the
/assignself-assignment mechanism forgood first issueissues, as agreed in #47.Contributors can comment
/assignon issues labeledhelp wanted+good first issueto self-assign, subject to a 2-issue cross-repo limit and 7-day cooldown on recently dropped issues. The bot posts a guidance comment when thegood first issuelabel is applied, and keyword-based assignment requests on GFI issues now include/assignguidance.All
/assignSlack notifications route to#support-dev-notificationsonly.References
Reviewer guidance
Manual testing is done in test-actions. Temporarily update reusable workflow references to point to this branch.
Key test scenarios:
/assignon an unassignedhelp wanted+good first issueissue → bot assigns and confirms/assignwhen at the 2-issue limit → bot declines with assignment list and cooldown infogood first issuelabel to ahelp wantedissue → bot posts guidance comment/assignguidanceRisky areas:
scripts/utils.js:getRecentUnassignments) — depends on GitHub search indexing latency and timeline event formatscripts/utils.js~line 320) — ensures multiple assign/unassign cycles on the same issue count as one slot/assigndecision tree inhandleAssignCommand(scripts/contributor-issue-comment.js) — many branches with specific Slack routing per pathAI usage
Built entirely by Claude Code following a detailed implementation plan (see
PLAN/index.md). Each task was implemented incrementally and code was reviewed for correctness after each step. Test infrastructure was removed per reviewer feedback (no unit tests needed for this codebase).@rtibblesbot's comments are generated by an LLM, and should be evaluated accordingly
How was this generated?