stock-image-assets
Handles licensed image procurement from Adobe Stock, including background removal and library integration.
Install
mkdir -p .claude/skills/stock-image-assets && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/19094" && unzip -o skill.zip -d .claude/skills/stock-image-assets && rm skill.zipInstalls to .claude/skills/stock-image-assets
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Add properly licensed Adobe Stock photos to the Images palette library (e.g. the Touch hand group) via the Adobe MCP — search free-tier Stock, license through the user's account, remove backgrounds, install as trimmed PNGs, update imageLibrary.ts and the license record. Use when asked to add more stock images/photos to the image library, expand the Touch group, or add a new photographic asset group.Key capabilities
- →Search free-tier Adobe Stock for photographic assets
- →License selected assets through the user's Adobe account
- →Remove backgrounds from licensed images
- →Trim transparent borders and cap image size
- →Install images as trimmed PNGs into the public directory
- →Update `imageLibrary.ts` and `docs/image-asset-licenses.md`
How it works
This skill searches Adobe Stock for free-tier images, licenses them, removes backgrounds, trims and installs them as PNGs, and updates the image library and license documentation.
Inputs & outputs
When to use stock-image-assets
- →Expanding touch image library
- →Adding photographic assets
- →Managing licensed design assets
About this skill
Licensed Stock Images for the Images Palette
Adds photographic assets to the app's Images tab (src/lib/imageLibrary.ts +
public/elements/images/<group>/) using Adobe Stock, licensed through the
user's connected Adobe account so there is a real license record on file.
Hard rules (user requirement — copyright):
- NEVER crop assets out of reference screenshots the user shares — those only define what kind of asset to find.
- NEVER download artwork from the web (Wikimedia, official brand SVGs, etc.).
- Openverse/Wikimedia CC0+CC-BY were verified to have NO usable isolated studio photos — don't retry that route.
- Every shipped asset must trace to an Adobe Stock license; keep
docs/image-asset-licenses.mdup to date in the same change.
Pipeline
-
Init Adobe MCP — call
adobe_mandatory_initonce, then load schemas via ToolSearch:asset_search,asset_license_and_download_stock,image_remove_background(+asset_inline_previewif needed). -
Search free-tier Stock —
asset_search({entityScope: "StockAsset", query: "...", filters: {pricing: "free", contentType: "Photo"}, limit: 30}).- Queries like "hand pointing index finger isolated on white background" work well; "isolated on white" is the key phrase for cutout-friendly shots.
- Combining
pricing+contentType+orientationcan return 0 hits — droporientationif that happens. renditionURLis a public CDN thumbnail (t3/t4.ftcdn.net) — safe to download with curl for curation; never ship it.
-
Curate visually — download rendition thumbnails, build a labeled contact sheet (
scripts/contact-sheet.js), and pick a consistent set (varied poses and skin tones; avoid busy clothing/backgrounds, gimmick shots, andisGenTech: trueresults if real photos are wanted). -
License —
asset_license_and_download_stock({assetId})per asset.- Free-tier assets license without consuming paid credits
(
state: "just_purchased"). - Returned
downloadUrlis a presigned S3 URL valid 1 hour; re-calling refreshes the URL without consuming another license. - Download the originals immediately after licensing. The Adobe MCP session token can expire mid-batch ("Your session token is about to expire") and only the user can re-authenticate (claude.ai connector settings). Licenses are permanent, but locally saved originals let work continue (e.g. local keying) while Adobe is unavailable.
- Free-tier assets license without consuming paid credits
(
-
Remove backgrounds —
image_remove_background({imageURI: downloadUrl})(default transparent-PNG cutout mode; no options needed). Output keeps full resolution up to 8192px (larger inputs are downscaled — fine). Download eachoutputUrlwithcurl -L. OccasionalHTTP 504— retry once.- Fallback for crisp objects on plain white (food, products — NOT hair/people):
local keying with
scripts/white-key.js <inDir> <outDir> <ids>.
- Fallback for crisp objects on plain white (food, products — NOT hair/people):
local keying with
-
Trim + install —
node .claude/skills/stock-image-assets/scripts/trim-install.js <cutoutDir> <publicGroupDir>trims transparent borders (alpha > 8, 6px pad), caps the longest side at 1000px, and writes<group>-as<StockID>.png. The Stock ID in the filename is the provenance link — keep that convention. -
Update
src/lib/imageLibrary.ts— add items with:id: filename without extension (touch-as453449839)label: short human label ("Pointing up", "Side point · deep tone")defaultSize: scale so the longest side ≈ 430 canvas units, preserving the PNG's aspect ratio. A new group only needs a new entry inIMAGE_CATEGORIES; the palette (ElementPalette.tsxImages tab) renders groups generically.
-
Update the license record — append rows to
docs/image-asset-licenses.md(file, Stock ID, exact Stock title, license date). The user's full history lives at stock.adobe.com/license-history. -
Verify — use the
app-screenshotsskill: Images tab → Browse <Group> → screenshot the grid → click a tile (button[title="Add <label>"]) → confirm[data-element-id]count increments and the photo renders on the artboard.
Store badges: use OFFICIAL vendor artwork only
Hand-drawn lookalike badges were rejected by the user ("knockoff"). The Badges group uses each vendor's official badge program artwork (this is the copyright-correct route — the badges exist for exactly this promotional use):
- Apple:
https://developer.apple.com/assets/elements/badges/download-on-the-app-store.svg - Google Play:
https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png - Microsoft Store:
https://get.microsoft.com/images/en-us%20dark.svg - Amazon Appstore:
https://images-na.ssl-images-amazon.com/images/G/01/mobile-apps/devportal2/res/images/amazon-appstore-badge-english-black.png - F-Droid:
https://f-droid.org/badge/get-it-on.png - Samsung Galaxy Store badge URL (img.samsungapps.com) returns an HTML error — no known direct link.
Keep badges unmodified per vendor guidelines; record source + terms links in
docs/image-asset-licenses.md.
Existing wiring (don't rebuild)
- Palette:
ElementPalette.tsxhas the Images tab; tiles pass{imageSrc, imageAlt, name, defaultSize}styleProps with type'image'. - Canvas:
Artboard.tsx's image branch consumes those styleProps and setsobjectFit: 'contain'for library assets. next.config.tshasimages.unoptimized: true, so plain public paths work.
License scope (documented in docs/image-asset-licenses.md)
Adobe Stock standard license covers commercial use in composited exports. Bundled palette assets are for composing exports — fine. If the app is ever marketed as a general asset marketplace/stock service, revisit the bundling question before adding more.
When not to use it
- →When cropping assets from user-shared reference screenshots
- →When downloading artwork from the web (e.g., Wikimedia, official brand SVGs)
- →When the user wants to use images without a traceable Adobe Stock license
Limitations
- →Every shipped asset must trace to an Adobe Stock license
- →NEVER crop assets out of reference screenshots
- →NEVER download artwork from the web
How it compares
This workflow ensures all photographic assets are properly licensed, processed, and documented, providing a compliant and organized approach to asset management compared to using untracked or unverified images.
Compared to similar skills
stock-image-assets side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| stock-image-assets (this skill) | 0 | 21d | Review | Intermediate |
| jimeng-mcp-skill | 19 | 4mo | Caution | Intermediate |
| ai-image | 9 | 8mo | Review | Intermediate |
| nano-image-generator | 1 | 5mo | Review | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
jimeng-mcp-skill
wwwzhouhui
使用jimeng-mcp-server进行AI图像和视频生成。当用户请求从文本生成图像、合成多张图片、从文本描述创建视频或为静态图像添加动画时使用此技能。支持四大核心能力:文生图、图像合成、文生视频、图生视频。需要jimeng-mcp-server在本地运行或通过SSE/HTTP访问。
ai-image
tyrchen
Generate AI images using OpenAI's gpt-image-1 model with customizable aspect ratios and artistic themes. Use when the user wants to create images, generate artwork, or mentions image generation with specific styles like Ghibli, futuristic, Pixar, oil painting, or Chinese painting.
nano-image-generator
solidSpoon
Generate images using Nano Banana Pro (Gemini 3 Pro Preview). Use when creating app icons, logos, UI graphics, marketing banners, social media images, illustrations, diagrams, or any visual assets. Triggers include phrases like 'generate an image', 'create a graphic', 'make an icon', 'design a logo', 'create a banner', or any request needing visual content.
midjourney-card-news-backgrounds
bear2u
Generate Midjourney prompts for 600x600 card news background images based on topic, mood, and style preferences. Use when user requests card news backgrounds or Instagram post backgrounds.
vizcom
Anhvu1107
ALWAYS use this when the request matches Vizcom: AI-powered product design tool for transforming sketches into full-fidelity 3D renders.
lg-nanobanana-sprite
AshishYesale7
Leverage AI (Nano Banana/Imagen) to generate high-quality visual assets (icons, logos, placemark images, overlay graphics) and integrate them into Liquid Galaxy Flutter apps.