Adobe Resize Photos and Videos
Resizes images or videos to user-specified dimensions, aspect ratio, or named size.
For social media platform sets (Instagram, TikTok, etc.) → use the adobe-create-social-variations skill instead.
Tool Reference
Workflow
Step 0 — Initialize Adobe Tools
Call adobe_mandatory_init first. This returns file handling rules and tool routing guidance required for the rest of the workflow.
Step 1 — Entitlement Check
Now that adobe_mandatory_init confirmed that the "Adobe for creativity" connector is live, check which tools are available through the "Adobe for creativity" connector by cross checking against the Tool Reference table above.
IMMEDIATE ACTION REQUIRED
Step 1: If parameters are missing or ambiguous → run the multi-step intake (Step 2 below).
Step 2: If no file is uploaded, run Step 3 (asset_add_file({})).
Step 3: Detect image vs. video and route to the correct workflow (Step 5 Image/Video).
Step 2 — Multi-Step Intake
Run this when the user hasn't provided complete parameters (type + dimensions + fit mode). Skip entirely if the user's message already contains all three.
Use AskUserQuestion to collect parameters step by step.
Step 2a — Type
Step 2b — Dimensions
If Photo (multi_select — user can pick one or more):
If user includes "Custom" → follow up: "Enter your custom dimensions (e.g. 1500×800):"
If user selects multiple presets → run image_crop_and_resize once per dimension,
using the same source URI and parameters each time. Preview all outputs together at the end.
If Video (multi_select — user can pick one or more):
If user selects multiple video presets → submit a separate video_resize job per dimension,
poll each to completion, preview all outputs together.
Step 2c — Fit mode
If Photo (single_select):
If Video (single_select):
Step 2d — Smart focus (Photo only)
If user selects "Named object" → follow up: "Describe the object (e.g. 'the red car', 'the logo'):"
Step 2e — Options (Photo only)
Step 2f — Source (Video only)
Step 3 — Get the Source File
Critical — /mnt/user-data/uploads/ paths are NOT usable URLs.
Even when the user has attached a file and it appears in context at a /mnt/user-data/uploads/ path,
you cannot pass this path to any Adobe tool. Call asset_add_file() to stage the file — /mnt/user-data/uploads/ paths are not fetchable by Adobe tools.
No file yet → open the picker immediately:
Detect type from returned mediaType:
image/*→ IMAGE WORKFLOWvideo/*→ VIDEO WORKFLOW
Step 4 — Resolve Target Dimensions
If no target was specified in the form AND none in the user's message → ask:
"What dimensions do you need? (e.g. 1920×1080, A4, 16:9)"
IMAGE WORKFLOW
Step 5 (Image) — Valid URI Sources
Only these work as imageURI:
presignedAssetUrlfromasset_add_file()✅outputUrlfrom a prior tool call ✅- Public HTTPS URL provided by user ✅
Not usable as imageURI:
/mnt/user-data/uploads/paths ❌renditionURLfromasset_searchdirectly ❌file://URIs ❌
Step 6 (Image) — Fit Mode
Default: reframe. Change only when user is explicit.
⛔
fit: "extract"is incompatible with an explicit{ width, height }— it stretches the image. Use a ratio string or omitoutput.
Step 7 (Image) — Call image_crop_and_resize
Focus guide:
"subject"— default; full-body detection, landscapes, objects"face"— portraits, headshots"upper_body"— chest-up crops{ prompt: "the logo" }— named object from user's form input{ x: 0.5, y: 0.5 }— geometric center (no clear subject)
Step 8 (Image) — Batch
If batch was selected in the form OR the user provided multiple files:
- Call
asset_add_file()for each file to get individual presigned URLs - Call
image_crop_and_resizefor each with the same parameters - Collect all
outputUrlvalues - Call
asset_preview_filewith all outputs in a single call
Calls run sequentially in this environment. For >10 images, confirm with the user before starting.
Pagination across turns (batches >20): For large batches, the conversation context may fill before all images are processed, causing Claude to pause mid-batch. This is expected — not an error. When it happens:
- State how many have been completed and how many remain (e.g. "20 / 24 done — say 'continue' for the rest")
- Wait for the user to confirm before resuming
- On resume, pick up from the next unprocessed image and continue to the end
- Preview all outputs together only after the final image completes
Step 9 (Image) — Preview + Deliver + Firefly Board
Save to CC + Create Firefly Board
After preview, upload each output to CC storage using the block upload pipeline
(asset_initialize_file_upload → PUT chunk → asset_finalize_file_upload).
Then call the firefly board tool with the final output urls:
✅ Confirmed working (Stage):
import_adobe_storagewith presigned URLs fromasset_finalize_file_uploadsuccessfully populates boards.❌ Does not work:
import_generic_assetswith CC asset IDs (urn:aaid:sc:US:...) — USS indexing lag causes blank boards.If board creation fails or the URL is malformed, omit the board link (retrying does not help).
Post the completion summary after the board step:
VIDEO WORKFLOW
Step 5 (Video) — Get Asset ID
Video tools require assetId, not a URL.
Step 6 (Video) — Common Targets
Step 7 (Video) — Call video_resize
⚠️
resizeVideoPollis a deferred tool — load it first before attempting to poll. Direct calls without loading will fail with "not loaded" error.
Mode — use exact API values (not user-facing labels):
ℹ️ Auto-reframe for video is not available in Claude yet, but new tools are being added all the time. If you need more control, try using Adobe Premiere.
Polling: load the deferred tool resizeVideoPoll before calling it — direct calls fail with "not loaded".
Step 8 (Video) — Preview + Deliver + Firefly Board
If polling succeeds and returns outputUrl, upload to CC storage via the block upload pipeline
(asset_initialize_file_upload → PUT → asset_finalize_file_upload) to get a presigned URL, then:
✅ Pass
import_adobe_storagewith the finalize presigned URL. If board creation fails, omit the link.
If polling is unavailable → skip preview, deliver the CC storage fallback message from Step 7.
Error Handling
Common Dimension Reference
Assets
assets/intake-form.html — Interactive intake form for resize parameters.
Render at the start of any resize workflow where parameters are missing or ambiguous.
Covers photo (target size, fit mode, smart focus, batch, output format) and video (target size, fit mode, source).

