From subtext
Read, add, reply to, and resolve comments on traces for agent-user collaboration during session reviews or live page inspections.
How this skill is triggered — by the user, by Claude, or both
Slash command
/subtext:commentsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **PREREQUISITE:** Read `subtext:shared` for MCP conventions and sightmap upload.
PREREQUISITE: Read
subtext:sharedfor MCP conventions and sightmap upload.
Tool catalog and judgment rules for comment-based agent-user collaboration. Comment tools are available on the subtext MCP server.
| Tool | Description |
|---|---|
comment-list | Read all comments/annotations on a trace, with thread structure |
comment-add | Leave a comment on a trace, optionally tied to a page and timestamp |
comment-reply | Reply to an existing comment by ID |
comment-resolve | Mark a comment thread as resolved |
All comment tools are stateless — they identify the parent trace by trace_id (preferred) or session_id (deprecated; in deviceId:sessionId format), rather than requiring an active connection.
trace_id vs session_idComments hang off a trace — the durable parent identifier that survives even when no Fullstory session was captured. Every tool that needs a parent accepts either:
trace_id — the 12-char base62 id you get from live-connect (trace_id: line, or parse the trailing path of trace_url) and from review-open (trace_id: line in the response). Prefer this. It's stable, works for traces with no underlying FS session, and is the only key the storage layer actually uses.session_id — the legacy deviceId:sessionId form. Still accepted for callers that only have an FS session URL on hand. The server promotes it to a trace_id under the hood. Responses include a one-line deprecation hint when you use this path.comment-resolve only needs comment_id; the parent is looked up server-side.
Parameter schemas are visible in the tool definition at call time.
Comment tools do not auto-capture screenshots. To attach a screenshot, pass a screenshot_url to comment-add. This URL must point to a pre-captured screenshot (e.g., from live-view-screenshot or another source).
Note: To attach a screenshot, first capture one via
live-view-screenshotorreview-view, then pass the returned URL asscreenshot_urlverbatim — the signed query string (?Expires=…&GoogleAccessId=…&Signature=…) is the credential. Stripping it returns 403 from GCS and the image won't render.
When the comment is about a specific element, capture a focused clip by passing component_id (and a small expand_pct for context) to the screenshot tool. A focused clip is far more useful in a comment than a full viewport — the reader sees exactly what you're pointing at.
Comment text is rendered as Markdown in the comment thread UI. Use standard formatting freely:
code spans and fenced code blocks for selectors, error messages, or snippetsKeep formatting proportional to the comment — a one-line observation doesn't need a bulleted list.
When adding a comment, classify it:
| Intent | Use when |
|---|---|
bug | Something is broken |
tweak | Minor improvement needed |
ask | Question for user or another agent |
looks-good | Confirming an area passes review |
comment-list first. Never assume you know what feedback exists.comment-list, reply to acknowledge before starting your own work, don't resolve another agent's comments without verifying.Comments enable asynchronous review between agents and users:
comment-add with observations (bug, tweak, looks-good)comment-list to read ALL feedbackcomment-reply with statuscomment-resolve ONLY on verified fixescomment-list on entry — you'll duplicate work or miss user feedbacksubtext:shared — MCP conventions and sightmap uploadsubtext:session — session replay tools (review-*)npx claudepluginhub fullstorydev/subtext --plugin subtextGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.