ST

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.zip

Installs 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.
402 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Intermediate

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

You give it
Search queries for stock images (e.g., 'hand pointing index finger isolated on white background')
You get back
Properly licensed, trimmed PNG images installed in the Images palette, with updated library and license records

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.md up to date in the same change.

Pipeline

  1. Init Adobe MCP — call adobe_mandatory_init once, then load schemas via ToolSearch: asset_search, asset_license_and_download_stock, image_remove_background (+ asset_inline_preview if needed).

  2. Search free-tier Stockasset_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 + orientation can return 0 hits — drop orientation if that happens.
    • renditionURL is a public CDN thumbnail (t3/t4.ftcdn.net) — safe to download with curl for curation; never ship it.
  3. 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, and isGenTech: true results if real photos are wanted).

  4. Licenseasset_license_and_download_stock({assetId}) per asset.

    • Free-tier assets license without consuming paid credits (state: "just_purchased").
    • Returned downloadUrl is 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.
  5. Remove backgroundsimage_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 each outputUrl with curl -L. Occasional HTTP 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>.
  6. Trim + installnode .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.

  7. 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 in IMAGE_CATEGORIES; the palette (ElementPalette.tsx Images tab) renders groups generically.
  8. 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.

  9. Verify — use the app-screenshots skill: 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.tsx has the Images tab; tiles pass {imageSrc, imageAlt, name, defaultSize} styleProps with type 'image'.
  • Canvas: Artboard.tsx's image branch consumes those styleProps and sets objectFit: 'contain' for library assets.
  • next.config.ts has images.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.

SkillInstallsUpdatedSafetyDifficulty
stock-image-assets (this skill)021dReviewIntermediate
jimeng-mcp-skill194moCautionIntermediate
ai-image98moReviewIntermediate
nano-image-generator15moReviewBeginner

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访问。

19158

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.

9101

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.

110

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.

11

vizcom

Anhvu1107

ALWAYS use this when the request matches Vizcom: AI-powered product design tool for transforming sketches into full-fidelity 3D renders.

00

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.

00

Search skills

Search the agent skills registry