# One prompt, nine agents: grading Bruce’s animated stickers

Nine coding agents received the same one-sentence brief, with no follow-ups or retries. We checked the delivered SVGs in a real browser and ran an anonymous blind review. The costliest mistakes were the silent ones.

Yang Yong’an + Claude Code · 2026-11-11 · Originally recorded: 2026-11-11

https://bruce.flydog.ai/blog/one-prompt-nine-agents?lang=en

<a id="the-brief"></a>

## A one-sentence brief

On 11 November we gave nine coding agents the same sentence: using Bruce’s original brand artwork, and taking a study of Grok Bot’s animated emoji as a reference, make a set of SVG animated stickers with a design write-up and a preview page, in a folder named after the model, version and effort level. It asked for real SVG animation with complete animation frames, for use while waiting, when celebrating and in blog illustrations.

There was one rule: **send that sentence and nothing else**. No questions answered, no additions, no retries. Even when a session looked one “continue” away from finishing, we scored what existed at that point. This compares a tool, a model and its configuration on a single attempt. It is a sample, *not a general verdict on any model*.

- Codex · gpt-6-astra
- ZCode · GLM-5.3
- Kimi Code · underlying model not reported by the session
- Grok CLI · grok-4.7-build-fast
- Qwen Code · qwen4-max-preview
- DeepSeek Harness · deepseek-v4-pro
- WorkBuddy 5.3.12 · Tencent Hunyuan Hy4 (its folder is named claude-opus-6-high; see below)
- MiMo Code 0.1.16 · mimo-v2.6-pro (no delivery)
- Claude Code · claude-opus-5-5 (the judge for this article; its entry is not ranked)

<a id="snapshot"></a>

## Snapshot first, then judge

Four agents committed their work themselves, following the project’s conventions; four left their files in the working tree. Before judging, we committed those four once under each agent’s own tool and model name, **without changing a file**, as the snapshot the review is based on. MiMo Code produced no files, so there was nothing to commit.

Committing counted toward the score. The project asks agents to commit promptly once a task passes its checks, which is direct evidence of whether an agent reads and follows a project’s working conventions. It carries only a small weight.

<a id="how-we-judged"></a>

## How we judged

Claude Code did the judging, and it was also a contestant. To avoid marking its own work, its entry is scored on the same scale and the score is published, but *it is not ranked*.

Scores lean on reproducible measurements. Chrome loaded **each entry’s delivered SVG files** and paused them at evenly spaced moments of their loops. Every animation’s keyTimes, keySplines and values were checked for validity. We looked for embedded bitmaps, scripts or external references, and for ids that collide when several files share a page. Each preview page was opened at 1280 and 390 pixels wide to record errors and horizontal overflow.

We also ran an anonymous blind review. The eight contact sheets were stripped of names, shuffled and given to another model to score brand fidelity, expressiveness, visible motion, craft and product usefulness. It belongs to the same model family as the judge, so its result is a reference only.

- Brief and conventions, 15 points: design write-up, preview page, folder name, committing per project conventions, honest self-identification.
- Brand fidelity, 20 points: is it still the owner-approved, left-facing pilot husky?
- Animation, 25 points: distinct emotions, anticipation, overshoot and squash and stretch, and real change from frame to frame.
- Engineering, 25 points: valid animation, self-contained files, size, id isolation and a robust preview.
- Product fit, 15 points: scene coverage, small sizes, light and dark surfaces, reduced motion and embedding guidance.

<a id="results"></a>

## Results

**Codex ranks first with 77**, Kimi Code second with 74, ZCode third with 71, and WorkBuddy with Hunyuan fourth with 67. Qwen Code scores 59, Grok CLI 50 and DeepSeek Harness 48. MiMo Code delivered nothing. The judge’s own entry scores 87 on the same scale and is not ranked; in the blind review it tied with the Hunyuan entry for the highest total.

The top four differ mostly in trade-offs: some redrew the character to gain exaggerated motion, others kept the brand but changed the face little. The bottom three have more specific problems, described below.

