Agent skill

Runtime UI

by LunCoSim in LunCoSim/lunco-sim

Author or review a reloadable Twin-facing HTML/CSS-like runtime surface in LunCoSim.

Apache-2.0Auto-check passedFrontend & Design

Install Runtime UI

skills CLI
$ npx skills add LunCoSim/lunco-sim --skill runtime-ui -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install LunCoSim/lunco-sim runtime-ui --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/LunCoSim/lunco-sim.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/runtime-ui .claude/skills/runtime-ui && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
runtime-ui
GitHub stars
105
Token cost
~5k tokens
SKILL.md length
2,546 words
Files
1
Skills in repo
38
Repo updated
First seen
Licence
Apache-2.0

At a glance

Author or review a reloadable Twin-facing HTML/CSS-like runtime surface in LunCoSim.

  • Works in 4 steps: Define a generic capability namespace → Add the template and stylesheet → Register bindings, gates, actions, and… → …
  • Frontend & Design work in your project
  • SKILL.md covers Read first, Choose the right layer, Authoring workflow and Reload loop, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Runtime UI is an agent skill from LunCoSim/lunco-sim. Author or review a reloadable Twin-facing HTML/CSS-like runtime surface in LunCoSim. Use this for HUDs, telemetry cards, progress overlays, view switchers, runtime UI bindings, HTML/CSS hot reload, HUI, Flair, EngineExposures, or questions about the limits of the native HTML UI. Use lunco-ui instead for workbench/egui panels and docking internals.

Its SKILL.md is about 5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Frontend & Design. The repository describes itself as: Collaborative Multiphysics Cosimulator For Space Missions 🌎🚀🌚. The licence is Apache-2.0.

When your agent uses it

  • Frontend & Design work in your project

Example prompts

  • “/runtime-ui”

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Define a generic capability namespace
  2. Add the template and stylesheet
  3. Register bindings, gates, actions, and placement
  4. Map actions through the existing command path

What it can do on your machine

Read from SKILL.md and the folder at commit d1c6f00. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are rust, html, css and json).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Runtime UI loads about 5k tokens when it runs. Until then it costs about 90 tokens; SKILL.md has 2,546 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~90
When it runs · the whole SKILL.md, loaded when a task matches
~5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from LunCoSim/lunco-sim at commit d1c6f00, republished under its Apache-2.0 licence (© LunCoSim). 2,546 words, ~4,994 tokens.

