skills/search/SKILL.md
Semantic search across all tracked Figma frames using QMD hybrid search. Finds frames by content, component names, text strings, or natural language queries like "the login screen" or "frames with portfolio charts". Use when the user runs /figma-differ:search or says "find the Figma frame for", "which frame has", "search Figma frames", or "find frames with".
npx skillsauth add tokyo-megacorp/figma-differ searchInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Verify QMD is installed:
command -v qmd >/dev/null 2>&1
If not installed, tell the user: Install QMD for semantic search: brew install qmd and stop.
Verify the figma collection exists:
qmd collection show figma 2>/dev/null
If no collection, tell the user to run /figma-differ:track <url> first and stop.
Use qmd search scoped to the figma collection for fast keyword results:
qmd search -n 10 -c figma "<query>"
For richer semantic results (uses vectors + reranking, slower on first run):
qmd query -n 10 -c figma --min-score 0.2 "<query>"
Prefer qmd search for speed. Use qmd query when keyword search returns poor results or the user asks for "semantic" or "similar" frames.
If no results from either, fall back with a lower threshold:
qmd search -n 10 -c figma --min-score 0.1 "<query>"
QMD outputs results with paths like <fileKey>/<nodeId_safe>/frame.md and match scores.
For each result:
fileKey and nodeId_safe from the pathnodeId_safe back to nodeId (replace _ with :)title, figma_page, figma_url, figma_type, node_count## Components Used section for contextFormat results as a ranked list:
Search: "<query>" (N results)
1. [92%] Login Screen
Page: Auth Flows | Type: FRAME | 177 nodes
Components: Modal, Keyboard, iOS Bar
Figma: <figma_url>
2. [78%] Recovery Login
Page: Auth Flows | Type: FRAME | 94 nodes
Components: Input Field, Button, Link
Figma: <figma_url>
3. [65%] ...
Run /figma-differ:diff <url> to check a frame for changes.
If no results found, suggest:
/figma-differ:sync to refresh the indextesting
Subscribe to a Figma file for automatic syncing and semantic search. Adds the file to tracked.json, runs initial index + snapshot-all + frame.md generation, and initializes the QMD search collection. Use when the user runs /figma-differ:track or says "track this Figma file", "subscribe to Figma", "watch this design file", or "add to tracked files".
documentation
Refresh snapshots and search index for tracked Figma files. Fetches current state from Figma, generates frame.md documents, and updates the QMD search index. Use when the user runs /figma-differ:sync or says "sync Figma", "refresh snapshots", "update the Figma index", or "re-sync tracked files".
tools
Takes a snapshot of a Figma node — fetches its JSON structure and PNG screenshot and stores both to ~/.figma-differ/ for later diffing. Use when the user runs /figma-differ:snapshot with a Figma URL, or says "snapshot this Figma frame", "save a Figma baseline", or "take a Figma snapshot".
development
Bulk snapshots every frame in a Figma file — fetches all node JSONs, exports PNGs, and stores comments. Uses a single API call for the tree and batched image exports. Use when the user runs /figma-differ:snapshot-all with a Figma file URL, or says "snapshot all frames", "bulk snapshot", "baseline the whole file", or "snapshot everything in this Figma file".