Surfaced while migrating d-morrison/qwt to consume these reusable workflows (qwt PR d-morrison/qwt#115, tracked in d-morrison/qwt#116, Phase 2).
qwt's standalone claude.yml implements duplicate-run suppression and late-comment handling that the reusable claude.yml does not reproduce via any input. This is the biggest blocker to qwt migrating its agent workflow. It is the payload of qwt issues d-morrison/qwt#73 / #90 / #95.
Missing machinery (all absent from the reusable workflow)
- Dedup pre-step — "skip if this comment was already handled by an active run": checks for a 🚀 reaction marker and skips the queued duplicate run.
- Absorbed-ids marker — the prompt instructs Claude to emit a
<!-- claude-absorbed: <ids> --> marker listing comments it absorbed during its late-comment polling loop.
- React-post-step — reads that marker from Claude's output and reacts 🚀 to each absorbed comment, so their own queued runs short-circuit on (1).
- Late
@claude review re-dispatch — re-scans for a late @claude review request that a dedup'd run would otherwise have dropped, and dispatches the review workflow.
The reusable workflow has the basic polling loop but none of the marker/dedup/late-review-rescue layer, so after migration a late @claude comment absorbed by a running session would still spawn its own (double-processing) run.
Ask
Port this machinery into the reusable claude.yml (additive; no consumer input changes). Then move @v1.
Consumer waiting on this: d-morrison/qwt.
Surfaced while migrating
d-morrison/qwtto consume these reusable workflows (qwt PR d-morrison/qwt#115, tracked in d-morrison/qwt#116, Phase 2).qwt's standalone
claude.ymlimplements duplicate-run suppression and late-comment handling that the reusableclaude.ymldoes not reproduce via any input. This is the biggest blocker to qwt migrating its agent workflow. It is the payload of qwt issues d-morrison/qwt#73 / #90 / #95.Missing machinery (all absent from the reusable workflow)
<!-- claude-absorbed: <ids> -->marker listing comments it absorbed during its late-comment polling loop.@claude reviewre-dispatch — re-scans for a late@claude reviewrequest that a dedup'd run would otherwise have dropped, and dispatches the review workflow.The reusable workflow has the basic polling loop but none of the marker/dedup/late-review-rescue layer, so after migration a late
@claudecomment absorbed by a running session would still spawn its own (double-processing) run.Ask
Port this machinery into the reusable
claude.yml(additive; no consumer input changes). Then move@v1.Consumer waiting on this:
d-morrison/qwt.