Download SKILL.mdSave it as .claude/skills/runtime-ui/SKILL.md (or your agent's skills folder).
name
runtime-ui
description
Author or review a reloadable Twin-facing HTML/CSS-like runtime surface in LunCoSim. Use this for HUDs, telemetry cards, progress overlays, view switchers, runtime UI bindings, HTML/CSS hot reload, HUI, Flair, EngineExposures, or questions about the limits of the native HTML UI. Use lunco-ui instead for workbench/egui panels and docking internals.

Runtime-authored UI

Read first

Before changing a runtime surface, read:

  1. docs/architecture/runtime-authored-ui.md
  2. assets/ui/README.md
  3. skills/lunco-ui/SKILL.md when the surface overlaps egui, the workbench, or docking
  4. skills/test-via-api/SKILL.md for live verification

The generic implementation is lunco-workbench-runtime-ui; the luncosim windowed host in crates/lunco-luncosim-ui/src/ui/ supplies app-specific gates, capture mode, and action handling. Do not assume that lunica or a headless server has this surface manifest.

The current compatible dependency baseline is bevy_hui 0.7.0, bevy_flair 0.8.1, and Bevy 0.19.1; verify the lockfile and upstream release notes before changing it. HUI 0.7 is the Bevy 0.19 release. The separate bevy_hui_widgets 0.6.0 crate provides primitive text-input, slider, and select components, but is intentionally not a LunCoSim dependency: it does not define our clipboard, validation, keyboard-navigation, accessibility, or modal semantics.

Choose the right layer

Use runtime HTML/CSS for a small authored presentation surface that should be changed without recompiling Rust: HUDs, status cards, progress overlays, telemetry summaries, and simple buttons.

Use lunco-workbench/egui for the application shell, docking, code editors, large inspectors, rich text input, complex forms, modal dialogs, and controls that need semantics not present in the runtime contract. Runtime UI uses the existing egui host and dock geometry; it does not replace the workbench or create a second hit-test/camera system.

The standard Twin and Files navigation is the optional lunco-workbench-browser feature layered on the shell; do not recreate those panels in an authored runtime surface.

lunco-ui::modal remains the owner for rich dialogs requiring focus, queued outcomes, editing, validation, or accessibility. The generic runtime surface also supports a deliberately small authored modal contract: a viewport surface may declare modal: true and an authored dismiss_action; visible controls own their computed input regions and Escape emits that semantic action. Generic keyed collection hosts provide dynamic rows, while Rhai owns the records, labels, ordering, visibility, and action meaning. Do not grow this into a second rich-dialog implementation without a separate typed contract and acceptance tests.

Twin-authored actions are open-ended semantic identifiers. The reusable program-browser surface publishes typed arrays of records; its HUI row template is reconciled by the generic keyed collection host. A surface may also declare a generic dropdown: the manifest supplies the trigger, option source, key/label/action field names, and Rhai-owned width/max-height sources. The compact camera-status surface is one consumer of that primitive, not a camera-specific widget. program_editor owns selection, editor focus, atomic source switching, and creation for any authored program, regardless of whether its owner is a rover, lander, route, or another model. Rich source text entry remains in the existing Rhai editor/REPL until HUI gains tested typed input semantics.

For dynamic semantic controls, use the HUI convention on_press="runtime_ui_authored_action" tag:action="{action}". Additional tag:* values become a typed HookValue parameter map on the generic action event; the runtime does not concatenate names and values into a protocol string. This permits Twin-defined actions and dynamic controls without registering one Rust callback per item. Do not use JavaScript or encode action payloads as JSON.

Collection hosts retain the Rhai-authored row order, clip their list, and consume wheel input at the host boundary. They own row lifecycle only; do not add a per-surface Rust list resource or a fixed row-count view model.

Use stable id attributes and #id selectors for authored HUI nodes. Flair supports class selectors, but HUI 0.7 does not turn an HTML class attribute into a ClassList; it treats that attribute as an unknown style property.

Project-owned visibility policy belongs in the active Twin manifest's generic [settings] table. A surface declares setting plus setting_default in runtime_surfaces.json; Rhai reads/writes the same scope with get_twin_setting/set_twin_setting. Keep user-global diagnostics, theme, input visualisation, and window preferences in lunco-settings. Missing Twin keys use the surface's authored default, so Rust does not grow a field for each new preference.

Authoring workflow

1. Define a generic capability namespace

Add or extend an engine-side producer only when the value is not already available. Publish authoritative, presentation-ready named values through EngineExposures:

rust
let mut ui = exposures.writer("mission-status");
ui.visible(has_mission);
ui.property("title", mission_title);
ui.property("state", state_label);
ui.property("state_color", "var(--ok-color)");

The namespace is a capability boundary shared by HTML, egui, API, telemetry, and remote consumers. Do not add domain_to_view, vessel_exposure, or a widget-specific Rust registry. Resolve source state in the engine producer; keep markup unaware of ECS/domain types.

Engine health follows the same generic path. Read the typed EngineHealthSnapshot/PhysicsHealthSnapshot publication and expose named properties through the ordinary engine-health namespace; do not add a HUD reader for DiagnosticsStore, an Avian timing query, or another source-specific bridge. Native UI, HUI, API, telemetry, and recording consumers all read the common publication. For scalar participant state, use the shared PortRegistry; do not create a parallel port reader for a HUD.

SimulationProgress owner and reason facts are projected into each authored runtime surface as typed simulation_progress data. Let the active Rhai policy turn those facts into user-facing labels such as PHYSICS LOADING or TERRAIN LOADING; the engine does not hardcode HUD wording. Progress changes invalidate the existing surface projection, so a readiness label does not poll the simulation. During preparation the built-in Rhai visibility policy temporarily shows an authored surface before possession, then returns to its authored possessed or always mode when the holds clear.

Command and one-shot REPL timing is also generic presentation data. Read the application-cadence exposure for command and REPL sequence/interval/rate values; do not attach a HUD timer to Time<Virtual>, count API requests as completed script evaluations, or read the command/REPL owners directly.

Producers must use change detection, revisions, or dirty flags. Continuous values are coalesced to the current bounded presentation cadence (20 Hz). EngineExposures.revision changes only when a value or visibility flag changes; it is not a frame counter. Do not use JSON to detect internal changes. When one producer owns several surfaces, keep invalidation domains separate so continuous motion does not rebuild static authored topology. Use the existing authoritative stage revision for USD-derived membership and cache that membership plus static authored metadata such as program source facts and declared public-output names. Do not reread those facts at publication cadence, rescan all prims, or add a second revision/source registry. Keep simulation status, telemetry, outputs, and Rhai policy results live. Authored runtime-surface fields belong on a prim with LunCoUiSchemaAPI. Their live edits refresh exposure discovery through the stage revision; they do not require recreating scene entities or resetting simulation state.

For camera status, Rust publishes the current camera fact and compact label through the generic exposure namespace. The shared lunco-usd-bevy::camera_switch::camera_display_labels resolver is also used by the picker, Camera menu, USD/entity trees, and Inspector: unique leaves stand alone, duplicate leaves gain nearest-owner context and then ancestors, generated hexadecimal/UUID-like owner suffixes are hidden, and an unavoidable normalized collision gets an ordinal. The full USD path remains the typed selection value and hover/diagnostic text. Rhai owns selection policy (set_camera(name)) and can read the fact with get_exposure(...); HUI/CSS owns rendering. Camera status emits CameraSelectionStatusChanged after its camera/viewport lifecycle projection changes, and the exposure observer consumes that event. The UI is revision-gated. Do not add a Rhai on_tick loop, a timer poll, or a per-frame camera scan for this HUD.

Rejected camera commands may use the shared warning toast. Camera admission findings come from one camera-contract state and project to structured runtime diagnostics and Recent Events. A valid operator camera keeps the viewport ready; unresolved director tracks are warnings until director control resumes. Recent Events presents camera findings as warnings, emitted directly as telemetry rather than runtime errors, so the generic warning observer never dispatches a toast. Keep camera messages out of the Camera menu. Register open egui dropdown bounds with ScenePickGate so option clicks do not fall through to the 3D scene.

2. Add the template and stylesheet

Place files under assets/ui/. The stable contract is:

  • HUI <template>, <property>, <node>, <text>, and <button>;
  • stable id values and {property} interpolation;
  • on_press="callback_name" for semantic actions;
  • Flair CSS-like layout and visual properties, custom properties, and var(...).

Declare every property that the bridge should write:

html
<template>
  <property name="title">Status</property>
  <property name="state">offline</property>

  <node id="status-root">
    <text id="status-title">{title}</text>
    <text id="status-state">{state}</text>
  </node>
</template>

Each projected value is also available as --ui-<property-name> in CSS. Keep the manifest-owned outer rectangle separate from CSS-owned internal layout:

css
@import "ui/runtime_fonts.css";

#status-root {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 12px;
  background-color: var(--panel-background);
}

