Skip to content
AI & Agents
Skill

/adobe-expand-image

This skill extends a single photo beyond its borders with Adobe Firefly Generative Expand without cropping the original composition. Use when someone asks to expand, uncrop, outpaint or zoom out an image, add background or breathing room, or fit one photo to a new shape (16:9,

From plugin
skills
322176 skills5 MCP

Claude Code

$ npx -y skills add adobe/skills --skill adobe-expand-image --agent claude-code

SKILL.md

adobe-expand-image.SKILL.md
name: adobe-expand-image
description: >
  This skill extends a single photo beyond its borders with Adobe Firefly Generative Expand without cropping the original composition. Use when someone asks to expand, uncrop, outpaint or zoom out an image, add background or breathing room, or fit one photo to a new shape (16:9, 9:16, square, phone, story, wallpaper, banner, thumbnail, 1920x1080), unless they explicitly ask to crop. It is not for social-media packs or same-shape resizing.
license: Apache-2.0
compatibility: "Runs on widget-capable surfaces (Claude: asset_add_file picker, asset_preview_file) and on non-UI agents (Codex / ChatGPT Adobe app), where each widget step has a text-only fallback. Raw local paths are never passed to image tools."
allowed-tools: adobe_mandatory_init asset_add_file asset_openai_file_upload asset_initialize_file_upload asset_finalize_file_upload image_crop_and_resize image_generative_expand asset_preview_file
metadata:
  version: 1.0.0
  visibility: public
  surface: [claude, codex]

Adobe Expand Image

Extends one photo outward with **Firefly Generative Expand**. The original composition is retained; an exact-size resize resamples pixels. New content continues the scene (subject, background, perspective, lighting, colour and texture) on the added sides, with no visible seams, borders or repetition. This is the same job as the Firefly *Expand image* quick action, which offers the ratios 1:1, 4:3, 16:9, 3:4 and 9:16.

> **Surface note:** follow the default flow as written. Use a step's *No-widget fallback* only if that widget tool is unavailable on this surface (e.g. Codex). Where no question widget exists, ask questions as plain-text options.

**Gen AI:** ✅ Adobe Firefly Generative Expand (`image_generative_expand`), when available and entitled. On 403 the skill stops and offers labeled non-generative alternatives. It never substitutes one silently.

---

Tool Reference

| Step | Tool | Notes | |------|------|-------| | 0 | `adobe_mandatory_init` | First call; gives tool availability and egress status | | 1 | `asset_add_file` | Pick or upload the source photo *(widget; used if available)* | | 1 | `asset_openai_file_upload` | Stage a file attached in ChatGPT *(Codex/ChatGPT only; used if available)* | | 1 | `asset_initialize_file_upload` + `asset_finalize_file_upload` | Stage a local file when there is no picker *(no-widget fallback)* or when egress is enabled | | 3 | — | Read the source dimensions from file metadata or ask the user; do not make an editing call just to discover dimensions | | 3 | `image_generative_expand` | The expansion itself (`options.expandPixels`, each side 0–4096 px) | | 4 | `image_crop_and_resize` | Only when the user asked for exact output pixels: same-ratio resize of the expanded image | | 5 | `asset_preview_file` | Before/after preview *(widget; no-widget fallback: labeled URLs)* |

---

Workflow

Step 0 — Initialize Adobe Tools

Call `adobe_mandatory_init` first:

{ "skill_name": "adobe-expand-image", "skill_version": "1.0.0" }

Then check which tools are available:

  • **Required:** `image_generative_expand`. If it is missing, tell the user: *"Expanding images isn't available with your current Adobe connection. Please disconnect and reconnect the Adobe connector, signing in with an Adobe account."* Then stop.
  • `image_crop_and_resize` is needed only when the user requests exact output pixels. If it is unavailable, continue the expansion, explain that exact resizing and letterboxing are unavailable here, and ask whether the user wants the expanded image as-is.
  • **Used if available:** `asset_add_file` and `asset_preview_file`. If they are missing, use each step's fallback. Never stop because of them.

Step 1 — Get the source photo

| Where the photo is | Action | |---|---| | Attached in ChatGPT and `asset_openai_file_upload` is available | Call `asset_openai_file_upload` with the attached file and use the returned URL. Don't pass the local path to `asset_upload_file_from_url`: it only accepts https URLs | | Attached in chat as a local file | If egress is enabled (per `adobe_mandatory_init`), stage it: `asset_initialize_file_upload` → PUT → `asset_finalize_file_upload`. Use the returned presigned URL. If egress is disabled, call `asset_add_file()` | | Not provided yet | Call `asset_add_file()` right away; don't ask first | | An https URL | Use it directly | | A Creative Cloud file the user names and `asset_add_file` is available | Call `asset_add_file()` so they can pick it, and use the returned URL. Never pass an asset id or URN to an image tool: image tools take http(s) URLs only |

> **No-widget fallback** *(only if `asset_add_file` is unavailable, e.g. Codex)*: stage the local file programmatically as above. If egress is disabled too, tell the user the file can't be staged here and ask for a fetchable HTTPS image URL. A named Creative Cloud file is usable only when a supported picker is available.

Accept JPG, PNG and WEBP photos. For any other file (PDF, DOCX, video), say that only images can be expanded, and stop.

Step 2 — Decide how far to expand

Read the request into **one** of these targets:

| The user says | Target | |---|---| | A ratio: "16:9", "make it square", "portrait / 9:16", "4:3", "3:4", "for a banner" or "desktop wallpaper" (16:9), "phone screen" or "story" (9:16) | `ratio` (string, e.g. `"16:9"`) | | Sides and amounts: "add 500 px on the left", "more sky on top", "extend both sides" | `pixels` per side. If no amount is given, use 25% of the image's width (left/right) or height (top/bottom), rounded to a whole number | | Exact pixels: "1920×1080 without cropping" | `ratio` from the size (1920×1080 → `"16:9"`), plus `final_size` for Step 4 | | Only "expand this", "zoom out", "too tight", "give it breathing room" | Ask once, using the quick action's options: **Square 1:1 · Landscape 4:3 · Widescreen 16:9 · Portrait 3:4 · Story 9:16**. Default to 1:1 if the user says "you pick" |

Read more
@adobe
Ships withskills

Repository of Adobe skills for AI coding agents.

322176 skills5 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
322
Star history of adobe/skills on GitHub, a chart by star-history.com

Other skills on skills.

aa-conversion-funnel-analysis

aa-conversion-funnel-a…

Analyzes a multi-step conversion funnel to find where visitors drop off and which steps have the worst leakage. Use this skill…

@adobe@adobeInstall Skill
aa-executive-briefing

aa-executive-briefing

Generates a concise, executive-ready performance summary covering key metrics, trends, and what's driving movement. Use this…

@adobe@adobeInstall Skill
aa-kpi-pulse

aa-kpi-pulse

Produces a compact KPI digest showing how key metrics changed over a period and what's driving the movement. Use this skill when…

@adobe@adobeInstall Skill
aa-top-movers-watchlist

aa-top-movers-watchlis…

Identifies which items (pages, campaigns, products, channels, regions) had the biggest increases or decreases for a key metric…

@adobe@adobeInstall Skill
cja-dimension-analysis

cja-dimension-analysis

Comprehensive dimension analysis and reporting for CJA. Use this skill whenever the user wants to analyze one or more dimensions…

@adobe@adobeInstall Skill

More skills from other plugins.

1password

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

openclaw11d393k
@openclaw@openclawInstall Skill

Questions about adobe-expand-image.

Which coding agents can use adobe-expand-image?
adobe-expand-image installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.