---------------
Pre-empting the "how can you tell", here's some of the tells.
> The API is shaped after Sharp:
Constantly using "shaped" and "shape" is becoming an LLM-ism, much more common than in human writing.
> The constructor accepts a path, bytes, or a Blob — including Bun.file() and Bun.s3().
> The format is sniffed from the bytes — extensions and Content-Type are ignored.
Repeatedly formatting statements as X: Y, X — Y, or [b]X[b] Y is also an LLM-ism.
> Don’t pass user-controlled strings directly to the constructor — that’s an arbitrary-file-read primitive.
> When passing a TypedArray/ArrayBuffer, don’t mutate it while a terminal is pending — decode runs off-thread and borrows the bytes.
Doing so by leading with what-it's-not / what-not-to-do is even more of an LLM-ism.
For agent written code I now default to no documentation and explanatory function signatures, it works better for me at least.
When agents write most of our code, I question if we will still even need documentation.
It's not like image manipulation is a poorly understood problem or a fast-moving field.
wxw•59m ago
(https://sharp.pixelplumbing.com/)
Good! I like the pipeline workflow.