multi-brand — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited multi-brand (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Set up and manage multiple brand themes in a single Figma design system using variable modes. Each brand gets its own mode with distinct color, typography, and spacing tokens. Supports switching between brands and verifying cross-brand consistency.
Figma variable modes enable multi-brand by storing different values per brand in the same variable:
Collection: "Brand Colors"
Modes: [Brand A, Brand B, Brand C]
Variable: color/primary
Brand A: #3B82F6 (blue)
Brand B: #10B981 (green)
Brand C: #8B5CF6 (purple)
Variable: color/surface
Brand A: #FFFFFF
Brand B: #F0FDF4
Brand C: #FAF5FFComponents bound to these variables automatically switch appearance when the mode changes.
ping → verify plugin connection
load_toolset("variables") → variable/collection/mode managementIf `ping` fails (plugin not connected): STOP. Do not fall back to other MCP servers. Tell user: open Figma → Plugins → FigCraft → wait for connection, then retry.
variables_ep(method: "list_collections") → existing collections and modes
variables_ep(method: "list") → all variables with current valuesDetermine if multi-brand is already set up (multiple modes in color collections) or needs to be created.
If creating from scratch:
add_collection_mode(collectionId: "...", name: "Brand B")If renaming existing modes:
rename_collection_mode(collectionId: "...", modeId: "...", name: "Brand A")For each brand mode, set variable values:
variables_ep(method: "update", variableId: "...", valuesByMode: {
"modeId-brand-a": "#3B82F6",
"modeId-brand-b": "#10B981"
})For multi-mode token sync from DTCG files:
load_toolset("tokens")
sync_tokens_multi_mode(modes: {
"Brand A": "tokens/brand-a.json",
"Brand B": "tokens/brand-b.json"
}, collectionName: "Brand Colors")Set explicit variable mode on screen frames to preview each brand:
set_explicit_variable_mode(nodeId: "screen-frame-id", collectionId: "...", modeId: "brand-b-mode-id")This makes the entire screen and its children resolve variables using Brand B values.
For each brand mode, verify:
Verification workflow per brand:
set_explicit_variable_mode(nodeId: "...", collectionId: "...", modeId: "brand-x")
export_image(nodeId: "...", scale: 2) → screenshot for visual check
lint_fix_all(categories: ["wcag"]) → contrast checkCreate side-by-side brand previews:
For each key screen, clone the frame and set different brand modes:
nodes(method: "clone", items: [{ id: "screen-id", name: "Screen - Brand B", x: 500 }])
set_explicit_variable_mode(nodeId: "cloned-id", collectionId: "...", modeId: "brand-b")Export comparison screenshots for stakeholder review.
Collection: "Color" modes: [Brand A, Brand B]
Collection: "Spacing" modes: [Value] ← shared across brands
Collection: "Radius" modes: [Value] ← shared across brandsOnly color varies between brands. Spacing and radius are shared.
Collection: "Primitives" modes: [Brand A, Brand B, Brand C]
Collection: "Semantic" modes: [Light, Dark]Primitives vary per brand. Semantic tokens alias primitives and vary by light/dark mode.
Collection: "Primitives" modes: [Brand A, Brand B, ...] ← brand palette
Collection: "Semantic" modes: [Light, Dark] ← aliases to primitives
Collection: "Component" modes: [Default] ← aliases to semanticThree-tier architecture: primitives (brand-specific) → semantic (mode-specific) → component (stable API).
Before publishing a multi-brand system:
save_version_history before major brand changes~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.