fix(skills): designer + design-reviewer should close the mockup issue on completion #248
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks#248
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Bug
The Penpot mockup workflow leaves the mockup issue open forever because neither the designer nor the design-reviewer skill closes it. Four tickets on 2026-04-21 (
#223,#233,#238,#240) all finished their full design-review cycle but stayedopenwith no assignee — classic zombie state. Each blocked an impl dependent from auto-assigning.The propagator's
Forgejo refuses to close an issue whose /dependencies still has an open blockerrule amplified this:#224(steering impl) couldn't even be manually closed because it was native-wiredblocked by #223, and#223never closed itself. Five tickets had to be manually cleaned up to unstick the pool.Current workflow (per CLAUDE.md)
area:designlabel.area:design, addsarea:design-review).area:design-reviewlabel.openforever.The missing step: nobody closes the issue.
Acceptance criteria
Design-reviewer: close on approval
skills/design-review.md— when the review verdict is approval (no outstanding findings), the skill callsmcp__forgejo__issue_state_changewithstate="closed"at the end of its run, right after removing thearea:design-reviewlabel.area:designso the designer picks it back up. The label ping-pong mirrors the PR review loop.**Verdict**: APPROVEDor**Verdict**: CHANGES_REQUESTED. The skill emits one or the other explicitly so the logic is deterministic.Designer: idempotent re-runs
skills/designer.md— on a re-run triggered byarea:designbeing re-added, the skill reads the prior design-reviewer findings (most recentCHANGES_REQUESTEDcomment), addresses them in Penpot, and re-posts a shorter handoff comment ("addressed: X, Y, Z") before swapping the label back toarea:design-review.Operator override
mcp__forgejo__issue_state_changealready accepts that on the operator path.Dashboard PR review path — unchanged
area:dashboardor authored bydesigner) already submitscreate_pull_reviewAPPROVED / REQUEST_CHANGES. The PR merge closes the linked issue — no change needed there. Only the Penpot-handoff issue path is affected by this ticket.Verification
area:designissue, let designer run, let design-reviewer approve. Confirm the issue auto-closes and its linked impl dependent auto-assigns via the propagator.CHANGES_REQUESTED. Confirm the label flips back toarea:design, designer re-runs, second pass approves, issue closes.Out of scope
References
skills/design-review.md— entry point for both the handoff-review and dashboard-PR-review flows. Penpot-handoff is the branch whereget_pull_request_by_indexreturns 404.skills/designer.md— handoff comment + label swap logic.CLAUDE.md§"Design review flow" — current workflow documentation (needs a doc update with this ticket's close-on-approval semantics).#223,#233,#238,#240all finished but stayed open,#224couldn't auto-close because of its dep on#223. Manually cleaned up in operator-issued closures.