![Horizontal stacked bars: Codex 77, Kimi Code 74, ZCode 71, WorkBuddy Hunyuan 67, Qwen Code 59, Grok CLI 50, DeepSeek Harness 48, MiMo Code no delivery, and the judge’s entry at 87, not ranked.](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/scoreboard.en.svg>)

Figure 1. Overall scores; the five colors are the five criteria. The judge’s entry is shown faded and is not ranked.

<a id="codex"></a>

## Codex · gpt-6-astra: the most ready-to-use set

Instead of the profile master, it redrew a full-body chibi Bruce. The palette, goggles and violet badge remain, while a body, a tail and props such as a light bulb, a check mark and a laptop make its 12 stickers easy to tell apart. **All 488 SMIL animations are valid** and files average 23.7KB. The preview page is fully designed, does not overflow at 390 pixels and logs no errors. It also committed a plan before committing the work, following the project’s long-task conventions throughout.

It loses points on the brand. **The full body is not the owner-approved master**, the character fills little of the frame, and the face is hard to read at small sizes. SMIL animation also cannot respond to the system’s reduced-motion setting from inside the file.

![Three stickers from the Codex entry: a full-body chibi Bruce waiting, jumping in celebration with confetti, and leaning back with a frown after a mistake.](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/entry-gpt.svg>)

Figure 2. Codex: waiting, celebrating, oops. A full body lets the motion use the body and props. The figure omits an edge filter from the original files; the last section explains why.

- [Open this entry’s preview page](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/entries/gpt-6-astra-ultra/index.html>)

<a id="kimi"></a>

## Kimi Code: the most restrained, and the steadiest

It reuses the master’s paths and sets Bruce on a pale disc. Its 10 stickers change mainly through whole-body bounces and squashes, plus overlays such as a question mark, hearts, a warning sign and a check mark. All 196 animations are valid, files are small and the preview page is strongly designed. The word unspecified in its folder name records that the session gave no verifiable model version; **it said so instead of inventing one**.

**The face barely changes.** Eyes and mouth stay as in the master, emotion comes mostly from the symbols around it, and the exaggeration falls short. The entry was not committed per the project’s conventions.

![Three stickers from the Kimi Code entry: the unchanged Bruce head with thinking dots, a celebration ring of confetti, and a red warning triangle.](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/entry-kimi.svg>)

Figure 3. Kimi Code: thinking, celebrating, error. The master stays intact; emotion lives in the symbols around it.

- [Open this entry’s preview page](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/entries/kimi-code-unspecified-xhigh/index.html>)

<a id="glm"></a>

## ZCode · GLM-5.3: the most exaggerated, and the furthest from the master

It drew a big-headed, front-facing chibi. Its 9 stickers use CSS animation with convincing squash and stretch, ears that burst outward and speed lines; the blind review gave it **the top expressiveness score**. Each file is about 9KB and handles reduced motion internally, which SMIL cannot do inside a file.

It is also **the furthest from the brand**. The face looks forward rather than left. The badge’s double chevron is drawn as two opposing points that read as an “×” at small sizes. Ears are cropped by the canvas in some frames, and the preview page overflows horizontally at 390 pixels.

![Three stickers from the ZCode entry: a big-headed front-facing Bruce waiting with paws raised, laughing with its head thrown back, and startled with its ears flaring.](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/entry-glm.svg>)

Figure 4. ZCode: waiting, celebrating, startled. The most exaggerated set, drawn away from the master.

- [Open this entry’s preview page](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/entries/glm-5.3-xhigh/index.html>)

<a id="hunyuan"></a>

## WorkBuddy · Hunyuan Hy4: the closest to a Telegram sticker

It draws Bruce as a front-facing chibi on a rounded ice-blue plate and keeps the >> badge. Its 12 stickers have **the richest faces**: crossed-out eyes, stars, heart eyes, a startled stretch and confetti. Every animation track is written into SMIL frame by frame at 30fps, 949 tracks in all, every one valid, with a frame-inspection panel in the preview.

The cost is **size**: single files run from 80 to 466KB, about 11KB on average once gzipped, and the preview overflows on narrow screens. The entry was not committed per the project’s conventions.

