create-interface

Render custom HTML interfaces directly in chat using the mcp__noetect-ui__render_ui tool. Perfect for forms, charts, tables, dashboards, and interactive widgets.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "create-interface" with this command: npx skills add cdeistopened/opened-vault/cdeistopened-opened-vault-create-interface

Create Interface

Render custom HTML interfaces directly in chat using the mcp__noetect-ui__render_ui tool. Perfect for forms, charts, tables, dashboards, and interactive widgets.

Tool Usage

Tool: mcp__noetect-ui__render_ui Input: html: "<div class='card'><h2>Hello</h2></div>" # Required - HTML content (body only, no <html> wrapper) title: "My Widget" # Optional - header above the UI height: 300 # Optional - fixed height in pixels (default: auto-resize)

Theme Integration

The UI automatically inherits the app's current theme. Use CSS variables for consistent styling across light/dark modes.

Surface Colors (backgrounds)

Variable Usage

var(--surface-primary)

Main background

var(--surface-secondary)

Cards, elevated surfaces

var(--surface-tertiary)

Nested containers

var(--surface-accent)

Highlighted areas

var(--surface-muted)

Subtle backgrounds, code blocks

Content Colors (text)

Variable Usage

var(--content-primary)

Main text

var(--content-secondary)

Secondary text, labels

var(--content-tertiary)

Muted text, placeholders

var(--content-accent)

Highlighted text

Border Colors

Variable Usage

var(--border-default)

Standard borders

var(--border-accent)

Emphasized borders

Semantic Colors

Variable Usage

var(--semantic-primary)

Primary actions, links

var(--semantic-primary-foreground)

Text on primary background

var(--semantic-destructive)

Destructive actions, errors

var(--semantic-destructive-foreground)

Text on destructive background

var(--semantic-success)

Success states

var(--semantic-success-foreground)

Text on success background

Design Tokens

Variable Usage

var(--border-radius)

Standard corner radius

var(--shadow-sm)

Subtle shadow

var(--shadow-md)

Medium shadow

var(--shadow-lg)

Large shadow

Built-in Utility Classes

Text Classes

  • .text-primary

  • Main text color

  • .text-secondary

  • Secondary text color

  • .text-muted

  • Muted/tertiary text color

  • .text-accent

  • Accent text color

  • .text-success

  • Success color

  • .text-destructive

  • Error/destructive color

Background Classes

  • .bg-primary

  • Primary surface background

  • .bg-secondary

  • Secondary surface background

  • .bg-muted

  • Muted surface background

Container Classes

  • .card
  • Styled container with secondary background, border, border-radius, and 16px padding

Pre-styled Elements

These elements have default theme-aware styles applied automatically:

  • body - System font, 14px, primary text color, 12px padding

  • a - Primary semantic color

  • button - Secondary background, border, border-radius, hover state

  • button.primary - Primary semantic background with foreground text

  • button.destructive - Destructive semantic background with foreground text

  • input, select, textarea - Primary background, border, focus ring

  • table, th, td - Full width, border-bottom on rows

  • code - Monospace font, muted background, 2px/4px padding

  • pre - Monospace font, muted background, 12px padding, overflow scroll

Auto-Resize Behavior

By default, the UI auto-resizes to fit its content. The iframe:

  • Measures content height on load

  • Observes DOM mutations and resizes dynamically

  • Responds to window resize events

Set a fixed height parameter to disable auto-resize.

Examples

Simple Card

<div class="card"> <h3 style="margin: 0 0 8px 0;">Status</h3> <p class="text-secondary" style="margin: 0;">All systems operational</p> </div>

Form with Inputs

<div class="card"> <h3 style="margin: 0 0 12px 0;">Contact</h3> <input type="text" placeholder="Name" style="width: 100%; margin-bottom: 8px;"> <input type="email" placeholder="Email" style="width: 100%; margin-bottom: 8px;"> <textarea placeholder="Message" style="width: 100%; height: 80px; margin-bottom: 12px;"></textarea> <button class="primary">Send</button> </div>

Data Table

<table> <thead> <tr><th>Name</th><th>Status</th><th>Actions</th></tr> </thead> <tbody> <tr> <td>Item 1</td> <td class="text-success">Active</td> <td><button>Edit</button></td> </tr> <tr> <td>Item 2</td> <td class="text-muted">Inactive</td> <td><button>Edit</button></td> </tr> </tbody> </table>

Stats Dashboard

<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px;"> <div class="card" style="text-align: center;"> <div style="font-size: 24px; font-weight: 600;">128</div> <div class="text-secondary">Users</div> </div> <div class="card" style="text-align: center;"> <div style="font-size: 24px; font-weight: 600;">1.2k</div> <div class="text-secondary">Events</div> </div> <div class="card" style="text-align: center;"> <div style="font-size: 24px; font-weight: 600;">99.9%</div> <div class="text-secondary">Uptime</div> </div> </div>

Interactive with JavaScript

<div class="card"> <div id="count" style="font-size: 32px; text-align: center; margin-bottom: 12px;">0</div> <div style="display: flex; gap: 8px; justify-content: center;"> <button onclick="update(-1)">−</button> <button class="primary" onclick="update(1)">+</button> </div> </div> <script> let count = 0; function update(delta) { count += delta; document.getElementById('count').textContent = count; } </script>

Security Notes

  • UI renders in a sandboxed iframe with allow-scripts allow-forms

  • No access to parent window, localStorage, cookies, or parent DOM

  • Scripts execute within the iframe only

  • Forms work but submissions stay within the iframe

  • Safe for displaying user-generated or dynamic content

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

meta-ads-creative

No summary provided by upstream source.

Repository SourceNeeds Review
General

ghostwriter

No summary provided by upstream source.

Repository SourceNeeds Review
General

transcript-polisher

No summary provided by upstream source.

Repository SourceNeeds Review