Agentation

I'm excited to introduce Agentation, a visual feedback tool for AI coding agents. It started as the rough prototype I wrote about here, and it's now a proper npm package that anyone can use.

The best way to explain what it does is to show you. Every animation on this page was built with Claude Code and Agentation.1 In fact, so was the entire docs site, from the layout and components to every animated demo. I'd describe what I wanted, watch what Claude produced, click on the parts that needed work, and paste the feedback back. Agentation helped build Agentation.

localhost:3000
Benji's Dashboard
1
2
3
4
5
button.submit-btn
|
Cancel
Add
Benji's Project
Claude Codev2.1.14Welcome back Benji!Opus 4.5 · ~/Code/agentation

A faux example of Agentation in action, made with Agentation + Claude of course.

What follows is a tour of Agentation's features. Every demo was made with the feature it's showing. Yes, it's very meta.


Building with pointing

The loop looked like this: Claude generates some UI. I look it over, interact with it a few times. Something feels off: maybe the spacing is too tight, or a color is slightly wrong, or a transition doesn't quite land. I click on the element, write a note like "needs more padding" or "make this darker," and copy the output.

That output is structured markdown with selectors, positions, and context. I paste it into Claude. Claude reads the selector, finds the code, makes the adjustment. I check again. Still not right. Another annotation. Another pass.

This went on for hours. Dozens of iterations per demo. Hundreds across the entire docs site.

thankfully I enjoy this

Text selection

The simplest case is text. You see a typo, you select it, you write the correction. The selected string goes into the output so the agent knows exactly what to search for. I fixed dozens of copy issues on the docs site this way.

localhost:3000/blog

“Simple can be harder than complex: You have to work hard to get your thinking clean to make it simpl. But it's worth it in the end because once you get there, you can move mountains.”

— Steve Jobs

1
“simpl”
|
Cancel
Add

Select text to annotate typos, content issues, or copy changes.


Element click

For everything else, you click. Agentation figures out what you clicked on and captures enough context for an agent to find it in code. Most of the demos you're seeing were refined this way: click, note, iterate.

localhost:3000/account
1
<button.upgrade-btn>
|
Cancel
Add

Click any element to add feedback.


Multi-select

Sometimes you want to annotate several things at once. I used this constantly when building the docs, selecting all the navigation links that needed the same hover treatment.

localhost:3000/tasks
1
3 elements selected
|
Cancel
Add

Drag to select multiple elements at once.


Area selection

You can also select empty space. I used this for layout feedback, pointing at gaps where something should go or areas that felt too cramped.

localhost:3000/landing
1
Area selection
|
Cancel
Add

Drag to select any region, even empty space.


Animation pause

CSS animations are the trickiest. The state you want to annotate might only exist for a fraction of a second. Pausing freezes everything in place so you can click on exactly the right moment.

localhost:3000/upload
1
<div.skeleton-card>
|
Cancel
Add

Freeze CSS animations to annotate specific states.


The logo

Even the bunny went through this process. The ear twitches, the blinks, the eye movements: all tuned through pointing and feedback until it felt right.

I'm not sure why I chose a bunny for the logo, but it feels right.


What the output captures

When you click an element, the output includes its class names, its position in the DOM, its bounding box. When you select text, you get the exact string.

localhost:3000/@benjitaylor
avatar

Benji Taylor

@benjitaylor

head of design @base. founder @family (acq by @aave). tools @dip.

Los Angeles, CAbenji.org
394 Following28.3K Followers

Elements are identified by text, alt attributes, or class names.

Elements are named by their most identifying feature: text content, alt attributes, or class names.

images use alt text or src filename

A button is identified by its text. An image by its alt attribute. A link by where it points.2 "Make the avatar smaller" is ambiguous. img.sid-avatar is not. This precision is why the feedback loop stayed tight even after hundreds of iterations.


Calibrating context

One thing that became increasingly obvious: how much context you need depends entirely on the problem.

Fixing a typo? The agent just needs to know where the text is. Debugging why a transition feels off? That might need computed styles, bounding boxes, the element's full DOM path, etc.

So there are four output modes: Compact gives you just the selector and your note. Standard adds position and any selected text. Detailed includes bounding boxes and nearby context. Forensic captures everything, including computed styles.

/agentationv0.3.2
Output Detail
Marker Colour

Configure output detail, marker color, and behavior.

Most of the time Standard was enough. But when I couldn't figure out why the settings panel animation on the docs site felt wrong, switching to Forensic revealed the exact CSS properties being applied. Claude saw the same thing I saw, and fixed it in one pass.


Now available

Agentation is a single React component. Add it to your layout, and a toolbar appears in the corner. Click to annotate, copy the output, paste it into your agent. The output is plain markdown, so it works with Claude Code, Cursor, or whatever you're using.

npm install agentation
import { Agentation } from "agentation";
 
export default function Layout({ children }) {
  return (
    <>
      {children}
      {process.env.NODE_ENV === "development" && <Agentation />}
    </>
  );
}

People talk about one-shotting: getting an agent to nail something on the first try. Agentation is less about that and more about giving the agent what it needs to give you its best shot. Sometimes that's one pass. Usually it's a few. The point is each pass counts.

best-shotting?

This is still a v1. But even in its current form, it's already changed how I work. Hopefully it does the same for you.

To learn more, check out the full Agentation docs.

Acknowledgements

Special thanks to Dennis Jin and Alex Vanderzon for collaborating on this.

This post was designed by me, with the help of... you guessed it.

Footnotes

  1. Seriously, every single one. The cursor movements, the timing, the easing curves, all iterated through pointing and feedback.

  2. If you build something similar, let your agent help design the output format. It knows what context it needs.