Agent skill

Experience Content Media Stock Image Search

by forcedotcom in forcedotcom/sf-skills

Searches for and downloads ethically-licensed stock images via the media-management MCP server.

Apache-2.0Auto-check passedMedia & Creative

Install Experience Content Media Stock Image Search

skills CLI
$ npx skills add forcedotcom/sf-skills --skill experience-content-media-stock-image-search -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install forcedotcom/sf-skills experience-content-media-stock-image-search --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/experience-content-media-stock-image-search .claude/skills/experience-content-media-stock-image-search && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
experience-content-media-stock-image-search
GitHub stars
1.1k
Token cost
~3.2k tokens
SKILL.md length
1,095 words
Files
2 (incl. scripts)
Skills in repo
252
Repo updated
First seen
Licence
Apache-2.0

At a glance

Searches for and downloads ethically-licensed stock images via the media-management MCP server.

  • Works in 5 steps: Search → Present Results, then STOP → Download (billed) → …
  • A user wants an image
  • SKILL.md covers When to Trigger This Skill, Step 1 — Search, Step 2 — Present Results, then… and Step 3 — Download (billed), plus 4 more sections
  • Runs Python scripts from its folder; calls sf and python3; reaches cdn.scs.static.lightning.force.com

What it does

Experience Content Media Stock Image Search is an agent skill from forcedotcom/sf-skills. Searches for and downloads ethically-licensed stock images via the media-management MCP server. Use this skill whenever a user wants an image, photo, or picture — for BOTH requests to find existing imagery ("find a stock image", "search for a photo of X", "get a royalty-free image", "find an ethical image", editorial/news photography) AND requests phrased ambiguously as creating or generating one ("create an image of a sunset", "generate a picture of a team meeting", "make me a mountain image") — treat these as…

Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/download-stock-image.py`).

It sits in Media & Creative, covering Image generation. It works with Model Context Protocol. The repository describes itself as: Salesforce's curated collection of agent skills for building applications. Optimized for Agentforce Vibes, compatible with all AI tools. The licence is Apache-2.0.

When your agent uses it

  • A user wants an image
  • Picture — for BOTH requests to find existing imagery (find a stock image
  • Search for a photo of X
  • Get a royalty-free image

Example prompts

  • “find a stock image”
  • “search for a photo of X”
  • “get a royalty-free image”
  • “/experience-content-media-stock-image-search”

Requirements

  • Python 3
  • Pre-approved tools (allowed-tools): mcp__media_management__search_stock_images, mcp__media_management__download_stock_image

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Search
  2. Present Results, then STOP
  3. Download (billed)
  4. Download to Client and Preview
  5. Report Back

What it can do on your machine

Read from SKILL.md and the folder at commit 4bbae5c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • mcp__media_management__search_stock_images
    • mcp__media_management__download_stock_image

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • sf
    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • cdn.scs.static.lightning.force.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Experience Content Media Stock Image Search loads about 3.2k tokens when it runs. Until then it costs about 256 tokens; SKILL.md has 1,095 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~256
When it runs · the whole SKILL.md, loaded when a task matches
~3.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from forcedotcom/sf-skills at commit 4bbae5c, republished under its Apache-2.0 licence (© forcedotcom). 1,095 words, ~3,192 tokens.

Download SKILL.mdSave it as .claude/skills/experience-content-media-stock-image-search/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
experience-content-media-stock-image-search
description
Searches for and downloads ethically-licensed stock images via the media-management MCP server. Use this skill whenever a user wants an image, photo, or picture — for BOTH requests to find existing imagery ("find a stock image", "search for a photo of X", "get a royalty-free image", "find an ethical image", editorial/news photography) AND requests phrased ambiguously as creating or generating one ("create an image of a sunset", "generate a picture of a team meeting", "make me a mountain image") — treat these as stock search requests, since this skill searches a stock photo library, it does not generate images. Do NOT offer alternative search methods or ask the user to pick one. Does not apply to searching internal CMS / Data Cloud media (use experience-search-coordinate). Does not apply when the user explicitly asks for AI-generated, synthetic, or computer-generated imagery — this skill only searches licensed stock photography and has no image-generation capability.
allowed-tools
mcp__media_management__search_stock_images, mcp__media_management__download_stock_image
metadata.version
1.0
metadata.domains
Experience
metadata.relatedSkills
experience-search-coordinate

When to Trigger This Skill

Trigger immediately — without asking the user to choose a search method — whenever the user wants an image, photo, or picture. This covers both:

  • Finding existing imagery: "find a stock image", "search for a photo of X", "get a royalty-free image", "find an ethical image", editorial or news photography
  • Requests phrased ambiguously as creating or generating: "create an image of a sunset", "generate a picture of a team meeting", "make me a mountain image" — treat these as stock search requests; this skill searches a stock photo library, it does not generate images.

In all of these cases, search the stock library — this is the tool for obtaining an image. Do NOT offer alternative search methods (hybrid search, user-provided URL/path, etc.) and do NOT ask the user to pick one.

Does not apply to:

  • Searching internal CMS / Data Cloud media (use experience-search-coordinate)
  • Requests that explicitly ask for AI-generated, synthetic, or computer-generated imagery — this skill only searches licensed stock photography and has no image-generation capability

MCP tool: search_stock_images (server: media-management) Timeout: 30 seconds

ParameterRequiredDefaultNotes
query✅ Yes—Natural language search phrase (e.g. "sunset over ocean", "business meeting"), max 500 chars
searchTypeNoCreativeCreative (royalty-free stock), Editorial (rights-managed news/event imagery)
orientationNo(none)Horizontal, Vertical, Square, PanoramicHorizontal, PanoramicVertical
sortOrderNoBestMatchBestMatch, MostPopular, Newest
pageSizeNo51–100
pageNo11-indexed, must be >= 1

Smart keyword extraction: If the query is longer than 20 words or returns no results, the tool automatically extracts short keyword phrases via LLM and retries. The effectiveQuery field in the response shows what was actually sent to the search service (null if the original query was used unchanged).

Response fields:

FieldNotes
images[]List of results (see item fields below)
totalCountTotal matches across all pages
pageCurrent page (1-indexed)
pageSizeResults per page
searchRequestIdInternal correlation ID. Server-managed; not passed back through the MCP download tool. Safe to surface in debug output if useful.
effectiveQueryKeywords actually sent to the search service. Null if the original query was used unchanged.
errorMessageNon-null if the search failed

Each images[] item:

FieldNotes
assetIdStock asset ID — required for download. Safe to display alongside the result if useful.
titleImage title
captionImage description
thumbnailUrlSmall preview URL — use for grid display
previewUrlLarger comp/preview URL — use for tile display
widthMax width in pixels
heightMax height in pixels
licenseModele.g. royaltyfree, rightsmanaged
artistContributor/artist name
collectionCollection name

Step 2 — Present Results, then STOP

Render a numbered list with an inline thumbnail for each result, using thumbnailUrl for the image and previewUrl as the click-through link (clicking the thumbnail opens the full preview in the browser):

text
1. [![<title>](<thumbnailUrl>)](<previewUrl>)
   **<title>** — <artist>, <width>×<height>, <licenseModel>
2. ...

This is standard markdown image-in-link syntax ([![alt](thumbnailUrl)](previewUrl)) — it renders an actual thumbnail, not just a text link, and clicking it navigates to previewUrl. If a client doesn't render markdown images, this degrades gracefully to a linked title.

Prefix the list with Searched for: <effectiveQuery> only if effectiveQuery is non-null and differs from the user's original query.

End the turn here. Do not auto-download, do not write files, do not ask a follow-up question. Agentforce injects its own selection UI — a question or auto-select causes a duplicate "double ask". Do not pick a result on behalf of the user.

Non-interactive mode (scheduled/headless, no user present): pick images[0] from the results and note the auto-selection in the report. Then proceed directly to Step 3.


Show full SKILL.md (520 more words)Show less

Step 3 — Download (billed)

⚠️ Each call licenses the image and spends a stock-image download credit. Only invoke after the user explicitly selects an image (or in non-interactive mode, as noted above).

Before calling download_stock_image, verify:

  • User has explicitly named or numbered the image they want (or non-interactive mode is confirmed)
  • This is not an automatic retry of a previous download

MCP tool: download_stock_image (server: media-management) Timeout: 60 seconds

ParameterRequiredDefaultNotes
assetId✅ Yes—Stock asset ID from the prior search_stock_images result, max 50 chars
sizeNocompcomp (web-quality composite, default), medium_jpg, largest (full res, can exceed 100 MB), max 50 chars

Use largest only when the user explicitly asks for full/original resolution.

Response fields:

FieldNotes
assetIdStock asset ID that was downloaded
managedContentBodyIdSalesforce record ID where image bytes are stored
parentContentGenAiOutputIdRecord tracking the download request
childContentGenAiOutputIdRecord linking the request to the persisted body
byteCountSize of the persisted image in bytes
formatResolved image format (e.g. jpg, png, eps, tiff, svg)
urlURL to the persisted image — use this to download or preview it

Step 4 — Download to Client and Preview

After a successful download_stock_image call, download the image locally and open it in VS Code.

You MUST use download-stock-image.py for this. Do not use curl, wget, or any other tool.

bash
python3 scripts/download-stock-image.py \
  --url "<url from download response>" \
  --id "<assetId>" \
  --format "<format from download response>" \
  --preview

The script retrieves org credentials via the sf CLI (sf config get target-org and sf org auth show-access-token), downloads the image with Authorization: Bearer <accessToken> to stockimages/<assetId>.<format>, and opens it in VS Code if --preview is passed.

Pass --output-dir <path> to override the default stockimages/ directory.

Never resize or post-process the image. Use CSS (width, height, object-fit) to control display dimensions.

Vector/binary formats (eps, tiff): always pass the exact format returned by the download response — never substitute a format like jpg to work around a validation error; the file bytes won't match the extension and the file will appear corrupted. VS Code cannot render eps/tiff previews, so the script skips --preview for those formats automatically and still reports the saved path.


Step 5 — Report Back

After a successful download, tell the user:

  • Image title and artist
  • Local path to the saved image (printed by the script)
  • managedContentBodyId
  • Attribution: {artist} · {collection} (use the attribution string returned by the download response when present)

Fallbacks & Errors

SituationAction
errorMessage non-null in searchShow it; suggest a simpler query or different searchType/orientation
images emptySuggest broader keywords; try switching Editorial vs Creative
effectiveQuery differsInform user what the search service actually received
MCP tools unavailableUse the placeholder URL below — do not download or save
Download failsShow error; do NOT retry automatically — confirm with user first (each retry is billed)

Placeholder

If search_stock_images and download_stock_image are both unavailable, use this URL directly as src or CSS url():

text
https://cdn.scs.static.lightning.force.com/content/assets/d5222d4a11e6c2b735152d7eea824ce4/placeholder.svg

Placeholder policy: There is only one placeholder URL. Do not download it, modify it, or generate alternative placeholders using Python, ImageMagick, or any other tool. If the user asks for a placeholder of a specific size or format, tell them only this URL is available and direct them to use CSS to scale it at the point of use.

© forcedotcom, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (scripts) in skills/experience-content-media-stock-image-search of forcedotcom/sf-skills.

  • SKILL.md
  • scripts/download-stock-image.py

Open the folder on GitHubat commit 4bbae5c

Compare with similar skills

Experience Content Media Stock Image Search next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Experience Content Media Stock Image Search compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Experience Content Media Stock Image Search this skillforcedotcom/sf-skills1.1k—~3.2kAutomated safety check: PassApache-2.0
SEO Image GeneratorAgriciDaniel/claude-seo19k2 repos~2.1kAutomated safety check: PassMIT
Gauntlet Loopduolahypercho/gauntlet-loop165—~689Automated safety check: PassMIT
Blog ImageAgriciDaniel/claude-blog2.3k—~3.4kAutomated safety check: PassMIT
Art StyleDV0x/creative-ad-agent120—~477Automated safety check: PassMIT
ContentGerstep/cybos104—~616Automated safety check: PassNone

Similar skills

  • SEO Image Generator

    AgriciDaniel/claude-seo

    Generates Open Graph previews, blog hero images, product photos and infographics for SEO use through Gemini image tools and the banana extension.

    19k GitHub starsUsed in 2 repos~2.1k tokens
    Media & CreativeAuto-check passed
  • Gauntlet Loop

    duolahypercho/gauntlet-loop

    GAME skill. An agent skill from duolahypercho/gauntlet-loop.

    165 GitHub stars~689 tokensUpdated 2 mo ago
    Media & CreativeAuto-check passed
  • Blog Image

    AgriciDaniel/claude-blog

    AI image generation and editing for blog content powered by Gemini via MCP.

    2.3k GitHub stars~3.4k tokensUpdated 2 days ago
    Media & CreativeAuto-check passed
  • Art Style

    DV0x/creative-ad-agent

    Creates visual prompts from hooks. An agent skill from DV0x/creative-ad-agent.

    120 GitHub stars~477 tokensUpdated 1 mo ago
    Media & CreativeAuto-check passed
  • Content

    Gerstep/cybos

    Generate posts, essays and images following brand guidelines.

    104 GitHub stars~616 tokensUpdated 1 mo ago
    Media & CreativeAuto-check passed
  • ComfyUI Local Driver

    SlavaSexton/ComfyUI-Agent-Kit

    Drives a local ComfyUI install over its HTTP API to generate and edit images, video and audio, with per-model prompt recipes and workflow guidance.

    105 GitHub stars~12k tokensUpdated 1 mo ago
    Media & CreativeAuto-check passed

More from forcedotcom/sf-skills

All 252 skills in this repo
  • Agentforce Architecture Analyze

    forcedotcom/sf-skills

    Declared architecture snapshot for one Agentforce agent: planner, topics, actions, flows, Apex, prompt templates, and NGA plugins.

    1.1k GitHub stars~4.5k tokensUpdated yesterday
    Auto-check passed
  • Agentforce D360 Analyze

    forcedotcom/sf-skills

    Data Cloud 360° view of a single Agentforce session. An agent skill from forcedotcom/sf-skills.

    1.1k GitHub stars~3.4k tokensUpdated yesterday
    Auto-check passed
  • Apply a Salesforce sandbox post-copy automation JSON config against a target org.

    1.1k GitHub stars~5.3k tokensUpdated yesterday
    Auto-check: notes
  • Apply a Salesforce sandbox post-copy automation JSON config against a target org.

    1.1k GitHub stars~5.4k tokensUpdated yesterday
    Auto-check: notes
  • Design Systems Slds Apply

    forcedotcom/sf-skills

    Apply SLDS-compliant UI using the correct blueprints, styling hooks, utility classes, and icons.

    1.1k GitHub stars~3.7k tokensUpdated yesterday
    Auto-check passed
  • Experience Lwc Generate

    forcedotcom/sf-skills

    Lightning Web Components with PICKLES methodology and 165-point scoring.

    1.1k GitHub stars~2.4k tokensUpdated yesterday
    Auto-check passed

Questions about Experience Content Media Stock Image Search

What does Experience Content Media Stock Image Search do?

Searches for and downloads ethically-licensed stock images via the media-management MCP server. Experience Content Media Stock Image Search is an agent skill from forcedotcom/sf-skills. Searches for and downloads ethically-licensed stock images via the media-management MCP server.

When should I use Experience Content Media Stock Image Search?

Experience Content Media Stock Image Search fits situations like: A user wants an image; picture — for BOTH requests to find existing imagery (find a stock image; search for a photo of X; get a royalty-free image.

How do I install Experience Content Media Stock Image Search in Claude Code?

Run `npx skills add forcedotcom/sf-skills --skill experience-content-media-stock-image-search -a claude-code`. Or copy the skill folder (skills/experience-content-media-stock-image-search in forcedotcom/sf-skills) into .claude/skills/experience-content-media-stock-image-search in your project. Claude Code loads it when a task matches its description.

How do I install Experience Content Media Stock Image Search in Codex?

Run `npx skills add forcedotcom/sf-skills --skill experience-content-media-stock-image-search -a codex`. Or copy the skill folder (skills/experience-content-media-stock-image-search in forcedotcom/sf-skills) into .agents/skills/experience-content-media-stock-image-search in your project. Codex loads it when a task matches its description.

Can I use Experience Content Media Stock Image Search in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add forcedotcom/sf-skills --skill experience-content-media-stock-image-search -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/experience-content-media-stock-image-search, .gemini/skills/experience-content-media-stock-image-search, .github/skills/experience-content-media-stock-image-search and .opencode/skills/experience-content-media-stock-image-search in your project.

What does Experience Content Media Stock Image Search need to run?

Going by SKILL.md and its folder, Experience Content Media Stock Image Search needs Python for the scripts in its folder and the command-line tools its instructions call (sf and python3). Our summary lists: Python 3. Its frontmatter pre-approves these tools: mcp__media_management__search_stock_images, mcp__media_management__download_stock_image.

Does Experience Content Media Stock Image Search access the network?

SKILL.md names 1 domain. In commands or code: cdn.scs.static.lightning.force.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Experience Content Media Stock Image Search safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Experience Content Media Stock Image Search use?

Experience Content Media Stock Image Search is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Experience Content Media Stock Image Search use?

About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Experience Content Media Stock Image Search?

Skills that share tags, products or a category with Experience Content Media Stock Image Search: SEO Image Generator (AgriciDaniel/claude-seo, 19k stars), Gauntlet Loop (duolahypercho/gauntlet-loop, 165 stars), Blog Image (AgriciDaniel/claude-blog, 2.3k stars) and Art Style (DV0x/creative-ad-agent, 120 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Experience Content Media Stock Image Search?

forcedotcom (a GitHub organization) maintains it in forcedotcom/sf-skills, which has 1,067 GitHub stars. The repository holds 252 skills in this directory. The repository was last updated on October 9, 2026.

Source: forcedotcom/sf-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.