Glassify Ui logo

Glassify Ui

Community
MagicCube
glassify-ui

Transform a UI screenshot into a structured Cinema4D/Octane JSON render prompt for photorealistic 3D poster art. Use this skill whenever the user uploads a UI screenshot (app, website, tool, dashboard) and wants a Cinema4D render prompt, 3D poster, AIGC image prompt, or any photorealistic visualization of an interface. The output is always a clean JSON file — never prose or Midjourney text strings.

Overview

PublisherMagicCube
Repositoryagentara
Skill nameglassify-ui
Stars
516
Forks
58
Bundled files
Instructions only
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by MagicCube on GitHub. Read the source before you install it.

Installation

Install the Glassify Ui AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/MagicCube/agentara/tree/main/user-home/.claude/skills/glassify-ui
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/MagicCube/agentara.git /tmp/agentara
mkdir -p .claude/skills
cp -r /tmp/agentara/user-home/.claude/skills/glassify-ui .claude/skills/glassify-ui
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Glassify Ui in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Glassify Ui on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Glassify Ui is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Cinema4D UI Render Skill

Transform a UI screenshot into a structured JSON render prompt for Cinema4D/Octane. Output purpose: promotional poster art, not documentation. Abstraction beats fidelity.


Core Philosophy: "舍得" (Less is More)

A poster is not a screenshot. The JSON you produce must:

  • Simplify layers — 4–8 layers max. Merge minor UI regions. Omit decorative chrome.
  • Abstract content — No literal button labels unless they define the product identity. Use semantic descriptions: "primary action buttons row" not "Bold / Italic / Underline".
  • Elevate the hero — One layer is the visual anchor (the "hero slab"). Give it the prominent glow, active color, and bloom effect. Everything else supports it.
  • No clutter — Status bars, scrollbars, tooltips, and minor icons: omit entirely unless they are distinctive brand elements.
  • Extract interactive controls as micro_elements — Every visible button, toggle switch, pill chip, or CTA must be listed in the micro_elements array as an independent glass brick with its own z_offset, shape, and tint. Do NOT bury them inside a parent layer's content description. This is mandatory — missing micro_elements is a critical error.

Step 1 — Analyze the Screenshot

Look at the screenshot and extract:

  1. UI category: productivity / developer / creative / mobile / web / dashboard
  2. Brand identity signals: dominant color, logo, product name, characteristic icon
  3. Natural focal region: which area draws the eye first — that becomes the hero layer
  4. Aspect ratio decision (if user has not specified):
    • Desktop/web UI with wide layout → "16:9"
    • Mobile app or portrait-first UI → "9:16"
    • Square or ambiguous → "1:1" or "16:9" as default

Step 2 — Design the Layer Stack

Collapse the real UI into 4–8 abstract depth layers, Z-offset spaced 5–6mm apart. Use this table as a starting template — adapt to the actual UI:

Layer IDTypical RoleZ offsetThicknessRoughnessTransmission
0App shell / chrome0mm8mm0.200.50
1Background / canvas5mm6mm0.150.65
2Main content area10mm5mm0.060.85
3Primary toolbar/nav15mm5mm0.120.70
4Hero element20mm4mm0.080.75
5Floating accent (opt.)25mm3mm0.180.60

Rules:

  • The hero layer gets glow and active_element with effect: "backlit_halo_bloom"
  • Content descriptions use semantic phrases, never exhaustive lists of UI elements
  • Omit Layer 5 if the UI has no natural floating element

micro_elements (mandatory if interactive controls exist)

After the main layer stack, scan the screenshot for every interactive widget: buttons, toggle switches, pill chips, dropdown triggers, submit CTAs, radio buttons, sliders. Each one becomes an entry in micro_elements — a separate floating glass brick:

json
"micro_elements": [
  {
    "id": "me_01",
    "type": "toggle_switch",
    "label_semantic": "Computer mode toggle — active state",
    "parent_layer_id": 1,
    "z_offset_mm": 28,
    "shape": "pill",
    "size": "small",
    "material": {
      "thickness_mm": 2.5,
      "roughness": 0.05,
      "transmission": 0.80,
      "tint": "accent_blue"
    },
    "glow": {
      "color": "#4AA8FF",
      "intensity": 0.5,
      "radius_mm": 6,
      "effect": "edge_rim_glow"
    }
  }
]

type values: button_primary, button_secondary, toggle_switch, pill_chip, dropdown_trigger, icon_button, cta_submit. shape values: rectangle, pill, circle, square. tint values: accent_blue, accent_teal, neutral_white, clear, warm_white, cool_white.


Step 3 — Choose Environment & Tone

Default white balance is neutral-to-slightly-cool (5200–5600K). Avoid warm golden tones unless explicitly requested. Match environment to UI category:

UI CategoryEnvironmentTonePalette
Productivitybright_minimal_desk_daylightneutral_coolclean_daylight
Developer / Codedark_minimalist_desk_led_stripcoolcool_white_led
Creative / Designarchitects_drafting_tableneutral_coolsoft_overcast
Mobile Appwhite_marble_surface_lifestyleneutral_coolclean_daylight
Dashboard / Dataglass_conference_tablecoolmorning_cool_light

