1---2name: plan-comments-and-feedback3description: Plan review threads end to end: what `get-plan-feedback` returns, how to read anchors, resolver intent, replies, notification email, deletion, and abuse reports. Use when reading, answering, resolving, or removing plan feedback.4---56# Plan Comments and Feedback78- Plan comments include reviewer identity, @mentions, resolver intent9 (`agent` or `human`), exact anchors, and design-review threads. When adding10 human feedback through `update-visual-plan`, preserve `authorEmail` and11 `authorName` when known; pass `parentCommentId` to reply inline to an12 existing comment thread. Text feedback should anchor to the nearest prose13 block, and visual/canvas feedback should include target coordinates plus14 concise surrounding context.15- Use `delete-plan-comment` only when the user explicitly asks to remove a16 comment, undo an accidental comment, or clean up an obsolete thread. Deleting17 is a soft delete: normal comment views hide the comment while the database row18 remains for audit/debugging. Deleting a thread root also deletes its replies.19 When feedback has merely been handled, prefer `resolve-plan-comment` and20 `consume-plan-feedback` so review history remains visible.21- Use `delete-visual-plan` only when the owner explicitly asks to delete or22 restore their hosted plan/recap data. `mode=soft` moves the resource to the23 Deleted tab and makes normal reads/direct links stop working; `mode=restore`24 undeletes it; `mode=hard` permanently removes the plan row plus plan-scoped25 comments, sections, events, versions, shares, reports, SQL asset records, and26 collab snapshots. Hard delete requires the exact confirmation phrase27 `DELETE <planId>`.28- `get-plan-feedback` returns flat comments, grouped threads, anchor summaries,29 detailed anchor lines, and recent review events that describe the edit/comment30 delta. Use those fields before changing code or updating the plan, especially31 to distinguish comments the agent should act on from comments intended for a32 human reviewer.33- **Anchor interpretation.** `targetX`/`targetY` are percentages within the34 named element; bare `x`/`y` are percentages of the whole document;35 `canvasX`/`canvasY` are board-world pixels. Wireframe anchors carry36 `targetNodeId`/`targetNodePath` — prefer those over raw coordinates; fall back37 to coordinates plus the focused screenshot only when no node id is present.38 Resolve `textQuote` with `contextBefore`/`contextAfter`; if `ambiguous: true`,39 ask the user. Threads in `detachedThreads` no longer match current prose —40 reconcile, never drop. Act on `resolutionTarget=agent`; treat `human` as41 context only; `@mentions` are notification signals, not routing. Mark ingested42 comments consumed (`consumedCommentIds`); set `status=resolved` only on43 agent-targeted comments you actually addressed. When a plan write addresses44 feedback, do not resolve or consume it until a post-write `get-visual-plan`45 confirms the requested change persisted. Then do both: call46 `resolve-plan-comment` for the addressed thread and `consume-plan-feedback`47 for its comments.48- New human comments send best-effort transactional email when email is49 configured: root comments and replies notify the plan owner, @mentioned50 members, and replies also notify prior human participants in that thread.51 Reuse the shared `renderEmail` template; do not invent a separate52 plan-specific email style.53- `report-visual-plan` records a bounded abuse report for a public plan or recap54 without changing plan content. It requires the caller to be scoped to an55 accessible public plan, accepts a fixed reason plus optional short details,56 and updates an existing open report from the same reporter instead of creating57 duplicate rows.5859## Related Skills6061- **plan-hosted-writes** — verify a write persisted before resolving or62 consuming the feedback it addressed.63- **plan-browser-editing** — the editing surfaces reviewers annotate.64- **plan-source-sync** — `comments.json` sidecars for DB-free local plans.65- **plan-events** — automating notifications on `plan.commented`.