Help us improve
Share bugs, ideas, or general feedback.
From bynder
Design and govern Bynder derivative templates and on-the-fly transformations — what sizes, formats, focal-points, and quality settings to pre-render vs. generate dynamically, how to align derivatives to the design system's responsive breakpoints, and how to keep the derivative library from sprawling. Covers pre-rendered derivatives, the dynamic asset transformation engine (URL-parameter-driven), CDN caching implications, and the operational discipline of retiring unused derivatives. Use this skill when designing derivative templates for a new deployment, auditing derivative output for an existing implementation, planning image / video output for a design system, or reconciling between Bynder derivatives, Next.js Image optimization, and Vercel's image pipeline.
npx claudepluginhub bpainter/composable-dxp-claude-marketplace --plugin bynderHow this skill is triggered — by the user, by Claude, or both
Slash command
/bynder:bynder-derivativesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill is about getting the right pixels to the right surface at the right cost. Bynder derivatives are the output formats your assets render in — the web hero crop, the social card, the print master, the email-safe thumbnail. The default behavior in Bynder is to pre-render every derivative on every upload. The default behavior of brand teams is to ask for "just one more" derivative every q...
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
This skill is about getting the right pixels to the right surface at the right cost. Bynder derivatives are the output formats your assets render in — the web hero crop, the social card, the print master, the email-safe thumbnail. The default behavior in Bynder is to pre-render every derivative on every upload. The default behavior of brand teams is to ask for "just one more" derivative every quarter. The default behavior of front-end teams is to use them inconsistently.
The discipline this skill enforces: model derivatives like an API contract. Limited, named, design-system-aligned, and audited.
For Slalom Composable DXP work, derivatives sit between brand operations and front-end engineering. Get them right and next/image does the rest of the work. Get them wrong and you end up with a CDN cache full of one-off transformations that nobody can reason about.
Pair with bynder-asset-model for the metaproperties that drive derivative selection logic, bynder-contentful-pairing for how derivatives surface in CMS field controls, bynder-js-sdk for programmatic derivative URL resolution, and bynder-optimization-audit if the engagement is fixing a derivative-sprawl problem.
Most engagements end up with a recognizable set:
Aligned to Tailwind / design-system breakpoints. Default set:
| Name | Width | Use |
|---|---|---|
web_thumbnail | 320 | Mobile-first thumbnails, lazy-load placeholders |
web_card_sm | 640 | Mobile card images |
web_card_md | 1024 | Tablet card images |
web_card_lg | 1440 | Desktop card images |
web_hero_lg | 1920 | Desktop hero, full-bleed |
web_hero_xl | 2560 | Retina/HiDPI desktop hero |
web_inline | 1024 | Article-body inline image |
All in webp and avif, with jpeg as a fallback. The dynamic transformation engine generates these too, but pre-rendering the most-used sizes saves CDN cache misses.
Platform-specific aspect ratios are mandatory; sizes evolve.
| Name | Dimensions | Use |
|---|---|---|
social_og_1200x630 | 1200×630 | OG / Facebook / LinkedIn share |
social_x_1600x900 | 1600×900 | X (Twitter) summary card large |
social_instagram_square | 1080×1080 | Instagram square |
social_instagram_portrait | 1080×1350 | Instagram 4:5 portrait |
social_instagram_story | 1080×1920 | Story / Reels vertical |
Re-evaluate annually; platform specs drift.
Email clients (especially Outlook) hate creative resizing. Pre-render explicit widths.
| Name | Width | Use |
|---|---|---|
email_hero_600 | 600 | Standard email hero |
email_inline_400 | 400 | Email inline image |
email_thumbnail_200 | 200 | Email thumbnail / button |
JPEG only — many email clients don't render webp.
| Name | Spec | Use |
|---|---|---|
print_300dpi | 300 DPI master, full size | Print production master |
print_proof | 100 DPI watermarked | Print proof |
Print masters are heavy; pre-render once, gate behind permissions.
| Name | Spec | Use |
|---|---|---|
video_web_1080p_h264 | 1080p, H.264 baseline | Web playback |
video_web_720p_h264 | 720p, H.264 | Lower-bandwidth fallback |
video_social_vertical_1080p | 1080×1920 | Social vertical |
video_thumbnail_jpg | First-frame JPEG | Poster image |
Often these aren't true "derivatives" but Bynder collections / bundles — a logo collection includes the primary mark in mono, reversed, knockout, RGB, CMYK, vector. Bundle, don't pre-render every variant separately.
When enabled on the account, Bynder serves transformations via URL parameters. The substrate looks roughly like:
https://d3p7zgxmpk5ezh.cloudfront.net/m/{transform-id}/{asset-id}/{filename}?w=1200&h=630&fit=crop&fm=webp&q=80
Rules of thumb:
src strings sprinkled across components. One bynderUrl({ id, preset: 'webHeroLg' }) helper used everywhere.presets map with ~10 named presets, not 1000 unique URLs in the wild.?fit=crop&crop=focalpoint is the pattern.?fm=webp for modern browsers, ?fm=avif for next-gen. Let the front end (Next.js) decide based on Accept header rather than hardcoding.?q=80 for hero / inline, ?q=70 for thumbnails, ?q=90 for downloadable masters.next/image does its own resizing on top of whatever URL you give it. You have two options:
next/image. Bynder serves webHeroLg (1920×); Next resizes again for actual viewport. Two layers of resize → potential quality loss + double caching.next/image with unoptimized: true or with the loader configured to bypass. Avoids double-resize.Slalom default: option 2 for hero/feature images where pixel quality matters; option 1 (Bynder pre-rendered + Next) for thumbnails and grids where simplicity beats pixel-perfection.
A custom Next.js image loader is the cleanest split:
// next.config.ts
images: {
loader: 'custom',
loaderFile: './lib/bynder-image-loader.ts',
}
// lib/bynder-image-loader.ts
export default function bynderLoader({ src, width, quality }: ImageLoaderProps) {
// src is the Bynder asset ID (or a stable reference)
return `https://d3p7zgxmpk5ezh.cloudfront.net/m/${TRANSFORM_ID}/${src}?w=${width}&q=${quality ?? 80}&fm=webp`;
}
Now <Image src={asset.id} width={1920} height={1080} /> produces a Bynder-served, correctly-sized URL.
1. Pull derivative usage from the Analytics API.
2. Bucket: heavily used (>1000 views/quarter), used (1–1000), unused.
3. For each unused derivative: confirm it's not in the Compact View / connector defaults.
4. Schedule deprecation. Notify integration owners.
5. Disable on the account; monitor for 30 days; delete.
The unused derivatives have a real cost — re-render budget on every upload, plus CDN cache pollution. Be willing to retire them.
{family}_{purpose}_{spec}
Examples: web_hero_xl_2560, social_og_1200x630, email_inline_400, print_300dpi_master. Predictable, scannable, sortable.
| Format | Use |
|---|---|
webp | Web default. ~30% smaller than JPEG. Universal browser support. |
avif | Web next-gen. ~50% smaller than JPEG. Most browsers support; fallback to webp. |
jpeg | Fallback for legacy + email. |
png | Logos with transparency, UI elements. Don't use for photography. |
mp4 (H.264) | Web video baseline. |
mov (H.265) | Higher-quality web/print. Browser support patchier. |
Don't ship 95% quality JPEGs to the web. The visible difference between q=80 and q=95 is negligible at typical viewing distances; the file-size difference is 2–3×.
Every brand-photography asset should have a focal point set in the asset bank. The dynamic transformation engine uses it for fit=crop&crop=focalpoint cropping. Editors who set focal points on upload save the design team from awkward crops at every responsive breakpoint.
# Bynder Derivative Library: [Project / Brand]
## Goals
[Channels in scope, design-system breakpoints, performance targets.]
## Pre-rendered derivatives
| Name | Spec | Format(s) | Use |
| ... | ... | ... | ... |
## Dynamic transformation presets
| Preset name (in code) | URL params | Use |
| ... | ... | ... |
## Format strategy
[webp / avif / jpeg fallbacks; video formats per channel.]
## Quality strategy
[Per family.]
## Reconciliation with front-end
[Next.js Image custom loader plan; preset → Bynder URL helper.]
## Audit cadence
[Quarterly review process; ownership.]
## Deprecation path for unused derivatives
[Process for retiring.]
bynder-asset-model.bynder-contentful-pairing.bynder-js-sdk.bynder-compact-view.bynder-optimization-audit.../../references/bynder-foundations.md../../references/api-surface.md