Props are 2–3 contextually appropriate objects, soft bokeh background. UI float height: 15–20cm above surface.


Step 4 — Output the JSON

Produce exactly this structure. No extra fields, no prose, no markdown around the JSON.

json
{
  "task": "photorealistic_3d_render",
  "renderer": "Cinema4D_Octane",
  "resolution": "8K",
  "aspect_ratio": "<16:9 | 9:16 | 1:1>",
  "source_ui": "<product name — short description>",

  "negative_prompt": [
    "no annotation text",
    "no dimension labels",
    "no callout lines",
    "no layer name overlays",
    "no technical labels in scene",
    "no dark mode UI",
    "no dark backgrounds on UI panels",
    "no `Layer 1`, `Layer 2`, ..., `Layer N` callouts and annotations"
  ],

  "layers": [
    {
      "id": 0,
      "name": "<semantic_name>",
      "z_offset_mm": 0,
      "content": ["<abstract description, max 2 items>"],
      "material": {
        "thickness_mm": 8,
        "roughness": 0.20,
        "transmission": 0.50,
        "tint": "<neutral_gray | warm_white | cool_white | clear>"
      },
      "glow": null
    }
  ],

  "micro_elements": [
    {
      "id": "me_01",
      "type": "<button_primary | button_secondary | toggle_switch | pill_chip | dropdown_trigger | icon_button | cta_submit>",
      "label_semantic": "<what this control does, not its literal text>",
      "parent_layer_id": 1,
      "z_offset_mm": 28,
      "shape": "<rectangle | pill | circle | square>",
      "size": "<small | medium | large>",
      "material": {
        "thickness_mm": 2.5,
        "roughness": 0.05,
        "transmission": 0.80,
        "tint": "<accent_blue | accent_teal | neutral_white | clear | cool_white>"
      },
      "glow": null
    }
  ],

  "hero_layer_id": "<integer>",

  "material_global": {
    "type": "frosted_acrylic_glass",
    "edge_bevel_mm": 1.5,
    "chromatic_aberration": true,
    "ray_traced_reflections": true,
    "ambient_occlusion_between_layers": true
  },

  "environment": {
    "scene": "<environment_key>",
    "surface": "<material>",
    "props": ["<prop_1>", "<prop_2>"],
    "ui_float_height_cm": 18,
    "caustic_shadow_on_desk": true
  },

  "camera": {
    "angle": "three_quarter_perspective",
    "tilt_degrees": 10,
    "position": "slightly_right_of_center",
    "focal_length_mm": 100,
    "aperture": "f/1.2",
    "bokeh_blur": true,
    "focus_target": "layer_<hero_id>",
    "dof_blur_layers": [0, 1, "environment"]
  },

  "lighting": {
    "tone": "neutral_cool",
    "white_balance_kelvin": 5400,
    "palette": "<palette_key>",
    "key":  { "position": "top_center",  "color": "#F5F8FF",  "type": "soft_area"    },
    "rim":  { "position": "upper_left",  "color": "#C8DEFF",  "type": "backlit_edge" },
    "fill": { "position": "lower_right", "color": "#EAF0FF",  "type": "bounce"       }
  },

  "style_tags": [
    "photorealistic",
    "Fluent_Design",
    "physically_based",
    "light_mode_ui",
    "neutral_cool_white_balance",
    "no_annotation_text",
    "no_cartoon",
    "no_flat",
    "no_watermark"
  ]
}

Quality Checklist (self-review before output)

Before writing the final JSON, verify:

  • Layer count is 4–8, not more
  • Each content array has ≤ 3 items, all semantic (no literal button labels)
  • Exactly one layer has a glow value and an active_element
  • hero_layer_id matches that layer's id
  • focus_target in camera matches hero_layer_id
  • Environment and tone are consistent — default is neutral_cool, never warm/golden unless user asked
  • white_balance_kelvin is set (5200–5600K range for neutral cool)
  • negative_prompt array is present and includes annotation-text suppressors
  • micro_elements array is present if the UI has any buttons, toggles, or chips
  • Every button / toggle / pill in the screenshot has a corresponding micro_element entry
  • style_tags includes "light_mode_ui" and "no_annotation_text"
  • Aspect ratio is decided and justified
  • No midjourney_suffix or prose fields present

Frequently asked questions

What does the Glassify Ui AI skill do?

Transform a UI screenshot into a structured Cinema4D/Octane JSON render prompt for photorealistic 3D poster art. Use this skill whenever the user uploads a UI screenshot (app, website, tool, dashboard) and wants a Cinema4D render prompt, 3D poster, AIGC image prompt, or any photorealistic visualization of an interface. The output is always a clean JSON file — never prose or Midjourney text strings.

Why use Glassify Ui on TypingMind?

Because you install it once and use it with any model. Glassify Ui is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Glassify Ui in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/MagicCube/agentara/tree/main/user-home/.claude/skills/glassify-ui. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Glassify Ui?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Glassify Ui?

As many as you like. As long as a model supports skills, you can use Glassify Ui with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Glassify Ui AI skill free?

It is published on GitHub by MagicCube. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