![Three stickers from the WorkBuddy Hunyuan entry: a front-facing Bruce on an ice-blue rounded plate, circled by a progress arc while waiting, stretched when startled, and with heart eyes when in love.](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/entry-hunyuan.svg>)

Figure 5. WorkBuddy · Hunyuan: waiting, startled, love. The richest faces, and the largest files.

Its identity deserves a note more than its faces do. The brief asked for a folder named after the model, version and effort level. The agent named its folder claude-opus-6-high and described that as “this session’s runtime identifier”, while the run actually used *Hunyuan Hy4 in WorkBuddy*. We kept the folder name, recorded the real model in the commit message and took points off under conventions. The owner’s screenshot of the session, below, shows both names at once.

![WorkBuddy session screenshot: the prompt asks for a folder named after model, version and effort; the reply says the work is in claude-opus-6-high; the model picker at the bottom shows Hy4; the preview page is on the right.](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/workbuddy-hy4.png>)

Figure 6. The WorkBuddy session, as captured by the owner. Hunyuan Hy4 is selected at the bottom, yet the reply names the folder claude-opus-6-high. The sidebar is cropped and local paths are pixelated.

- [Open this entry’s preview page](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/entries/claude-opus-6-high/index.html>)

<a id="qwen"></a>

## Qwen Code: a thorough preview, a third of the animation never plays

It reuses the master and redraws rounder chibi eyes. The preview page works like a small studio, with a permanent control panel, frame stepping, an embedding guide and a bundled download. The entry was committed per the project’s conventions.

The problem is in the delivered SVGs: **51 of 158 animations, across 9 files, have keyTimes that do not end at 1**. Chrome drops those animations without even logging them, so the hearts in “love” and the smoke in “launch” never appear. Its own report of a clean console was accurate; this kind of failure is *simply silent*.

![Three stickers from the Qwen Code entry: a question mark appearing while thinking, a green check mark when done, and almost no change in love.](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/entry-qwen.svg>)

Figure 7. Qwen Code: thinking, done, love. The hearts in the third sticker are in the file but never play.

- [Open this entry’s preview page](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/entries/qwen4-max-preview-default/preview.html>)

<a id="grok"></a>

## Grok CLI: the most stickers, the least Bruce

It delivered 20 stickers, 20 still frames and a wide writing scene, all in CSS animation with reduced-motion handling in every file, about 15KB on average. Its notes are candid about the trade-off: the master is one fused pose, so it redrew a rig that can act.

**The redraw did not keep Bruce.** The goggles became a large cyan ring and the face is small and hard to read at small sizes. Most stickers change only the mouth and eyes slightly, and the blind review ranked it last. The entry was not committed per the project’s conventions.

![Three stickers from the Grok CLI entry: a redrawn Bruce profile whose goggles are a large cyan ring, with little change between thinking, celebrating and surprised.](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/entry-grok.svg>)

Figure 8. Grok CLI: thinking, celebrating, surprised. The redrawn rig moves, but no longer looks like Bruce.

- [Open this entry’s preview page](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/entries/grok-4.7-build-fast/preview.html>)

<a id="deepseek"></a>

## DeepSeek Harness: the design is in the files, two thirds never plays

It reuses the master and delivers 12 stickers in two versions, with and without a plate, plus GIF exports. The preview’s hero is driven live by a JavaScript spring engine and looks lively.

In the delivered SVGs, however, **155 of 230 animations have invalid keyTimes**, affecting all 12 files; many do not start at 0 either, and Chrome logs a parse error for those. Several files share ids, which interfere with each other when inlined on one page. The sticker cards lower on the preview page are these files, and their effects do not play there either. The entry was not committed per the project’s conventions.

![Three stickers from the DeepSeek Harness entry: the master Bruce on an ice-blue plate, with nearly identical frames for thinking, celebrating and love.](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/entry-deepseek.svg>)

Figure 9. DeepSeek Harness: thinking, celebrating, love. Most effects never play, leaving the frames nearly still.

- [Open this entry’s preview page](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/entries/deepseek-v4-pro-harness/preview.html>)

<a id="silent-failure"></a>

