adobe-create-social-variations
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/Twitter. 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.
What this skill does
# Adobe Create Social Variations
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.
---
## Supported Input Types
| Input | Supported | Notes |
| ----------------------------- | --------------- | ----------------------------------------------------------------------------------- |
| JPG / PNG | ✅ Full workflow | |
| Firefly-generated image | ✅ Full workflow | For `.ffgenimg` assets, pass the `presignedRenditionUrl` field, not `presignedAssetUrl` |
| Express file | ⚠️ Partial | Must be exported to JPG/PNG first — tell user before proceeding |
| PSD / AI (Illustrator) | ⚠️ Partial | Flatten first (see Error Handling if this fails) |
| Video (MP4/MOV) | ⚠️ Partial | Resize only — no smart reframe. See VIDEO WORKFLOW |
| Unsupported (DOCX, PDF, etc.) | ❌ | Inform user; list accepted formats |
---
## Step 0 - prereq: Initialize Adobe Tools
Call `adobe_mandatory_init` first. This returns file handling rules and tool routing guidance required for the rest of the workflow.
```json
{ "skill_name": "adobe-create-social-variations", "skill_version": "1.0.1" }
```
---
## Step 1 — Entitlement Check
Now that `adobe_mandatory_init` confirmed that the "Adobe for creativity" connector is live, check which tools are available through the connector and set capability flags.
### Image Workflow — Core Tools (required)
All 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:
> "To access this skill, please disconnect and reconnect to the "Adobe for creativity" Connector to sign in using an Adobe account, or sign up."
| Tool | Purpose |
|------|---------|
| `asset_add_file` | File picker / CC browse / upload |
| `asset_initialize_file_upload` | First call in two-step egress upload |
| `asset_finalize_file_upload` | Second call in two-step egress upload |
| `asset_inline_preview` | Determines focus strategy before cropping |
| `image_crop_and_resize` | Per-platform, per-format cropping |
| `asset_preview_file` | Test previews and final delivery |
### Image Workflow — Enhanced Tools (optional, graceful fallback)
| Tool | Flag | If missing |
|------|------|------------|
| `image_generative_expand` | `expandAvailable = true/false` | 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." |
### Video Workflow — Required Tools (optional workflow, all-or-nothing)
Only 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.
| Tool | Purpose |
|------|---------|
| `video_resize` | Same-ratio resize only |
| `resizeVideoPoll` | Deferred tool — load before calling |
If `videoCapable = false` and the user explicitly asks about video resizing, avoid verbosity and output this message exactly:
> "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."
---
## Tool Reference
| Step | Tool | Notes |
|------|------|-------|
| Upload chat-dropped file | `asset_initialize_file_upload` | First call in two-step egress upload |
| Complete the upload | `asset_finalize_file_upload` | Second call in two-step egress upload |
| Get file from CC or as egress fallback | `asset_add_file` | File picker / CC browse / upload |
| Inspect source image | `asset_inline_preview` | Determines focus strategy before cropping |
| Expand canvas | `image_generative_expand` | Creates tall (9:16/4:5) and wide (~2:1/16:9) variants |
| Crop to platform dimensions | `image_crop_and_resize` | Per-platform, per-format; also 403 fallback for expand |
| Preview test crops or full set | `asset_preview_file` | Before full run (test) and at delivery |
| Resize video | `video_resize` | Same-ratio resize only |
| Poll video resize job | `resizeVideoPoll` | Deferred tool — load before calling |
---
## IMAGE WORKFLOW
### Step 0 — Get the Source File
How you get the file depends on where it is:
| Source | Action |
| -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| File uploaded in chat (`/mnt/user-data/uploads/…`) | Check `<network_configuration>`. If egress is enabled (`Enabled: true`), 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, fall back to `asset_add_file()`. |
| No file provided yet | Call `asset_add_file()` immediately — no need to ask first. |
| File already in Creative Cloud | Call `asset_add_file()` so the user can select it from their CC storage. |
After the file is available, detect image vs. video from `mediaType`. For images, proceed to Step 1.
---
### Step 1 — Ask: Which Platforms?
Ask in a single question using `AskUserQuestion` with multi-select:
> Full set / Instagram / TikTok / LinkedIn / Facebook / YouTube / Snapchat / X/Twitter / Pinterest / Threads
**Set the test flag based on the user's answer:**
- **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).
- **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.
> The test preview is a useful safety net for large cross-platform batches, but unnecessary friction for a targeted 1–2 platform run.
---
### Step 2 — Inspect Image & Set Focus Strategy
**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.
After inspecting, tell the user what you see and what focus strategy you're using, and invite a correction:
> "I can see this is a [e.g. 'product shot of a tote bag on a neutral background']Related in Ads & Marketing
ads
IncludedMulti-platform paid advertising audit and optimization skill. Analyzes Google, Meta, YouTube, LinkedIn, TikTok, Microsoft, and Apple Ads. 250+ checks with scoring, parallel agents, industry templates, and AI creative generation.
banana
IncludedAI image generation Creative Director powered by Google Gemini Nano Banana models. Use this skill for ANY request involving image creation, editing, visual asset production, or creative direction. Triggers on: generate an image, create a photo, edit this picture, design a logo, make a banner, visual for my anything, and all /banana commands. Handles text-to-image, image editing, multi-turn creative sessions, batch workflows, and brand presets.
rpg-migration-analyzer
IncludedAnalyzes legacy RPG (Report Program Generator) programs from AS/400 and IBM i systems for migration to modern Java applications. Extracts business logic from RPG III/IV/ILE source code, identifies data structures (D-specs), file operations (F-specs), program dependencies (CALLB/CALLP), and converts RPG constructs to Java equivalents. Generates migration reports, complexity estimates, and Java implementation strategies with POJO classes, JPA entities, and service methods. Use when modernizing AS/400 or IBM i legacy systems, analyzing RPG source files (.rpg, .rpgle, .RPGLE), converting RPG to Java, mapping data specifications to Java classes, planning legacy system migration, or when user mentions RPG analysis, Report Program Generator, RPG III/IV/ILE, AS/400 modernization, IBM i migration, packed decimal conversion, or mainframe application rewrite.
brand-library-architect
IncludedBuild a complete brand library for a product — visual asset render pipeline, brand documentation set (BRAND, COPY, MANIFESTO, BIOS, FAQ, GLOSSARY, TONE, PRICING), open-source convention files (README, CONTRIBUTING, SECURITY, CODE_OF_CONDUCT), and a self-contained press kit. This skill should be used when the user asks to "build a brand library / brand kit / press kit / brand assets" for a product, "set up a brand library workflow," "create a positioning manifesto plus visual identity," or any combination of brand documentation + visual asset pipeline. Apply phase-by-phase or run end-to-end. Templates are product-agnostic and use {{TOKEN}} placeholders the skill prompts the user to fill.
writing-tech-post
IncludedAuthors engineering blog posts end-to-end: launch deep-dives, incident postmortems, architecture migrations, performance case studies, tutorials, AI/agent system writeups, security disclosures, and research-to-product translations. Picks the correct archetype, plans the abstraction ladder, enforces an evidence cadence (diagrams, benchmarks, profiles, traces, code, ablations), tunes voice against publisher house styles (Datadog, Vercel, GitHub, AWS, Meta, Cloudflare, Jane Street), and runs a pre-publish gate for narrative momentum and disclosure ethics. Use when drafting a new engineering post, restructuring a draft that feels flat, deciding which evidence form belongs where, validating that depth and product context are balanced, or preparing a postmortem, migration, or performance narrative for external publication. Do not use for API reference documentation, README authoring, marketing copy, release notes, generic SEO content, ghost-written executive thought leadership, or non-engineering long-form essays.
blog-google
IncludedGoogle API integration for blog performance: PageSpeed Insights, CrUX Core Web Vitals with 25-week history, Search Console performance, URL Inspection, Indexing API, GA4 organic traffic, NLP entity analysis for E-E-A-T, YouTube video search for embedding, and Google Ads Keyword Planner. Progressive feature availability based on credential tier (API key, OAuth/service account, GA4, Ads). Shares config with claude-seo at ~/.config/claude-seo/google-api.json. Use when user says "google data", "page speed", "core web vitals", "search console", "indexation", "GA4", "keyword research", "nlp entities", "blog performance", "youtube search", "google api setup".