$npx -y skills add forcedotcom/sf-skills --skill experience-content-media-searchSearches for and retrieves existing visual media (images, logos, icons, photos, graphics, banners, thumbnails, hero images, backgrounds) from sources such as Salesforce CMS, Data 360 or any other source. Use this skill ANY TIME a user request involves finding, searching, getting,
| 1 | # Media Search |
| 2 | |
| 3 | Universal routing skill for searching and retrieving existing images and media. |
| 4 | |
| 5 | ## Scope |
| 6 | |
| 7 | **This skill is for SEARCHING FOR existing media, not CREATING new media.** |
| 8 | |
| 9 | **Use this skill when the user wants to:** |
| 10 | - Search for images in Salesforce CMS, Data Cloud |
| 11 | - Find existing visual assets to use in their app |
| 12 | - Retrieve media from connected sources |
| 13 | - Browse available images for their project |
| 14 | - Locate specific photos or graphics |
| 15 | |
| 16 | **DO NOT use this skill when the user wants to:** |
| 17 | - Generate new images with AI (use image generation tools) |
| 18 | - Create graphics or designs from scratch |
| 19 | - Edit or modify existing images |
| 20 | - Build custom visuals or diagrams |
| 21 | |
| 22 | ## Before You Search |
| 23 | |
| 24 | **CRITICAL: This is a routing skill, not a direct search skill.** |
| 25 | |
| 26 | When a user requests to find an image: |
| 27 | |
| 28 | **Your first action MUST use the ask_followup_question tool to present search sources.** |
| 29 | |
| 30 | 1. **Use ask_followup_question** to present available search sources as options |
| 31 | 2. **Receive the user's selection** from the tool response |
| 32 | 3. **Then** call the appropriate search tool based on their choice |
| 33 | |
| 34 | |
| 35 | **Example of what NOT to do:** |
| 36 | - ❌ Calling ANY tool before the user picks a source (MCP tools, file reads, descriptor checks, etc.) |
| 37 | - ❌ "Checking which MCP tools are available" — do not probe or discover tools via tool calls |
| 38 | - ❌ Immediately calling `search_electronic_media` or `search_media_cms_channels` |
| 39 | - ❌ Reading MCP tool descriptors or schemas to see what's available |
| 40 | - ❌ Deciding which search source to use without asking |
| 41 | |
| 42 | **Example of what TO do:** |
| 43 | - ✅ Respond with ONLY text — a numbered list of search sources |
| 44 | - ✅ Ask: "Which option would you like to use?" |
| 45 | - ✅ Wait for user to reply with their choice |
| 46 | - ✅ Then (and only then) call the tool they selected |
| 47 | |
| 48 | **Your first response when this skill triggers MUST be a text-only message presenting search sources. No tool calls. No exceptions.** |
| 49 | |
| 50 | |
| 51 | ## Workflow Overview |
| 52 | |
| 53 | **The user MUST choose the search source. You CANNOT skip this step.** |
| 54 | |
| 55 | Copy this checklist and track your progress: |
| 56 | |
| 57 | ``` |
| 58 | Media Search Progress: |
| 59 | - [ ] Step 1: Check your own tool list for available search tools (no tool calls — just inspect what's in your context) |
| 60 | - [ ] Step 2: Present only the available options to the user as a numbered list (plain text, no tool calls) |
| 61 | - [ ] Step 3: Wait for the user to reply with their selection |
| 62 | - [ ] Step 4: Execute the selected search method (this is the first tool call) |
| 63 | - [ ] Step 5: Present all results to user for selection |
| 64 | - [ ] Step 6: Apply selected image to code |
| 65 | ``` |
| 66 | |
| 67 | If you call any tool before step 4, you are not following this skill correctly. |
| 68 | |
| 69 | ## Presenting Search Sources (First Response) |
| 70 | |
| 71 | **DO NOT call any tool, read any MCP descriptor, or make any external request to determine available tools.** |
| 72 | |
| 73 | Your tools are already loaded into your context. Look at the tool names you already have access to — this is introspection, not a tool call. |
| 74 | |
| 75 | **Step 1: Check your own tool list (no tool calls)** |
| 76 | |
| 77 | Look at the tools already in your context and check for these names: |
| 78 | - `search_media_cms_channels` → If present, include **"Search using keywords"** |
| 79 | - `search_electronic_media` → If present, include **"Search using Data 360 hybrid search"** |
| 80 | - Always include **"Other"** as the last option |
| 81 | |
| 82 | **Step 2: Build your response** |
| 83 | |
| 84 | Include ONLY the sources whose tools you actually have. Number them sequentially. |
| 85 | |
| 86 | ``` |
| 87 | I can help you find that image. Where would you like to search? |
| 88 | |
| 89 | [NUMBER]. [SEARCH SOURCE NAME] — [Brief description] |
| 90 | ... |
| 91 | [NUMBER]. Other — Provide your own URL or path |
| 92 | |
| 93 | Which option would you like to use? |
| 94 | ``` |
| 95 | |
| 96 | **Step 3: Stop and wait** |
| 97 | |
| 98 | After presenting the list, STOP. Do not call any tool. Do not proceed. Wait for the user to reply with their choice. |
| 99 | |
| 100 | ### Examples |
| 101 | |
| 102 | **Both tools available:** |
| 103 | ``` |
| 104 | I can help y |