ワンクリックで
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 職業分類に基づく
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
Retrieve visual feedback and annotations from Screenote for the current project
| name | feedback |
| description | Retrieve visual feedback and annotations from Screenote for the current project |
| metadata | {"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:screenote skill (codex-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: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.