{"id":"b7d039b7-7836-4df4-8bfc-663382d1e75a","shortId":"9jaukz","kind":"skill","title":"anycap-human-interaction","tagline":"Collect structured visual feedback from humans using AnyCap's annotation tool, or create and iterate on diagrams using the interactive whiteboard (Excalidraw). Covers image annotation, URL/web page review with screen recording, video review, audio feedback, and collaborative diag","description":"# AnyCap Human Interaction\n\n> **Read this entire file before starting.** Skipping sections leads to incorrect workflows -- each media type has different capabilities and constraints.\n\nWorkflow guide for collecting structured visual feedback from humans using AnyCap's annotation tool. This skill teaches you **when and how** to involve humans in your workflow through visual annotation and screen recording.\n\nFor CLI command reference, read the `anycap-cli` skill. For media generation workflows, read the `anycap-media-production` skill.\n\n## Prerequisites\n\nAnyCap CLI must be installed and authenticated. Read the `anycap-cli` skill if setup is needed.\n\n## Two Core Scenarios\n\nAnyCap annotation excels at two distinct review workflows. Choose the one that fits your situation:\n\n| Scenario | Best for | Primary artifact | Highlight |\n|----------|----------|------------------|-----------|\n| **URL / Web Page Review** | Web pages, local dev servers, live UIs | Screen recording with narration | Browse, annotate, and narrate -- the recording captures everything |\n| **Image Collaborative Review** | Generated images, screenshots, designs | Annotated image with merged feedback | Multiple reviewers annotate simultaneously in real-time |\n\nBoth scenarios support all annotation tools (Rect, Arrow, Point, Freehand) and text labels. The difference is in what you get back and how the review is conducted.\n\n## Command Quick Reference\n\n```bash\n# Blocking -- opens browser, waits for Done click, outputs result\nanycap annotate <target> [-o output.png]\n\n# Non-blocking -- starts background server, returns session info\nanycap annotate <target> --no-wait [-o output.png]\n\n# Poll for result after human confirms done\nanycap annotate poll --session <session_id>\n\n# Stop background server\nanycap annotate stop --session <session_id>\n\n# List all active sessions (useful for recovery after context loss)\nanycap annotate list\n```\n\n`<target>` is auto-detected by content: image file, URL (`http://` or `https://`), video file, or audio file.\n\n### Key Flags\n\n| Flag | Description |\n|------|-------------|\n| `--no-wait` | Non-blocking mode (recommended for agents) |\n| `-o, --output` | Save annotated image to this path |\n| `--port <port>` | Bind to a fixed port (default: random) |\n| `--bind <addr>` | Bind address (default: `127.0.0.1`) |\n\n**Tip:** Use `--port` with a consistent value (e.g., `--port 8888`) across sessions. The browser stores each user's display name in localStorage, which is scoped by origin (host + port). A fixed port means returning collaborators are recognized automatically without re-entering their name.\n\n### Browser Auto-Open\n\nBoth blocking and non-blocking modes automatically attempt to open the annotation URL in the default browser. In headless environments (SSH, container), the CLI prints the URL to stderr instead. No error is raised.\n\n### Presenting to the Human -- Guidelines\n\nWhen presenting an annotation session to the human, adapt your message based on context. Key points to communicate:\n\n- **Browser auto-open**: On desktop, the page opens automatically -- acknowledge this (\"the review page should already be open\"). In headless/SSH, share the URL and tell them how to access it.\n- **Always mention Done**: Tell the human to click **Done** when finished. This is how feedback gets saved.\n- **Recording for URL mode**: Emphasize recording (Rec button) because URL mode cannot export an annotated screenshot. The recording is the primary artifact.\n- **Multi-user**: If multiple reviewers will participate, mention real-time collaboration and that each person can save independently. **Exception: URL/iframe mode is single-user** (recording is the primary feedback artifact, and multiple users' cursors would make it confusing).\n- **Headless access**: When using `--bind 0.0.0.0`, share the URL with the actual host IP. If behind SSH, suggest port forwarding.\n- **What to annotate**: Briefly describe what tools are available (Rect, Arrow, Point, Freehand) and that each annotation can have a text label.\n\nDo NOT use canned messages. Compose naturally based on the situation (what you just generated/modified, whether it is desktop or headless, single or multi-reviewer).\n\n### Headless / Remote Access\n\nWhen running in a headless environment (SSH, container, cloud VM), the human cannot access `127.0.0.1` directly. Use `--bind` and `--port` to make the annotation server accessible:\n\n```bash\n# Bind to all interfaces on a fixed port\nanycap annotate screenshot.png --no-wait --bind 0.0.0.0 --port 8888\n```\n\nThe human can then access the annotation UI via:\n\n- **Direct access:** `http://<server-ip>:8888` (if the port is exposed)\n- **SSH port forward:** `ssh -L 8888:localhost:8888 user@host`, then open `http://localhost:8888`\n- **Container port mapping:** `docker run -p 8888:8888 ...`, then open `http://localhost:8888`\n- **Reverse proxy:** expose through nginx, Caddy, or any reverse proxy with a path prefix\n\nAlways use `--port` with a fixed number in headless environments so the URL is predictable and forwardable.\n\n### Reverse Proxy Compatibility\n\nThe annotation UI works behind reverse proxies with arbitrary path prefixes. All asset, API, and WebSocket URLs are resolved relative to the page URL, so setups like the following work out of the box:\n\n```\nhttps://yourserver.com/tools/annotate/  ->  http://localhost:8888/\n```\n\nIf your proxy passes query parameters (e.g., `?token=...` for access control), they are preserved on all internal requests automatically. No additional configuration is needed on the annotation server side.\n\n## When to Use Annotation\n\nUse annotation when:\n\n- You generated an image/video and need the human to point at what to change\n- You built or modified a web page and need the human to review it visually\n- You need spatially-grounded feedback (\"move this here\", \"this area is wrong\")\n- Text-only feedback would be ambiguous about location or visual details\n- You want the human to record a narrated walkthrough of their feedback\n\nDo NOT use annotation when:\n\n- You only need a yes/no approval (just ask in chat)\n- The feedback is purely textual (e.g., \"change the title text to X\")\n\n## Interaction Pattern\n\nAll annotation workflows follow this pattern:\n\n```mermaid\nsequenceDiagram\n    participant Agent\n    participant CLI as AnyCap CLI\n    participant Human\n\n    Agent->>CLI: anycap annotate <target> --no-wait\n    CLI-->>Agent: {session, url, session_file, poll_command, stop_command}\n    Agent->>Human: Present URL with guidance\n    Human->>Human: Annotate, record, click Done\n    Human->>Agent: Confirms done\n    Agent->>CLI: poll_command\n    CLI-->>Agent: Annotations + recording\n    Agent->>Agent: Process feedback\n    Agent->>CLI: stop_command\n```\n\n### The \"Done\" Button\n\nThe human clicks **Done** in the annotation toolbar to save their feedback. The behavior differs by mode:\n\n- **Blocking mode** (no `--no-wait`): Clicking Done ends the session. The CLI command returns immediately with the result. In collaborative modes (image, video, audio), other connected users see a \"Feedback Submitted\" overlay.\n- **Non-blocking mode** (`--no-wait`): Clicking Done **saves** the feedback without ending the session. In collaborative modes, other users see a toast notification and can keep annotating. Each subsequent Done click overwrites the saved result. The agent polls to retrieve the latest saved state.\n\n**For agents:** Always tell the human to click **Done** when they are finished. In non-blocking mode with multiple reviewers (image/video/audio only), each reviewer can save independently -- the poll result reflects the most recent save.\n\n### Session Recovery\n\nSession state is persisted at `.anycap/annotate/<session_id>.json` in the working directory (returned as `session_file` in the start response). If you lose the session ID or commands after a context reset:\n\n```bash\n# List all sessions with their status and recovery commands\nanycap annotate list\n```\n\nThe `list` output includes `poll_command` and `stop_command` for each session, so you can resume without manually reading session files.\n\n---\n\n## Scenario 1: URL / Web Page Review\n\nUse when you built or modified a web page, UI, or any browser-accessible content and need the human to review it visually.\n\n> **URL mode is single-user.** Recording is the primary feedback artifact (cross-origin iframe prevents annotated screenshot export). Multiple users' cursors and annotations would make the recording confusing. The client name tag and peers indicator are hidden. Only one person should review a URL session at a time.\n\n**Why recording matters:** Unlike image mode, URL mode cannot export an annotated screenshot (cross-origin iframe restriction). The **screen recording with narration** is the primary feedback artifact. The human browses your page inside the annotation frame, draws annotations on top, and records a narrated walkthrough -- you get both the visual markups and a video of exactly what they saw and said.\n\n### Start the Session\n\n```bash\n# Local dev server\nanycap annotate http://localhost:3000 --no-wait\n\n# Live URL\nanycap annotate https://staging.example.com --no-wait\n```\n\n### Collect and Analyze Feedback\n\n```bash\n# Poll for result\nanycap annotate poll --session <session_id>\n\n# Check if recording exists\nRECORDING=$(anycap annotate poll --session <session_id> | jq -r '.recording // empty')\n\n# Analyze the recording with AI video understanding\nif [ -n \"$RECORDING\" ]; then\n  anycap actions video-read --file \"$RECORDING\" \\\n    --instruction \"List all issues the user pointed out. For each issue, describe what they are looking at, what is wrong, and what they want changed. Include timestamps.\"\nfi\n\n# Also read text annotations\nanycap annotate poll --session <session_id> \\\n  | jq -r '.annotations[] | \"#\\(.id) [\\(.type)]: \\(.label)\"'\n\n# Clean up\nanycap annotate stop --session <session_id>\n```\n\n> **Recording may be empty.** The Rec button uses the browser's `getDisplayMedia` API, which requires the user to grant screen-sharing permission. If the user declines the permission prompt or never clicks Rec, the `recording` field will be absent from the poll result. Always check for its existence before attempting video-read. Text annotations are still available regardless.\n\n### Applying URL Feedback -- Iterative Review\n\nURL review feedback typically maps to code changes, not image generation. After analyzing the recording and annotations:\n\n1. Identify which files need changes based on the visual feedback\n2. Make the code changes\n3. Stop the previous session\n4. Start a **new** annotation session for the human to verify\n\nEach round of changes requires a fresh session because the URL content has changed:\n\n```bash\n# Round 1: Initial review\nanycap annotate http://localhost:3000 --no-wait\n# ... human reviews, you poll and analyze ...\nanycap annotate stop --session <session_1>\n\n# Apply code changes based on feedback\n# ... edit files ...\n\n# Round 2: Verification review\nanycap annotate http://localhost:3000 --no-wait\n# ... human confirms or gives more feedback ...\nanycap annotate stop --session <session_2>\n```\n\nVersion your rounds in your messages so the human can track progress (\"Round 2: I addressed issues #1 and #3 from your first review\").\n\n### Recording Analysis Patterns\n\nThe recording is a `.webm` video captured from the browser tab, including annotations being drawn and voice narration. Use `anycap actions video-read` to analyze it:\n\n```bash\n# General feedback extraction\nanycap actions video-read --file <recording_path> \\\n  --instruction \"List all issues and desired changes the user described\"\n\n# UI-specific review\nanycap actions video-read --file <recording_path> \\\n  --instruction \"For each UI element the user points at, describe the current state and the desired change\"\n\n# Prioritized feedback\nanycap actions video-read --file <recording_path> \\\n  --instruction \"Categorize the user's feedback by priority (critical, important, nice-to-have)\"\n```\n\n---\n\n## Scenario 2: Image Collaborative Review\n\nUse when you generated an image and need one or more humans to mark desired changes. This scenario shines with **real-time multi-user collaboration** -- multiple reviewers can open the same URL and annotate simultaneously, seeing each other's cursors and drawings in real-time.\n\n> **Note:** Multi-user collaboration is available for image, video, and audio modes. URL/iframe mode is single-user only.\n\nFor the complete image-to-image refinement loop (generate -> annotate -> edit -> iterate), read the `anycap-media-production` skill.\n\n### Start the Session\n\n```bash\n# Single reviewer\nanycap annotate hero-banner.png --no-wait -o hero-banner-annotated.png\n\n# Multi-user review -- bind to network so teammates can join\nanycap annotate hero-banner.png --no-wait -o hero-banner-annotated.png \\\n  --bind 0.0.0.0 --port 8888\n```\n\n### Collect and Use Feedback\n\n```bash\n# Poll for result\nanycap annotate poll --session <session_id>\n\n# Extract annotation labels for image-to-image prompt\nanycap annotate poll --session <session_id> \\\n  | jq -r '[.annotations[] | select(.label != \"\") | \"#\\(.id): \\(.label)\"] | join(\". \")'\n\n# Apply changes via image-to-image\nanycap image generate \\\n  --prompt \"<annotations as prompt>. Keep all other elements unchanged.\" \\\n  --model nano-banana-2 \\\n  --mode image-to-image \\\n  --param images=./hero-banner-annotated.png \\\n  -o hero-banner-v2.png\n\n# Clean up\nanycap annotate stop --session <session_id>\n```\n\n---\n\n## Other Media Types\n\n### Video Review\n\nUse when you generated a video or need the human to review video content. The human can pause the video at any frame and annotate it. The annotated image output is a snapshot of the paused frame with all annotations composited on top.\n\n#### Start\n\n```bash\nanycap annotate output.mp4 --no-wait\n```\n\nTell the human to pause at key moments, draw annotations on the frame, optionally record with narration, and click Done when finished.\n\n#### Collect and Analyze\n\n```bash\n# Poll for result\nanycap annotate poll --session <session_id>\n\n# The annotated_image is a snapshot of the paused frame with annotations\n# Read the annotations for spatial feedback on that frame\nanycap annotate poll --session <session_id> \\\n  | jq -r '.annotations[] | \"#\\(.id) [\\(.type)]: \\(.label)\"'\n\n# If recording exists, analyze it for time-specific feedback\nRECORDING=$(anycap annotate poll --session <session_id> | jq -r '.recording // empty')\nif [ -n \"$RECORDING\" ]; then\n  anycap actions video-read --file \"$RECORDING\" \\\n    --instruction \"What feedback did the user give about the video? For each issue, note the timestamp in the original video, what is wrong, and what they want changed.\"\nfi\n\n# Clean up\nanycap annotate stop --session <session_id>\n```\n\nVideo feedback typically maps to regeneration with an adjusted prompt, or specific frame-level edits if the model supports it.\n\n### Audio Review\n\nUse when you generated music or audio and need the human to provide feedback. The human sees an audio player with a drawing canvas below it.\n\n#### Start\n\n```bash\nanycap annotate track.mp3 --no-wait\n```\n\nTell the human to play the audio, draw annotations on the canvas to mark time regions or sections, add labels describing desired changes, and click Done when finished.\n\n#### Collect and Analyze\n\n```bash\n# Poll for result\nanycap annotate poll --session <session_id>\n\n# Read annotation labels -- these describe desired audio changes\nanycap annotate poll --session <session_id> \\\n  | jq -r '.annotations[] | \"#\\(.id) [\\(.type)]: \\(.label)\"'\n\n# If recording exists, analyze the narrated feedback\nRECORDING=$(anycap annotate poll --session <session_id> | jq -r '.recording // empty')\nif [ -n \"$RECORDING\" ]; then\n  anycap actions video-read --file \"$RECORDING\" \\\n    --instruction \"What audio changes did the user request? Note any specific time ranges or sections they mentioned.\"\nfi\n\n# Clean up\nanycap annotate stop --session <session_id>\n```\n\nAudio feedback typically results in re-generation with an adjusted prompt rather than spatial edits.\n\n---\n\n## Iterative Review Loop\n\nFor complex tasks, iterate:\n\n```mermaid\ngraph TD\n    A[Agent produces work] --> B[Start annotation session]\n    B --> C[Human reviews and annotates]\n    C --> D[Agent collects feedback]\n    D --> E[Agent applies changes]\n    E --> F{More changes needed?}\n    F -->|Yes| B\n    F -->|No| G[Deliver final result]\n```\n\nTips for iteration:\n\n- Version your outputs (`v1`, `v2`, `v3`) so the human can compare\n- Reference previous feedback in your changes (\"Addressed #1 from previous review: ...\")\n- After 2-3 rounds, summarize all changes made to confirm nothing was missed\n\n## Choosing the Right Scenario\n\n| Situation | Scenario | Why |\n|-----------|----------|-----|\n| Built/modified a web page | URL Review (single-user) | Recording captures browsing, scrolling, and narrated feedback |\n| Local dev server needs review | URL Review (single-user) | Same as above -- use `http://localhost:PORT` |\n| Generated image needs edits | Image Review | Annotated image feeds directly into image-to-image editing |\n| Team needs to review a design | Image Review (multi-user) | Everyone annotates together, all feedback in one place |\n| Design critique with stakeholders | Image Review (multi-user) | Real-time cursors and annotations keep everyone aligned |\n| Generated video needs feedback | Video Review | Pause at key moments to annotate specific frames |\n| Music/audio needs feedback | Audio Review | Annotate the canvas to mark time regions |\n| Need to create/iterate on diagrams | **Use `anycap draw` instead** | Interactive whiteboard with Mermaid input, agent can push updates |\n| Architecture chart needs human input | **Use `anycap draw` instead** | Collaborative Excalidraw editor with real-time sync |","tags":["anycap","human","interaction","anycap-ai","agent","agent-skills","claude-code","cli","coding-agent","skills"],"capabilities":["skill","source-anycap-ai","skill-anycap-human-interaction","topic-agent","topic-agent-skills","topic-claude-code","topic-cli","topic-coding-agent","topic-skills"],"categories":["anycap"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/anycap-ai/anycap/anycap-human-interaction","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add anycap-ai/anycap","source_repo":"https://github.com/anycap-ai/anycap","install_from":"skills.sh"}},"qualityScore":"0.466","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 32 github stars · SKILL.md body (17,722 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-01T12:57:23.962Z","embedding":null,"createdAt":"2026-04-18T22:22:34.094Z","updatedAt":"2026-05-01T12:57:23.962Z","lastSeenAt":"2026-05-01T12:57:23.962Z","tsv":"'-3':2392 '/hero-banner-annotated.png':1942 '/tools/annotate/':792 '0.0.0.0':568,676,1878 '1':1195,1531,1579,1645,2386 '127.0.0.1':345,648 '2':1542,1608,1641,1752,1934,2391 '3':1547,1647 '3000':1346,1585,1614 '4':1552 '8888':355,678,690,701,703,709,716,717,721,794,1880 'absent':1488 'access':481,564,633,647,659,683,689,804,1214 'acknowledg':462 'across':356 'action':1395,1675,1687,1707,1732,2095,2271 'activ':285 'actual':574 'adapt':442 'add':2211 'addit':815 'address':343,1643,2385 'adjust':2144,2311 'agent':324,935,943,951,960,973,976,981,984,985,988,1083,1092,2328,2343,2348,2535 'ai':1387 'align':2494 'alreadi':468 'also':1429 'alway':483,736,1093,1493 'ambigu':879 'analysi':1653 'analyz':1360,1383,1526,1594,1680,2031,2074,2223,2253 'annot':14,29,78,95,142,178,192,199,209,246,259,273,280,294,328,406,437,514,585,599,657,670,685,757,821,827,829,900,927,946,968,982,1001,1073,1171,1241,1248,1285,1309,1312,1344,1353,1367,1376,1432,1434,1439,1446,1504,1530,1556,1583,1596,1612,1625,1667,1791,1834,1851,1870,1890,1894,1903,1908,1948,1980,1983,1995,2002,2016,2037,2041,2051,2054,2062,2067,2083,2133,2188,2201,2229,2233,2241,2246,2259,2298,2333,2340,2448,2470,2491,2506,2514 'anycap':2,12,43,76,106,116,121,131,141,245,258,272,279,293,669,939,945,1170,1343,1352,1366,1375,1394,1433,1445,1582,1595,1611,1624,1674,1686,1706,1731,1840,1850,1869,1889,1902,1921,1947,2001,2036,2061,2082,2094,2132,2187,2228,2240,2258,2270,2297,2527,2545 'anycap-c':105,130 'anycap-human-interact':1 'anycap-media-product':115,1839 'anycap/annotate':1134 'api':769,1461 'appli':1509,1599,1914,2349 'approv':907 'arbitrari':764 'architectur':2539 'area':870 'arrow':212,593 'artifact':160,521,554,1235,1301 'ask':909 'asset':768 'attempt':402,1499 'audio':38,309,1036,1815,2157,2165,2177,2199,2238,2279,2301,2512 'authent':127 'auto':298,392,454 'auto-detect':297 'auto-open':391,453 'automat':383,401,461,813 'avail':591,1507,1810 'b':2331,2335,2358 'back':225 'background':253,277 'banana':1933 'base':445,612,1537,1602 'bash':235,660,1160,1339,1362,1577,1682,1847,1885,2000,2032,2186,2224 'behavior':1008 'behind':578,760 'best':157 'bind':334,341,342,567,651,661,675,1862,1877 'block':236,251,320,395,399,1012,1047,1107 'box':789 'briefli':586 'brows':177,1304,2421 'browser':238,359,390,411,452,1213,1458,1664 'browser-access':1212 'built':846,1203 'built/modified':2410 'button':507,994,1455 'c':2336,2341 'caddi':727 'can':608 'cannot':511,646,1282 'canva':2182,2204,2516 'capabl':63 'captur':183,1661,2420 'categor':1738 'chang':844,918,1425,1521,1536,1546,1566,1576,1601,1698,1728,1771,1915,2128,2215,2239,2280,2350,2354,2384,2396 'chart':2540 'chat':911 'check':1370,1494 'choos':149,2403 'clean':1443,1945,2130,2295 'cli':100,107,122,132,418,937,940,944,950,977,980,989,1024 'click':242,490,970,997,1018,1052,1077,1098,1481,2025,2217 'client':1255 'cloud':642 'code':1520,1545,1600 'collabor':41,186,380,534,1032,1062,1754,1782,1808,2548 'collect':5,69,1358,1881,2029,2221,2344 'command':101,232,957,959,979,991,1025,1155,1169,1178,1181 'communic':451 'compar':2378 'compat':755 'complet':1826 'complex':2321 'compos':610 'composit':1996 'conduct':231 'configur':816 'confirm':270,974,1619,2399 'confus':562,1253 'connect':1038 'consist':351 'constraint':65 'contain':416,641,710 'content':301,1215,1574,1969 'context':291,447,1158 'control':805 'core':139 'cover':27 'creat':17 'create/iterate':2523 'critic':1745 'critiqu':2478 'cross':1237,1288 'cross-origin':1236,1287 'current':1723 'cursor':558,1246,1797,2489 'd':2342,2346 'declin':1475 'default':339,344,410 'deliv':2362 'describ':587,1412,1701,1721,2213,2236 'descript':314 'design':191,2463,2477 'desir':1697,1727,1770,2214,2237 'desktop':457,623 'detail':884 'detect':299 'dev':169,1341,2427 'diag':42 'diagram':21,2525 'differ':62,219,1009 'direct':649,688,2451 'directori':1139 'display':364 'distinct':146 'docker':713 'done':241,271,485,491,971,975,993,998,1019,1053,1076,1099,2026,2218 'draw':1311,1799,2015,2181,2200,2528,2546 'drawn':1669 'e':2347,2351 'e.g':353,801,917 'edit':1605,1835,2151,2316,2445,2457 'editor':2550 'element':1716,1928 'emphas':504 'empti':1382,1452,2089,2265 'end':1020,1058 'enter':387 'entir':48 'environ':414,639,745 'error':426 'everyon':2469,2493 'everyth':184 'exact':1330 'excalidraw':26,2549 'excel':143 'except':542 'exist':1373,1497,2073,2252 'export':512,1243,1283 'expos':695,724 'extract':1685,1893 'f':2352,2356,2359 'feed':2450 'feedback':8,39,72,196,497,553,865,876,896,913,987,1006,1042,1056,1234,1300,1361,1511,1516,1541,1604,1623,1684,1730,1742,1884,2057,2080,2103,2137,2172,2256,2302,2345,2381,2425,2473,2498,2511 'fi':1428,2129,2294 'field':1485 'file':49,303,307,310,955,1143,1193,1399,1534,1606,1691,1711,1736,2099,2275 'final':2363 'finish':493,1103,2028,2220 'first':1650 'fit':153 'fix':337,376,667,741 'flag':312,313 'follow':784,929 'forward':582,698,752 'frame':1310,1978,1992,2019,2049,2060,2149,2508 'frame-level':2148 'freehand':214,595 'fresh':1569 'g':2361 'general':1683 'generat':111,188,832,1524,1759,1833,1923,1959,2162,2308,2442,2495 'generated/modified':619 'get':224,498,1321 'getdisplaymedia':1460 'give':1621,2107 'grant':1467 'graph':2325 'ground':864 'guid':67 'guidanc':965 'guidelin':433 'headless':413,563,625,631,638,744 'headless/ssh':472 'hero-banner-annotated.png':1857,1876 'hero-banner-v2.png':1944 'hero-banner.png':1852,1871 'hidden':1262 'highlight':161 'host':373,575,705 'human':3,10,44,74,89,269,432,441,488,645,680,838,855,888,942,961,966,967,972,996,1096,1219,1303,1560,1589,1618,1636,1767,1965,1971,2009,2169,2174,2195,2337,2376,2542 'id':1153,1440,1911,2068,2247 'identifi':1532 'ifram':1239,1290 'imag':28,185,189,193,302,329,1034,1278,1523,1753,1761,1812,1828,1830,1898,1900,1918,1920,1922,1937,1939,1941,1984,2042,2443,2446,2449,2454,2456,2464,2481 'image-to-imag':1827,1897,1917,1936,2453 'image/video':834 'image/video/audio':1112 'immedi':1027 'import':1746 'includ':1176,1426,1666 'incorrect':56 'independ':541,1118 'indic':1260 'info':257 'initi':1580 'input':2534,2543 'insid':1307 'instal':125 'instead':424,2529,2547 'instruct':1401,1692,1712,1737,2101,2277 'interact':4,24,45,924,2530 'interfac':664 'intern':811 'involv':88 'ip':576 'issu':1404,1411,1644,1695,2113 'iter':19,1512,1836,2317,2323,2367 'join':1868,1913 'jq':1379,1437,1906,2065,2086,2244,2262 'json':1135 'keep':1072,1925,2492 'key':311,448,2013,2503 'l':700 'label':217,604,1442,1895,1910,1912,2070,2212,2234,2249 'latest':1088 'lead':54 'level':2150 'like':782 'list':283,295,1161,1172,1174,1402,1693 'live':171,1350 'local':168,1340,2426 'localhost':702,708,720,793,1345,1584,1613,2440 'localstorag':367 'locat':881 'look':1416 'loop':1832,2319 'lose':1150 'loss':292 'made':2397 'make':560,655,1250,1543 'manual':1190 'map':712,1518,2139 'mark':1769,2206,2518 'markup':1325 'matter':1276 'may':1450 'mean':378 'media':59,110,117,1841,1952 'mention':484,530,2293 'merg':195 'mermaid':932,2324,2533 'messag':444,609,1633 'miss':2402 'mode':321,400,503,510,544,1011,1013,1033,1048,1063,1108,1225,1279,1281,1816,1818,1935 'model':1930,2154 'modifi':848,1205 'moment':2014,2504 'move':866 'multi':523,629,1780,1806,1859,2467,2484 'multi-review':628 'multi-us':522,1779,1805,1858,2466,2483 'multipl':197,526,556,1110,1244,1783 'music':2163 'music/audio':2509 'must':123 'n':1391,2091,2267 'name':365,389,1256 'nano':1932 'nano-banana':1931 'narrat':176,180,892,1296,1318,1672,2023,2255,2424 'natur':611 'need':137,818,836,853,861,904,1217,1535,1763,1963,2167,2355,2429,2444,2459,2497,2510,2521,2541 'network':1864 'never':1480 'new':1555 'nginx':726 'nice':1748 'nice-to-hav':1747 'no-wait':260,315,672,947,1015,1049,1347,1355,1586,1615,1853,1872,2004,2190 'non':250,319,398,1046,1106 'non-block':249,318,397,1045,1105 'note':1804,2114,2285 'noth':2400 'notif':1069 'number':742 'o':247,263,325,1856,1875,1943 'one':151,1264,1764,2475 'open':237,393,404,455,460,470,707,719,1786 'option':2020 'origin':372,1238,1289,2119 'output':243,326,1175,1985,2370 'output.mp4':2003 'output.png':248,264 'overlay':1044 'overwrit':1078 'p':715 'page':31,164,167,459,466,778,851,1198,1208,1306,2413 'param':1940 'paramet':800 'particip':529,934,936,941 'pass':798 'path':332,734,765 'pattern':925,931,1654 'paus':1973,1991,2011,2048,2501 'peer':1259 'permiss':1471,1477 'persist':1132 'person':538,1265 'place':2476 'play':2197 'player':2178 'point':213,449,594,840,1407,1719 'poll':265,274,956,978,1084,1120,1177,1363,1368,1377,1435,1491,1592,1886,1891,1904,2033,2038,2063,2084,2225,2230,2242,2260 'port':333,338,348,354,374,377,581,653,668,677,693,697,711,738,1879,2441 'predict':750 'prefix':735,766 'prerequisit':120 'present':429,435,962 'preserv':808 'prevent':1240 'previous':1550,2380,2388 'primari':159,520,552,1233,1299 'print':419 'priorit':1729 'prioriti':1744 'process':986 'produc':2329 'product':118,1842 'progress':1639 'prompt':1478,1901,1924,2145,2312 'provid':2171 'proxi':723,731,754,762,797 'pure':915 'push':2537 'queri':799 'quick':233 'r':1380,1438,1907,2066,2087,2245,2263 'rais':428 'random':340 'rang':2289 'rather':2313 're':386,2307 're-ent':385 're-gener':2306 'read':46,103,113,128,1191,1398,1430,1502,1678,1690,1710,1735,1837,2052,2098,2232,2274 'real':203,532,1777,1802,2487,2553 'real-tim':202,531,1776,1801,2486,2552 'rec':506,1454,1482 'recent':1125 'recogn':382 'recommend':322 'record':35,98,174,182,500,505,517,549,890,969,983,1230,1252,1275,1294,1316,1372,1374,1381,1385,1392,1400,1449,1484,1528,1652,1656,2021,2072,2081,2088,2092,2100,2251,2257,2264,2268,2276,2419 'recoveri':289,1128,1168 'rect':211,592 'refer':102,234,2379 'refin':1831 'reflect':1122 'regardless':1508 'regener':2141 'region':2208,2520 'relat':775 'remot':632 'request':812,2284 'requir':1463,1567 'reset':1159 'resolv':774 'respons':1147 'restrict':1291 'result':244,267,1030,1081,1121,1365,1492,1888,2035,2227,2304,2364 'resum':1188 'retriev':1086 'return':255,379,1026,1140 'revers':722,730,753,761 'review':32,37,147,165,187,198,229,465,527,630,857,1111,1115,1199,1221,1267,1513,1515,1581,1590,1610,1651,1705,1755,1784,1849,1861,1955,1967,2158,2318,2338,2389,2415,2430,2432,2447,2461,2465,2482,2500,2513 'right':2405 'round':1564,1578,1607,1630,1640,2393 'run':635,714 'said':1335 'save':327,499,540,1004,1054,1080,1089,1117,1126 'saw':1333 'scenario':140,156,206,1194,1751,1773,2406,2408 'scope':370 'screen':34,97,173,1293,1469 'screen-shar':1468 'screenshot':190,515,1242,1286 'screenshot.png':671 'scroll':2422 'section':53,2210,2291 'see':1040,1066,1793,2175 'select':1909 'sequencediagram':933 'server':170,254,278,658,822,1342,2428 'session':256,275,282,286,357,438,952,954,1022,1060,1127,1129,1142,1152,1163,1184,1192,1270,1338,1369,1378,1436,1448,1551,1557,1570,1598,1627,1846,1892,1905,1950,2039,2064,2085,2135,2231,2243,2261,2300,2334 'setup':135,781 'share':473,569,1470 'shine':1774 'side':823 'simultan':200,1792 'singl':547,626,1228,1821,1848,2417,2434 'single-us':546,1227,1820,2416,2433 'situat':155,615,2407 'skill':81,108,119,133,1843 'skill-anycap-human-interaction' 'skip':52 'snapshot':1988,2045 'source-anycap-ai' 'spatial':863,2056,2315 'spatially-ground':862 'specif':1704,2079,2147,2287,2507 'ssh':415,579,640,696,699 'staging.example.com':1354 'stakehold':2480 'start':51,252,1146,1336,1553,1844,1999,2185,2332 'state':1090,1130,1724 'status':1166 'stderr':423 'still':1506 'stop':276,281,958,990,1180,1447,1548,1597,1626,1949,2134,2299 'store':360 'structur':6,70 'submit':1043 'subsequ':1075 'suggest':580 'summar':2394 'support':207,2155 'sync':2555 'tab':1665 'tag':1257 'task':2322 'td':2326 'teach':82 'team':2458 'teammat':1866 'tell':477,486,1094,2007,2193 'text':216,603,874,921,1431,1503 'text-on':873 'textual':916 'time':204,533,1273,1778,1803,2078,2207,2288,2488,2519,2554 'time-specif':2077 'timestamp':1427,2116 'tip':346,2365 'titl':920 'toast':1068 'togeth':2471 'token':802 'tool':15,79,210,589 'toolbar':1002 'top':1314,1998 'topic-agent' 'topic-agent-skills' 'topic-claude-code' 'topic-cli' 'topic-coding-agent' 'topic-skills' 'track':1638 'track.mp3':2189 'two':138,145 'type':60,1441,1953,2069,2248 'typic':1517,2138,2303 'ui':172,686,758,1209,1703,1715 'ui-specif':1702 'unchang':1929 'understand':1389 'unlik':1277 'updat':2538 'url':162,304,407,421,475,502,509,571,748,772,779,953,963,1196,1224,1269,1280,1351,1510,1514,1573,1789,2414,2431 'url/iframe':543,1817 'url/web':30 'use':11,22,75,287,347,566,607,650,737,826,828,899,1200,1456,1673,1756,1883,1956,2159,2439,2526,2544 'user':362,524,548,557,704,1039,1065,1229,1245,1406,1465,1474,1700,1718,1740,1781,1807,1822,1860,2106,2283,2418,2435,2468,2485 'v1':2371 'v2':2372 'v3':2373 'valu':352 'verif':1609 'verifi':1562 'version':1628,2368 'via':687,1916 'video':36,306,1035,1328,1388,1397,1501,1660,1677,1689,1709,1734,1813,1954,1961,1968,1975,2097,2110,2120,2136,2273,2496,2499 'video-read':1396,1500,1676,1688,1708,1733,2096,2272 'visual':7,71,94,859,883,1223,1324,1540 'vm':643 'voic':1671 'wait':239,262,317,674,949,1017,1051,1349,1357,1588,1617,1855,1874,2006,2192 'walkthrough':893,1319 'want':886,1424,2127 'web':163,166,850,1197,1207,2412 'webm':1659 'websocket':771 'whether':620 'whiteboard':25,2531 'without':384,1057,1189 'work':759,785,1138,2330 'workflow':57,66,92,112,148,928 'would':559,877,1249 'wrong':872,1420,2123 'x':923 'yes':2357 'yes/no':906 'yourserver.com':791 'yourserver.com/tools/annotate/':790","prices":[{"id":"050a4880-21b6-4ed4-bf88-2e3e47aed3d2","listingId":"b7d039b7-7836-4df4-8bfc-663382d1e75a","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"anycap-ai","category":"anycap","install_from":"skills.sh"},"createdAt":"2026-04-18T22:22:34.094Z"}],"sources":[{"listingId":"b7d039b7-7836-4df4-8bfc-663382d1e75a","source":"github","sourceId":"anycap-ai/anycap/anycap-human-interaction","sourceUrl":"https://github.com/anycap-ai/anycap/tree/main/skills/anycap-human-interaction","isPrimary":false,"firstSeenAt":"2026-04-18T22:22:34.094Z","lastSeenAt":"2026-05-01T12:57:23.962Z"}],"details":{"listingId":"b7d039b7-7836-4df4-8bfc-663382d1e75a","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"anycap-ai","slug":"anycap-human-interaction","github":{"repo":"anycap-ai/anycap","stars":32,"topics":["agent","agent-skills","claude-code","cli","coding-agent","skills"],"license":"mit","html_url":"https://github.com/anycap-ai/anycap","pushed_at":"2026-04-23T15:05:30Z","description":"The capability harness for AI agents. Skills over SDKs.","skill_md_sha":"a5aa910b75f9f189948b2fc922b068ac62c43d47","skill_md_path":"skills/anycap-human-interaction/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/anycap-ai/anycap/tree/main/skills/anycap-human-interaction"},"layout":"multi","source":"github","category":"anycap","frontmatter":{"name":"anycap-human-interaction","license":"MIT","description":"Collect structured visual feedback from humans using AnyCap's annotation tool, or create and iterate on diagrams using the interactive whiteboard (Excalidraw). Covers image annotation, URL/web page review with screen recording, video review, audio feedback, and collaborative diagramming with Mermaid input. Use when you need a human to point at things, mark regions, draw on screenshots, review a web page or UI, narrate feedback over a recording, provide any spatially-grounded visual input, create or iterate on architecture diagrams, flowcharts, or wireframes. Also use when you need to present work-in-progress to a human for approval or revision. Trigger on: get feedback, show to user, review UI, annotate, mark up, visual feedback, screen recording, user review, human-in-the-loop, approval flow, interactive review, whiteboard, diagram, draw, flowchart, wireframe, or architecture chart.","compatibility":"Requires anycap CLI binary and internet access. Works with any agent that supports shell commands."},"skills_sh_url":"https://skills.sh/anycap-ai/anycap/anycap-human-interaction"},"updatedAt":"2026-05-01T12:57:23.962Z"}}