[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openai-adobe-create-social-variations":3,"mdc-n116bp-key":36,"related-org-openai-adobe-create-social-variations":3693,"related-repo-openai-adobe-create-social-variations":3897},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"adobe-create-social-variations","export platform-ready social media assets","Resize, crop, or export any image or video into platform-ready social media assets using Adobe Creative Cloud tools. Use this skill when a user wants to prepare a photo, image, or video for one or more social platforms — Instagram, TikTok, LinkedIn, Facebook, YouTube, Snapchat, Pinterest, Threads, or X\u002FTwitter. Triggers on: \"prepare my image for Instagram\", \"resize for TikTok\", \"get this ready to post\", \"make versions for all platforms\", \"social media sizes\", \"crop for stories\", \"export for LinkedIn\", \"resize my video for social\", \"make social media assets\", or any request to adapt a photo or video for specific platforms. Handles subject-aware cropping, AI canvas expansion, test previews before full runs, and same-ratio video resizing.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"openai","OpenAI","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fopenai.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Graphics","graphics","tag",{"name":17,"slug":18,"type":15},"Marketing","marketing",{"name":20,"slug":21,"type":15},"Creative","creative",{"name":23,"slug":24,"type":15},"Social Media","social-media",4888,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins","2026-08-28T15:10:07.282096","Apache-2.0",661,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"OpenAI Plugins","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins\u002Ftree\u002FHEAD\u002Fplugins\u002Fadobe\u002Fskills\u002Fadobe-create-social-variations","---\nname: adobe-create-social-variations\ndescription: >\n  Resize, crop, or export any image or video into platform-ready social media assets using Adobe Creative Cloud tools. Use this skill when a user wants to prepare a photo, image, or video for one or more social platforms — Instagram, TikTok, LinkedIn, Facebook, YouTube, Snapchat, Pinterest, Threads, or X\u002FTwitter. Triggers on: \"prepare my image for Instagram\", \"resize for TikTok\", \"get this ready to post\", \"make versions for all platforms\", \"social media sizes\", \"crop for stories\", \"export for LinkedIn\", \"resize my video for social\", \"make social media assets\", or any request to adapt a photo or video for specific platforms. Handles subject-aware cropping, AI canvas expansion, test previews before full runs, and same-ratio video resizing.\nlicense: Apache-2.0\ncompatibility: \"Runs on both widget-capable surfaces (e.g. Claude Cowork, which supports the asset_add_file picker and asset_preview_file preview widgets) and non-UI agents (e.g. Codex, where those widgets are unavailable). The default flow uses the widgets; each widget step has a text-only fallback. Raw local paths are never passed to image or video tools.\"\nallowed-tools: adobe_mandatory_init asset_initialize_file_upload asset_finalize_file_upload asset_add_file asset_inline_preview asset_preview_file image_crop_and_resize image_generative_expand video_resize resizeVideoPoll\nmetadata:\n  version: 2.1.0\n  visibility: public\n  surface: [claude, codex]\n---\n\n# Adobe Create Social Variations\n\nProduces platform-ready images and videos from a single source file. Uses AI canvas expansion and subject-aware cropping to keep the subject in focus across all aspect ratios. Shows a lightweight 3-crop preview before a full-set run so framing issues are caught early — those crops are then reused in the final output.\n\n> **Surface note:** The default flow below uses Adobe's MCP App widgets — the `asset_add_file` file picker and the `asset_preview_file` preview. Follow it as written. Only if a widget tool is **not available on this surface** (e.g. Codex) use the *No-widget fallback* attached to that step. Likewise, present `AskUserQuestion` prompts as plain-text labeled options wherever no question widget exists.\n\n---\n\n## Supported Input Types\n\n| Input                         | Supported       | Notes                                                                               |\n| ----------------------------- | --------------- | ----------------------------------------------------------------------------------- |\n| JPG \u002F PNG                     | ✅ Full workflow |                                                                                     |\n| Firefly-generated image       | ✅ Full workflow | For `.ffgenimg` assets, pass the `presignedRenditionUrl` field, not `presignedAssetUrl` |\n| Express file                  | ⚠️ Partial       | Must be exported to JPG\u002FPNG first — tell user before proceeding                     |\n| PSD \u002F AI (Illustrator)        | ⚠️ Partial       | Flatten first (see Error Handling if this fails)                                    |\n| Video (MP4\u002FMOV)               | ⚠️ Partial       | Resize only — no smart reframe. See VIDEO WORKFLOW                                  |\n| Unsupported (DOCX, PDF, etc.) | ❌               | Inform user; list accepted formats                                                  |\n\n---\n\n## Step 0 - prereq: Initialize Adobe Tools\nCall `adobe_mandatory_init` first. This returns file handling rules and tool routing guidance required for the rest of the workflow.\n\n```json\n{ \"skill_name\": \"adobe-create-social-variations\", \"skill_version\": \"2.1.0\" }\n```\n\n---\n\n## Step 1 — Entitlement Check\n\nNow that `adobe_mandatory_init` confirmed that the \"Adobe for creativity\" connector is live, check which tools are available through the connector and set capability flags.\n\n### Image Workflow — Core Tools (required)\n\nAll of these must be present for the skill to run at all. If **any** are missing from the connector, output this message exactly and stop — make no further tool calls:\n\n> \"To access this skill, please disconnect and reconnect to the \"Adobe for creativity\" Connector to sign in using an Adobe account, or sign up.\"\n\n| Tool | Purpose |\n|------|---------|\n| `asset_initialize_file_upload` | First call in two-step upload — stages a local file to CC |\n| `asset_finalize_file_upload` | Second call in two-step upload |\n| `asset_inline_preview` | Determines focus strategy before cropping |\n| `image_crop_and_resize` | Per-platform, per-format cropping |\n\n### Widget Tools (used when available; graceful fallback)\n\n| Tool | Flag | If missing |\n|------|------|------------|\n| `asset_add_file` | `pickerWidget = true\u002Ffalse` | File picker — the default ingest on widget surfaces (e.g. Claude). If unavailable (e.g. Codex), stage local files programmatically via `asset_initialize_file_upload` → `asset_finalize_file_upload` (see the *No-widget fallback* in each Get-the-Source-File step). |\n| `asset_preview_file` | `previewWidget = true\u002Ffalse` | Side-by-side\u002Fgrid preview. If unavailable (e.g. Codex), present output URLs directly in the message instead — UI clients still render them inline; non-UI agents download each via curl. |\n\n### Image Workflow — Enhanced Tools (optional, graceful fallback)\n\n| Tool | Flag | If missing |\n|------|------|------------|\n| `image_generative_expand` | `expandAvailable = true\u002Ffalse` | Use `image_crop_and_resize` with `fit: \"reframe\"` from `sourceURI` instead. Do NOT mention \"AI canvas expansion\" to the user. Note in delivery summary: \"Smart reframe was used for aspect ratio adaptation.\" |\n\n### Video Workflow — Required Tools (optional workflow, all-or-nothing)\n\nOnly offer the video workflow if **both** tools below are available. If either is missing, set `videoCapable = false` — do NOT mention video resizing capabilities to the user at any point.\n\n| Tool | Purpose |\n|------|---------|\n| `video_resize` | Same-ratio resize only |\n| `resizeVideoPoll` | Deferred tool — load before calling |\n\nIf `videoCapable = false` and the user explicitly asks about video resizing, avoid verbosity and output this message exactly:\n\n> \"Video resizing isn't available with your current setup. Please disconnect and reconnect to the \"Adobe for creativity\" Connector to sign in using an Adobe account, or sign up. In the meantime, I can help with image crops and social media variants though.\"\n\n---\n\n## Tool Reference\n\n| Step | Tool | Notes |\n|------|------|-------|\n| Get file (widget surfaces) | `asset_add_file` | File picker \u002F CC browse |\n| Stage file (no-widget fallback) | `asset_initialize_file_upload` + `asset_finalize_file_upload` | Two-step upload — stage a local file to CC when the picker is unavailable |\n| Inspect source image | `asset_inline_preview` | Determines focus strategy before cropping |\n| Expand canvas | `image_generative_expand` | Creates tall (9:16\u002F4:5) and wide (~2:1\u002F16:9) variants |\n| Crop to platform dimensions | `image_crop_and_resize` | Per-platform, per-format; also 403 fallback for expand |\n| Preview test crops or full set | `asset_preview_file` | Before full run (test) and at delivery *(no-widget fallback: present the URLs directly)* |\n| Resize video | `video_resize` | Same-ratio resize only |\n| Poll video resize job | `resizeVideoPoll` | Deferred tool — load before calling |\n\n---\n\n## IMAGE WORKFLOW\n\n### Step 0 — Get the Source File\n\nHow you get the file depends on where it is:\n\n| Source                                             | Action                                                                                                                                                                                                                                                                                    |\n| -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| File uploaded in chat (`\u002Fmnt\u002Fuser-data\u002Fuploads\u002F…`) | Check egress status from `adobe_mandatory_init` (Step 0). If egress is enabled, upload programmatically: get file size and MIME type via bash, call `asset_initialize_file_upload`, PUT the chunk(s), then `asset_finalize_file_upload`. If egress is disabled, use `asset_add_file()` (the picker) instead. |\n| No file provided yet                               | Call `asset_add_file()` immediately — no need to ask first.                                                                                                                                                                                                                               |\n| File already in Creative Cloud                     | Call `asset_add_file()` so the user can select it from their CC storage.                                                                                                                                                                                                                  |\n\n> **No-widget fallback** *(only if `asset_add_file` is unavailable on this surface, e.g. Codex)* — don't ask the user to pick. Stage any local file programmatically (`asset_initialize_file_upload` → PUT → `asset_finalize_file_upload`) and use the returned presigned CC URL; for a file already in Creative Cloud, reference it directly by its CC URI. Staging requires egress — check egress status from `adobe_mandatory_init` first; if egress is disabled and no picker is available on this surface, tell the user staging isn't possible here and ask them to run the workflow on a surface with the `asset_add_file` picker.\n\nAfter the file is available, detect image vs. video from `mediaType`. For images, proceed to Step 1.\n\n---\n\n### Step 1 — Ask: Which Platforms?\n\nAsk in a single question using `AskUserQuestion` with multi-select:\n\n> Full set \u002F Instagram \u002F TikTok \u002F LinkedIn \u002F Facebook \u002F YouTube \u002F Snapchat \u002F X\u002FTwitter \u002F Pinterest \u002F Threads\n\n**Set the test flag based on the user's answer:**\n\n- **If \"Full set\" is selected** → `runTestPreview = true`. Use all platforms. A 3-crop test preview will be shown before the full set is generated (see Step 4).\n- **If any specific platform(s) are selected** → `runTestPreview = false`. Use only the selected platforms. Skip the test preview and go directly from Step 3 to Step 5.\n\n> The test preview is a useful safety net for large cross-platform batches, but unnecessary friction for a targeted 1–2 platform run.\n\n---\n\n### Step 2 — Inspect Image & Set Focus Strategy\n\n**Inspect the image first** using `asset_inline_preview` on the source file. Visual inspection produces far better focus decisions than guessing from the filename — and usually means you won't need to ask the user anything at all.\n\nAfter inspecting, tell the user what you see and what focus strategy you're using, and invite a correction:\n\n> \"I can see this is a [e.g. 'product shot of a tote bag on a neutral background']. I'll use [focus strategy] to keep [subject] centred across all crops. Does that sound right, or would you like me to focus on something else?\"\n\nOnly ask a follow-up question if the image is genuinely ambiguous (multiple equally prominent subjects, or a scene with no clear focal point).\n\n| Image type                             | Focus strategy                         | Rationale                                                                           |\n| -------------------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------- |\n| Portrait \u002F headshot \u002F person in scene  | `\"face\"`                               | Most reliable for people — facial detection anchors to the face even in tight crops |\n| Upper body \u002F chest-up portrait         | `\"upper_body\"`                         | Use when face + torso context matters (outfit, gesture, expression)                 |\n| Product on clean background            | `{ prompt: \"description of product\" }` | Name the product explicitly for clean isolation (e.g. `{ prompt: \"tote bag\" }`)     |\n| Non-human subject with busy background | `{ prompt: \"description of subject\" }` | More precise than generic `\"subject\"`                                               |\n| Aerial \u002F flat lay \u002F no clear subject   | `{ x: 0.5, y: 0.5 }`                   | Centre crop is safest when nothing to detect                                        |\n| User specifies a subject               | `{ prompt: \"user's description\" }`     | Pass their words directly                                                           |\n\n> For images containing people, use `\"face\"` — prompt-based focus drifts to bodies rather than faces. Reserve `{ prompt: \"...\" }` for non-human subjects.\n\n> ⚠️ If the source image is significantly wider than it is tall (landscape), use 2000px top & bottom for the tall expand (not the default 960px) — this gives the portrait crop enough canvas to reframe around the subject.\n> ⚠️ For the same landscape sources, also use 1500px left & right for the wide expand (not the default 960px) — 960px doesn't give the reframe enough room to pull the subject into centre for the ~2:1 landscape crop.\n\nIf the user corrects your assessment, update the focus strategy and confirm before proceeding.\n\n---\n\n### Step 3 — Generative Expand (directly from source — no padding)\n\nExpand the original image directly. Do not pad to square first — the AI produces better results extending real scene content than bridging across blank bars.\n\nRun both expands before any crops:\n\n```\n\u002F\u002F GROUP A — tall canvas (for 9:16 and 4:5 targets)\nimage_generative_expand(sourceURI, { top: 960, bottom: 960 }) → tallURI\n\u002F\u002F use 2000 top & bottom if source is significantly landscape\n\n\u002F\u002F GROUP B — wide canvas (for ~2:1 and 16:9 targets)\nimage_generative_expand(sourceURI, { left: 960, right: 960 }) → wideURI\n\u002F\u002F use 1500 left & right if source is significantly landscape\n```\n\nSquare targets (1:1) crop directly from the source — no expand needed.\n\n> Expands originate from the original `sourceURI` — chained expands degrade output.\n> ⚠️ If `image_generative_expand` returns 403 (entitlement), fall back to `image_crop_and_resize` with `fit: \"reframe\"` from `sourceURI` for all variants in that group. Note the fallback in the delivery summary.\n\n---\n\n### Step 4 — Test Preview *(Full set only — skip if `runTestPreview = false`)*\n\n**If `runTestPreview = false`** (specific platforms selected): skip this step and go directly to Step 5.\n\n**If `runTestPreview = true`** (Full set): produce 3 representative test crops — one per aspect ratio family — before generating the full set.\n\n| Test               | Source    | Dimensions | Ratio | Covers                                                    |\n| ------------------ | --------- | ---------- | ----- | --------------------------------------------------------- |\n| Test 1 — Square    | sourceURI | 1080×1080  | 1:1   | Instagram square, LinkedIn square, Facebook square        |\n| Test 2 — Portrait  | tallURI   | 1080×1350  | 4:5   | Instagram portrait, Threads — bellwether for 9:16 quality |\n| Test 3 — Landscape | wideURI   | 1200×627   | ~2:1  | LinkedIn landscape, Facebook landscape, X\u002FTwitter         |\n\nShow all 3 via `asset_preview_file` and ask:\n\n> \"Here are 3 test crops covering the main aspect ratios. Do the framing and expansion look good? I'll generate the full set once you approve.\"\n\n> **No-widget fallback** *(only if `asset_preview_file` is unavailable, e.g. Codex)* — present all 3 URLs directly in the message and ask the same question; UI clients render them inline, and in Codex or other non-UI agents, download each to the workspace and reference the local paths.\n\nThese crops are reused in the final output — only the 9:16 story\u002Freel crop needs to be generated after approval.\n\n---\n\n### Step 5 — Generate All Platform Variants\n\n**If `runTestPreview = true`:** proceed only after user approves test crops in Step 4.\n**If `runTestPreview = false`:** proceed immediately after Step 3.\n\nGenerate every variant in the Platform Specs table for each selected platform. Reuse test crop URIs only when dimensions are an exact match — for any different dimensions, run a fresh `image_crop_and_resize`.\n\n**Per-platform variants to generate:**\n\n| Platform  | Variants                                                  |\n| --------- | --------------------------------------------------------- |\n| Instagram | 1080×1080 (reuse test), 1080×1350 (reuse test), 1080×1920 |\n| TikTok    | 1080×1920 only — no 4:5 variant for TikTok                |\n| LinkedIn  | 1200×627 (reuse test), 1080×1080 (reuse test)             |\n| Facebook  | 1200×630, 1080×1080, 1080×1920                            |\n| X\u002FTwitter | 1200×675, 1080×1080                                       |\n| YouTube   | 1280×720                                                  |\n| Snapchat  | 1080×1920                                                 |\n| Pinterest | 1000×1500                                                 |\n| Threads   | 1080×1350                                                 |\n\n---\n\n### Step 6 — Preview Full Set\n\nCall `asset_preview_file` with all successfully generated URLs — including partial sets when some variants failed.\n\n> **No-widget fallback** *(only if `asset_preview_file` is unavailable, e.g. Codex)* — list all successfully generated URLs directly in the message (including partial sets when some variants failed). UI clients render them inline; in Codex or other non-UI agents, download each to the workspace and reference the local paths.\n\n---\n\n### Step 7 — Delivery Summary\n\nPresent a clean summary table. Note any fallbacks or skipped steps clearly.\n\n```\n✅ Social media set complete!\n\n| Platform  | Format         | Dimensions | Status        |\n| --------- | -------------- | ---------- | ------------- |\n| Instagram | Feed Square    | 1080×1080  | ✅ (from test) |\n| Instagram | Feed Portrait  | 1080×1350  | ✅ (from test) |\n| Instagram | Story \u002F Reel   | 1080×1920  | ✅             |\n| TikTok    | Video \u002F Post   | 1080×1920  | ✅             |\n| LinkedIn  | Post Landscape | 1200×627   | ✅ (from test) |\n| LinkedIn  | Post Square    | 1080×1080  | ✅ (from test) |\n```\n\nIf generative expand fell back to reframe:\n> ⚠️ AI canvas expansion is not included in your current Adobe plan — smart reframe was used instead.\n\n---\n\n## Platform Specs (Image)\n\n| #   | Platform  | Format         | Dimensions | Ratio | Quality | Source Canvas |\n| --- | --------- | -------------- | ---------- | ----- | ------- | ------------- |\n| 1   | Instagram | Feed Square    | 1080×1080  | 1:1   | 7       | sourceURI     |\n| 2   | Instagram | Feed Portrait  | 1080×1350  | 4:5   | 7       | tallURI       |\n| 3   | Instagram | Story \u002F Reel   | 1080×1920  | 9:16  | 7       | tallURI       |\n| 4   | TikTok    | Video \u002F Post   | 1080×1920  | 9:16  | 7       | tallURI       |\n| 5   | LinkedIn  | Post Landscape | 1200×627   | ~2:1  | 6       | wideURI       |\n| 6   | LinkedIn  | Post Square    | 1080×1080  | 1:1   | 6       | sourceURI     |\n| 7   | Facebook  | Feed Landscape | 1200×630   | ~2:1  | 7       | wideURI       |\n| 8   | Facebook  | Feed Square    | 1080×1080  | 1:1   | 7       | sourceURI     |\n| 9   | Facebook  | Story          | 1080×1920  | 9:16  | 7       | tallURI       |\n| 10  | X\u002FTwitter | In-stream      | 1200×675   | 16:9  | 6       | wideURI       |\n| 11  | X\u002FTwitter | Square post    | 1080×1080  | 1:1   | 6       | sourceURI     |\n| 12  | YouTube   | Thumbnail      | 1280×720   | 16:9  | 5       | wideURI       |\n| 13  | Snapchat  | Snap\u002FStory     | 1080×1920  | 9:16  | 2       | tallURI       |\n| 14  | Pinterest | Standard Pin   | 1000×1500  | 2:3   | 7       | tallURI       |\n| 15  | Threads   | Feed Portrait  | 1080×1350  | 4:5   | 7       | tallURI       |\n\n> ⚠️ Snapchat's 250 KB limit requires `quality: 2` — warn the user upfront when Snapchat is selected.\n\n**File naming convention:** `[basename]_[platform]_[descriptor]_[ratio].jpg`\nExample: `hero_instagram_story_9x16.jpg`\n\n---\n\n## VIDEO WORKFLOW\n\n### Step 0 — Get the Source File\n\nVideo tools require an `assetId` — not a URL. How you get it depends on where the file is:\n\n| Source                                             | Action                                                                                                                                                                                                                                                                                                                                     |\n| -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| File uploaded in chat (`\u002Fmnt\u002Fuser-data\u002Fuploads\u002F…`) | Check egress status from `adobe_mandatory_init` (Step 0). If egress is enabled, upload programmatically: get file size and MIME type via bash, call `asset_initialize_file_upload`, PUT the chunk(s), then `asset_finalize_file_upload`. The returned `assetId` is what video tools need. If egress is disabled, use `asset_add_file()` (the picker) instead. |\n| No file provided yet                               | Call `asset_add_file()` immediately.                                                                                                                                                                                                                                                                                                       |\n| File already in Creative Cloud                     | Call `asset_add_file()` so the user can select it.                                                                                                                                                                                                                                                                                         |\n\n> If egress is disabled and the user has already dropped a video into chat, explain why it can't be used directly: \"To resize your video I'll need you to select it via the file picker — this gives Adobe the asset ID it needs. I'll open it now.\"\n\n> **No-widget fallback** *(only if `asset_add_file` is unavailable, e.g. Codex)* — stage the local video programmatically (`asset_initialize_file_upload` → PUT → `asset_finalize_file_upload`) and use the returned `assetId`; for a video already in Creative Cloud, reference it by its `assetId`. Staging requires egress — check egress status from `adobe_mandatory_init` first; if egress is disabled and no picker is available on this surface, tell the user staging isn't possible here and ask them to run the workflow on a surface with the `asset_add_file` picker.\n\n---\n\n### Step 1 — Determine Video Type\n\nIf the user has already described or implied the video orientation (e.g. \"I shot this on my phone in portrait\" → clearly 9:16), skip this question and proceed. Otherwise ask:\n\n> \"To suggest the best output sizes, it helps to know what kind of video this is. What type is it?\"\n\nUse `AskUserQuestion` with single-select:\n\n| Option                 | Aspect Ratio | Common use                             |\n| ---------------------- | ------------ | -------------------------------------- |\n| Phone video — portrait | 9:16         | Shot on phone, vertical                |\n| Phone video — square   | 1:1          | Shot in square mode                    |\n| Screen recording       | 16:9         | Desktop or laptop capture              |\n| Camera \u002F DSLR          | 16:9         | Professional or mirrorless camera      |\n| Other \u002F not sure       | —            | Default to 1:1 (safest cross-platform) |\n\n---\n\n### Step 2 — Suggest Safe Output Sizes\n\nOnly suggest same-ratio resizes. Cross-ratio resizes (e.g. 16:9 → 9:16) produce black bars and are algorithmically penalised on TikTok and Instagram Reels. If a user asks for a cross-ratio resize, explain the limitation and offer same-ratio alternatives instead.\n\n| Source ratio     | Safe output sizes            |\n| ---------------- | ---------------------------- |\n| 9:16 (portrait)  | 1080×1920, 720×1280, 540×960 |\n| 1:1 (square)     | 1080×1080, 720×720           |\n| 16:9 (landscape) | 1920×1080, 1280×720, 854×480 |\n\nPresent these as options with `AskUserQuestion` (multi-select).\n\n---\n\n### Step 3 — Resize\n\n> ⚠️ `resizeVideoPoll` is a **deferred tool** — load it first before attempting to poll.\n> Direct calls without loading will fail with \"not loaded\" error.\n\nFor each selected size, call `video_resize` with the asset ID:\n\n```javascript\nvideo_resize({ assetId: sourceAssetId, width: W, height: H }) → { statusId }\n```\n\nPoll with `resizeVideoPoll` until complete. Poll 3–4 times with brief pauses before reporting slow progress to the user.\n\n---\n\n### Step 4 — Preview\n\nCall `asset_preview_file` with all completed outputs.\n\n> **No-widget fallback** *(only if `asset_preview_file` is unavailable, e.g. Codex)* — list all completed output URLs directly in the message. UI clients render them inline; in Codex or other non-UI agents, download each to the workspace and reference the local paths.\n\n---\n\n### Step 5 — Delivery Summary\n\n```\n✅ Video resize complete!\n\n| Size      | Ratio | Status |\n| --------- | ----- | ------ |\n| 1080×1920 | 9:16  | ✅      |\n| 720×1280  | 9:16  | ✅      |\n```\n\nNote: Video resizing does not apply intelligent reframing — cross-ratio reformatting is out of scope for this skill.\n\n---\n\n## Error Handling\n\n| Situation                                           | Action                                                                                                                                                                                                                                                                                  |\n| --------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Egress upload fails (chunk PUT 5xx after retry)     | Stop upload. Fall back to `asset_add_file()` and tell the user: \"Direct upload didn't work — I'll open the picker so you can select the file.\" *(No-widget surface: report the failure and ask the user to re-provide the file.)*                                                         |\n| `image_generative_expand` returns 403 (entitlement) | Fall back to `image_crop_and_resize` with `fit: \"reframe\"` from `sourceURI`. Note in delivery summary: \"AI canvas expansion is not included in your current Adobe plan — smart reframe was used instead.\" Retrying does not resolve a 403 entitlement — continue per the fallback rule. |\n| `image_crop_and_resize` returns 403 (entitlement)   | Stop workflow. Tell the user: \"Image cropping isn't available on your current Adobe plan — I can't complete this request here.\"                                                                                                                                                         |\n| PSD\u002FAI flattening returns 403                       | Stop workflow. Tell the user: \"Flattening this file type isn't available on your current Adobe plan — export as JPG or PNG first, then try again.\"                                                                                                                                      |\n| `.ffgenimg` file type fails expand                  | Retry using `presignedRenditionUrl` instead of `presignedAssetUrl`                                                                                                                                                                                                                      |\n| 401 not authenticated                               | Ask user to re-authenticate via Adobe OAuth                                                                                                                                                                                                                                             |\n| Image too large after crop                          | Re-run with lower quality setting                                                                                                                                                                                                                                                       |\n| Express file uploaded                               | Ask user to export as JPG\u002FPNG first                                                                                                                                                                                                                                                     |\n| PSD \u002F AI file uploaded                              | Flatten first (JPEG, 300 DPI). On 403, see entitlement row above.                                                                                                                                                                                                                       |\n| `video_resize` fails                                | Report clearly; suggest user re-upload as MP4                                                                                                                                                                                                                                           |\n| Unsupported file format (DOCX, PDF, etc.)           | Inform user. Accepted inputs: JPG, PNG, Firefly images, PSD\u002FAI, MP4\u002FMOV.                                                                                                                                                                                                                |\n\n---\n\n## Hard Constraints\n\n- Never pass a raw local filesystem path to any `image_*` or video tool. Local files must reach Creative Cloud first — selected via the `asset_add_file` picker, or (no-widget fallback) staged via `asset_initialize_file_upload` → PUT → `asset_finalize_file_upload`; only the resulting presigned CC URI (for images) or `assetId` (for video tools) is valid.\n",{"data":37,"body":46},{"name":4,"description":6,"license":28,"compatibility":38,"allowed-tools":39,"metadata":40},"Runs on both widget-capable surfaces (e.g. Claude Cowork, which supports the asset_add_file picker and asset_preview_file preview widgets) and non-UI agents (e.g. Codex, where those widgets are unavailable). The default flow uses the widgets; each widget step has a text-only fallback. Raw local paths are never passed to image or video tools.","adobe_mandatory_init asset_initialize_file_upload asset_finalize_file_upload asset_add_file asset_inline_preview asset_preview_file image_crop_and_resize image_generative_expand video_resize resizeVideoPoll",{"version":41,"visibility":42,"surface":43},"2.1.0","public",[44,45],"claude","codex",{"type":47,"children":48},"root",[49,57,63,118,122,129,287,290,296,309,405,408,414,426,433,445,453,543,549,645,651,724,730,750,804,816,824,827,833,1035,1038,1044,1050,1055,1165,1219,1232,1235,1241,1253,1261,1269,1308,1316,1319,1325,1342,1347,1376,1381,1553,1576,1584,1589,1592,1598,1603,1608,1618,1623,1664,1667,1684,1698,1712,1831,1843,1851,1875,1880,1883,1889,1916,1928,1936,2074,2077,2083,2094,2117,2120,2126,2131,2140,2145,2153,2156,2162,2704,2720,2743,2746,2752,2757,2770,2875,2883,2945,2948,2954,2959,2967,2978,3091,3094,3100,3105,3166,3178,3181,3187,3209,3221,3322,3334,3337,3343,3354,3377,3380,3386,3395,3400,3403,3409,3635,3638,3644,3687],{"type":50,"tag":51,"props":52,"children":53},"element","h1",{"id":4},[54],{"type":55,"value":56},"text","Adobe Create Social Variations",{"type":50,"tag":58,"props":59,"children":60},"p",{},[61],{"type":55,"value":62},"Produces platform-ready images and videos from a single source file. Uses AI canvas expansion and subject-aware cropping to keep the subject in focus across all aspect ratios. Shows a lightweight 3-crop preview before a full-set run so framing issues are caught early — those crops are then reused in the final output.",{"type":50,"tag":64,"props":65,"children":66},"blockquote",{},[67],{"type":50,"tag":58,"props":68,"children":69},{},[70,76,78,85,87,93,95,100,102,108,110,116],{"type":50,"tag":71,"props":72,"children":73},"strong",{},[74],{"type":55,"value":75},"Surface note:",{"type":55,"value":77}," The default flow below uses Adobe's MCP App widgets — the ",{"type":50,"tag":79,"props":80,"children":82},"code",{"className":81},[],[83],{"type":55,"value":84},"asset_add_file",{"type":55,"value":86}," file picker and the ",{"type":50,"tag":79,"props":88,"children":90},{"className":89},[],[91],{"type":55,"value":92},"asset_preview_file",{"type":55,"value":94}," preview. Follow it as written. Only if a widget tool is ",{"type":50,"tag":71,"props":96,"children":97},{},[98],{"type":55,"value":99},"not available on this surface",{"type":55,"value":101}," (e.g. Codex) use the ",{"type":50,"tag":103,"props":104,"children":105},"em",{},[106],{"type":55,"value":107},"No-widget fallback",{"type":55,"value":109}," attached to that step. Likewise, present ",{"type":50,"tag":79,"props":111,"children":113},{"className":112},[],[114],{"type":55,"value":115},"AskUserQuestion",{"type":55,"value":117}," prompts as plain-text labeled options wherever no question widget exists.",{"type":50,"tag":119,"props":120,"children":121},"hr",{},[],{"type":50,"tag":123,"props":124,"children":126},"h2",{"id":125},"supported-input-types",[127],{"type":55,"value":128},"Supported Input Types",{"type":50,"tag":130,"props":131,"children":132},"table",{},[133,157],{"type":50,"tag":134,"props":135,"children":136},"thead",{},[137],{"type":50,"tag":138,"props":139,"children":140},"tr",{},[141,147,152],{"type":50,"tag":142,"props":143,"children":144},"th",{},[145],{"type":55,"value":146},"Input",{"type":50,"tag":142,"props":148,"children":149},{},[150],{"type":55,"value":151},"Supported",{"type":50,"tag":142,"props":153,"children":154},{},[155],{"type":55,"value":156},"Notes",{"type":50,"tag":158,"props":159,"children":160},"tbody",{},[161,178,217,235,252,269],{"type":50,"tag":138,"props":162,"children":163},{},[164,170,175],{"type":50,"tag":165,"props":166,"children":167},"td",{},[168],{"type":55,"value":169},"JPG \u002F PNG",{"type":50,"tag":165,"props":171,"children":172},{},[173],{"type":55,"value":174},"✅ Full workflow",{"type":50,"tag":165,"props":176,"children":177},{},[],{"type":50,"tag":138,"props":179,"children":180},{},[181,186,190],{"type":50,"tag":165,"props":182,"children":183},{},[184],{"type":55,"value":185},"Firefly-generated image",{"type":50,"tag":165,"props":187,"children":188},{},[189],{"type":55,"value":174},{"type":50,"tag":165,"props":191,"children":192},{},[193,195,201,203,209,211],{"type":55,"value":194},"For ",{"type":50,"tag":79,"props":196,"children":198},{"className":197},[],[199],{"type":55,"value":200},".ffgenimg",{"type":55,"value":202}," assets, pass the ",{"type":50,"tag":79,"props":204,"children":206},{"className":205},[],[207],{"type":55,"value":208},"presignedRenditionUrl",{"type":55,"value":210}," field, not ",{"type":50,"tag":79,"props":212,"children":214},{"className":213},[],[215],{"type":55,"value":216},"presignedAssetUrl",{"type":50,"tag":138,"props":218,"children":219},{},[220,225,230],{"type":50,"tag":165,"props":221,"children":222},{},[223],{"type":55,"value":224},"Express file",{"type":50,"tag":165,"props":226,"children":227},{},[228],{"type":55,"value":229},"⚠️ Partial",{"type":50,"tag":165,"props":231,"children":232},{},[233],{"type":55,"value":234},"Must be exported to JPG\u002FPNG first — tell user before proceeding",{"type":50,"tag":138,"props":236,"children":237},{},[238,243,247],{"type":50,"tag":165,"props":239,"children":240},{},[241],{"type":55,"value":242},"PSD \u002F AI (Illustrator)",{"type":50,"tag":165,"props":244,"children":245},{},[246],{"type":55,"value":229},{"type":50,"tag":165,"props":248,"children":249},{},[250],{"type":55,"value":251},"Flatten first (see Error Handling if this fails)",{"type":50,"tag":138,"props":253,"children":254},{},[255,260,264],{"type":50,"tag":165,"props":256,"children":257},{},[258],{"type":55,"value":259},"Video (MP4\u002FMOV)",{"type":50,"tag":165,"props":261,"children":262},{},[263],{"type":55,"value":229},{"type":50,"tag":165,"props":265,"children":266},{},[267],{"type":55,"value":268},"Resize only — no smart reframe. See VIDEO WORKFLOW",{"type":50,"tag":138,"props":270,"children":271},{},[272,277,282],{"type":50,"tag":165,"props":273,"children":274},{},[275],{"type":55,"value":276},"Unsupported (DOCX, PDF, etc.)",{"type":50,"tag":165,"props":278,"children":279},{},[280],{"type":55,"value":281},"❌",{"type":50,"tag":165,"props":283,"children":284},{},[285],{"type":55,"value":286},"Inform user; list accepted formats",{"type":50,"tag":119,"props":288,"children":289},{},[],{"type":50,"tag":123,"props":291,"children":293},{"id":292},"step-0-prereq-initialize-adobe-tools",[294],{"type":55,"value":295},"Step 0 - prereq: Initialize Adobe Tools",{"type":50,"tag":58,"props":297,"children":298},{},[299,301,307],{"type":55,"value":300},"Call ",{"type":50,"tag":79,"props":302,"children":304},{"className":303},[],[305],{"type":55,"value":306},"adobe_mandatory_init",{"type":55,"value":308}," first. This returns file handling rules and tool routing guidance required for the rest of the workflow.",{"type":50,"tag":310,"props":311,"children":316},"pre",{"className":312,"code":313,"language":314,"meta":315,"style":315},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{ \"skill_name\": \"adobe-create-social-variations\", \"skill_version\": \"2.1.0\" }\n","json","",[317],{"type":50,"tag":79,"props":318,"children":319},{"__ignoreMap":315},[320],{"type":50,"tag":321,"props":322,"children":325},"span",{"class":323,"line":324},"line",1,[326,332,337,343,348,353,357,362,366,371,375,380,384,388,392,396,400],{"type":50,"tag":321,"props":327,"children":329},{"style":328},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[330],{"type":55,"value":331},"{",{"type":50,"tag":321,"props":333,"children":334},{"style":328},[335],{"type":55,"value":336}," \"",{"type":50,"tag":321,"props":338,"children":340},{"style":339},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[341],{"type":55,"value":342},"skill_name",{"type":50,"tag":321,"props":344,"children":345},{"style":328},[346],{"type":55,"value":347},"\"",{"type":50,"tag":321,"props":349,"children":350},{"style":328},[351],{"type":55,"value":352},":",{"type":50,"tag":321,"props":354,"children":355},{"style":328},[356],{"type":55,"value":336},{"type":50,"tag":321,"props":358,"children":360},{"style":359},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[361],{"type":55,"value":4},{"type":50,"tag":321,"props":363,"children":364},{"style":328},[365],{"type":55,"value":347},{"type":50,"tag":321,"props":367,"children":368},{"style":328},[369],{"type":55,"value":370},",",{"type":50,"tag":321,"props":372,"children":373},{"style":328},[374],{"type":55,"value":336},{"type":50,"tag":321,"props":376,"children":377},{"style":339},[378],{"type":55,"value":379},"skill_version",{"type":50,"tag":321,"props":381,"children":382},{"style":328},[383],{"type":55,"value":347},{"type":50,"tag":321,"props":385,"children":386},{"style":328},[387],{"type":55,"value":352},{"type":50,"tag":321,"props":389,"children":390},{"style":328},[391],{"type":55,"value":336},{"type":50,"tag":321,"props":393,"children":394},{"style":359},[395],{"type":55,"value":41},{"type":50,"tag":321,"props":397,"children":398},{"style":328},[399],{"type":55,"value":347},{"type":50,"tag":321,"props":401,"children":402},{"style":328},[403],{"type":55,"value":404}," }\n",{"type":50,"tag":119,"props":406,"children":407},{},[],{"type":50,"tag":123,"props":409,"children":411},{"id":410},"step-1-entitlement-check",[412],{"type":55,"value":413},"Step 1 — Entitlement Check",{"type":50,"tag":58,"props":415,"children":416},{},[417,419,424],{"type":55,"value":418},"Now that ",{"type":50,"tag":79,"props":420,"children":422},{"className":421},[],[423],{"type":55,"value":306},{"type":55,"value":425}," confirmed that the \"Adobe for creativity\" connector is live, check which tools are available through the connector and set capability flags.",{"type":50,"tag":427,"props":428,"children":430},"h3",{"id":429},"image-workflow-core-tools-required",[431],{"type":55,"value":432},"Image Workflow — Core Tools (required)",{"type":50,"tag":58,"props":434,"children":435},{},[436,438,443],{"type":55,"value":437},"All of these must be present for the skill to run at all. If ",{"type":50,"tag":71,"props":439,"children":440},{},[441],{"type":55,"value":442},"any",{"type":55,"value":444}," are missing from the connector, output this message exactly and stop — make no further tool calls:",{"type":50,"tag":64,"props":446,"children":447},{},[448],{"type":50,"tag":58,"props":449,"children":450},{},[451],{"type":55,"value":452},"\"To access this skill, please disconnect and reconnect to the \"Adobe for creativity\" Connector to sign in using an Adobe account, or sign up.\"",{"type":50,"tag":130,"props":454,"children":455},{},[456,472],{"type":50,"tag":134,"props":457,"children":458},{},[459],{"type":50,"tag":138,"props":460,"children":461},{},[462,467],{"type":50,"tag":142,"props":463,"children":464},{},[465],{"type":55,"value":466},"Tool",{"type":50,"tag":142,"props":468,"children":469},{},[470],{"type":55,"value":471},"Purpose",{"type":50,"tag":158,"props":473,"children":474},{},[475,492,509,526],{"type":50,"tag":138,"props":476,"children":477},{},[478,487],{"type":50,"tag":165,"props":479,"children":480},{},[481],{"type":50,"tag":79,"props":482,"children":484},{"className":483},[],[485],{"type":55,"value":486},"asset_initialize_file_upload",{"type":50,"tag":165,"props":488,"children":489},{},[490],{"type":55,"value":491},"First call in two-step upload — stages a local file to CC",{"type":50,"tag":138,"props":493,"children":494},{},[495,504],{"type":50,"tag":165,"props":496,"children":497},{},[498],{"type":50,"tag":79,"props":499,"children":501},{"className":500},[],[502],{"type":55,"value":503},"asset_finalize_file_upload",{"type":50,"tag":165,"props":505,"children":506},{},[507],{"type":55,"value":508},"Second call in two-step upload",{"type":50,"tag":138,"props":510,"children":511},{},[512,521],{"type":50,"tag":165,"props":513,"children":514},{},[515],{"type":50,"tag":79,"props":516,"children":518},{"className":517},[],[519],{"type":55,"value":520},"asset_inline_preview",{"type":50,"tag":165,"props":522,"children":523},{},[524],{"type":55,"value":525},"Determines focus strategy before cropping",{"type":50,"tag":138,"props":527,"children":528},{},[529,538],{"type":50,"tag":165,"props":530,"children":531},{},[532],{"type":50,"tag":79,"props":533,"children":535},{"className":534},[],[536],{"type":55,"value":537},"image_crop_and_resize",{"type":50,"tag":165,"props":539,"children":540},{},[541],{"type":55,"value":542},"Per-platform, per-format cropping",{"type":50,"tag":427,"props":544,"children":546},{"id":545},"widget-tools-used-when-available-graceful-fallback",[547],{"type":55,"value":548},"Widget Tools (used when available; graceful fallback)",{"type":50,"tag":130,"props":550,"children":551},{},[552,572],{"type":50,"tag":134,"props":553,"children":554},{},[555],{"type":50,"tag":138,"props":556,"children":557},{},[558,562,567],{"type":50,"tag":142,"props":559,"children":560},{},[561],{"type":55,"value":466},{"type":50,"tag":142,"props":563,"children":564},{},[565],{"type":55,"value":566},"Flag",{"type":50,"tag":142,"props":568,"children":569},{},[570],{"type":55,"value":571},"If missing",{"type":50,"tag":158,"props":573,"children":574},{},[575,620],{"type":50,"tag":138,"props":576,"children":577},{},[578,586,595],{"type":50,"tag":165,"props":579,"children":580},{},[581],{"type":50,"tag":79,"props":582,"children":584},{"className":583},[],[585],{"type":55,"value":84},{"type":50,"tag":165,"props":587,"children":588},{},[589],{"type":50,"tag":79,"props":590,"children":592},{"className":591},[],[593],{"type":55,"value":594},"pickerWidget = true\u002Ffalse",{"type":50,"tag":165,"props":596,"children":597},{},[598,600,605,607,612,614,618],{"type":55,"value":599},"File picker — the default ingest on widget surfaces (e.g. Claude). If unavailable (e.g. Codex), stage local files programmatically via ",{"type":50,"tag":79,"props":601,"children":603},{"className":602},[],[604],{"type":55,"value":486},{"type":55,"value":606}," → ",{"type":50,"tag":79,"props":608,"children":610},{"className":609},[],[611],{"type":55,"value":503},{"type":55,"value":613}," (see the ",{"type":50,"tag":103,"props":615,"children":616},{},[617],{"type":55,"value":107},{"type":55,"value":619}," in each Get-the-Source-File step).",{"type":50,"tag":138,"props":621,"children":622},{},[623,631,640],{"type":50,"tag":165,"props":624,"children":625},{},[626],{"type":50,"tag":79,"props":627,"children":629},{"className":628},[],[630],{"type":55,"value":92},{"type":50,"tag":165,"props":632,"children":633},{},[634],{"type":50,"tag":79,"props":635,"children":637},{"className":636},[],[638],{"type":55,"value":639},"previewWidget = true\u002Ffalse",{"type":50,"tag":165,"props":641,"children":642},{},[643],{"type":55,"value":644},"Side-by-side\u002Fgrid preview. If unavailable (e.g. Codex), present output URLs directly in the message instead — UI clients still render them inline; non-UI agents download each via curl.",{"type":50,"tag":427,"props":646,"children":648},{"id":647},"image-workflow-enhanced-tools-optional-graceful-fallback",[649],{"type":55,"value":650},"Image Workflow — Enhanced Tools (optional, graceful fallback)",{"type":50,"tag":130,"props":652,"children":653},{},[654,672],{"type":50,"tag":134,"props":655,"children":656},{},[657],{"type":50,"tag":138,"props":658,"children":659},{},[660,664,668],{"type":50,"tag":142,"props":661,"children":662},{},[663],{"type":55,"value":466},{"type":50,"tag":142,"props":665,"children":666},{},[667],{"type":55,"value":566},{"type":50,"tag":142,"props":669,"children":670},{},[671],{"type":55,"value":571},{"type":50,"tag":158,"props":673,"children":674},{},[675],{"type":50,"tag":138,"props":676,"children":677},{},[678,687,696],{"type":50,"tag":165,"props":679,"children":680},{},[681],{"type":50,"tag":79,"props":682,"children":684},{"className":683},[],[685],{"type":55,"value":686},"image_generative_expand",{"type":50,"tag":165,"props":688,"children":689},{},[690],{"type":50,"tag":79,"props":691,"children":693},{"className":692},[],[694],{"type":55,"value":695},"expandAvailable = true\u002Ffalse",{"type":50,"tag":165,"props":697,"children":698},{},[699,701,706,708,714,716,722],{"type":55,"value":700},"Use ",{"type":50,"tag":79,"props":702,"children":704},{"className":703},[],[705],{"type":55,"value":537},{"type":55,"value":707}," with ",{"type":50,"tag":79,"props":709,"children":711},{"className":710},[],[712],{"type":55,"value":713},"fit: \"reframe\"",{"type":55,"value":715}," from ",{"type":50,"tag":79,"props":717,"children":719},{"className":718},[],[720],{"type":55,"value":721},"sourceURI",{"type":55,"value":723}," instead. Do NOT mention \"AI canvas expansion\" to the user. Note in delivery summary: \"Smart reframe was used for aspect ratio adaptation.\"",{"type":50,"tag":427,"props":725,"children":727},{"id":726},"video-workflow-required-tools-optional-workflow-all-or-nothing",[728],{"type":55,"value":729},"Video Workflow — Required Tools (optional workflow, all-or-nothing)",{"type":50,"tag":58,"props":731,"children":732},{},[733,735,740,742,748],{"type":55,"value":734},"Only offer the video workflow if ",{"type":50,"tag":71,"props":736,"children":737},{},[738],{"type":55,"value":739},"both",{"type":55,"value":741}," tools below are available. If either is missing, set ",{"type":50,"tag":79,"props":743,"children":745},{"className":744},[],[746],{"type":55,"value":747},"videoCapable = false",{"type":55,"value":749}," — do NOT mention video resizing capabilities to the user at any point.",{"type":50,"tag":130,"props":751,"children":752},{},[753,767],{"type":50,"tag":134,"props":754,"children":755},{},[756],{"type":50,"tag":138,"props":757,"children":758},{},[759,763],{"type":50,"tag":142,"props":760,"children":761},{},[762],{"type":55,"value":466},{"type":50,"tag":142,"props":764,"children":765},{},[766],{"type":55,"value":471},{"type":50,"tag":158,"props":768,"children":769},{},[770,787],{"type":50,"tag":138,"props":771,"children":772},{},[773,782],{"type":50,"tag":165,"props":774,"children":775},{},[776],{"type":50,"tag":79,"props":777,"children":779},{"className":778},[],[780],{"type":55,"value":781},"video_resize",{"type":50,"tag":165,"props":783,"children":784},{},[785],{"type":55,"value":786},"Same-ratio resize only",{"type":50,"tag":138,"props":788,"children":789},{},[790,799],{"type":50,"tag":165,"props":791,"children":792},{},[793],{"type":50,"tag":79,"props":794,"children":796},{"className":795},[],[797],{"type":55,"value":798},"resizeVideoPoll",{"type":50,"tag":165,"props":800,"children":801},{},[802],{"type":55,"value":803},"Deferred tool — load before calling",{"type":50,"tag":58,"props":805,"children":806},{},[807,809,814],{"type":55,"value":808},"If ",{"type":50,"tag":79,"props":810,"children":812},{"className":811},[],[813],{"type":55,"value":747},{"type":55,"value":815}," and the user explicitly asks about video resizing, avoid verbosity and output this message exactly:",{"type":50,"tag":64,"props":817,"children":818},{},[819],{"type":50,"tag":58,"props":820,"children":821},{},[822],{"type":55,"value":823},"\"Video resizing isn't available with your current setup. Please disconnect and reconnect to the \"Adobe for creativity\" Connector to sign in using an Adobe account, or sign up. In the meantime, I can help with image crops and social media variants though.\"",{"type":50,"tag":119,"props":825,"children":826},{},[],{"type":50,"tag":123,"props":828,"children":830},{"id":829},"tool-reference",[831],{"type":55,"value":832},"Tool Reference",{"type":50,"tag":130,"props":834,"children":835},{},[836,855],{"type":50,"tag":134,"props":837,"children":838},{},[839],{"type":50,"tag":138,"props":840,"children":841},{},[842,847,851],{"type":50,"tag":142,"props":843,"children":844},{},[845],{"type":55,"value":846},"Step",{"type":50,"tag":142,"props":848,"children":849},{},[850],{"type":55,"value":466},{"type":50,"tag":142,"props":852,"children":853},{},[854],{"type":55,"value":156},{"type":50,"tag":158,"props":856,"children":857},{},[858,879,907,927,948,969,995,1015],{"type":50,"tag":138,"props":859,"children":860},{},[861,866,874],{"type":50,"tag":165,"props":862,"children":863},{},[864],{"type":55,"value":865},"Get file (widget surfaces)",{"type":50,"tag":165,"props":867,"children":868},{},[869],{"type":50,"tag":79,"props":870,"children":872},{"className":871},[],[873],{"type":55,"value":84},{"type":50,"tag":165,"props":875,"children":876},{},[877],{"type":55,"value":878},"File picker \u002F CC browse",{"type":50,"tag":138,"props":880,"children":881},{},[882,887,902],{"type":50,"tag":165,"props":883,"children":884},{},[885],{"type":55,"value":886},"Stage file (no-widget fallback)",{"type":50,"tag":165,"props":888,"children":889},{},[890,895,897],{"type":50,"tag":79,"props":891,"children":893},{"className":892},[],[894],{"type":55,"value":486},{"type":55,"value":896}," + ",{"type":50,"tag":79,"props":898,"children":900},{"className":899},[],[901],{"type":55,"value":503},{"type":50,"tag":165,"props":903,"children":904},{},[905],{"type":55,"value":906},"Two-step upload — stage a local file to CC when the picker is unavailable",{"type":50,"tag":138,"props":908,"children":909},{},[910,915,923],{"type":50,"tag":165,"props":911,"children":912},{},[913],{"type":55,"value":914},"Inspect source image",{"type":50,"tag":165,"props":916,"children":917},{},[918],{"type":50,"tag":79,"props":919,"children":921},{"className":920},[],[922],{"type":55,"value":520},{"type":50,"tag":165,"props":924,"children":925},{},[926],{"type":55,"value":525},{"type":50,"tag":138,"props":928,"children":929},{},[930,935,943],{"type":50,"tag":165,"props":931,"children":932},{},[933],{"type":55,"value":934},"Expand canvas",{"type":50,"tag":165,"props":936,"children":937},{},[938],{"type":50,"tag":79,"props":939,"children":941},{"className":940},[],[942],{"type":55,"value":686},{"type":50,"tag":165,"props":944,"children":945},{},[946],{"type":55,"value":947},"Creates tall (9:16\u002F4:5) and wide (~2:1\u002F16:9) variants",{"type":50,"tag":138,"props":949,"children":950},{},[951,956,964],{"type":50,"tag":165,"props":952,"children":953},{},[954],{"type":55,"value":955},"Crop to platform dimensions",{"type":50,"tag":165,"props":957,"children":958},{},[959],{"type":50,"tag":79,"props":960,"children":962},{"className":961},[],[963],{"type":55,"value":537},{"type":50,"tag":165,"props":965,"children":966},{},[967],{"type":55,"value":968},"Per-platform, per-format; also 403 fallback for expand",{"type":50,"tag":138,"props":970,"children":971},{},[972,977,985],{"type":50,"tag":165,"props":973,"children":974},{},[975],{"type":55,"value":976},"Preview test crops or full set",{"type":50,"tag":165,"props":978,"children":979},{},[980],{"type":50,"tag":79,"props":981,"children":983},{"className":982},[],[984],{"type":55,"value":92},{"type":50,"tag":165,"props":986,"children":987},{},[988,990],{"type":55,"value":989},"Before full run (test) and at delivery ",{"type":50,"tag":103,"props":991,"children":992},{},[993],{"type":55,"value":994},"(no-widget fallback: present the URLs directly)",{"type":50,"tag":138,"props":996,"children":997},{},[998,1003,1011],{"type":50,"tag":165,"props":999,"children":1000},{},[1001],{"type":55,"value":1002},"Resize video",{"type":50,"tag":165,"props":1004,"children":1005},{},[1006],{"type":50,"tag":79,"props":1007,"children":1009},{"className":1008},[],[1010],{"type":55,"value":781},{"type":50,"tag":165,"props":1012,"children":1013},{},[1014],{"type":55,"value":786},{"type":50,"tag":138,"props":1016,"children":1017},{},[1018,1023,1031],{"type":50,"tag":165,"props":1019,"children":1020},{},[1021],{"type":55,"value":1022},"Poll video resize job",{"type":50,"tag":165,"props":1024,"children":1025},{},[1026],{"type":50,"tag":79,"props":1027,"children":1029},{"className":1028},[],[1030],{"type":55,"value":798},{"type":50,"tag":165,"props":1032,"children":1033},{},[1034],{"type":55,"value":803},{"type":50,"tag":119,"props":1036,"children":1037},{},[],{"type":50,"tag":123,"props":1039,"children":1041},{"id":1040},"image-workflow",[1042],{"type":55,"value":1043},"IMAGE WORKFLOW",{"type":50,"tag":427,"props":1045,"children":1047},{"id":1046},"step-0-get-the-source-file",[1048],{"type":55,"value":1049},"Step 0 — Get the Source File",{"type":50,"tag":58,"props":1051,"children":1052},{},[1053],{"type":55,"value":1054},"How you get the file depends on where it is:",{"type":50,"tag":130,"props":1056,"children":1057},{},[1058,1074],{"type":50,"tag":134,"props":1059,"children":1060},{},[1061],{"type":50,"tag":138,"props":1062,"children":1063},{},[1064,1069],{"type":50,"tag":142,"props":1065,"children":1066},{},[1067],{"type":55,"value":1068},"Source",{"type":50,"tag":142,"props":1070,"children":1071},{},[1072],{"type":55,"value":1073},"Action",{"type":50,"tag":158,"props":1075,"children":1076},{},[1077,1127,1146],{"type":50,"tag":138,"props":1078,"children":1079},{},[1080,1093],{"type":50,"tag":165,"props":1081,"children":1082},{},[1083,1085,1091],{"type":55,"value":1084},"File uploaded in chat (",{"type":50,"tag":79,"props":1086,"children":1088},{"className":1087},[],[1089],{"type":55,"value":1090},"\u002Fmnt\u002Fuser-data\u002Fuploads\u002F…",{"type":55,"value":1092},")",{"type":50,"tag":165,"props":1094,"children":1095},{},[1096,1098,1103,1105,1110,1112,1117,1119,1125],{"type":55,"value":1097},"Check egress status from ",{"type":50,"tag":79,"props":1099,"children":1101},{"className":1100},[],[1102],{"type":55,"value":306},{"type":55,"value":1104}," (Step 0). If egress is enabled, upload programmatically: get file size and MIME type via bash, call ",{"type":50,"tag":79,"props":1106,"children":1108},{"className":1107},[],[1109],{"type":55,"value":486},{"type":55,"value":1111},", PUT the chunk(s), then ",{"type":50,"tag":79,"props":1113,"children":1115},{"className":1114},[],[1116],{"type":55,"value":503},{"type":55,"value":1118},". If egress is disabled, use ",{"type":50,"tag":79,"props":1120,"children":1122},{"className":1121},[],[1123],{"type":55,"value":1124},"asset_add_file()",{"type":55,"value":1126}," (the picker) instead.",{"type":50,"tag":138,"props":1128,"children":1129},{},[1130,1135],{"type":50,"tag":165,"props":1131,"children":1132},{},[1133],{"type":55,"value":1134},"No file provided yet",{"type":50,"tag":165,"props":1136,"children":1137},{},[1138,1139,1144],{"type":55,"value":300},{"type":50,"tag":79,"props":1140,"children":1142},{"className":1141},[],[1143],{"type":55,"value":1124},{"type":55,"value":1145}," immediately — no need to ask first.",{"type":50,"tag":138,"props":1147,"children":1148},{},[1149,1154],{"type":50,"tag":165,"props":1150,"children":1151},{},[1152],{"type":55,"value":1153},"File already in Creative Cloud",{"type":50,"tag":165,"props":1155,"children":1156},{},[1157,1158,1163],{"type":55,"value":300},{"type":50,"tag":79,"props":1159,"children":1161},{"className":1160},[],[1162],{"type":55,"value":1124},{"type":55,"value":1164}," so the user can select it from their CC storage.",{"type":50,"tag":64,"props":1166,"children":1167},{},[1168],{"type":50,"tag":58,"props":1169,"children":1170},{},[1171,1175,1177,1189,1191,1196,1198,1203,1205,1210,1212,1217],{"type":50,"tag":71,"props":1172,"children":1173},{},[1174],{"type":55,"value":107},{"type":55,"value":1176}," ",{"type":50,"tag":103,"props":1178,"children":1179},{},[1180,1182,1187],{"type":55,"value":1181},"(only if ",{"type":50,"tag":79,"props":1183,"children":1185},{"className":1184},[],[1186],{"type":55,"value":84},{"type":55,"value":1188}," is unavailable on this surface, e.g. Codex)",{"type":55,"value":1190}," — don't ask the user to pick. Stage any local file programmatically (",{"type":50,"tag":79,"props":1192,"children":1194},{"className":1193},[],[1195],{"type":55,"value":486},{"type":55,"value":1197}," → PUT → ",{"type":50,"tag":79,"props":1199,"children":1201},{"className":1200},[],[1202],{"type":55,"value":503},{"type":55,"value":1204},") and use the returned presigned CC URL; for a file already in Creative Cloud, reference it directly by its CC URI. Staging requires egress — check egress status from ",{"type":50,"tag":79,"props":1206,"children":1208},{"className":1207},[],[1209],{"type":55,"value":306},{"type":55,"value":1211}," first; if egress is disabled and no picker is available on this surface, tell the user staging isn't possible here and ask them to run the workflow on a surface with the ",{"type":50,"tag":79,"props":1213,"children":1215},{"className":1214},[],[1216],{"type":55,"value":84},{"type":55,"value":1218}," picker.",{"type":50,"tag":58,"props":1220,"children":1221},{},[1222,1224,1230],{"type":55,"value":1223},"After the file is available, detect image vs. video from ",{"type":50,"tag":79,"props":1225,"children":1227},{"className":1226},[],[1228],{"type":55,"value":1229},"mediaType",{"type":55,"value":1231},". For images, proceed to Step 1.",{"type":50,"tag":119,"props":1233,"children":1234},{},[],{"type":50,"tag":427,"props":1236,"children":1238},{"id":1237},"step-1-ask-which-platforms",[1239],{"type":55,"value":1240},"Step 1 — Ask: Which Platforms?",{"type":50,"tag":58,"props":1242,"children":1243},{},[1244,1246,1251],{"type":55,"value":1245},"Ask in a single question using ",{"type":50,"tag":79,"props":1247,"children":1249},{"className":1248},[],[1250],{"type":55,"value":115},{"type":55,"value":1252}," with multi-select:",{"type":50,"tag":64,"props":1254,"children":1255},{},[1256],{"type":50,"tag":58,"props":1257,"children":1258},{},[1259],{"type":55,"value":1260},"Full set \u002F Instagram \u002F TikTok \u002F LinkedIn \u002F Facebook \u002F YouTube \u002F Snapchat \u002F X\u002FTwitter \u002F Pinterest \u002F Threads",{"type":50,"tag":58,"props":1262,"children":1263},{},[1264],{"type":50,"tag":71,"props":1265,"children":1266},{},[1267],{"type":55,"value":1268},"Set the test flag based on the user's answer:",{"type":50,"tag":1270,"props":1271,"children":1272},"ul",{},[1273,1291],{"type":50,"tag":1274,"props":1275,"children":1276},"li",{},[1277,1282,1283,1289],{"type":50,"tag":71,"props":1278,"children":1279},{},[1280],{"type":55,"value":1281},"If \"Full set\" is selected",{"type":55,"value":606},{"type":50,"tag":79,"props":1284,"children":1286},{"className":1285},[],[1287],{"type":55,"value":1288},"runTestPreview = true",{"type":55,"value":1290},". Use all platforms. A 3-crop test preview will be shown before the full set is generated (see Step 4).",{"type":50,"tag":1274,"props":1292,"children":1293},{},[1294,1299,1300,1306],{"type":50,"tag":71,"props":1295,"children":1296},{},[1297],{"type":55,"value":1298},"If any specific platform(s) are selected",{"type":55,"value":606},{"type":50,"tag":79,"props":1301,"children":1303},{"className":1302},[],[1304],{"type":55,"value":1305},"runTestPreview = false",{"type":55,"value":1307},". Use only the selected platforms. Skip the test preview and go directly from Step 3 to Step 5.",{"type":50,"tag":64,"props":1309,"children":1310},{},[1311],{"type":50,"tag":58,"props":1312,"children":1313},{},[1314],{"type":55,"value":1315},"The test preview is a useful safety net for large cross-platform batches, but unnecessary friction for a targeted 1–2 platform run.",{"type":50,"tag":119,"props":1317,"children":1318},{},[],{"type":50,"tag":427,"props":1320,"children":1322},{"id":1321},"step-2-inspect-image-set-focus-strategy",[1323],{"type":55,"value":1324},"Step 2 — Inspect Image & Set Focus Strategy",{"type":50,"tag":58,"props":1326,"children":1327},{},[1328,1333,1335,1340],{"type":50,"tag":71,"props":1329,"children":1330},{},[1331],{"type":55,"value":1332},"Inspect the image first",{"type":55,"value":1334}," using ",{"type":50,"tag":79,"props":1336,"children":1338},{"className":1337},[],[1339],{"type":55,"value":520},{"type":55,"value":1341}," on the source file. Visual inspection produces far better focus decisions than guessing from the filename — and usually means you won't need to ask the user anything at all.",{"type":50,"tag":58,"props":1343,"children":1344},{},[1345],{"type":55,"value":1346},"After inspecting, tell the user what you see and what focus strategy you're using, and invite a correction:",{"type":50,"tag":64,"props":1348,"children":1349},{},[1350],{"type":50,"tag":58,"props":1351,"children":1352},{},[1353,1355,1360,1362,1367,1369,1374],{"type":55,"value":1354},"\"I can see this is a ",{"type":50,"tag":321,"props":1356,"children":1357},{},[1358],{"type":55,"value":1359},"e.g. 'product shot of a tote bag on a neutral background'",{"type":55,"value":1361},". I'll use ",{"type":50,"tag":321,"props":1363,"children":1364},{},[1365],{"type":55,"value":1366},"focus strategy",{"type":55,"value":1368}," to keep ",{"type":50,"tag":321,"props":1370,"children":1371},{},[1372],{"type":55,"value":1373},"subject",{"type":55,"value":1375}," centred across all crops. Does that sound right, or would you like me to focus on something else?\"",{"type":50,"tag":58,"props":1377,"children":1378},{},[1379],{"type":55,"value":1380},"Only ask a follow-up question if the image is genuinely ambiguous (multiple equally prominent subjects, or a scene with no clear focal point).",{"type":50,"tag":130,"props":1382,"children":1383},{},[1384,1405],{"type":50,"tag":134,"props":1385,"children":1386},{},[1387],{"type":50,"tag":138,"props":1388,"children":1389},{},[1390,1395,1400],{"type":50,"tag":142,"props":1391,"children":1392},{},[1393],{"type":55,"value":1394},"Image type",{"type":50,"tag":142,"props":1396,"children":1397},{},[1398],{"type":55,"value":1399},"Focus strategy",{"type":50,"tag":142,"props":1401,"children":1402},{},[1403],{"type":55,"value":1404},"Rationale",{"type":50,"tag":158,"props":1406,"children":1407},{},[1408,1430,1452,1481,1509,1531],{"type":50,"tag":138,"props":1409,"children":1410},{},[1411,1416,1425],{"type":50,"tag":165,"props":1412,"children":1413},{},[1414],{"type":55,"value":1415},"Portrait \u002F headshot \u002F person in scene",{"type":50,"tag":165,"props":1417,"children":1418},{},[1419],{"type":50,"tag":79,"props":1420,"children":1422},{"className":1421},[],[1423],{"type":55,"value":1424},"\"face\"",{"type":50,"tag":165,"props":1426,"children":1427},{},[1428],{"type":55,"value":1429},"Most reliable for people — facial detection anchors to the face even in tight crops",{"type":50,"tag":138,"props":1431,"children":1432},{},[1433,1438,1447],{"type":50,"tag":165,"props":1434,"children":1435},{},[1436],{"type":55,"value":1437},"Upper body \u002F chest-up portrait",{"type":50,"tag":165,"props":1439,"children":1440},{},[1441],{"type":50,"tag":79,"props":1442,"children":1444},{"className":1443},[],[1445],{"type":55,"value":1446},"\"upper_body\"",{"type":50,"tag":165,"props":1448,"children":1449},{},[1450],{"type":55,"value":1451},"Use when face + torso context matters (outfit, gesture, expression)",{"type":50,"tag":138,"props":1453,"children":1454},{},[1455,1460,1469],{"type":50,"tag":165,"props":1456,"children":1457},{},[1458],{"type":55,"value":1459},"Product on clean background",{"type":50,"tag":165,"props":1461,"children":1462},{},[1463],{"type":50,"tag":79,"props":1464,"children":1466},{"className":1465},[],[1467],{"type":55,"value":1468},"{ prompt: \"description of product\" }",{"type":50,"tag":165,"props":1470,"children":1471},{},[1472,1474,1480],{"type":55,"value":1473},"Name the product explicitly for clean isolation (e.g. ",{"type":50,"tag":79,"props":1475,"children":1477},{"className":1476},[],[1478],{"type":55,"value":1479},"{ prompt: \"tote bag\" }",{"type":55,"value":1092},{"type":50,"tag":138,"props":1482,"children":1483},{},[1484,1489,1498],{"type":50,"tag":165,"props":1485,"children":1486},{},[1487],{"type":55,"value":1488},"Non-human subject with busy background",{"type":50,"tag":165,"props":1490,"children":1491},{},[1492],{"type":50,"tag":79,"props":1493,"children":1495},{"className":1494},[],[1496],{"type":55,"value":1497},"{ prompt: \"description of subject\" }",{"type":50,"tag":165,"props":1499,"children":1500},{},[1501,1503],{"type":55,"value":1502},"More precise than generic ",{"type":50,"tag":79,"props":1504,"children":1506},{"className":1505},[],[1507],{"type":55,"value":1508},"\"subject\"",{"type":50,"tag":138,"props":1510,"children":1511},{},[1512,1517,1526],{"type":50,"tag":165,"props":1513,"children":1514},{},[1515],{"type":55,"value":1516},"Aerial \u002F flat lay \u002F no clear subject",{"type":50,"tag":165,"props":1518,"children":1519},{},[1520],{"type":50,"tag":79,"props":1521,"children":1523},{"className":1522},[],[1524],{"type":55,"value":1525},"{ x: 0.5, y: 0.5 }",{"type":50,"tag":165,"props":1527,"children":1528},{},[1529],{"type":55,"value":1530},"Centre crop is safest when nothing to detect",{"type":50,"tag":138,"props":1532,"children":1533},{},[1534,1539,1548],{"type":50,"tag":165,"props":1535,"children":1536},{},[1537],{"type":55,"value":1538},"User specifies a subject",{"type":50,"tag":165,"props":1540,"children":1541},{},[1542],{"type":50,"tag":79,"props":1543,"children":1545},{"className":1544},[],[1546],{"type":55,"value":1547},"{ prompt: \"user's description\" }",{"type":50,"tag":165,"props":1549,"children":1550},{},[1551],{"type":55,"value":1552},"Pass their words directly",{"type":50,"tag":64,"props":1554,"children":1555},{},[1556],{"type":50,"tag":58,"props":1557,"children":1558},{},[1559,1561,1566,1568,1574],{"type":55,"value":1560},"For images containing people, use ",{"type":50,"tag":79,"props":1562,"children":1564},{"className":1563},[],[1565],{"type":55,"value":1424},{"type":55,"value":1567}," — prompt-based focus drifts to bodies rather than faces. Reserve ",{"type":50,"tag":79,"props":1569,"children":1571},{"className":1570},[],[1572],{"type":55,"value":1573},"{ prompt: \"...\" }",{"type":55,"value":1575}," for non-human subjects.",{"type":50,"tag":64,"props":1577,"children":1578},{},[1579],{"type":50,"tag":58,"props":1580,"children":1581},{},[1582],{"type":55,"value":1583},"⚠️ If the source image is significantly wider than it is tall (landscape), use 2000px top & bottom for the tall expand (not the default 960px) — this gives the portrait crop enough canvas to reframe around the subject.\n⚠️ For the same landscape sources, also use 1500px left & right for the wide expand (not the default 960px) — 960px doesn't give the reframe enough room to pull the subject into centre for the ~2:1 landscape crop.",{"type":50,"tag":58,"props":1585,"children":1586},{},[1587],{"type":55,"value":1588},"If the user corrects your assessment, update the focus strategy and confirm before proceeding.",{"type":50,"tag":119,"props":1590,"children":1591},{},[],{"type":50,"tag":427,"props":1593,"children":1595},{"id":1594},"step-3-generative-expand-directly-from-source-no-padding",[1596],{"type":55,"value":1597},"Step 3 — Generative Expand (directly from source — no padding)",{"type":50,"tag":58,"props":1599,"children":1600},{},[1601],{"type":55,"value":1602},"Expand the original image directly. Do not pad to square first — the AI produces better results extending real scene content than bridging across blank bars.",{"type":50,"tag":58,"props":1604,"children":1605},{},[1606],{"type":55,"value":1607},"Run both expands before any crops:",{"type":50,"tag":310,"props":1609,"children":1613},{"className":1610,"code":1612,"language":55},[1611],"language-text","\u002F\u002F GROUP A — tall canvas (for 9:16 and 4:5 targets)\nimage_generative_expand(sourceURI, { top: 960, bottom: 960 }) → tallURI\n\u002F\u002F use 2000 top & bottom if source is significantly landscape\n\n\u002F\u002F GROUP B — wide canvas (for ~2:1 and 16:9 targets)\nimage_generative_expand(sourceURI, { left: 960, right: 960 }) → wideURI\n\u002F\u002F use 1500 left & right if source is significantly landscape\n",[1614],{"type":50,"tag":79,"props":1615,"children":1616},{"__ignoreMap":315},[1617],{"type":55,"value":1612},{"type":50,"tag":58,"props":1619,"children":1620},{},[1621],{"type":55,"value":1622},"Square targets (1:1) crop directly from the source — no expand needed.",{"type":50,"tag":64,"props":1624,"children":1625},{},[1626],{"type":50,"tag":58,"props":1627,"children":1628},{},[1629,1631,1636,1638,1643,1645,1650,1651,1656,1657,1662],{"type":55,"value":1630},"Expands originate from the original ",{"type":50,"tag":79,"props":1632,"children":1634},{"className":1633},[],[1635],{"type":55,"value":721},{"type":55,"value":1637}," — chained expands degrade output.\n⚠️ If ",{"type":50,"tag":79,"props":1639,"children":1641},{"className":1640},[],[1642],{"type":55,"value":686},{"type":55,"value":1644}," returns 403 (entitlement), fall back to ",{"type":50,"tag":79,"props":1646,"children":1648},{"className":1647},[],[1649],{"type":55,"value":537},{"type":55,"value":707},{"type":50,"tag":79,"props":1652,"children":1654},{"className":1653},[],[1655],{"type":55,"value":713},{"type":55,"value":715},{"type":50,"tag":79,"props":1658,"children":1660},{"className":1659},[],[1661],{"type":55,"value":721},{"type":55,"value":1663}," for all variants in that group. Note the fallback in the delivery summary.",{"type":50,"tag":119,"props":1665,"children":1666},{},[],{"type":50,"tag":427,"props":1668,"children":1670},{"id":1669},"step-4-test-preview-full-set-only-skip-if-runtestpreview-false",[1671,1673],{"type":55,"value":1672},"Step 4 — Test Preview ",{"type":50,"tag":103,"props":1674,"children":1675},{},[1676,1678,1683],{"type":55,"value":1677},"(Full set only — skip if ",{"type":50,"tag":79,"props":1679,"children":1681},{"className":1680},[],[1682],{"type":55,"value":1305},{"type":55,"value":1092},{"type":50,"tag":58,"props":1685,"children":1686},{},[1687,1696],{"type":50,"tag":71,"props":1688,"children":1689},{},[1690,1691],{"type":55,"value":808},{"type":50,"tag":79,"props":1692,"children":1694},{"className":1693},[],[1695],{"type":55,"value":1305},{"type":55,"value":1697}," (specific platforms selected): skip this step and go directly to Step 5.",{"type":50,"tag":58,"props":1699,"children":1700},{},[1701,1710],{"type":50,"tag":71,"props":1702,"children":1703},{},[1704,1705],{"type":55,"value":808},{"type":50,"tag":79,"props":1706,"children":1708},{"className":1707},[],[1709],{"type":55,"value":1288},{"type":55,"value":1711}," (Full set): produce 3 representative test crops — one per aspect ratio family — before generating the full set.",{"type":50,"tag":130,"props":1713,"children":1714},{},[1715,1745],{"type":50,"tag":134,"props":1716,"children":1717},{},[1718],{"type":50,"tag":138,"props":1719,"children":1720},{},[1721,1726,1730,1735,1740],{"type":50,"tag":142,"props":1722,"children":1723},{},[1724],{"type":55,"value":1725},"Test",{"type":50,"tag":142,"props":1727,"children":1728},{},[1729],{"type":55,"value":1068},{"type":50,"tag":142,"props":1731,"children":1732},{},[1733],{"type":55,"value":1734},"Dimensions",{"type":50,"tag":142,"props":1736,"children":1737},{},[1738],{"type":55,"value":1739},"Ratio",{"type":50,"tag":142,"props":1741,"children":1742},{},[1743],{"type":55,"value":1744},"Covers",{"type":50,"tag":158,"props":1746,"children":1747},{},[1748,1775,1803],{"type":50,"tag":138,"props":1749,"children":1750},{},[1751,1756,1760,1765,1770],{"type":50,"tag":165,"props":1752,"children":1753},{},[1754],{"type":55,"value":1755},"Test 1 — Square",{"type":50,"tag":165,"props":1757,"children":1758},{},[1759],{"type":55,"value":721},{"type":50,"tag":165,"props":1761,"children":1762},{},[1763],{"type":55,"value":1764},"1080×1080",{"type":50,"tag":165,"props":1766,"children":1767},{},[1768],{"type":55,"value":1769},"1:1",{"type":50,"tag":165,"props":1771,"children":1772},{},[1773],{"type":55,"value":1774},"Instagram square, LinkedIn square, Facebook square",{"type":50,"tag":138,"props":1776,"children":1777},{},[1778,1783,1788,1793,1798],{"type":50,"tag":165,"props":1779,"children":1780},{},[1781],{"type":55,"value":1782},"Test 2 — Portrait",{"type":50,"tag":165,"props":1784,"children":1785},{},[1786],{"type":55,"value":1787},"tallURI",{"type":50,"tag":165,"props":1789,"children":1790},{},[1791],{"type":55,"value":1792},"1080×1350",{"type":50,"tag":165,"props":1794,"children":1795},{},[1796],{"type":55,"value":1797},"4:5",{"type":50,"tag":165,"props":1799,"children":1800},{},[1801],{"type":55,"value":1802},"Instagram portrait, Threads — bellwether for 9:16 quality",{"type":50,"tag":138,"props":1804,"children":1805},{},[1806,1811,1816,1821,1826],{"type":50,"tag":165,"props":1807,"children":1808},{},[1809],{"type":55,"value":1810},"Test 3 — Landscape",{"type":50,"tag":165,"props":1812,"children":1813},{},[1814],{"type":55,"value":1815},"wideURI",{"type":50,"tag":165,"props":1817,"children":1818},{},[1819],{"type":55,"value":1820},"1200×627",{"type":50,"tag":165,"props":1822,"children":1823},{},[1824],{"type":55,"value":1825},"~2:1",{"type":50,"tag":165,"props":1827,"children":1828},{},[1829],{"type":55,"value":1830},"LinkedIn landscape, Facebook landscape, X\u002FTwitter",{"type":50,"tag":58,"props":1832,"children":1833},{},[1834,1836,1841],{"type":55,"value":1835},"Show all 3 via ",{"type":50,"tag":79,"props":1837,"children":1839},{"className":1838},[],[1840],{"type":55,"value":92},{"type":55,"value":1842}," and ask:",{"type":50,"tag":64,"props":1844,"children":1845},{},[1846],{"type":50,"tag":58,"props":1847,"children":1848},{},[1849],{"type":55,"value":1850},"\"Here are 3 test crops covering the main aspect ratios. Do the framing and expansion look good? I'll generate the full set once you approve.\"",{"type":50,"tag":64,"props":1852,"children":1853},{},[1854],{"type":50,"tag":58,"props":1855,"children":1856},{},[1857,1861,1862,1873],{"type":50,"tag":71,"props":1858,"children":1859},{},[1860],{"type":55,"value":107},{"type":55,"value":1176},{"type":50,"tag":103,"props":1863,"children":1864},{},[1865,1866,1871],{"type":55,"value":1181},{"type":50,"tag":79,"props":1867,"children":1869},{"className":1868},[],[1870],{"type":55,"value":92},{"type":55,"value":1872}," is unavailable, e.g. Codex)",{"type":55,"value":1874}," — present all 3 URLs directly in the message and ask the same question; UI clients render them inline, and in Codex or other non-UI agents, download each to the workspace and reference the local paths.",{"type":50,"tag":58,"props":1876,"children":1877},{},[1878],{"type":55,"value":1879},"These crops are reused in the final output — only the 9:16 story\u002Freel crop needs to be generated after approval.",{"type":50,"tag":119,"props":1881,"children":1882},{},[],{"type":50,"tag":427,"props":1884,"children":1886},{"id":1885},"step-5-generate-all-platform-variants",[1887],{"type":55,"value":1888},"Step 5 — Generate All Platform Variants",{"type":50,"tag":58,"props":1890,"children":1891},{},[1892,1902,1904,1914],{"type":50,"tag":71,"props":1893,"children":1894},{},[1895,1896,1901],{"type":55,"value":808},{"type":50,"tag":79,"props":1897,"children":1899},{"className":1898},[],[1900],{"type":55,"value":1288},{"type":55,"value":352},{"type":55,"value":1903}," proceed only after user approves test crops in Step 4.\n",{"type":50,"tag":71,"props":1905,"children":1906},{},[1907,1908,1913],{"type":55,"value":808},{"type":50,"tag":79,"props":1909,"children":1911},{"className":1910},[],[1912],{"type":55,"value":1305},{"type":55,"value":352},{"type":55,"value":1915}," proceed immediately after Step 3.",{"type":50,"tag":58,"props":1917,"children":1918},{},[1919,1921,1926],{"type":55,"value":1920},"Generate every variant in the Platform Specs table for each selected platform. Reuse test crop URIs only when dimensions are an exact match — for any different dimensions, run a fresh ",{"type":50,"tag":79,"props":1922,"children":1924},{"className":1923},[],[1925],{"type":55,"value":537},{"type":55,"value":1927},".",{"type":50,"tag":58,"props":1929,"children":1930},{},[1931],{"type":50,"tag":71,"props":1932,"children":1933},{},[1934],{"type":55,"value":1935},"Per-platform variants to generate:",{"type":50,"tag":130,"props":1937,"children":1938},{},[1939,1955],{"type":50,"tag":134,"props":1940,"children":1941},{},[1942],{"type":50,"tag":138,"props":1943,"children":1944},{},[1945,1950],{"type":50,"tag":142,"props":1946,"children":1947},{},[1948],{"type":55,"value":1949},"Platform",{"type":50,"tag":142,"props":1951,"children":1952},{},[1953],{"type":55,"value":1954},"Variants",{"type":50,"tag":158,"props":1956,"children":1957},{},[1958,1971,1984,1997,2010,2023,2036,2049,2062],{"type":50,"tag":138,"props":1959,"children":1960},{},[1961,1966],{"type":50,"tag":165,"props":1962,"children":1963},{},[1964],{"type":55,"value":1965},"Instagram",{"type":50,"tag":165,"props":1967,"children":1968},{},[1969],{"type":55,"value":1970},"1080×1080 (reuse test), 1080×1350 (reuse test), 1080×1920",{"type":50,"tag":138,"props":1972,"children":1973},{},[1974,1979],{"type":50,"tag":165,"props":1975,"children":1976},{},[1977],{"type":55,"value":1978},"TikTok",{"type":50,"tag":165,"props":1980,"children":1981},{},[1982],{"type":55,"value":1983},"1080×1920 only — no 4:5 variant for TikTok",{"type":50,"tag":138,"props":1985,"children":1986},{},[1987,1992],{"type":50,"tag":165,"props":1988,"children":1989},{},[1990],{"type":55,"value":1991},"LinkedIn",{"type":50,"tag":165,"props":1993,"children":1994},{},[1995],{"type":55,"value":1996},"1200×627 (reuse test), 1080×1080 (reuse test)",{"type":50,"tag":138,"props":1998,"children":1999},{},[2000,2005],{"type":50,"tag":165,"props":2001,"children":2002},{},[2003],{"type":55,"value":2004},"Facebook",{"type":50,"tag":165,"props":2006,"children":2007},{},[2008],{"type":55,"value":2009},"1200×630, 1080×1080, 1080×1920",{"type":50,"tag":138,"props":2011,"children":2012},{},[2013,2018],{"type":50,"tag":165,"props":2014,"children":2015},{},[2016],{"type":55,"value":2017},"X\u002FTwitter",{"type":50,"tag":165,"props":2019,"children":2020},{},[2021],{"type":55,"value":2022},"1200×675, 1080×1080",{"type":50,"tag":138,"props":2024,"children":2025},{},[2026,2031],{"type":50,"tag":165,"props":2027,"children":2028},{},[2029],{"type":55,"value":2030},"YouTube",{"type":50,"tag":165,"props":2032,"children":2033},{},[2034],{"type":55,"value":2035},"1280×720",{"type":50,"tag":138,"props":2037,"children":2038},{},[2039,2044],{"type":50,"tag":165,"props":2040,"children":2041},{},[2042],{"type":55,"value":2043},"Snapchat",{"type":50,"tag":165,"props":2045,"children":2046},{},[2047],{"type":55,"value":2048},"1080×1920",{"type":50,"tag":138,"props":2050,"children":2051},{},[2052,2057],{"type":50,"tag":165,"props":2053,"children":2054},{},[2055],{"type":55,"value":2056},"Pinterest",{"type":50,"tag":165,"props":2058,"children":2059},{},[2060],{"type":55,"value":2061},"1000×1500",{"type":50,"tag":138,"props":2063,"children":2064},{},[2065,2070],{"type":50,"tag":165,"props":2066,"children":2067},{},[2068],{"type":55,"value":2069},"Threads",{"type":50,"tag":165,"props":2071,"children":2072},{},[2073],{"type":55,"value":1792},{"type":50,"tag":119,"props":2075,"children":2076},{},[],{"type":50,"tag":427,"props":2078,"children":2080},{"id":2079},"step-6-preview-full-set",[2081],{"type":55,"value":2082},"Step 6 — Preview Full Set",{"type":50,"tag":58,"props":2084,"children":2085},{},[2086,2087,2092],{"type":55,"value":300},{"type":50,"tag":79,"props":2088,"children":2090},{"className":2089},[],[2091],{"type":55,"value":92},{"type":55,"value":2093}," with all successfully generated URLs — including partial sets when some variants failed.",{"type":50,"tag":64,"props":2095,"children":2096},{},[2097],{"type":50,"tag":58,"props":2098,"children":2099},{},[2100,2104,2105,2115],{"type":50,"tag":71,"props":2101,"children":2102},{},[2103],{"type":55,"value":107},{"type":55,"value":1176},{"type":50,"tag":103,"props":2106,"children":2107},{},[2108,2109,2114],{"type":55,"value":1181},{"type":50,"tag":79,"props":2110,"children":2112},{"className":2111},[],[2113],{"type":55,"value":92},{"type":55,"value":1872},{"type":55,"value":2116}," — list all successfully generated URLs directly in the message (including partial sets when some variants failed). UI clients render them inline; in Codex or other non-UI agents, download each to the workspace and reference the local paths.",{"type":50,"tag":119,"props":2118,"children":2119},{},[],{"type":50,"tag":427,"props":2121,"children":2123},{"id":2122},"step-7-delivery-summary",[2124],{"type":55,"value":2125},"Step 7 — Delivery Summary",{"type":50,"tag":58,"props":2127,"children":2128},{},[2129],{"type":55,"value":2130},"Present a clean summary table. Note any fallbacks or skipped steps clearly.",{"type":50,"tag":310,"props":2132,"children":2135},{"className":2133,"code":2134,"language":55},[1611],"✅ Social media set complete!\n\n| Platform  | Format         | Dimensions | Status        |\n| --------- | -------------- | ---------- | ------------- |\n| Instagram | Feed Square    | 1080×1080  | ✅ (from test) |\n| Instagram | Feed Portrait  | 1080×1350  | ✅ (from test) |\n| Instagram | Story \u002F Reel   | 1080×1920  | ✅             |\n| TikTok    | Video \u002F Post   | 1080×1920  | ✅             |\n| LinkedIn  | Post Landscape | 1200×627   | ✅ (from test) |\n| LinkedIn  | Post Square    | 1080×1080  | ✅ (from test) |\n",[2136],{"type":50,"tag":79,"props":2137,"children":2138},{"__ignoreMap":315},[2139],{"type":55,"value":2134},{"type":50,"tag":58,"props":2141,"children":2142},{},[2143],{"type":55,"value":2144},"If generative expand fell back to reframe:",{"type":50,"tag":64,"props":2146,"children":2147},{},[2148],{"type":50,"tag":58,"props":2149,"children":2150},{},[2151],{"type":55,"value":2152},"⚠️ AI canvas expansion is not included in your current Adobe plan — smart reframe was used instead.",{"type":50,"tag":119,"props":2154,"children":2155},{},[],{"type":50,"tag":123,"props":2157,"children":2159},{"id":2158},"platform-specs-image",[2160],{"type":55,"value":2161},"Platform Specs (Image)",{"type":50,"tag":130,"props":2163,"children":2164},{},[2165,2203],{"type":50,"tag":134,"props":2166,"children":2167},{},[2168],{"type":50,"tag":138,"props":2169,"children":2170},{},[2171,2176,2180,2185,2189,2193,2198],{"type":50,"tag":142,"props":2172,"children":2173},{},[2174],{"type":55,"value":2175},"#",{"type":50,"tag":142,"props":2177,"children":2178},{},[2179],{"type":55,"value":1949},{"type":50,"tag":142,"props":2181,"children":2182},{},[2183],{"type":55,"value":2184},"Format",{"type":50,"tag":142,"props":2186,"children":2187},{},[2188],{"type":55,"value":1734},{"type":50,"tag":142,"props":2190,"children":2191},{},[2192],{"type":55,"value":1739},{"type":50,"tag":142,"props":2194,"children":2195},{},[2196],{"type":55,"value":2197},"Quality",{"type":50,"tag":142,"props":2199,"children":2200},{},[2201],{"type":55,"value":2202},"Source Canvas",{"type":50,"tag":158,"props":2204,"children":2205},{},[2206,2240,2273,2307,2340,2374,2406,2439,2471,2504,2539,2572,2605,2638,2672],{"type":50,"tag":138,"props":2207,"children":2208},{},[2209,2214,2218,2223,2227,2231,2236],{"type":50,"tag":165,"props":2210,"children":2211},{},[2212],{"type":55,"value":2213},"1",{"type":50,"tag":165,"props":2215,"children":2216},{},[2217],{"type":55,"value":1965},{"type":50,"tag":165,"props":2219,"children":2220},{},[2221],{"type":55,"value":2222},"Feed Square",{"type":50,"tag":165,"props":2224,"children":2225},{},[2226],{"type":55,"value":1764},{"type":50,"tag":165,"props":2228,"children":2229},{},[2230],{"type":55,"value":1769},{"type":50,"tag":165,"props":2232,"children":2233},{},[2234],{"type":55,"value":2235},"7",{"type":50,"tag":165,"props":2237,"children":2238},{},[2239],{"type":55,"value":721},{"type":50,"tag":138,"props":2241,"children":2242},{},[2243,2248,2252,2257,2261,2265,2269],{"type":50,"tag":165,"props":2244,"children":2245},{},[2246],{"type":55,"value":2247},"2",{"type":50,"tag":165,"props":2249,"children":2250},{},[2251],{"type":55,"value":1965},{"type":50,"tag":165,"props":2253,"children":2254},{},[2255],{"type":55,"value":2256},"Feed Portrait",{"type":50,"tag":165,"props":2258,"children":2259},{},[2260],{"type":55,"value":1792},{"type":50,"tag":165,"props":2262,"children":2263},{},[2264],{"type":55,"value":1797},{"type":50,"tag":165,"props":2266,"children":2267},{},[2268],{"type":55,"value":2235},{"type":50,"tag":165,"props":2270,"children":2271},{},[2272],{"type":55,"value":1787},{"type":50,"tag":138,"props":2274,"children":2275},{},[2276,2281,2285,2290,2294,2299,2303],{"type":50,"tag":165,"props":2277,"children":2278},{},[2279],{"type":55,"value":2280},"3",{"type":50,"tag":165,"props":2282,"children":2283},{},[2284],{"type":55,"value":1965},{"type":50,"tag":165,"props":2286,"children":2287},{},[2288],{"type":55,"value":2289},"Story \u002F Reel",{"type":50,"tag":165,"props":2291,"children":2292},{},[2293],{"type":55,"value":2048},{"type":50,"tag":165,"props":2295,"children":2296},{},[2297],{"type":55,"value":2298},"9:16",{"type":50,"tag":165,"props":2300,"children":2301},{},[2302],{"type":55,"value":2235},{"type":50,"tag":165,"props":2304,"children":2305},{},[2306],{"type":55,"value":1787},{"type":50,"tag":138,"props":2308,"children":2309},{},[2310,2315,2319,2324,2328,2332,2336],{"type":50,"tag":165,"props":2311,"children":2312},{},[2313],{"type":55,"value":2314},"4",{"type":50,"tag":165,"props":2316,"children":2317},{},[2318],{"type":55,"value":1978},{"type":50,"tag":165,"props":2320,"children":2321},{},[2322],{"type":55,"value":2323},"Video \u002F Post",{"type":50,"tag":165,"props":2325,"children":2326},{},[2327],{"type":55,"value":2048},{"type":50,"tag":165,"props":2329,"children":2330},{},[2331],{"type":55,"value":2298},{"type":50,"tag":165,"props":2333,"children":2334},{},[2335],{"type":55,"value":2235},{"type":50,"tag":165,"props":2337,"children":2338},{},[2339],{"type":55,"value":1787},{"type":50,"tag":138,"props":2341,"children":2342},{},[2343,2348,2352,2357,2361,2365,2370],{"type":50,"tag":165,"props":2344,"children":2345},{},[2346],{"type":55,"value":2347},"5",{"type":50,"tag":165,"props":2349,"children":2350},{},[2351],{"type":55,"value":1991},{"type":50,"tag":165,"props":2353,"children":2354},{},[2355],{"type":55,"value":2356},"Post Landscape",{"type":50,"tag":165,"props":2358,"children":2359},{},[2360],{"type":55,"value":1820},{"type":50,"tag":165,"props":2362,"children":2363},{},[2364],{"type":55,"value":1825},{"type":50,"tag":165,"props":2366,"children":2367},{},[2368],{"type":55,"value":2369},"6",{"type":50,"tag":165,"props":2371,"children":2372},{},[2373],{"type":55,"value":1815},{"type":50,"tag":138,"props":2375,"children":2376},{},[2377,2381,2385,2390,2394,2398,2402],{"type":50,"tag":165,"props":2378,"children":2379},{},[2380],{"type":55,"value":2369},{"type":50,"tag":165,"props":2382,"children":2383},{},[2384],{"type":55,"value":1991},{"type":50,"tag":165,"props":2386,"children":2387},{},[2388],{"type":55,"value":2389},"Post Square",{"type":50,"tag":165,"props":2391,"children":2392},{},[2393],{"type":55,"value":1764},{"type":50,"tag":165,"props":2395,"children":2396},{},[2397],{"type":55,"value":1769},{"type":50,"tag":165,"props":2399,"children":2400},{},[2401],{"type":55,"value":2369},{"type":50,"tag":165,"props":2403,"children":2404},{},[2405],{"type":55,"value":721},{"type":50,"tag":138,"props":2407,"children":2408},{},[2409,2413,2417,2422,2427,2431,2435],{"type":50,"tag":165,"props":2410,"children":2411},{},[2412],{"type":55,"value":2235},{"type":50,"tag":165,"props":2414,"children":2415},{},[2416],{"type":55,"value":2004},{"type":50,"tag":165,"props":2418,"children":2419},{},[2420],{"type":55,"value":2421},"Feed Landscape",{"type":50,"tag":165,"props":2423,"children":2424},{},[2425],{"type":55,"value":2426},"1200×630",{"type":50,"tag":165,"props":2428,"children":2429},{},[2430],{"type":55,"value":1825},{"type":50,"tag":165,"props":2432,"children":2433},{},[2434],{"type":55,"value":2235},{"type":50,"tag":165,"props":2436,"children":2437},{},[2438],{"type":55,"value":1815},{"type":50,"tag":138,"props":2440,"children":2441},{},[2442,2447,2451,2455,2459,2463,2467],{"type":50,"tag":165,"props":2443,"children":2444},{},[2445],{"type":55,"value":2446},"8",{"type":50,"tag":165,"props":2448,"children":2449},{},[2450],{"type":55,"value":2004},{"type":50,"tag":165,"props":2452,"children":2453},{},[2454],{"type":55,"value":2222},{"type":50,"tag":165,"props":2456,"children":2457},{},[2458],{"type":55,"value":1764},{"type":50,"tag":165,"props":2460,"children":2461},{},[2462],{"type":55,"value":1769},{"type":50,"tag":165,"props":2464,"children":2465},{},[2466],{"type":55,"value":2235},{"type":50,"tag":165,"props":2468,"children":2469},{},[2470],{"type":55,"value":721},{"type":50,"tag":138,"props":2472,"children":2473},{},[2474,2479,2483,2488,2492,2496,2500],{"type":50,"tag":165,"props":2475,"children":2476},{},[2477],{"type":55,"value":2478},"9",{"type":50,"tag":165,"props":2480,"children":2481},{},[2482],{"type":55,"value":2004},{"type":50,"tag":165,"props":2484,"children":2485},{},[2486],{"type":55,"value":2487},"Story",{"type":50,"tag":165,"props":2489,"children":2490},{},[2491],{"type":55,"value":2048},{"type":50,"tag":165,"props":2493,"children":2494},{},[2495],{"type":55,"value":2298},{"type":50,"tag":165,"props":2497,"children":2498},{},[2499],{"type":55,"value":2235},{"type":50,"tag":165,"props":2501,"children":2502},{},[2503],{"type":55,"value":1787},{"type":50,"tag":138,"props":2505,"children":2506},{},[2507,2512,2516,2521,2526,2531,2535],{"type":50,"tag":165,"props":2508,"children":2509},{},[2510],{"type":55,"value":2511},"10",{"type":50,"tag":165,"props":2513,"children":2514},{},[2515],{"type":55,"value":2017},{"type":50,"tag":165,"props":2517,"children":2518},{},[2519],{"type":55,"value":2520},"In-stream",{"type":50,"tag":165,"props":2522,"children":2523},{},[2524],{"type":55,"value":2525},"1200×675",{"type":50,"tag":165,"props":2527,"children":2528},{},[2529],{"type":55,"value":2530},"16:9",{"type":50,"tag":165,"props":2532,"children":2533},{},[2534],{"type":55,"value":2369},{"type":50,"tag":165,"props":2536,"children":2537},{},[2538],{"type":55,"value":1815},{"type":50,"tag":138,"props":2540,"children":2541},{},[2542,2547,2551,2556,2560,2564,2568],{"type":50,"tag":165,"props":2543,"children":2544},{},[2545],{"type":55,"value":2546},"11",{"type":50,"tag":165,"props":2548,"children":2549},{},[2550],{"type":55,"value":2017},{"type":50,"tag":165,"props":2552,"children":2553},{},[2554],{"type":55,"value":2555},"Square post",{"type":50,"tag":165,"props":2557,"children":2558},{},[2559],{"type":55,"value":1764},{"type":50,"tag":165,"props":2561,"children":2562},{},[2563],{"type":55,"value":1769},{"type":50,"tag":165,"props":2565,"children":2566},{},[2567],{"type":55,"value":2369},{"type":50,"tag":165,"props":2569,"children":2570},{},[2571],{"type":55,"value":721},{"type":50,"tag":138,"props":2573,"children":2574},{},[2575,2580,2584,2589,2593,2597,2601],{"type":50,"tag":165,"props":2576,"children":2577},{},[2578],{"type":55,"value":2579},"12",{"type":50,"tag":165,"props":2581,"children":2582},{},[2583],{"type":55,"value":2030},{"type":50,"tag":165,"props":2585,"children":2586},{},[2587],{"type":55,"value":2588},"Thumbnail",{"type":50,"tag":165,"props":2590,"children":2591},{},[2592],{"type":55,"value":2035},{"type":50,"tag":165,"props":2594,"children":2595},{},[2596],{"type":55,"value":2530},{"type":50,"tag":165,"props":2598,"children":2599},{},[2600],{"type":55,"value":2347},{"type":50,"tag":165,"props":2602,"children":2603},{},[2604],{"type":55,"value":1815},{"type":50,"tag":138,"props":2606,"children":2607},{},[2608,2613,2617,2622,2626,2630,2634],{"type":50,"tag":165,"props":2609,"children":2610},{},[2611],{"type":55,"value":2612},"13",{"type":50,"tag":165,"props":2614,"children":2615},{},[2616],{"type":55,"value":2043},{"type":50,"tag":165,"props":2618,"children":2619},{},[2620],{"type":55,"value":2621},"Snap\u002FStory",{"type":50,"tag":165,"props":2623,"children":2624},{},[2625],{"type":55,"value":2048},{"type":50,"tag":165,"props":2627,"children":2628},{},[2629],{"type":55,"value":2298},{"type":50,"tag":165,"props":2631,"children":2632},{},[2633],{"type":55,"value":2247},{"type":50,"tag":165,"props":2635,"children":2636},{},[2637],{"type":55,"value":1787},{"type":50,"tag":138,"props":2639,"children":2640},{},[2641,2646,2650,2655,2659,2664,2668],{"type":50,"tag":165,"props":2642,"children":2643},{},[2644],{"type":55,"value":2645},"14",{"type":50,"tag":165,"props":2647,"children":2648},{},[2649],{"type":55,"value":2056},{"type":50,"tag":165,"props":2651,"children":2652},{},[2653],{"type":55,"value":2654},"Standard Pin",{"type":50,"tag":165,"props":2656,"children":2657},{},[2658],{"type":55,"value":2061},{"type":50,"tag":165,"props":2660,"children":2661},{},[2662],{"type":55,"value":2663},"2:3",{"type":50,"tag":165,"props":2665,"children":2666},{},[2667],{"type":55,"value":2235},{"type":50,"tag":165,"props":2669,"children":2670},{},[2671],{"type":55,"value":1787},{"type":50,"tag":138,"props":2673,"children":2674},{},[2675,2680,2684,2688,2692,2696,2700],{"type":50,"tag":165,"props":2676,"children":2677},{},[2678],{"type":55,"value":2679},"15",{"type":50,"tag":165,"props":2681,"children":2682},{},[2683],{"type":55,"value":2069},{"type":50,"tag":165,"props":2685,"children":2686},{},[2687],{"type":55,"value":2256},{"type":50,"tag":165,"props":2689,"children":2690},{},[2691],{"type":55,"value":1792},{"type":50,"tag":165,"props":2693,"children":2694},{},[2695],{"type":55,"value":1797},{"type":50,"tag":165,"props":2697,"children":2698},{},[2699],{"type":55,"value":2235},{"type":50,"tag":165,"props":2701,"children":2702},{},[2703],{"type":55,"value":1787},{"type":50,"tag":64,"props":2705,"children":2706},{},[2707],{"type":50,"tag":58,"props":2708,"children":2709},{},[2710,2712,2718],{"type":55,"value":2711},"⚠️ Snapchat's 250 KB limit requires ",{"type":50,"tag":79,"props":2713,"children":2715},{"className":2714},[],[2716],{"type":55,"value":2717},"quality: 2",{"type":55,"value":2719}," — warn the user upfront when Snapchat is selected.",{"type":50,"tag":58,"props":2721,"children":2722},{},[2723,2728,2729,2735,2737],{"type":50,"tag":71,"props":2724,"children":2725},{},[2726],{"type":55,"value":2727},"File naming convention:",{"type":55,"value":1176},{"type":50,"tag":79,"props":2730,"children":2732},{"className":2731},[],[2733],{"type":55,"value":2734},"[basename]_[platform]_[descriptor]_[ratio].jpg",{"type":55,"value":2736},"\nExample: ",{"type":50,"tag":79,"props":2738,"children":2740},{"className":2739},[],[2741],{"type":55,"value":2742},"hero_instagram_story_9x16.jpg",{"type":50,"tag":119,"props":2744,"children":2745},{},[],{"type":50,"tag":123,"props":2747,"children":2749},{"id":2748},"video-workflow",[2750],{"type":55,"value":2751},"VIDEO WORKFLOW",{"type":50,"tag":427,"props":2753,"children":2755},{"id":2754},"step-0-get-the-source-file-1",[2756],{"type":55,"value":1049},{"type":50,"tag":58,"props":2758,"children":2759},{},[2760,2762,2768],{"type":55,"value":2761},"Video tools require an ",{"type":50,"tag":79,"props":2763,"children":2765},{"className":2764},[],[2766],{"type":55,"value":2767},"assetId",{"type":55,"value":2769}," — not a URL. How you get it depends on where the file is:",{"type":50,"tag":130,"props":2771,"children":2772},{},[2773,2787],{"type":50,"tag":134,"props":2774,"children":2775},{},[2776],{"type":50,"tag":138,"props":2777,"children":2778},{},[2779,2783],{"type":50,"tag":142,"props":2780,"children":2781},{},[2782],{"type":55,"value":1068},{"type":50,"tag":142,"props":2784,"children":2785},{},[2786],{"type":55,"value":1073},{"type":50,"tag":158,"props":2788,"children":2789},{},[2790,2839,2857],{"type":50,"tag":138,"props":2791,"children":2792},{},[2793,2803],{"type":50,"tag":165,"props":2794,"children":2795},{},[2796,2797,2802],{"type":55,"value":1084},{"type":50,"tag":79,"props":2798,"children":2800},{"className":2799},[],[2801],{"type":55,"value":1090},{"type":55,"value":1092},{"type":50,"tag":165,"props":2804,"children":2805},{},[2806,2807,2812,2813,2818,2819,2824,2826,2831,2833,2838],{"type":55,"value":1097},{"type":50,"tag":79,"props":2808,"children":2810},{"className":2809},[],[2811],{"type":55,"value":306},{"type":55,"value":1104},{"type":50,"tag":79,"props":2814,"children":2816},{"className":2815},[],[2817],{"type":55,"value":486},{"type":55,"value":1111},{"type":50,"tag":79,"props":2820,"children":2822},{"className":2821},[],[2823],{"type":55,"value":503},{"type":55,"value":2825},". The returned ",{"type":50,"tag":79,"props":2827,"children":2829},{"className":2828},[],[2830],{"type":55,"value":2767},{"type":55,"value":2832}," is what video tools need. If egress is disabled, use ",{"type":50,"tag":79,"props":2834,"children":2836},{"className":2835},[],[2837],{"type":55,"value":1124},{"type":55,"value":1126},{"type":50,"tag":138,"props":2840,"children":2841},{},[2842,2846],{"type":50,"tag":165,"props":2843,"children":2844},{},[2845],{"type":55,"value":1134},{"type":50,"tag":165,"props":2847,"children":2848},{},[2849,2850,2855],{"type":55,"value":300},{"type":50,"tag":79,"props":2851,"children":2853},{"className":2852},[],[2854],{"type":55,"value":1124},{"type":55,"value":2856}," immediately.",{"type":50,"tag":138,"props":2858,"children":2859},{},[2860,2864],{"type":50,"tag":165,"props":2861,"children":2862},{},[2863],{"type":55,"value":1153},{"type":50,"tag":165,"props":2865,"children":2866},{},[2867,2868,2873],{"type":55,"value":300},{"type":50,"tag":79,"props":2869,"children":2871},{"className":2870},[],[2872],{"type":55,"value":1124},{"type":55,"value":2874}," so the user can select it.",{"type":50,"tag":64,"props":2876,"children":2877},{},[2878],{"type":50,"tag":58,"props":2879,"children":2880},{},[2881],{"type":55,"value":2882},"If egress is disabled and the user has already dropped a video into chat, explain why it can't be used directly: \"To resize your video I'll need you to select it via the file picker — this gives Adobe the asset ID it needs. I'll open it now.\"",{"type":50,"tag":64,"props":2884,"children":2885},{},[2886],{"type":50,"tag":58,"props":2887,"children":2888},{},[2889,2893,2894,2904,2906,2911,2912,2917,2919,2924,2926,2931,2933,2938,2939,2944],{"type":50,"tag":71,"props":2890,"children":2891},{},[2892],{"type":55,"value":107},{"type":55,"value":1176},{"type":50,"tag":103,"props":2895,"children":2896},{},[2897,2898,2903],{"type":55,"value":1181},{"type":50,"tag":79,"props":2899,"children":2901},{"className":2900},[],[2902],{"type":55,"value":84},{"type":55,"value":1872},{"type":55,"value":2905}," — stage the local video programmatically (",{"type":50,"tag":79,"props":2907,"children":2909},{"className":2908},[],[2910],{"type":55,"value":486},{"type":55,"value":1197},{"type":50,"tag":79,"props":2913,"children":2915},{"className":2914},[],[2916],{"type":55,"value":503},{"type":55,"value":2918},") and use the returned ",{"type":50,"tag":79,"props":2920,"children":2922},{"className":2921},[],[2923],{"type":55,"value":2767},{"type":55,"value":2925},"; for a video already in Creative Cloud, reference it by its ",{"type":50,"tag":79,"props":2927,"children":2929},{"className":2928},[],[2930],{"type":55,"value":2767},{"type":55,"value":2932},". Staging requires egress — check egress status from ",{"type":50,"tag":79,"props":2934,"children":2936},{"className":2935},[],[2937],{"type":55,"value":306},{"type":55,"value":1211},{"type":50,"tag":79,"props":2940,"children":2942},{"className":2941},[],[2943],{"type":55,"value":84},{"type":55,"value":1218},{"type":50,"tag":119,"props":2946,"children":2947},{},[],{"type":50,"tag":427,"props":2949,"children":2951},{"id":2950},"step-1-determine-video-type",[2952],{"type":55,"value":2953},"Step 1 — Determine Video Type",{"type":50,"tag":58,"props":2955,"children":2956},{},[2957],{"type":55,"value":2958},"If the user has already described or implied the video orientation (e.g. \"I shot this on my phone in portrait\" → clearly 9:16), skip this question and proceed. Otherwise ask:",{"type":50,"tag":64,"props":2960,"children":2961},{},[2962],{"type":50,"tag":58,"props":2963,"children":2964},{},[2965],{"type":55,"value":2966},"\"To suggest the best output sizes, it helps to know what kind of video this is. What type is it?\"",{"type":50,"tag":58,"props":2968,"children":2969},{},[2970,2971,2976],{"type":55,"value":700},{"type":50,"tag":79,"props":2972,"children":2974},{"className":2973},[],[2975],{"type":55,"value":115},{"type":55,"value":2977}," with single-select:",{"type":50,"tag":130,"props":2979,"children":2980},{},[2981,3002],{"type":50,"tag":134,"props":2982,"children":2983},{},[2984],{"type":50,"tag":138,"props":2985,"children":2986},{},[2987,2992,2997],{"type":50,"tag":142,"props":2988,"children":2989},{},[2990],{"type":55,"value":2991},"Option",{"type":50,"tag":142,"props":2993,"children":2994},{},[2995],{"type":55,"value":2996},"Aspect Ratio",{"type":50,"tag":142,"props":2998,"children":2999},{},[3000],{"type":55,"value":3001},"Common use",{"type":50,"tag":158,"props":3003,"children":3004},{},[3005,3022,3039,3056,3073],{"type":50,"tag":138,"props":3006,"children":3007},{},[3008,3013,3017],{"type":50,"tag":165,"props":3009,"children":3010},{},[3011],{"type":55,"value":3012},"Phone video — portrait",{"type":50,"tag":165,"props":3014,"children":3015},{},[3016],{"type":55,"value":2298},{"type":50,"tag":165,"props":3018,"children":3019},{},[3020],{"type":55,"value":3021},"Shot on phone, vertical",{"type":50,"tag":138,"props":3023,"children":3024},{},[3025,3030,3034],{"type":50,"tag":165,"props":3026,"children":3027},{},[3028],{"type":55,"value":3029},"Phone video — square",{"type":50,"tag":165,"props":3031,"children":3032},{},[3033],{"type":55,"value":1769},{"type":50,"tag":165,"props":3035,"children":3036},{},[3037],{"type":55,"value":3038},"Shot in square mode",{"type":50,"tag":138,"props":3040,"children":3041},{},[3042,3047,3051],{"type":50,"tag":165,"props":3043,"children":3044},{},[3045],{"type":55,"value":3046},"Screen recording",{"type":50,"tag":165,"props":3048,"children":3049},{},[3050],{"type":55,"value":2530},{"type":50,"tag":165,"props":3052,"children":3053},{},[3054],{"type":55,"value":3055},"Desktop or laptop capture",{"type":50,"tag":138,"props":3057,"children":3058},{},[3059,3064,3068],{"type":50,"tag":165,"props":3060,"children":3061},{},[3062],{"type":55,"value":3063},"Camera \u002F DSLR",{"type":50,"tag":165,"props":3065,"children":3066},{},[3067],{"type":55,"value":2530},{"type":50,"tag":165,"props":3069,"children":3070},{},[3071],{"type":55,"value":3072},"Professional or mirrorless camera",{"type":50,"tag":138,"props":3074,"children":3075},{},[3076,3081,3086],{"type":50,"tag":165,"props":3077,"children":3078},{},[3079],{"type":55,"value":3080},"Other \u002F not sure",{"type":50,"tag":165,"props":3082,"children":3083},{},[3084],{"type":55,"value":3085},"—",{"type":50,"tag":165,"props":3087,"children":3088},{},[3089],{"type":55,"value":3090},"Default to 1:1 (safest cross-platform)",{"type":50,"tag":119,"props":3092,"children":3093},{},[],{"type":50,"tag":427,"props":3095,"children":3097},{"id":3096},"step-2-suggest-safe-output-sizes",[3098],{"type":55,"value":3099},"Step 2 — Suggest Safe Output Sizes",{"type":50,"tag":58,"props":3101,"children":3102},{},[3103],{"type":55,"value":3104},"Only suggest same-ratio resizes. Cross-ratio resizes (e.g. 16:9 → 9:16) produce black bars and are algorithmically penalised on TikTok and Instagram Reels. If a user asks for a cross-ratio resize, explain the limitation and offer same-ratio alternatives instead.",{"type":50,"tag":130,"props":3106,"children":3107},{},[3108,3124],{"type":50,"tag":134,"props":3109,"children":3110},{},[3111],{"type":50,"tag":138,"props":3112,"children":3113},{},[3114,3119],{"type":50,"tag":142,"props":3115,"children":3116},{},[3117],{"type":55,"value":3118},"Source ratio",{"type":50,"tag":142,"props":3120,"children":3121},{},[3122],{"type":55,"value":3123},"Safe output sizes",{"type":50,"tag":158,"props":3125,"children":3126},{},[3127,3140,3153],{"type":50,"tag":138,"props":3128,"children":3129},{},[3130,3135],{"type":50,"tag":165,"props":3131,"children":3132},{},[3133],{"type":55,"value":3134},"9:16 (portrait)",{"type":50,"tag":165,"props":3136,"children":3137},{},[3138],{"type":55,"value":3139},"1080×1920, 720×1280, 540×960",{"type":50,"tag":138,"props":3141,"children":3142},{},[3143,3148],{"type":50,"tag":165,"props":3144,"children":3145},{},[3146],{"type":55,"value":3147},"1:1 (square)",{"type":50,"tag":165,"props":3149,"children":3150},{},[3151],{"type":55,"value":3152},"1080×1080, 720×720",{"type":50,"tag":138,"props":3154,"children":3155},{},[3156,3161],{"type":50,"tag":165,"props":3157,"children":3158},{},[3159],{"type":55,"value":3160},"16:9 (landscape)",{"type":50,"tag":165,"props":3162,"children":3163},{},[3164],{"type":55,"value":3165},"1920×1080, 1280×720, 854×480",{"type":50,"tag":58,"props":3167,"children":3168},{},[3169,3171,3176],{"type":55,"value":3170},"Present these as options with ",{"type":50,"tag":79,"props":3172,"children":3174},{"className":3173},[],[3175],{"type":55,"value":115},{"type":55,"value":3177}," (multi-select).",{"type":50,"tag":119,"props":3179,"children":3180},{},[],{"type":50,"tag":427,"props":3182,"children":3184},{"id":3183},"step-3-resize",[3185],{"type":55,"value":3186},"Step 3 — Resize",{"type":50,"tag":64,"props":3188,"children":3189},{},[3190],{"type":50,"tag":58,"props":3191,"children":3192},{},[3193,3195,3200,3202,3207],{"type":55,"value":3194},"⚠️ ",{"type":50,"tag":79,"props":3196,"children":3198},{"className":3197},[],[3199],{"type":55,"value":798},{"type":55,"value":3201}," is a ",{"type":50,"tag":71,"props":3203,"children":3204},{},[3205],{"type":55,"value":3206},"deferred tool",{"type":55,"value":3208}," — load it first before attempting to poll.\nDirect calls without loading will fail with \"not loaded\" error.",{"type":50,"tag":58,"props":3210,"children":3211},{},[3212,3214,3219],{"type":55,"value":3213},"For each selected size, call ",{"type":50,"tag":79,"props":3215,"children":3217},{"className":3216},[],[3218],{"type":55,"value":781},{"type":55,"value":3220}," with the asset ID:",{"type":50,"tag":310,"props":3222,"children":3226},{"className":3223,"code":3224,"language":3225,"meta":315,"style":315},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","video_resize({ assetId: sourceAssetId, width: W, height: H }) → { statusId }\n","javascript",[3227],{"type":50,"tag":79,"props":3228,"children":3229},{"__ignoreMap":315},[3230],{"type":50,"tag":321,"props":3231,"children":3232},{"class":323,"line":324},[3233,3238,3244,3248,3254,3258,3263,3267,3272,3276,3281,3285,3290,3294,3299,3304,3309,3313,3318],{"type":50,"tag":321,"props":3234,"children":3236},{"style":3235},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[3237],{"type":55,"value":781},{"type":50,"tag":321,"props":3239,"children":3241},{"style":3240},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[3242],{"type":55,"value":3243},"(",{"type":50,"tag":321,"props":3245,"children":3246},{"style":328},[3247],{"type":55,"value":331},{"type":50,"tag":321,"props":3249,"children":3251},{"style":3250},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[3252],{"type":55,"value":3253}," assetId",{"type":50,"tag":321,"props":3255,"children":3256},{"style":328},[3257],{"type":55,"value":352},{"type":50,"tag":321,"props":3259,"children":3260},{"style":3240},[3261],{"type":55,"value":3262}," sourceAssetId",{"type":50,"tag":321,"props":3264,"children":3265},{"style":328},[3266],{"type":55,"value":370},{"type":50,"tag":321,"props":3268,"children":3269},{"style":3250},[3270],{"type":55,"value":3271}," width",{"type":50,"tag":321,"props":3273,"children":3274},{"style":328},[3275],{"type":55,"value":352},{"type":50,"tag":321,"props":3277,"children":3278},{"style":3240},[3279],{"type":55,"value":3280}," W",{"type":50,"tag":321,"props":3282,"children":3283},{"style":328},[3284],{"type":55,"value":370},{"type":50,"tag":321,"props":3286,"children":3287},{"style":3250},[3288],{"type":55,"value":3289}," height",{"type":50,"tag":321,"props":3291,"children":3292},{"style":328},[3293],{"type":55,"value":352},{"type":50,"tag":321,"props":3295,"children":3296},{"style":3240},[3297],{"type":55,"value":3298}," H ",{"type":50,"tag":321,"props":3300,"children":3301},{"style":328},[3302],{"type":55,"value":3303},"}",{"type":50,"tag":321,"props":3305,"children":3306},{"style":3240},[3307],{"type":55,"value":3308},") → ",{"type":50,"tag":321,"props":3310,"children":3311},{"style":328},[3312],{"type":55,"value":331},{"type":50,"tag":321,"props":3314,"children":3315},{"style":3240},[3316],{"type":55,"value":3317}," statusId",{"type":50,"tag":321,"props":3319,"children":3320},{"style":328},[3321],{"type":55,"value":404},{"type":50,"tag":58,"props":3323,"children":3324},{},[3325,3327,3332],{"type":55,"value":3326},"Poll with ",{"type":50,"tag":79,"props":3328,"children":3330},{"className":3329},[],[3331],{"type":55,"value":798},{"type":55,"value":3333}," until complete. Poll 3–4 times with brief pauses before reporting slow progress to the user.",{"type":50,"tag":119,"props":3335,"children":3336},{},[],{"type":50,"tag":427,"props":3338,"children":3340},{"id":3339},"step-4-preview",[3341],{"type":55,"value":3342},"Step 4 — Preview",{"type":50,"tag":58,"props":3344,"children":3345},{},[3346,3347,3352],{"type":55,"value":300},{"type":50,"tag":79,"props":3348,"children":3350},{"className":3349},[],[3351],{"type":55,"value":92},{"type":55,"value":3353}," with all completed outputs.",{"type":50,"tag":64,"props":3355,"children":3356},{},[3357],{"type":50,"tag":58,"props":3358,"children":3359},{},[3360,3364,3365,3375],{"type":50,"tag":71,"props":3361,"children":3362},{},[3363],{"type":55,"value":107},{"type":55,"value":1176},{"type":50,"tag":103,"props":3366,"children":3367},{},[3368,3369,3374],{"type":55,"value":1181},{"type":50,"tag":79,"props":3370,"children":3372},{"className":3371},[],[3373],{"type":55,"value":92},{"type":55,"value":1872},{"type":55,"value":3376}," — list all completed output URLs directly in the message. UI clients render them inline; in Codex or other non-UI agents, download each to the workspace and reference the local paths.",{"type":50,"tag":119,"props":3378,"children":3379},{},[],{"type":50,"tag":427,"props":3381,"children":3383},{"id":3382},"step-5-delivery-summary",[3384],{"type":55,"value":3385},"Step 5 — Delivery Summary",{"type":50,"tag":310,"props":3387,"children":3390},{"className":3388,"code":3389,"language":55},[1611],"✅ Video resize complete!\n\n| Size      | Ratio | Status |\n| --------- | ----- | ------ |\n| 1080×1920 | 9:16  | ✅      |\n| 720×1280  | 9:16  | ✅      |\n",[3391],{"type":50,"tag":79,"props":3392,"children":3393},{"__ignoreMap":315},[3394],{"type":55,"value":3389},{"type":50,"tag":58,"props":3396,"children":3397},{},[3398],{"type":55,"value":3399},"Note: Video resizing does not apply intelligent reframing — cross-ratio reformatting is out of scope for this skill.",{"type":50,"tag":119,"props":3401,"children":3402},{},[],{"type":50,"tag":123,"props":3404,"children":3406},{"id":3405},"error-handling",[3407],{"type":55,"value":3408},"Error Handling",{"type":50,"tag":130,"props":3410,"children":3411},{},[3412,3427],{"type":50,"tag":134,"props":3413,"children":3414},{},[3415],{"type":50,"tag":138,"props":3416,"children":3417},{},[3418,3423],{"type":50,"tag":142,"props":3419,"children":3420},{},[3421],{"type":55,"value":3422},"Situation",{"type":50,"tag":142,"props":3424,"children":3425},{},[3426],{"type":55,"value":1073},{"type":50,"tag":158,"props":3428,"children":3429},{},[3430,3455,3492,3509,3522,3552,3565,3578,3591,3604,3622],{"type":50,"tag":138,"props":3431,"children":3432},{},[3433,3438],{"type":50,"tag":165,"props":3434,"children":3435},{},[3436],{"type":55,"value":3437},"Egress upload fails (chunk PUT 5xx after retry)",{"type":50,"tag":165,"props":3439,"children":3440},{},[3441,3443,3448,3450],{"type":55,"value":3442},"Stop upload. Fall back to ",{"type":50,"tag":79,"props":3444,"children":3446},{"className":3445},[],[3447],{"type":55,"value":1124},{"type":55,"value":3449}," and tell the user: \"Direct upload didn't work — I'll open the picker so you can select the file.\" ",{"type":50,"tag":103,"props":3451,"children":3452},{},[3453],{"type":55,"value":3454},"(No-widget surface: report the failure and ask the user to re-provide the file.)",{"type":50,"tag":138,"props":3456,"children":3457},{},[3458,3468],{"type":50,"tag":165,"props":3459,"children":3460},{},[3461,3466],{"type":50,"tag":79,"props":3462,"children":3464},{"className":3463},[],[3465],{"type":55,"value":686},{"type":55,"value":3467}," returns 403 (entitlement)",{"type":50,"tag":165,"props":3469,"children":3470},{},[3471,3473,3478,3479,3484,3485,3490],{"type":55,"value":3472},"Fall back to ",{"type":50,"tag":79,"props":3474,"children":3476},{"className":3475},[],[3477],{"type":55,"value":537},{"type":55,"value":707},{"type":50,"tag":79,"props":3480,"children":3482},{"className":3481},[],[3483],{"type":55,"value":713},{"type":55,"value":715},{"type":50,"tag":79,"props":3486,"children":3488},{"className":3487},[],[3489],{"type":55,"value":721},{"type":55,"value":3491},". Note in delivery summary: \"AI canvas expansion is not included in your current Adobe plan — smart reframe was used instead.\" Retrying does not resolve a 403 entitlement — continue per the fallback rule.",{"type":50,"tag":138,"props":3493,"children":3494},{},[3495,3504],{"type":50,"tag":165,"props":3496,"children":3497},{},[3498,3503],{"type":50,"tag":79,"props":3499,"children":3501},{"className":3500},[],[3502],{"type":55,"value":537},{"type":55,"value":3467},{"type":50,"tag":165,"props":3505,"children":3506},{},[3507],{"type":55,"value":3508},"Stop workflow. Tell the user: \"Image cropping isn't available on your current Adobe plan — I can't complete this request here.\"",{"type":50,"tag":138,"props":3510,"children":3511},{},[3512,3517],{"type":50,"tag":165,"props":3513,"children":3514},{},[3515],{"type":55,"value":3516},"PSD\u002FAI flattening returns 403",{"type":50,"tag":165,"props":3518,"children":3519},{},[3520],{"type":55,"value":3521},"Stop workflow. Tell the user: \"Flattening this file type isn't available on your current Adobe plan — export as JPG or PNG first, then try again.\"",{"type":50,"tag":138,"props":3523,"children":3524},{},[3525,3535],{"type":50,"tag":165,"props":3526,"children":3527},{},[3528,3533],{"type":50,"tag":79,"props":3529,"children":3531},{"className":3530},[],[3532],{"type":55,"value":200},{"type":55,"value":3534}," file type fails expand",{"type":50,"tag":165,"props":3536,"children":3537},{},[3538,3540,3545,3547],{"type":55,"value":3539},"Retry using ",{"type":50,"tag":79,"props":3541,"children":3543},{"className":3542},[],[3544],{"type":55,"value":208},{"type":55,"value":3546}," instead of ",{"type":50,"tag":79,"props":3548,"children":3550},{"className":3549},[],[3551],{"type":55,"value":216},{"type":50,"tag":138,"props":3553,"children":3554},{},[3555,3560],{"type":50,"tag":165,"props":3556,"children":3557},{},[3558],{"type":55,"value":3559},"401 not authenticated",{"type":50,"tag":165,"props":3561,"children":3562},{},[3563],{"type":55,"value":3564},"Ask user to re-authenticate via Adobe OAuth",{"type":50,"tag":138,"props":3566,"children":3567},{},[3568,3573],{"type":50,"tag":165,"props":3569,"children":3570},{},[3571],{"type":55,"value":3572},"Image too large after crop",{"type":50,"tag":165,"props":3574,"children":3575},{},[3576],{"type":55,"value":3577},"Re-run with lower quality setting",{"type":50,"tag":138,"props":3579,"children":3580},{},[3581,3586],{"type":50,"tag":165,"props":3582,"children":3583},{},[3584],{"type":55,"value":3585},"Express file uploaded",{"type":50,"tag":165,"props":3587,"children":3588},{},[3589],{"type":55,"value":3590},"Ask user to export as JPG\u002FPNG first",{"type":50,"tag":138,"props":3592,"children":3593},{},[3594,3599],{"type":50,"tag":165,"props":3595,"children":3596},{},[3597],{"type":55,"value":3598},"PSD \u002F AI file uploaded",{"type":50,"tag":165,"props":3600,"children":3601},{},[3602],{"type":55,"value":3603},"Flatten first (JPEG, 300 DPI). On 403, see entitlement row above.",{"type":50,"tag":138,"props":3605,"children":3606},{},[3607,3617],{"type":50,"tag":165,"props":3608,"children":3609},{},[3610,3615],{"type":50,"tag":79,"props":3611,"children":3613},{"className":3612},[],[3614],{"type":55,"value":781},{"type":55,"value":3616}," fails",{"type":50,"tag":165,"props":3618,"children":3619},{},[3620],{"type":55,"value":3621},"Report clearly; suggest user re-upload as MP4",{"type":50,"tag":138,"props":3623,"children":3624},{},[3625,3630],{"type":50,"tag":165,"props":3626,"children":3627},{},[3628],{"type":55,"value":3629},"Unsupported file format (DOCX, PDF, etc.)",{"type":50,"tag":165,"props":3631,"children":3632},{},[3633],{"type":55,"value":3634},"Inform user. Accepted inputs: JPG, PNG, Firefly images, PSD\u002FAI, MP4\u002FMOV.",{"type":50,"tag":119,"props":3636,"children":3637},{},[],{"type":50,"tag":123,"props":3639,"children":3641},{"id":3640},"hard-constraints",[3642],{"type":55,"value":3643},"Hard Constraints",{"type":50,"tag":1270,"props":3645,"children":3646},{},[3647],{"type":50,"tag":1274,"props":3648,"children":3649},{},[3650,3652,3658,3660,3665,3667,3672,3673,3678,3680,3685],{"type":55,"value":3651},"Never pass a raw local filesystem path to any ",{"type":50,"tag":79,"props":3653,"children":3655},{"className":3654},[],[3656],{"type":55,"value":3657},"image_*",{"type":55,"value":3659}," or video tool. Local files must reach Creative Cloud first — selected via the ",{"type":50,"tag":79,"props":3661,"children":3663},{"className":3662},[],[3664],{"type":55,"value":84},{"type":55,"value":3666}," picker, or (no-widget fallback) staged via ",{"type":50,"tag":79,"props":3668,"children":3670},{"className":3669},[],[3671],{"type":55,"value":486},{"type":55,"value":1197},{"type":50,"tag":79,"props":3674,"children":3676},{"className":3675},[],[3677],{"type":55,"value":503},{"type":55,"value":3679},"; only the resulting presigned CC URI (for images) or ",{"type":50,"tag":79,"props":3681,"children":3683},{"className":3682},[],[3684],{"type":55,"value":2767},{"type":55,"value":3686}," (for video tools) is valid.",{"type":50,"tag":3688,"props":3689,"children":3690},"style",{},[3691],{"type":55,"value":3692},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":3694,"total":3896},[3695,3716,3739,3756,3771,3790,3809,3825,3841,3855,3867,3880],{"slug":3696,"name":3696,"fn":3697,"description":3698,"org":3699,"tags":3700,"stars":3713,"repoUrl":3714,"updatedAt":3715},"prior-auth-packet-builder","build healthcare prior authorization packets","Build a concise prior authorization packet from local case files and payer policy docs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3701,3704,3707,3710],{"name":3702,"slug":3703,"type":15},"Documents","documents",{"name":3705,"slug":3706,"type":15},"Healthcare","healthcare",{"name":3708,"slug":3709,"type":15},"Insurance","insurance",{"name":3711,"slug":3712,"type":15},"Regulatory Compliance","regulatory-compliance",28169,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-agents-python","2026-08-02T05:48:07.395855",{"slug":3717,"name":3717,"fn":3718,"description":3719,"org":3720,"tags":3721,"stars":3736,"repoUrl":3737,"updatedAt":3738},"aspnet-core","build ASP.NET Core web applications","Build, review, refactor, or architect ASP.NET Core web applications using current official guidance for .NET web development. Use when working on Blazor Web Apps, Razor Pages, MVC, Minimal APIs, controller-based Web APIs, SignalR, gRPC, middleware, dependency injection, configuration, authentication, authorization, testing, performance, deployment, or ASP.NET Core upgrades.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3722,3725,3727,3730,3733],{"name":3723,"slug":3724,"type":15},".NET","dotnet",{"name":3726,"slug":3717,"type":15},"ASP.NET Core",{"name":3728,"slug":3729,"type":15},"Blazor","blazor",{"name":3731,"slug":3732,"type":15},"C#","csharp",{"name":3734,"slug":3735,"type":15},"Web Development","web-development",23787,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills","2026-04-12T05:07:02.819491",{"slug":3740,"name":3740,"fn":3741,"description":3742,"org":3743,"tags":3744,"stars":3736,"repoUrl":3737,"updatedAt":3755},"chatgpt-apps","build ChatGPT Apps SDK applications","Build, scaffold, refactor, and troubleshoot ChatGPT Apps SDK applications that combine an MCP server and widget UI. Use when Codex needs to design tools, register UI resources, wire the MCP Apps bridge or ChatGPT compatibility APIs, apply Apps SDK metadata or CSP or domain settings, or produce a docs-aligned project scaffold. Prefer a docs-first workflow by invoking the openai-docs skill or OpenAI developer docs MCP tools before generating code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3745,3748,3751,3754],{"name":3746,"slug":3747,"type":15},"Apps SDK","apps-sdk",{"name":3749,"slug":3750,"type":15},"ChatGPT","chatgpt",{"name":3752,"slug":3753,"type":15},"MCP","mcp",{"name":9,"slug":8,"type":15},"2026-04-12T05:07:05.468097",{"slug":3757,"name":3757,"fn":3758,"description":3759,"org":3760,"tags":3761,"stars":3736,"repoUrl":3737,"updatedAt":3770},"cli-creator","build CLIs from API docs","Build a composable CLI for Codex from API docs, an OpenAPI spec, existing curl examples, an SDK, a web app, an admin tool, or a local script. Use when the user wants Codex to create a command-line tool that can run from any repo, expose composable read\u002Fwrite commands, return stable JSON, manage auth, and pair with a companion skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3762,3765,3768],{"name":3763,"slug":3764,"type":15},"API Development","api-development",{"name":3766,"slug":3767,"type":15},"CLI","cli",{"name":3769,"slug":45,"type":15},"Codex","2026-04-12T05:07:04.132762",{"slug":3772,"name":3772,"fn":3773,"description":3774,"org":3775,"tags":3776,"stars":3736,"repoUrl":3737,"updatedAt":3789},"cloudflare-deploy","deploy projects to Cloudflare","Deploy applications and infrastructure to Cloudflare using Workers, Pages, and related platform services. Use when the user asks to deploy, host, publish, or set up a project on Cloudflare.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3777,3780,3783,3786],{"name":3778,"slug":3779,"type":15},"Cloudflare","cloudflare",{"name":3781,"slug":3782,"type":15},"Cloudflare Pages","cloudflare-pages",{"name":3784,"slug":3785,"type":15},"Cloudflare Workers","cloudflare-workers",{"name":3787,"slug":3788,"type":15},"Deployment","deployment","2026-04-12T05:07:14.275118",{"slug":3791,"name":3791,"fn":3792,"description":3793,"org":3794,"tags":3795,"stars":3736,"repoUrl":3737,"updatedAt":3808},"define-goal","define and set measurable project goals","Help the user define a concrete, measurable goal before starting work, especially when they ask to use the goal tool, create a goal, set an objective, clarify success criteria, or turn a fuzzy intention into a quantitative outcome. Use this skill for goal creation and goal refinement only; it does not manage durable snapshots, decision logs, or long-running execution artifacts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3796,3799,3802,3805],{"name":3797,"slug":3798,"type":15},"Productivity","productivity",{"name":3800,"slug":3801,"type":15},"Project Management","project-management",{"name":3803,"slug":3804,"type":15},"Strategy","strategy",{"name":3806,"slug":3807,"type":15},"Task Management","task-management","2026-05-23T06:17:16.870838",{"slug":3810,"name":3810,"fn":3811,"description":3812,"org":3813,"tags":3814,"stars":3736,"repoUrl":3737,"updatedAt":3824},"figma","translate Figma designs into code","Use the Figma MCP server to fetch design context, screenshots, variables, and assets from Figma, and to translate Figma nodes into production code. Trigger when a task involves Figma URLs, node IDs, design-to-code implementation, or Figma MCP setup and troubleshooting.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3815,3818,3820,3823],{"name":3816,"slug":3817,"type":15},"Design","design",{"name":3819,"slug":3810,"type":15},"Figma",{"name":3821,"slug":3822,"type":15},"Frontend","frontend",{"name":3752,"slug":3753,"type":15},"2026-04-12T05:06:47.939943",{"slug":3826,"name":3826,"fn":3827,"description":3828,"org":3829,"tags":3830,"stars":3736,"repoUrl":3737,"updatedAt":3840},"figma-code-connect-components","connect Figma designs to code components","Connects Figma design components to code components using Code Connect mapping tools. Use when user says \"code connect\", \"connect this component to code\", \"map this component\", \"link component to code\", \"create code connect mapping\", or wants to establish mappings between Figma designs and code implementations. For canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3831,3832,3835,3836,3837],{"name":3816,"slug":3817,"type":15},{"name":3833,"slug":3834,"type":15},"Design System","design-system",{"name":3819,"slug":3810,"type":15},{"name":3821,"slug":3822,"type":15},{"name":3838,"slug":3839,"type":15},"UI Components","ui-components","2026-05-10T05:59:52.971881",{"slug":3842,"name":3842,"fn":3843,"description":3844,"org":3845,"tags":3846,"stars":3736,"repoUrl":3737,"updatedAt":3854},"figma-create-design-system-rules","generate design system rules from Figma","Generates custom design system rules for the user's codebase. Use when user says \"create design system rules\", \"generate rules for my project\", \"set up design rules\", \"customize design system guidelines\", or wants to establish project-specific conventions for Figma-to-code workflows. Requires Figma MCP server connection.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3847,3848,3849,3852,3853],{"name":3816,"slug":3817,"type":15},{"name":3833,"slug":3834,"type":15},{"name":3850,"slug":3851,"type":15},"Documentation","documentation",{"name":3819,"slug":3810,"type":15},{"name":3821,"slug":3822,"type":15},"2026-05-16T06:07:47.821474",{"slug":3856,"name":3856,"fn":3857,"description":3858,"org":3859,"tags":3860,"stars":3736,"repoUrl":3737,"updatedAt":3866},"figma-implement-design","translate Figma designs into application code","Translates Figma designs into production-ready application code with 1:1 visual fidelity. Use when implementing UI code from Figma files, when user mentions \"implement design\", \"generate code\", \"implement component\", provides Figma URLs, or asks to build components matching Figma specs. For Figma canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3861,3862,3863,3864,3865],{"name":3816,"slug":3817,"type":15},{"name":3819,"slug":3810,"type":15},{"name":3821,"slug":3822,"type":15},{"name":3838,"slug":3839,"type":15},{"name":3734,"slug":3735,"type":15},"2026-05-16T06:07:40.583615",{"slug":3868,"name":3868,"fn":3869,"description":3870,"org":3871,"tags":3872,"stars":3736,"repoUrl":3737,"updatedAt":3879},"hatch-pet","create animated pets for Codex","Create, repair, validate, visually QA, and package Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual references. Use when a user wants a lightweight-worker Codex pet workflow, a non-pixel custom pet style, a prospect or company mascot pet, or a full 8x9 animated pet atlas with transparent unused cells, QA contact sheets, and pet.json packaging. This skill composes the installed $imagegen system skill for visual generation and uses bundled scripts for deterministic spritesheet assembly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3873,3876,3877,3878],{"name":3874,"slug":3875,"type":15},"Animation","animation",{"name":3769,"slug":45,"type":15},{"name":20,"slug":21,"type":15},{"name":3816,"slug":3817,"type":15},"2026-05-02T05:31:48.48485",{"slug":3881,"name":3881,"fn":3882,"description":3883,"org":3884,"tags":3885,"stars":3736,"repoUrl":3737,"updatedAt":3895},"imagegen","generate and edit raster images","Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output should be a bitmap asset rather than repo-native code or vector. Do not use when the task is better handled by editing existing SVG\u002Fvector\u002Fcode-native assets, extending an established icon or logo system, or building the visual directly in HTML\u002FCSS\u002Fcanvas.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3886,3887,3888,3891,3894],{"name":20,"slug":21,"type":15},{"name":3816,"slug":3817,"type":15},{"name":3889,"slug":3890,"type":15},"Image Generation","image-generation",{"name":3892,"slug":3893,"type":15},"Images","images",{"name":9,"slug":8,"type":15},"2026-05-15T06:23:24.312127",578,{"items":3898,"total":3984},[3899,3916,3930,3940,3947,3960,3972],{"slug":3900,"name":3900,"fn":3901,"description":3902,"org":3903,"tags":3904,"stars":25,"repoUrl":26,"updatedAt":3915},"accessibility-and-inclusive-visualization","make data visualizations accessible","Make data visualizations accessible and inclusive. Use when the user needs chart or diagram accessibility guidance, text alternatives for complex visuals, color and contrast review, keyboard support, reduced-motion behavior for animation or parallax, or an accessibility QA workflow for exported figures, UML-like diagrams, and dashboards.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3905,3908,3911,3914],{"name":3906,"slug":3907,"type":15},"Accessibility","accessibility",{"name":3909,"slug":3910,"type":15},"Charts","charts",{"name":3912,"slug":3913,"type":15},"Data Visualization","data-visualization",{"name":3816,"slug":3817,"type":15},"2026-06-30T19:00:57.102",{"slug":3917,"name":3917,"fn":3918,"description":3919,"org":3920,"tags":3921,"stars":25,"repoUrl":26,"updatedAt":3929},"adobe-batch-edit-photos","apply consistent photo adjustments","Apply consistent photo adjustments across a set of images so they look like they were edited together. Use this skill whenever the user says \"make my photos look cohesive\", \"give all these the same style\", \"apply a warm and golden feel to all of these\", \"make this cinematic\", \"match the look across my photos\", \"edit all my travel photos the same way\", \"batch edit these\", \"make these consistent\", \"fix my phone photos\", or uploads a folder of photos and wants a unified, polished result. Also triggers for requests like \"apply a preset to all of these\", \"make these look professional\", or \"they were shot in mixed lighting — can you fix them all\". Outputs direct final image URLs plus an in-chat preview grid and optional Firefly Board link. Access: 🔐 Signed-In required | Gen AI: ❌\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3922,3923,3926],{"name":20,"slug":21,"type":15},{"name":3924,"slug":3925,"type":15},"Editing","editing",{"name":3927,"slug":3928,"type":15},"Imaging","imaging","2026-08-28T15:09:11.185865",{"slug":3931,"name":3931,"fn":3932,"description":3933,"org":3934,"tags":3935,"stars":25,"repoUrl":26,"updatedAt":3939},"adobe-create-mockups","create product and scene mockups","Use when a user wants to see their logo, design, or sketch on a product or scene mockup — mugs, t-shirts, business cards, hats, phone screens, posters, billboards, or similar. Triggers on \"create mockups\", \"show my logo on products\", or any logo upload with a request to visualize it on items. Access: 🔐 Signed-In required | Gen AI: ✅ Adobe Firefly via `image_generate` used for design creation, sketch polishing, and mockup scene generation\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3936,3937,3938],{"name":20,"slug":21,"type":15},{"name":3816,"slug":3817,"type":15},{"name":13,"slug":14,"type":15},"2026-08-28T15:09:07.42507",{"slug":4,"name":4,"fn":5,"description":6,"org":3941,"tags":3942,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3943,3944,3945,3946],{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":23,"slug":24,"type":15},{"slug":3948,"name":3948,"fn":3949,"description":3950,"org":3951,"tags":3952,"stars":25,"repoUrl":26,"updatedAt":3959},"adobe-design-from-template","create visual designs from templates","Create any visual design using Adobe Express templates — flyers, posters, social media posts (Instagram, Facebook, LinkedIn), business cards, invitations, greeting cards, resumes, cover letters, brochures, newsletters, certificates, presentations, YouTube thumbnails, email headers, logos, menus, and labels. Use this skill whenever the user wants to make, design, or build any visual — even if they just say \"make me a flyer\", \"design a poster\", \"I need something for Instagram\", \"create an event invite\", or \"make a business card\". Also handles browsing templates, editing text, replacing images, changing backgrounds, animating, and exporting designs. Access: 🔐 Signed-In required | Gen AI: ❌ by default — image replacement only where the surface permits generative AI (e.g. Codex); none on Claude\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3953,3954,3955,3956],{"name":20,"slug":21,"type":15},{"name":3816,"slug":3817,"type":15},{"name":13,"slug":14,"type":15},{"name":3957,"slug":3958,"type":15},"Templates","templates","2026-08-28T15:10:03.050113",{"slug":3961,"name":3961,"fn":3962,"description":3963,"org":3964,"tags":3965,"stars":25,"repoUrl":26,"updatedAt":3971},"adobe-edit-quick-cut","create video sizzle reels","Create a punchy sizzle reel from a video using Adobe Quick Cut. Use this skill whenever a user wants to cut, trim, or shorten a video into highlights — including phrases like \"make a sizzle reel\", \"make a highlight reel\", \"quick cut this\", \"cut the best parts\", \"shorten this video\", \"make a highlight clip\", \"summarize this video visually\", or any request to produce a shorter edited version of a video. Use this skill for Quick Cut requests before suggesting manual editing in Premiere. Requires the user to upload a video file.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3966,3967,3968],{"name":20,"slug":21,"type":15},{"name":3924,"slug":3925,"type":15},{"name":3969,"slug":3970,"type":15},"Video","video","2026-08-28T15:09:07.765245",{"slug":3973,"name":3973,"fn":3974,"description":3975,"org":3976,"tags":3977,"stars":25,"repoUrl":26,"updatedAt":3983},"adobe-retouch-portraits","batch retouch portrait photos","Bulk-retouch a folder of portrait photos using Adobe tools — designed for wedding photographers and event photographers who need fast, walk-away batch processing. Use this skill when the user says \"retouch my photos\", \"batch process these portraits\", \"process my wedding photos\", \"clean up this folder of images\", \"run my headshots through Adobe\", or uploads\u002Fselects a folder of photos and wants them polished and ready to review. Automatically applies auto-straighten, auto-tone, and auto-light to every image. Outputs a preview grid and download folder. Access: 🔐 Signed-In required | Gen AI: ❌ by default — optional background-only cleanup only where the surface permits generative AI (e.g. Codex); none on Claude\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3978,3979,3980],{"name":20,"slug":21,"type":15},{"name":3927,"slug":3928,"type":15},{"name":3981,"slug":3982,"type":15},"Photography","photography","2026-08-28T15:09:10.386974",499]