#status-state {
  color: var(--ui-state-color);
}

Use the bundled font import for telemetry/status glyphs. Do not rely on Bevy's minimal default_font or a host-installed fallback.

Show full SKILL.md (1,220 more words)Show less
3. Register bindings, gates, actions, and placement

Add a surface entry to assets/ui/runtime_surfaces.json:

json
{
  "id": "mission-status",
  "template": "ui/status.html",
  "stylesheet": "ui/status.css",
  "namespace": "mission-status",
  "bindings": {
    "title": { "source": "title" },
    "state": { "source": "state" }
  },
  "actions": [
    { "callback": "runtime_status_focus_moon", "action": "view.body.moon" }
  ],
  "visible_in_perspective": "sandbox_view",
  "interactive": true,
  "placement": {
    "mode": "window",
    "anchor": "top_right",
    "offset": [-16.0, 16.0],
    "width": 260.0,
    "height": 84.0
  }
}

Surface id values and callback names must be unique within the manifest. The loader rejects unknown fields, unsafe asset paths, and invalid geometry. Authored semantic actions are accepted and delivered to Rhai; do not add a Rust enum arm for each Twin, route, rover, or lander.

Binding target names must be declared template properties. map translates exact rendered strings, which is useful for true/false, body ids, display, or CSS colors. It does not perform arithmetic or general expressions; publish a formatted presentation value when that is what the surface needs.

