From pinpoint
Use when the user's message contains a JSON block with "source": "pinpoint" (pasted from the pinpoint browser overlay after clicking Send). Acks the bridge so the browser clears, then applies each annotation's comment to its component.
How this skill is triggered — by the user, by Claude, or both
Slash command
/pinpoint:pinpoint-pasteThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
The user clicked **Send** in the pinpoint overlay and pasted the resulting JSON. It looks like:
The user clicked Send in the pinpoint overlay and pasted the resulting JSON. It looks like:
{ "source": "pinpoint", "version": 2, "bridgeUrl": "http://localhost:7331",
"sessionId": "…", "promptId": "…",
"items": [{ "badge": 1, "kind": "element",
"selected": [{ "selector": "#hero-heading", "tagName": "H1", "text": "…",
"identifiers": { "id": "hero-heading" },
"react": { "componentName": "Hero", "ancestry": ["Hero","App"],
"source": { "file": "/src/App.tsx", "line": 7 } } }],
"comment": "make it bigger", "screenshot": "/abs/path/anno-1.png" }] }
curl -fsS -X POST "<bridgeUrl>/session/<sessionId>/ack" \
-H 'content-type: application/json' \
-d '{"promptId":"<promptId>","status":"running"}'
(substitute bridgeUrl, sessionId, promptId from the JSON.)comment using its selected[] entries:
screenshot is a path, Read it for visual context.selected, locate the source — cheapest signal first:
react.source ({ file, line }) when present → open that file at line directly; it's the element's exact source location.identifiers (id, testId/data-testid, aria-label, role, name) → grep these; they pin source fastest.react.componentName (function <name>, const <name> =, export default function <name>), disambiguating with react.ancestry (nearest-first).text + the CSS selector.kind: "element" item has exactly one selection (the picked element). A kind: "screenshot" item's selected[] holds the outermost container(s) plus the innermost leaf elements the region covered (any number of entries) — use them together to find the right component(s).comment is the instruction. An empty comment → ask the user what they want for that item.curl fails
(bridge not running), proceed with the edits and tell the user the browser won't auto-clear.selected: [] (region dragged over blank space) — in that case rely on the screenshot image (and any prose the user added) to locate the change.status:"done" ack.Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
npx claudepluginhub strvcom/strv-pinpoint --plugin pinpoint