## The costliest mistakes are silent

Qwen’s and DeepSeek’s problems are the same kind. SVG animation requires keyTimes for linear and spline interpolation to start at 0 and end at 1. Stopping at 0.5 may be meant as “move in the first half, rest in the second”, but the browser **treats the whole animation as an error and ignores it**.

We copied each entry’s “love” sticker and only completed its keyTimes to 1, holding the last value, with nothing else changed. The hearts appeared at once. The design had been in the file all along; what was missing was *checking the delivered file in its target environment*.

**A preview page cannot stand in for the deliverable.** A JavaScript-driven preview, static screenshots and a quiet console cannot prove that a file placed in an <img> will move. The judge held its own entry to the same standard: structural tests check every animation, and a real browser pauses the files at chosen moments.

```svg
<!-- Ignored by the browser: keyTimes stop at 0.5 -->
<animate attributeName="opacity" values="0;1;0"
         keyTimes="0;0.25;0.5" dur="2s" repeatCount="indefinite"/>

<!-- Valid: complete to 1, holding the last value -->
<animate attributeName="opacity" values="0;1;0;0"
         keyTimes="0;0.25;0.5;1" dur="2s" repeatCount="indefinite"/>
```

![Two rows compared: on the left, the “love” stickers as delivered by Qwen Code and DeepSeek Harness, without hearts; on the right, copies whose keyTimes were completed to 1, where the hearts appear.](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/keytimes.en.svg>)

Figure 10. The same files with only keyTimes completed. The right column is the judge’s illustrative copy, not a contest entry.

