M17-4: Design-reviewer end-to-end loop #155
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks#155
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?
As an operator, I want the
design-revieweragent to actually review design outputs (Penpot frames + dashboard PRs) with the same diff-scoped rigor as code-reviewer, so that we close the designer → design-reviewer loop instead of letting the agent sit idle (observation:/healthshows no task in 24h).Acceptance criteria
Triggers
design-reviewerruns on PRs labeledarea:dashboardOR PRs authored bydesigner(latter already wired in webhook-routing)design-reviewerto the pool forarea:dashboardPRs viamatch_labels: ["area:dashboard"]Skill behaviour
skills/design-review.md: read the PR'sdashboard.htmldiff, compare to the Penpot frame linked in the PR body, report layout discrepancies + token-taxonomy violationsdesign/tokens.jsonvalues; flag any raw hexEnd-to-end
design-revieweron a live dashboard PR, verify it submits APPROVED or REQUEST_CHANGES viacreate_pull_review— NOT just a commentDocs
Out of scope
Dependencies
References
specs/m17-multi-repo-and-observability.md§Story M17-4config/agents.json+ service/healthshows no task in 24hdesign/tokens.json(DTCG, Tokyo Night)🔍 Design Review — issue #155
Reviewed by: design-reviewer
Date: 2026-04-20
Penpot file:
claude-hooks — dashboard(file id689d7fa4-f94b-81d4-8007-e39c5c82f66c, revn 1500, last modified 2026-04-20T08:48:26Z)⚠️ Blocked: two preconditions for visual review are not met
1. No designer handoff comment
Issue #155 has zero comments. The expected workflow requires the
designeragent to post a handoff comment with a Penpot deep-link beforedesign-revieweris dispatched. Without that comment this reviewer has no canonical frame list to inspect and no link to confirm it is reviewing the right revision.Fix: when
designerattachesarea:design-review, it must also post a handoff comment in the format:This is itself a gap in the end-to-end loop described by this story's acceptance criteria.
2.
export_frame_pngnot available in current Penpot MCPThe Penpot MCP installed in this container (
penpot-mcp-serverv0.4.0 fork) does not expose an export tool. Tools available:list_teams,list_projects,list_files,get_file_info,get_design_tokens, and shape/token creation tools. Noexport_frame_pngor equivalent.Without PNG export the multimodal visual inspection step cannot execute.
Fix (infra): the fork at
penpot-mcp-server/needs anexport_frame_pngtool wired to Penpot'sexport-file-objectRPC (returns a PNG byte stream). This is a prerequisite fordesign-reviewerto do any real work.Findings from what was inspectable
typography·claude-hooks — dashboard· file-levelFinding: design tokens are empty (
get_design_tokens→{}). The file contains no declared colour, dimension, or typography tokens. According to the M17-4 acceptance criteria,design-reviewermust flag any raw hex in the PR diff that isn't indesign/tokens.json. If the Penpot file itself carries no tokens, designers are working without a token reference and raw-hex violations will proliferate undetected.Fix: import the
design/tokens.jsonDTCG token set into the Penpot file viaimport_tokens_dtcgand ensure thedesigneragent does this on first file creation. Add a check in thedesign-review.mdskill: ifget_design_tokensreturns{}, flag it as a blocker before proceeding.Summary
export_frame_pngto penpot-mcp-server fork; enforce handoff comment in designer skillVerdict: cannot issue APPROVED / REQUEST_CHANGES — visual inspection blocked. Two infrastructure gaps must be closed first (MCP export tool, designer handoff comment). The empty-token finding stands independently and should be addressed before the next design iteration.