Free & open source · Chrome · Edge · Brave · Arc
Stop describing elements to your AI agent. Point at them.
Pluck is a browser extension for the AI-assisted dev loop: hit a hotkey, click any element, and an agent-ready CSS selector lands on your clipboard. Paste it to Claude Code, Cursor, Copilot — anything that reads text.
Chrome Web Store listing coming soon · loads unpacked in 30 seconds today
Ship projects without the project management.
Tasks, docs and timelines in one quiet workspace.
Boards that breathe
Kanban without the clutter.
Docs, attached
Specs live next to tasks.
Timelines on autopilot
See the slip the day it happens.
It really copies — paste your clipboard after clicking. Selectors are computed live with the same verified-uniqueness engine the extension ships.
How it works
One gesture, not five steps
The old loop: DevTools → Inspect → read the class soup → copy → describe it anyway. Pluck collapses it into point-and-click.
Hit the hotkey
⌘⇧E on Mac, Ctrl⇧E elsewhere — or record any combo you like. It fires on the first press, on any site.
Click the element
The element under your cursor lights up with its tag.class#id and size. ↑ grabs the parent, ↓ the child. The click never reaches the page.
Paste to your agent
A verified-unique selector — plus the element's text and markup — is on your clipboard. Your agent knows exactly what you mean.
What gets copied
Choose how much context travels
Three formats, switchable in the popup. The default gives an agent everything it needs to find the element in source — and nothing it doesn't.
button.btn.btn-primary · "Get started" selector: button.btn.btn-primary <button class="btn btn-primary">Get started</button>
Selector, text & opening tag — the default. Your agent can grep for it.
The selector engine
Selectors that earn the paste
Most pickers guess. Pluck verifies — every selector is checked against the live DOM before it's offered.
Verified-unique, always
A selector ships only if querySelectorAll matches exactly one node. Ancestors and :nth-of-type()are added only when they actually disambiguate. If uniqueness can't be reached, Pluck tells you.
document.querySelectorAll(sel).length === 1 ✓
Junk classes filtered out
Machine-generated noise from CSS Modules, styled-components, Emotion and friends is dropped, so selectors stay readable and stable across builds. Real names survive.
.css-1a2b3c .sc-bdVaJa .jsx-81747 .btn-primary .editorContent ✓
Refine without re-aiming
Wanted the card, not the paragraph inside it? ↑ walks up to the parent, ↓ back down — grab the right container without pixel-perfect mousing.
p.card-sub → ↑ → div.card → ↑ → section.features
Correct in the weird cases
SVG tag casing is preserved (a lowercased linearGradient matches nothing), and every identifier is CSS-escaped — emoji classes, leading digits, all of it.
svg > defs > linearGradient#grad-a ✓
Engineered for the first press
The shortcut that always fires
Most extensions route hotkeys through the browser's command API — which means waking a service worker, racing injection, and silently failing in some browsers. Pluck's listener is already on the page, declared in the manifest. No wake-up, no race. And because every inspect-mode event is captured before the page sees it, you can pluck a link or submit button without triggering it.
Privacy
Nothing leaves your machine
Not a promise — an architecture. Pluck has no server to send anything to.
Zero network
No requests, no analytics, no telemetry, no error reporting, no accounts. The permission gate in CI fails the build if anything new sneaks in.
Reads only on invoke
Pluck touches the DOM at the moment you activate it and click — never in the background, never on page load.
Local storage only
Your format preference, custom shortcut and last 10 captures live in chrome.storage.local — on your device, deleted on uninstall.
Read the full privacy policy — it's genuinely short.
FAQ
Questions, answered
Which AI agents does Pluck work with?
All of them — Pluck puts plain text on your clipboard. Paste it into Claude Code, Cursor, Copilot, Codex, Windsurf, Aider, or a plain chat window. The default format includes the selector plus the element's text and opening tag, which is exactly the context a coding agent needs to find the element in your source.
Which browsers are supported?
Any Chromium browser with Manifest V3: Chrome, Edge, Brave and Arc. Pluck handles its keyboard shortcut in-page rather than through the browser's command API, so it fires reliably on the first press — including in Arc, where extension shortcuts are notoriously flaky.
Why does Pluck ask for access to all sites?
The content script containing the shortcut listener must already be on whatever page you're looking at — that's what makes the hotkey work instantly on any site, with no service-worker wake-up or injection race. The script is inert until you activate inspect mode, and it never reads a page on its own. The code is open source, so you can verify exactly what it does.
Does Pluck send my data anywhere?
No. Pluck makes zero network requests — there's no server, no analytics, no telemetry, no accounts. Your format preference, custom shortcut and last 10 captures are stored locally in your browser and deleted when you uninstall. The architecture makes collection impossible, not just disallowed.
Can I change the keyboard shortcut?
Yes — open the popup, click the shortcut chip, and press any combination (it needs at least one of Ctrl, Alt or Cmd). It updates live in every open tab. The default is ⌘⇧E on macOS and Ctrl+Shift+E on Windows and Linux.
What if a selector matches more than one element?
Pluck verifies every selector against the live DOM — it must match exactly one node before it's offered. The engine climbs ancestors and adds :nth-of-type() only when needed. In the rare case perfect uniqueness can't be reached, the toast and your history flag it with an amber "may match multiple" warning, so you're never surprised.
Point. Click. Paste.
The fastest way to tell your AI agent which element you mean. Free, open source, offline by design.