Ambient depth
An opinionated, local Figma bridge for AI coding workflows — your agent paints screens, you review the whole product at once.
npx -y skills add egoisutolabs/mercury --skill ambient-depthAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Add premium ambient glow / atmospheric depth to dark-mode Figma screens using blurred alpha ellipses. Use when the designer asks for "ambient depth", "premium feel", "glow behind hero number", "iOS-style atmosphere", "aurora background", "dark mode with depth", or similar. Works on any frame; no component dependency.
SKILL.md
4.3 KB, as published. Nobody here has run it
Ambient Depth (Mercury)
A premium dark-mode UI needs more than a dark background. It needs atmosphere: soft, blurred color blooms behind the hero content that suggest light sources off-frame. The recipe is small but every part matters.
The recipe
One ambient bloom = a large, translucent ellipse + a heavy layer blur, placed in a parent that does not clip. Two blooms at different hues give multi-light depth (e.g., teal + magenta on a near-black background).
Rules that must hold:
- Size > frame. The ellipse should be larger than the content it sits behind. A typical 390×844 iPhone frame uses a 500×500 ellipse.
- Color is a fill with alpha baked into the hex. Use an 8-character hex
like
#22D3A540(25% alpha), not a 6-char hex plusopacity: 0.25. The blur effect interacts better with per-fill alpha than with node opacity. - Blur is a LAYER_BLUR effect, radius 150–200. Below 120 the bloom looks like a discrete shape. Above 220 it smears into nothing.
- Parent must have
clipsContent: false. Otherwise the bloom hits the parent's rectangular bounds and shows a hard edge — the exact opposite of atmosphere. - Z-order matters. The ellipse sits above the background fill but below everything else. Create it early; it needs to be the lowest content child.
- Do not use
icon create. Icons return frames-as-components, not paint surfaces. Use rawcreatewithkind: "ellipse".
Hue pairing for two-light scenes
Pick complementary accent hues from your palette. Typical combinations that
read as premium on near-black (#0A0A0B):
- Emerald
#22D3A540+ Violet#8B5CF640 - Amber
#F59E0B40+ Rose#F43F5E40 - Cyan
#06B6D440+ Magenta#EC489940
Place the two ellipses in different quadrants (e.g., top-left and bottom-right). Stagger their sizes slightly so the blooms don't read as symmetric.
Workflow
- Check the bridge with
mcp__mercury__ping. - Identify the target frame. If the designer gave an id, use it. Else use
mcp__mercury__query op:selectionand take the outermost frame. - Patch the frame to
clipsContent: falseviamcp__mercury__patch. (Remember to restore this if the original design required clipping — ask.) - Create the ellipse(s) with
mcp__mercury__create kind:"ellipse", sized 500×500 (or larger than the frame's smaller dimension), positioned so their center sits near the content they should halo. - Apply the fill + blur with
mcp__mercury__paint:fills: [{ type: "SOLID", color: "#22D3A540" }]effects: [{ type: "LAYER_BLUR", radius: 180, visible: true }]
- Push to back. Use
mcp__mercury__nodes op:moveor rely on creation order — create the ellipse before other foreground elements. - Verify visually. Call
mcp__mercury__export_nodeon the parent frame and look at the PNG. If you see hard edges, the parent is still clipping. If the bloom is invisible, the alpha is too low or the blur is too high.
Prefer batching steps 4–6 in a single mcp__mercury__batch call so it's one
undo step.
Common mistakes
- Using
opacity: 0.25on the ellipse node instead of alpha in the hex. Node opacity applies after the blur; per-fill alpha applies before. The former looks flatter. - Forgetting
clipsContent: false. The bloom will show a crisp rectangle edge where it hits the frame boundary. - Putting the ellipse in an auto-layout frame. Auto-layout will pack it
and move it. Use a non-auto-layout parent, or set
layoutPositioning: "ABSOLUTE"on the ellipse. - Using
icon createfor the glow. Icons are components. Use rawcreatewithkind: "ellipse".
When NOT to use this
- Light-mode designs. Ambient depth reads as dirty on white.
- Information-dense screens (tables, dashboards with tight spacing). The bloom competes with content.
- When the designer explicitly wants flat / brutalist / editorial.