Placement modes:

  • viewport fills the window;
  • dock_panel uses the workbench's authoritative PanelRects plus an inset;
  • window uses logical-point width/height, a corner/center anchor, and an offset.

Only a window surface may set draggable: true. The primary-button drag stores a finite logical top-left override by stable surface id, clamps it to the live target after resize/DPI changes, and persists it in the active Twin's existing workbench workspace state. A primary-button double click removes the override and restores the authored anchor. The shipped celestial-view switcher is a draggable window with a top-centre authored default; Settings ▸ HUD also exposes a surface-specific reset that removes its per-Twin override. Manifest reconciliation prunes unknown surface ids, and TwinClosed clears the in-memory layout scope.

The script-driven GuidedOverlay is owner-tagged presentation state. A HUD command issued from a Twin route must carry its stable Twin ID; a stale or inactive owner is rejected. TwinClosed clears every field only when that Twin owns the overlay, and scene replacement clears all old presentation state before the next scenario starts. Core/Application scripts keep their runtime scope; clearing presentation does not restart them. Tutorial launchers call ClearGuidedOverlay before replacing a lesson so actions, spotlight, coach step, missing-anchor diagnostic, and recovery card cannot leak between lessons.

interactive: true enables input ownership for visible HUI controls that carry an authored on_press action. The runtime adds Pickable to those visible controls and feeds each computed Bevy UI rectangle into the existing ScenePickGate; it never registers the surface root or a full-window viewport rectangle. The active presentation camera is enabled for UI picking with Bevy's marker filter, so decorative retained nodes without Pickable pass scene hits through. Visible HUI nodes in a draggable window surface, including its root, receive pick markers so pointer drags can bubble to that surface's owner. This keeps HUDs transparent to camera dragging and scene clicks outside their explicit controls. Do not add a parallel pointer/interception system. Do not add per-frame position correction; placement is applied after HUI/Flair style work with change detection, and the startup resolver ignores a zero-sized target in favor of the live primary window dimensions.

4. Map actions through the existing command path

The HTML callback name is only an authored binding. The manifest maps it to a semantic action string; the runtime emits a typed action event; the owning Rhai program maps that action to a typed command/event. A template must not mutate resources or call a domain API directly.

The generic dropdown mechanic owns only popup lifecycle, typed record projection, scrolling, and authored dimensions. It does not parse action prefixes or construct options. HUI 0.7 has no native select/accessibility tree, so this shared egui primitive is the low-level option. Camera, program, route, and future domain policies remain authored in Rhai.

If a new domain action is needed, author its semantic identifier and handle it in the owning Rhai program through the existing typed command/query/event surface. Do not add a legacy callback alias or a widget-specific Rust shim merely to make one template work.

For the shared lunar view surface, publish the scene SiteAnchor position as a typed f64 vector in the Moon inertial frame. Show a separate mission-site HUI card when that site and the Moon orbital pin are available; it must not depend on a possessed vessel or appear inside the body mode selector. Rhai computes a target direction, reads the persisted camera animation-duration setting, then sends a generic AnimateOrbitCameraDirection request. The camera owner animates along the existing orbit while preserving its current radius and vertical offset.

Reload loop

On native desktop, keep one production luncosim process running and edit assets:

