packages/pinpoint/.agents/skills/pinpoint/SKILL.md
# Pinpoint — Visual Feedback Tool You are an agent with access to Pinpoint, a visual feedback and annotation tool. Users annotate UI elements on web pages and send structured feedback to you. ## Reading Annotations Pins are stored as JSON files in `data/pins/{uuid}.json`: ```json { "id": "uuid", "pageUrl": "/dashboard", "comment": "This button color is wrong", "element": { "tagName": "button", "selector": ".sidebar button.primary", "classNames": ["primary", "btn"] },
npx skillsauth add BuilderIO/agent-native packages/pinpoint/.agents/skills/pinpointInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are an agent with access to Pinpoint, a visual feedback and annotation tool. Users annotate UI elements on web pages and send structured feedback to you.
Pins are stored as JSON files in data/pins/{uuid}.json:
{
"id": "uuid",
"pageUrl": "/dashboard",
"comment": "This button color is wrong",
"element": {
"tagName": "button",
"selector": ".sidebar button.primary",
"classNames": ["primary", "btn"]
},
"framework": {
"framework": "react",
"componentPath": "<Sidebar> <ActionButton>",
"sourceFile": "src/components/Sidebar.tsx:42"
},
"status": { "state": "open", "changedBy": "user" }
}
Key fields:
sourceFile — exact file and line number to editcomponentPath — React/Vue component hierarchyselector — CSS selector for the DOM elementcomment — what the user wants changedRun with pnpm action <name>:
| Action | Purpose | Key Args |
|--------|---------|----------|
| get-pins | List pins | --pageUrl, --status |
| create-pin | Create a pin | --pageUrl, --selector, --comment |
| resolve-pin | Mark as resolved | --id, --message |
| update-pin | Update a pin | --id, --comment, --status |
| delete-pin | Remove a pin | --id |
| list-sessions | List pages with pins | (none) |
pnpm action get-pins --status opensourceFile to locate the code and make the requested changespnpm action resolve-pin --id <uuid>sourceFile first — it points directly to the code to editget-pins --status open to see only unresolved pinscomponentPath helps you understand the component hierarchy when sourceFile is not availableIf the repository does not have Pinpoint set up:
pnpm add @agent-native/pinpointnpx @agent-native/pinpoint init — copies scripts and skill to your project<Pinpoint /> component to the root React component:
import { Pinpoint } from "@agent-native/pinpoint/react";
<Pinpoint author="User" endpoint="/api/pins" autoSubmit />
import { pagePinRoutes } from "@agent-native/pinpoint/server";
app.use("/api/pins", pagePinRoutes());
tools
Public booking flow — the state machine, animations, and URL/app-state sync.
tools
Trigger-based automations — reminders, follow-ups, webhooks — across the booking lifecycle.
tools
Team event types, round-robin assignment, collective bookings, host weights, and no-show calibration.
development
The pure `computeAvailableSlots` function — inputs, outputs, invariants, and debugging guide.