Skip to content
Buse Turgay Sönmez

Design Engineer, Belgrade

Text Lock

Image models do not carry a label over. They redraw it, and the result is often plausible and wrong, above all with Turkish letters like ğ, ı, ş and İ. Flow Composer writes image prompts for branded products around a four layer protocol I call Text Lock. It lowers that risk and ends in a checklist. It promises nothing.

  • 2026
  • Workflow
  • Agents
  • Type

In short

Made of
One Claude Code skill with 7 reference files, 2 slash commands, and a web app on the same knowledge base
In use
The command line side, inside a Claude Code subscription. The web app works and is shelved because it needs a paid API key
Target
Google Flow image models
Guarded by
A test that fails if any of the four layers goes missing from the knowledge base
Stack
Next.js 16, TypeScript, the Anthropic SDK, Drizzle, PostgreSQL

Four layers

First, frame the job as carrying, not redrawing. The prompt treats the front of the pack as a locked region to be reprojected into the new perspective, and avoids every phrase that invites the model to improve a label.

Second, feed the typography separately, flat and large. The front panel is shot straight on, with no perspective and no shadow, and given as its own reference to be applied like a decal. Critical strings are spelled out character by character, Turkish letters named one by one.

Third, set up the geometry in the text's favour: the branded face within about 25 degrees of frontal, the pack at least half the frame height, no curved surface under the words, no highlight across the label, everything sharp, generated at 4K.

Fourth, work in two passes. Build the scene with a blank front panel, then apply the label. Asking for the scene and the typography in one prompt splits the model's attention.

Why it says less than it could

The project's own rules forbid promising that text will never break. No model guarantees text pixel for pixel, and the vendor's documentation lists that as a limit. So the tool's claim is smaller and true: the risk goes down, and every prompt comes with a list of what to check in the result.

The knowledge base is a Claude Code skill, and both the command line and the web app read that one folder. Updating the skill updates both.

Controls

Speed
1.00×
--ground
oklch(0.985 0.003 85)
--surface
oklch(0.958 0.005 85)
--raised
oklch(1 0 0)
--ink
oklch(0.2 0.006 85)
--muted
oklch(0.43 0.008 85)
--faint
oklch(0.5 0.008 85)
--line
oklch(0.9 0.004 85)
--line-strong
oklch(0.6 0.006 85)
--accent
oklch(0.66 0.22 38)
--accent-ink
oklch(0.52 0.19 38)
--stage
oklch(0.152 0.004 85)
--radius-stage
36px
--radius-stage-sm
28px
--radius-media
24px
--radius-panel
16px
--radius-field
10px
--ease-out-expo
cubic-bezier(0.16, 1, 0.3, 1)

This week · W39One WebGL context, three leaksGeometry · 2026