EditLive effect
assets/ui/*.htmlHUI rebuilds the affected retained surface tree.
assets/ui/*.css / importsFlair reapplies the stylesheet.
assets/ui/runtime_surfaces.jsonSurface roots and action registrations are rebuilt.
Rust producer/observerRebuild the production binary; replace the session through API Exit.

ReloadShader reloads WGSL only. A bare engine path such as shaders/foo.wgsl resolves whichever active asset identity the renderer holds (default source or lunco://); explicit lunco://… and twin://… paths are exact. An empty path queues every currently loaded WGSL asset, and an inactive target fails visibly instead of being reported as a successful no-op. SetShaderSource uses the same identity resolution for direct in-memory WGSL edits; when a bare target is not loaded yet, it seeds the canonical lunco:// asset for journal replay. RunScenario hot-reloads Rhai only. None of these commands reloads HTML/CSS. The native file watcher is not present in the headless server; web builds use bundled static assets and browser cache rules.

HUI caveats: one root per template component, no recursive imports, and a nested component template reload may require reloading the top-level template again. Never manually write Bevy styling components under the surface from Rust; HUI/Flair owns those components.

Use a single <node> as the root of every template, including collection-row templates. Keep <button> and <text> elements below that root because HUI reuses the scope entity during hot reload and Flair retains its selector type metadata there.

Lifecycle invariant: when an exposure or presentation gate turns off, the bridge removes the retained root whenever any HUI state remains, even if its local mounted marker is stale after a deferred rebuild. A hidden surface must not leave a stale progress card in the render tree.

Verification

For a markup/style-only change:

  1. Start the already-built production binary with an explicit free API port.
  2. Wait for /api/ready to report ready:true, world_hold:false, and pending_count:0 when scene readiness is relevant.
  3. Edit the asset and observe the live window; do not rebuild or relaunch just for HTML/CSS.
  4. Query the capability side with ReadExposures and capture a screenshot with CaptureScreenshot when the visual result matters.
  5. Check logs for HUI/Flair parse or asset errors.

For a Rust change, build the production binary in this worktree and set LUNCOSIM_BIN to it. Each agent owns a distinct free API port and launches from the same checkout and working directory as its terminal. Before replacing your own session, send API Exit and verify its process and port are gone. Do not control another agent's session or use pkill.

Useful diagnosis order:

  • missing surface → namespace, exposure visibility, perspective, gate, placement, asset paths;
  • blank value → declared <property>, exact binding source, exact map key;
  • dead button → callback spelling, manifest action, host observer;
  • tofu → explicit bundled font import and asset path;
  • startup jump → manifest placement and change-detected post-style boundary;
  • slow frame → exposure revision/cadence, tree size, egui, physics, and GPU measurements separately. Do not infer that HTML is the bottleneck from FPS alone.

Current non-goals

Do not assume support for browser DOM APIs, JavaScript, forms, text editing, virtualised lists, full accessibility, arbitrary web CSS, !important, global stylesheets, font fallback chains, or reliable mixed-unit calc(). Add a deliberate engine/runtime contract and tests before expanding the surface language.

© LunCoSim, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/runtime-ui of LunCoSim/lunco-sim.

Open the folder on GitHubat commit d1c6f00

Compare with similar skills

Runtime UI next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Runtime UI compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Runtime UI this skillLunCoSim/lunco-sim105—~5kAutomated safety check: PassApache-2.0
Web Artifacts Builderanthropics/skills180k41 repos~769Automated safety check: PassApache-2.0
React Doctormakeplane/plane61k12 repos~657Automated safety check: PassAGPL-3.0
Impeccablebestofjs/bestofjs3.1k27 repos~2.6kAutomated safety check: PassMIT
Figma Design System Builderwarpdotdev/warp65k2 repos~4.4kAutomated safety check: PassAGPL-3.0
Web Interface Guidelines Reviewervercel-labs/openreview1.7k98 repos~308Automated safety check: PassNone

Similar skills

  • Web Artifacts Builder

    anthropics/skills

    Official

    Builds multi-component claude.ai HTML artifacts as a small React, TypeScript and Tailwind project, then bundles it into one shareable HTML file.

    180k GitHub starsUsed in 41 repos~769 tokens
    Frontend & DesignAuto-check passed
  • React Doctor

    makeplane/plane

    Scans React code for lint, accessibility, bundle size and architecture issues, reports a health score and checks that changes do not lower it.

    61k GitHub starsUsed in 12 repos~657 tokens
    Frontend & DesignAuto-check passed
  • Impeccable

    bestofjs/bestofjs

    A skill your agent uses when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a…

    3.1k GitHub starsUsed in 27 repos~2.6k tokens
    Frontend & DesignAuto-check passed
  • Builds or updates a design system in Figma from a codebase in ordered phases: discovery, variables and tokens, components, theming and documentation, with checkpoints.

    65k GitHub starsUsed in 2 repos~4.4k tokens
    Frontend & DesignAuto-check passed
  • Web Interface Guidelines Reviewer

    vercel-labs/openreview

    Official

    Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my…

    1.7k GitHub starsUsed in 98 repos~308 tokens
    Frontend & DesignAuto-check passed
  • Tailwindcss Development

    anonaddy/anonaddy

    Always invoke when the user's message includes 'tailwind' in any form.

    4.9k GitHub starsUsed in 10 repos~865 tokens
    Frontend & DesignAuto-check passed

More from LunCoSim/lunco-sim

All 38 skills in this repo
  • Nightly Changelog

    LunCoSim/lunco-sim

    Generate concise LunCoSim nightly GitHub release notes with platform downloads, installation guidance, an AI-agent mission prompt, and a changelog link.

    105 GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Build or repair a reusable scene component through a live LunCoSim Editor session.

    105 GitHub stars~4.4k tokensUpdated today
    Auto-check passed
  • Assembly Quality

    LunCoSim/lunco-sim

    Build or review a componentized LunCoSim USD assembly with a realistic, dimensionally checkable presentation.

    105 GitHub stars~1.6k tokensUpdated today
    Auto-check passed
  • Author Rhai Tests

    LunCoSim/lunco-sim

    Author and review LunCoSim behavioral, asset-backed, component, mission, visual, and requirements-verification tests.

    105 GitHub stars~3.5k tokensUpdated today
    Auto-check passed
  • Author Rhai Tool

    LunCoSim/lunco-sim

    Create, extend, register, or debug a reusable LunCoSim Rhai tool library for live USD authoring, component linting, inspection, or test support.

    105 GitHub stars~5.2k tokensUpdated today
    Auto-check passed
  • Author Tutorial

    LunCoSim/lunco-sim

    Author an interactive tutorial, guided lesson, onboarding flow, coach-mark tour, or objectives checklist in LunCoSim.

    105 GitHub stars~1.4k tokensUpdated today
    Auto-check passed

Questions about Runtime UI

What does Runtime UI do?

Author or review a reloadable Twin-facing HTML/CSS-like runtime surface in LunCoSim. Runtime UI is an agent skill from LunCoSim/lunco-sim. Author or review a reloadable Twin-facing HTML/CSS-like runtime surface in LunCoSim.

When should I use Runtime UI?

Runtime UI fits situations like: frontend & Design work in your project.

How do I install Runtime UI in Claude Code?

Run `npx skills add LunCoSim/lunco-sim --skill runtime-ui -a claude-code`. Or copy the skill folder (skills/runtime-ui in LunCoSim/lunco-sim) into .claude/skills/runtime-ui in your project. Claude Code loads it when a task matches its description.

How do I install Runtime UI in Codex?

Run `npx skills add LunCoSim/lunco-sim --skill runtime-ui -a codex`. Or copy the skill folder (skills/runtime-ui in LunCoSim/lunco-sim) into .agents/skills/runtime-ui in your project. Codex loads it when a task matches its description.

Can I use Runtime UI in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add LunCoSim/lunco-sim --skill runtime-ui -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/runtime-ui, .gemini/skills/runtime-ui, .github/skills/runtime-ui and .opencode/skills/runtime-ui in your project.

What does Runtime UI need to run?

SKILL.md names no scripts, command-line tools or credentials: Runtime UI is instructions for the agent only.

Does Runtime UI access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Runtime UI safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Runtime UI use?

Runtime UI is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Runtime UI use?

About 5k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Runtime UI?

Skills that share tags, products or a category with Runtime UI: Web Artifacts Builder (anthropics/skills, 180k stars), React Doctor (makeplane/plane, 61k stars), Impeccable (bestofjs/bestofjs, 3.1k stars) and Figma Design System Builder (warpdotdev/warp, 65k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Runtime UI?

LunCoSim (a GitHub organization) maintains it in LunCoSim/lunco-sim, which has 105 GitHub stars. The repository holds 38 skills in this directory. The repository was last updated on October 7, 2026.

Source: LunCoSim/lunco-sim on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.