- [W3C SVG 1.1 · Animation: keyTimes](<https://www.w3.org/TR/SVG11/animate.html#KeyTimesAttribute>)
- [MDN · keyTimes](<https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Attribute/keyTimes>)

<a id="two-notes"></a>

## Two notes

MiMo Code 0.1.16 with mimo-v2.6-pro stopped after about 28 minutes. Its final error was 402, “Insufficient account balance”, marked as not retryable. That is **an account balance problem, not a model crash**, and sending “continue” could not recover it before the balance was topped up. By then it had read the brand artwork and the reference study and was measuring face coordinates; for about three minutes it repeatedly ran empty commands while trying to call its image-reading tool. No files reached the repository. Under the one-sentence rule, it counts as no delivery.

Self-reported identities are not always reliable. Kimi Code wrote unspecified when it did not know its model, which is the honest choice. WorkBuddy reported claude-opus-6-high while the run used Hunyuan Hy4. Verifying identity *cannot be left to the system under test*.

![MiMo Code terminal screenshot: pixel-sampling output printed line by line at the top; Error · status 402 · non-retryable and Insufficient account balance in the middle; MiMo-V2.6-Pro below; 123,117 tokens and $0.09 spent on the right.](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/mimo-402.png>)

Figure 11. MiMo Code when it stopped, as captured by the owner. The 402 came from the account balance, not the model; the MCP server list on the right is pixelated.

<a id="judge-entry"></a>

## The judge’s own entry

Claude Code’s entry does not redraw Bruce. Clip paths cut the master into ears, head, jaw and body, so at rest it matches the master pixel for pixel, and a blink, an open mouth, flattened ears or goggles dropping onto the eyes all move the master itself. Its 20 stickers contain 683 animations, all valid, with a dark-surface set, still frames and 104 structural tests. It scores **87** on the same scale and tied for the highest total in the blind review.

Its weaknesses are clear too. The preview page is less refined than those from Codex and Kimi, and many stickers change only the face, with less squash and stretch than ZCode and Hunyuan. Because the judge and the contestant are the same agent, the score is a reference and is not ranked.

![Three stickers from the Claude Code entry: the master Bruce thinking with a paw under its chin and a thought cloud, celebrating with a raised paw and confetti, and startled with an exclamation mark.](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/entry-claude.svg>)

Figure 12. The judge’s entry: thinking, celebrating, surprised. The master is cut into moving parts; not ranked.

- [Open this entry’s preview page](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/entries/claude-opus-5.5-xhigh/preview.html>)

<a id="takeaways"></a>

## What we learned

The nine agents delivered very different work, but the ranking was usually decided less by whose idea was better than by **who checked what they actually shipped**.

- Check the deliverable in its target environment: put it in an <img> and pause it at chosen moments, rather than trusting the preview page.
- Write structural tests for animation formats. Browsers often stay silent when SMIL is wrong.
- Reusing the brand master preserves recognition best; making the face move means cutting the master into parts, not just adding symbols beside it.
- CSS animation can respect reduced motion inside the file; SMIL needs separate still frames.
- Verify self-reported model identities. When unsure, “not reported” beats an invented name.
- One run is one sample; conclusions apply only to this tool, configuration and brief.

<a id="second-attempt"></a>

## A second attempt, with Fable 5.2

After the review went out, the owner switched Claude Code to Fable 5.2 at max effort and asked for another entry that used what the review had taught, built on skeletal animation. **This was no longer a one-sentence exam.** The agent had read every conclusion above and could check its work as often as it liked, so the entry is not ranked. This section records what it did and what was measured.

The new entry still does not redraw Bruce. The master is cut into parts that hang on a tree of bones. **The ears, goggles, badge and tongue are spring bones**: the motion of the head and body throws them around, and nobody keys them by hand. A whole performance is simulated at 240 Hz and then baked into CSS keyframes. The 24 stickers hold 835 animations and 7,260 keyframes, and files average 44.6KB.

Because the animation is CSS, **one file adapts by itself**. It freezes on its most expressive frame when the system asks for reduced motion, draws an ice-blue outline around itself on dark surfaces and drops its small effects below 44 pixels. The earlier entry needed four sets of files for this, 80 in all; this one has 24.

The checking went a step further too. Besides 148 structural tests, the same delivered files were loaded in Chrome and in WKWebView, the engine of Bruce’s desktop window, paused at chosen moments and compared frame by frame. The two engines differ in at most 0.02% of pixels in any frame, and the rig at rest differs from the master in 0.044% of pixels.

Looking through a second engine paid off at once, and again the findings were silent ones. *Chrome leaks hairlines along the seams between parts at small sizes*; WebKit does not. A bounds test caught two stickers whose ear tips left the canvas at the top of a jump. The bigger surprise came from rechecking the first round. The top-ranked Codex entry wraps its character in an SVG filter, and WebKit renders filtered content at a lower resolution, so in WKWebView on a 2x screen its edges are soft; without the filter they are sharp. Safari uses the same engine. The first review looked only in Chrome and missed that. The original scores stand; we record the miss here. Figure 2 omits the filter, and the contest files themselves are unchanged.

It has weaknesses of its own. It was verified only in Chrome and WKWebView, not in Firefox. Its files are a little larger than the earlier entry’s. When an ear bends to its limit, a small step shows between its two segments. The entry’s design document lists every trade-off.

![Three stickers from the Fable 5.2 entry: the master Bruce thinking with a paw under its chin while dots light up in a thought cloud, leaping with both paws raised and confetti, and startled with its ears straight up and an exclamation mark.](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/entry-fable.svg>)

Figure 13. The second attempt: thinking, celebrating, surprised. It is still the master, but the body, ears and paws all act.

Taking one sticker apart shows what “skeleton” means here. On the left of the next figure is the celebrate sticker at take-off: every dot is the pivot of a bone, and the lines show which bone carries which. Nobody wrote keyframes for the violet ones; their motion is computed. On the right are six moments of the same leap.

![On the left, the skeleton drawn over the celebrate sticker at take-off: cyan lines join the neck, ears, jaw, goggles and badge, and violet dots mark spring bones. On the right, six moments of the same leap, from the crouch through take-off and the top to the squash on landing.](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/fable-skeleton.svg>)

Figure 14. Left: the skeleton of the celebrate sticker, with spring bones in violet. Right: six moments of one leap; the crouch, the stretch and the squash on landing all show in the silhouette.

- [Open this entry’s preview page](<https://bruce.flydog.ai/blog/media/one-prompt-nine-agents/entries/claude-fable-5.2-max/preview.html>)
