Pinpoint — Visual Feedback Tool
SkillAI & modelsWith pinpoint added, your AI can read the feedback users pin on your web pages and fix the code those comments point to. It comes from a framework for building applications designed to work with AI agents. Feedback left on a page can end up as a real code change.
Available today. Use it from your connected AI after setup.
No other account needed.
After adding pinpoint, start with a page that has pinned feedback on it. Ask your AI to read the comments and fix the code they point to.
Then ask your AI: use the Pinpoint — Visual Feedback Tool skill
What your AI can do with it
- Read feedback that users pin on your web pages
- Find the code each pinned comment points to
- Fix the code based on that feedback
- Turn page comments into code changes
What this skill tells your AI
The instructions your AI receives, as published by builderio/agent-native in packages/pinpoint/.agents/skills/pinpoint/SKILL.md and read by ahel’s review.
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:
{
"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 changed
Actions
Run 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) |
Workflow
- User annotates elements in the browser
- Read pins:
pnpm action get-pins --status open - Use
sourceFileto locate the code and make the requested changes - Mark resolved:
pnpm action resolve-pin --id <uuid>
Tips
- Always check
sourceFilefirst — it points directly to the code to edit - Use
get-pins --status opento see only unresolved pins - Resolve pins after fixing them so the user gets visual confirmation
- The
componentPathhelps you understand the component hierarchy whensourceFileis not available - Multiple pins on the same page often relate to each other — read them all before starting fixes
Adding Pinpoint to a New App
If the repository does not have Pinpoint set up:
pnpm add @agent-native/pinpointnpx @agent-native/pinpoint init— copies scripts and skill to your project- Add
<Pinpoint />component to the root React component:import { Pinpoint } from "@agent-native/pinpoint/react"; <Pinpoint author="User" endpoint="/api/pins" autoSubmit /> - Add server middleware in the Express setup:
import { pagePinRoutes } from "@agent-native/pinpoint/server"; app.use("/api/pins", pagePinRoutes());
Signals
- GitHub stars
- 5k
- Forks
- 440
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
pinpoint- Source
- github.com/builderio/agent-native