Problem
When /submit-for-review successfully merges a PR, the linked issue is auto-closed by GitHub's closing-keyword and a resolution comment is posted. But no label is applied to the closed issue, so projects that gate human QA on a label (e.g. ready-for-qa) lose track of which closed issues are actually ready to test.
Today the section in submit-for-review.md is even titled "After merge — QA label and success report" but the QA-label step isn't implemented. The success report happens; the label doesn't.
Why it matters
The intended workflow is:
- PR merges
- Issue closes
- Reviewer (human) picks up closed-and-labeled issues from the QA queue
- Reviewer labels qa-passed or qa-failed
Step 3 currently requires the operator to remember to label each merge by hand. After a multi-PR session that's easy to miss — I just shipped four PRs back-to-back and forgot to label any of them.
Proposed behaviour
After a successful merge in submit-for-review (Step 8's "After merge" path), apply a configurable QA label to the linked issue using gh issue edit <issue-number> --add-label "<value>".
Configuration knob in .codecannon.yaml (suggested key + default):
qa_label: ready-for-qa # set to '' or omit to disable
Skip the label step silently if:
- qa_label is empty / unset
- No linked issue was identified in Step 3 (matches the existing resolution-comment skip)
- The label apply fails (log + continue; do not block the success report)
Acceptance
- After a merge, the closed issue carries the configured QA label.
- When qa_label is unset, behaviour is unchanged from today.
- Failure to apply the label (label doesn't exist in the repo, gh auth issue, etc.) prints a warning but does not roll back the merge or block the
success report.
- The skill template's "After merge — QA label and success report" section header now matches what the code actually does.
Notes
- Should probably also handle qa-failed / qa-passed removal if the label being applied is ready-for-qa (so re-running on an issue that was
previously QA'd resets state cleanly), but that's a nice-to-have, not blocking.
- Worth considering whether docs-only PRs should skip the label by default — but that's hard to detect reliably from skill-side; probably leave it to the operator to decide per project.
Problem
When /submit-for-review successfully merges a PR, the linked issue is auto-closed by GitHub's closing-keyword and a resolution comment is posted. But no label is applied to the closed issue, so projects that gate human QA on a label (e.g. ready-for-qa) lose track of which closed issues are actually ready to test.
Today the section in submit-for-review.md is even titled "After merge — QA label and success report" but the QA-label step isn't implemented. The success report happens; the label doesn't.
Why it matters
The intended workflow is:
Step 3 currently requires the operator to remember to label each merge by hand. After a multi-PR session that's easy to miss — I just shipped four PRs back-to-back and forgot to label any of them.
Proposed behaviour
After a successful merge in submit-for-review (Step 8's "After merge" path), apply a configurable QA label to the linked issue using gh issue edit
<issue-number> --add-label "<value>".Configuration knob in
.codecannon.yaml(suggested key + default):qa_label: ready-for-qa# set to '' or omit to disableSkip the label step silently if:
Acceptance
success report.
Notes
previously QA'd resets state cleanly), but that's a nice-to-have, not blocking.