How it works
mountFeedbackWidget(
createFeedbackWidget({
project: "acme",
connectors: [new HttpConnector("/api/feedback", () => token)],
checklist: "/checklist.json", // or an inline object
})
);A second circle appears above the feedback button. The reviewer opens it and sees your list — sections, items, hints, and "Open ↗" links that navigate to the right page. One natural motion per item: click the row to check it off; click the slug button to flag a problem (that opens the normal issue flow with screenshot and annotation, linked back to the item).
The output: a coverage map, not a thread
Every verdict lands in session.yaml:
checklist:
items:
- id: export-button
title: "On Reports, the Export button downloads a CSV"
verdict: pass
- id: csv-columns
title: "The CSV has all the expected columns"
verdict: fail
issue: "03" # the annotated issue that documents it
- id: email-sent
title: "An email arrives after an export"
verdict: null # never checked — you know what wasn't looked atThree states, not two: confirmed, flagged (with the evidence attached), and never checked.
Generate the checklist from the branch
Don't write the list by hand: the bundled sluglist-checklist skill turns the branch diff into a
client-facing checklist — user-visible changes only, phrased for a non-developer. See
Checklist mode.
Send back one file, not a folder
npx sluglist reportThe session becomes a single self-contained HTML file: what passed, what failed, the fact observed behind each verdict, every screenshot inlined. It opens offline, forwards as one attachment, and prints to PDF cleanly — the artifact a client can actually read. See Reports.
Built for non-technical reviewers
- Flagging a problem takes a comment and an automatic screenshot; annotation (arrow, box, text) is right there.
- Smart links navigate the reviewer to the page under test; wildcard matches light up "You're here" on dynamic routes.
- The checklist panel is fully usable on a phone.
- Reporter form fields can ask what only they know (device, severity, which account).
- They can attach their own files — a phone screenshot usually arrives via paste.
Where the feedback goes
Through a connector you own — an API route in front of Vercel Blob, S3/R2 or Supabase Storage is ~50 lines. No sluglist account, no third-party inbox holding your client's screenshots.
The same checklist can be walked by a QA agent instead of a person when you want a pass before the client sees it — the artifacts are identical either way.