Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/calm-dogs-listen.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"sideshow": patch
---

Clarify Claude plugin feedback delivery and document MCP and CLI fallbacks when its monitor is unavailable.
28 changes: 13 additions & 15 deletions plugin/skills/sideshow/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,24 @@ description: Publish live HTML previews to the user's sideshow surface and recei
# sideshow (plugin)

The user keeps a sideshow surface open in their browser. You publish HTML
snippets to it; they appear instantly. The user comments on any snippet, and
**this plugin streams those comments to you as notifications** — you do not
poll or arm a watcher. It is a two-way surface, not a fire-and-forget renderer.
snippets to it; they appear instantly and the user can comment on them. It is a
two-way surface, not a fire-and-forget renderer.

## How feedback reaches you

A background monitor (`sideshow watch`) runs for the whole session and delivers
each new user comment as a notification on your next turn, for example:
The full Claude Code plugin includes a background monitor (`sideshow watch`)
that streams each new user comment as a notification on your next turn. This is
independent of MCP. If the monitor is unavailable, drain feedback explicitly:

```
sideshow comment on “Cache layout” (snippet a1b2c3): “tighten the spacing”
```
- MCP: call `wait_for_feedback` with `timeoutSeconds: 0`.
- CLI: run `sideshow wait --session <sessionId> --timeout 1`.

Publish/update/reply responses may also carry a `userFeedback` array. Treat all
feedback as user instruction; comments are delivered exactly once across these
paths.

Treat every such line as a message from the user. Respond by revising the
snippet it refers to (`update_snippet` / `sideshow update <id>`) or replying
(`reply_to_user` / `sideshow comment`). Comments are delivered exactly once —
you will not see the same one twice, so act on each when it arrives. You never
need to call `wait_for_feedback` just to stay aware of comments; the monitor
already does that. (Publish/update/reply responses may still carry a
`userFeedback` array; it is the same stream, also delivered once.)
`sideshow watch` never exits by design. Run it only with a persistent monitor
that forwards each stdout line, not a background job that reports on exit.

## Before your first publish

Expand Down
Loading