一键导入
feedback
Retrieve visual feedback and annotations from Screenote for the current project
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Retrieve visual feedback and annotations from Screenote for the current project
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Retrieve visual feedback and annotations from Screenote for the current project
Capture a page at desktop/tablet/mobile viewports and upload to Screenote for human annotation
Take a full app snapshot — discover all routes, screenshot every page at desktop/tablet/mobile viewports, and upload to Screenote with date and commit metadata
Capture a page at desktop/tablet/mobile viewports and upload to Screenote for human annotation
Take a full app snapshot — discover all routes, screenshot every page at desktop/tablet/mobile viewports, and upload to Screenote with date and commit metadata
| name | feedback |
| description | Retrieve visual feedback and annotations from Screenote for the current project |
| user_invocable | true |
| argument | [desktop|tablet|mobile] [page-name or version] |
You are executing the Feedback skill. This retrieves human annotations from Screenote so you can act on visual feedback.
Authentication is handled automatically via OAuth 2.1 — the plugin's .mcp.json configures the MCP server connection. No API key needed.
Before Step 1, normalize the argument:
desktop, tablet, or mobile, consume it as the viewport filter for Step 3 and pass the remainder (possibly empty) as the page/version hint for Step 2.Examples:
/feedback → viewport: none, hint: none/feedback login → viewport: none, hint: login/feedback desktop → viewport: desktop, hint: none/feedback desktop login → viewport: desktop, hint: loginNever match a viewport keyword against page names — that collision is the reason for the split above.
Follow the Project Cache and Pick a Project procedure from the /screenote skill (skills/screenote/SKILL.md). The logic is identical: call list_projects first (auth gate), then check .screenote/screenote-cache.json with legacy .claude/screenote-cache.json fallback, match by local project name, or prompt the user.
If list_projects returned zero projects → say:
"No Screenote projects found. Capture a page first with /screenote <url>." Stop.
If the page/version hint (from Argument Parsing above) is non-empty, use it as a case-insensitive selection hint when matching page names and version titles below. Auto-select only when there is exactly one clear match; otherwise fall back to interactive picking.
Call list_pages with project_id.
/screenote <url> to capture a page first." Stop.Call list_screenshots with project_id and page_id.
/screenote <url> first." Stop.Call list_annotations with project_id, screenshot_id, status: "open".
If the viewport filter was set in Argument Parsing, pass viewport: <keyword> as well so only annotations drawn against that layout come back.
If zero annotations → say: "No open annotations for this screenshot. Open the annotate URL to add feedback, or check if annotations are marked as resolved." Include annotate_url if available. Stop.
For each annotation, call get_annotation to retrieve the cropped image of the annotated region. The crop is pulled from the ScreenshotImage that matches annotation.viewport — so a mobile annotation shows the mobile-layout crop, not the desktop one.
Header: "Feedback for <project_name> — <page_name> — <version_title>"
If annotations span multiple viewports, group them under subheadings: "Desktop (2 open)", "Tablet (1 open)", "Mobile (3 open)". Within a single-viewport response, a subheading is not needed.
For each annotation, show:
After presenting all annotations, ask the user what to do:
/screenote <url>)For each annotation being addressed:
add_annotation_comment with project_id, annotation_id, and a body describing the fix (all three are required)Fixed: adjusted button color. Changed: src/components/Button.tsx:42 — updated background color from red to blueWon't fix: the button is intentionally disabled for free-tier usersresolve_annotation with project_id, annotation_id, and a brief comment (e.g., "Fixed" or "Won't fix — see reply")resolve_annotation (it would resolve with no audit trail).body, retry the comment.resolve_annotation itself fails: report the error verbatim, do not retry silently.