📸 A still photo doesn’t show the dance
New here? One screenshot is a still photo of the screen at an exact moment—frozen pixel by pixel. It’s the basis of the loop you learned in module 5.3: the agent takes the photo, compares it with what should be there, and adjusts the CSS until they match.
Imagine asking someone to judge whether a dance looked good by comparing two photos: one from the start of the movement, and another from the end. You’ll see the two arm positions — but you won’t see the trajectory, the speed, whether the motion was smooth or choppy, and whether the timing matched the music. That’s exactly the limitation of the screenshot loop: it shows states, never the transitions between them.
Caption: the two photos (beginning and end) are all the screenshot loop can see. Everything that happens between them — the motion curve — remains invisible to an image comparison.
💡 Main Concept
The screenshot loop is excellent for comparing states. It can't see transitions.
- •Layout, color, spacing, alignment — all of these are state. The loop gets it right.
- •A smooth 300ms transition between two states — that's motion. The loop can't see it.
✅ What the loop handles well
Before talking about what’s missing, let’s reinforce where the loop works well—because the lesson in this module isn’t “don’t trust the loop,” it’s “know where it stops.” Everything that is static visual state (the appearance of the screen at a single frozen moment, without considering what came before or after) the loop compares pixel by pixel.
✓ The loop catches it
- ✓Incorrect spacing, misaligned element, broken margin
- ✓Color outside the palette, insufficient contrast
- ✓Clipped text, overflow, poor line breaks
- ✓Layout broken on mobile vs. desktop
- ✓One element overlapping another, incorrect z-index
✗ The loop loses
- ✗If a hover transition is smooth or choppy
- ✗Whether the timing of an entrance animation “fits” the content
- ✗If a background parallax effect creates a real sense of depth
- ✗Whether an animated gradient flows smoothly or stutters (jank)
- ✗If the interface’s overall “feel” seems expensive or cheap
🔍 Inside
A practical rule: if the difference between “right” and “wrong” shows up in a still photo, the loop can handle it on its own. If the difference only shows up live, as time passes, the loop needs help.
🎬 The two blind spots: animation and moving backgrounds
New here? CSS animation is a gradual change in a visual property (position, color, size) over time, controlled by the browser. Hover is an element's state when the mouse passes over it — usually triggering a transition. Parallax it’s the technique of moving background layers at different speeds from the scrolling, creating a sense of depth.
There are two families of things that escape the loop:
Animation—transition, hover, entrance effect
The agent takes two screenshots (before and after hover, for example), and both look right on their own. But the easing (the acceleration/deceleration curve of the movement — "smooth at the beginning, fast in the middle" is different from "linear the whole time") may be wrong, and no screenshot can show that.
Animated background — parallax, particles, video, animated gradient
Same limitation, larger scale: a still photo of the background never shows fluidity or whether the motion is steady or stutters (the jank — visual stuttering when the browser can't render frames in time).
Caption: the moving dot (pulsing cyan point) follows a smooth curve — but the two cameras capture only the beginning and the end. The “middle” of the motion, where the easing happens, never becomes an image.
💡 Practical Tip
If the agent says, “I compared the screenshots before and after hover, and everything looks right,” ask specifically about how smooth the transition is. They’re quite likely right about the final state without having checked anything about how it gets there.
🔬 Why this happens — the technical root cause
It’s not a lack of effort from the agent—it’s a tool limitation. The automated screenshot captures the screen at a single instant (a frame, a still frame). To actually “see” motion, you’d need to capture a sequence of frames over time and then interpret the differences between them — much more expensive, slower, and still harder to judge as “good-looking” or “ugly” than comparing two images.
Step 1 — the agent writes the CSS for an animation
It defines the `transition` or `@keyframes` based on what it read in the design or what you asked it to do.
Step 2 — take a screenshot of the initial state
This is reliable and quick to compare.
Step 3 — trigger the effect and take another screenshot
Again, one moment — at the end of the transition, or at an arbitrary point in the middle of it.
Step 4 — compare the two photos and "approve"
Here’s the risk: both screenshots match what you expected, but no one checked what happened between them—whether it froze, moved too quickly, or whether the timing fit with the rest of the page.
⚠️ Attention
The agent may genuinely “think” everything is fine—it’s not bad faith; the tool it has can only see states. That’s why you need to know about this limitation, not just have the agent fix it.
🛠️ Build: working directly in the code when the loop fails
When the piece is about movement, the solution isn't to insist on more screenshots — it's to change methods: ask the agent (1) to read the exact CSS values that control the movement (duration, easing, delay), (2) to explain what each value does in simple terms, and (3) to open the actual browser so you can watch the movement happen live, instead of relying only on automatic image comparison.
Preciso que você ajuste a animação do botão ""
no arquivo .
Antes de mexer, faça isto:
1. Leia o CSS atual da transição/animação desse elemento e me diga, em português simples,
qual é a duração, o easing e o delay usados hoje.
2. Não confie só em screenshot pra validar o resultado. Depois de editar, abra o navegador
de verdade (ou peça pra eu abrir) e descreva o que observou no movimento ao vivo:
ficou suave? ficou rápido demais? travou (jank) em algum ponto?
3. Só then ajuste o valor - o objetivo é .
Ao final, me diga exatamente qual linha de CSS mudou e por quê.
Force the agent to inspect the actual CSS values and watch the animation live, not just compare images.
The prompt above, adapting the element, file, and desired result inside the brackets.
Open the page in a browser yourself and hover over it or trigger the effect. If it looks right to you, it’s right—that judgment can’t be delegated.
🔍 Inside
- Duration: how long the movement takes (e.g., `transition: all 300ms`)—too fast feels like a “jump,” too slow feels “heavy.”
- Easing: the movement’s speed curve (`ease-in-out`, `ease-out`, `linear`) — it’s what makes it feel “natural” or “robotic.”
- Delay: how long to wait before starting—useful for chaining several animations in sequence.
📊 The missing 40% — where your judgment comes in
Let’s end with the number that will follow you through the rest of this learning path: the screenshot loop takes a front end from generic a solid — something like the first 60% of the way to “professional.” The last 40%—motion, timing, “feel,” the difference between looking like an expensive product and looking like a template—still depends on someone looking at the screen and making decisions. That boundary isn’t a flaw in the loop; it’s where AI’s work on its own ends and human judgment begins.
Caption: the bar shows the 60% the automated loop handles well (visual state) and the final 40%, where motion and timing require someone to actually look at the screen.
🎯 Main Concept
- •The loop isn’t replaced — it keeps doing the 60% faster than you could by hand.
- •The final 40% is where you step in: opening the browser, watching things move, deciding whether “it looks good.”
Quick check (optional): Why doesn’t the screenshot loop capture a poorly tuned hover transition well?
✏️ Exercise
Pick any button or card with a hover effect that the agent has already adjusted using the screenshot loop (module 5.3). Open the page in a browser, move your mouse slowly over it, and watch the motion live for 10 seconds.
- 1.Does the movement look smooth, or is there a noticeable “jump”?
- 2.If you don’t like it, use the prompt from topic 5 to ask the agent to read the CSS values and adjust them by inspecting the code, not just by comparing screenshots.
- 3.Repeat the live test after the adjustment—that’s the only way to close the loop here.