Labs · chat skin previewer & packer

Eleven chat skins.
Try them on before you install.

Community beautify packs usually ship as regex blobs you install blind. Here the gallery itself is a live render: pick a motif — vintage dossier, cyber terminal, Y2K desktop, star-glass, retro gazette — paste your own reply text to try it on, rename the status fields, and export a ready-to-import pack for SillyTavern or the Foreverse app.

Freeruns in your browsernothing uploaded

Skin gallery

Eleven cultural-motif skins. The thumbnails are live renders — each card runs the skin's actual 5 regex scripts. Pick one, then try it on below.

Fitting room · Glass Orbit

Glass Orbit · sample dialogue shown — paste your own message on the right

This message rendered:thoughts ×1status bar ×1scene card ×1aside ×1choices ×1

Try your own text

Pack settings

Rename the four status fields and the headline to match your card — the preview and the exported packs follow.

Export

Foreverse pack = all 5 scripts in one JSON, imported whole via the app's Import → Regex/Beautify entry. SillyTavern pack = 5 single-script JSONs (the Regex panel imports one file at a time) + the same Foreverse pack + the format directive + a README.

Format directive (paste into your card)

Skins only render; the model has to speak the marker protocol first. Append this to the card's system_prompt (works in SillyTavern and Foreverse), and put the reminder into post_history_instructions:

① Append to system_prompt
Follow this output format strictly, every turn (plain-text markers only, never HTML):
1) optional :::think observation & reasoning, 3 sentences max :::
2) required [STATUS|HOUR|DATE|POSITION|BOND] (one line; update every field with the scene)
3) :::scene scene title # scene prose ::: (the prose is the body of your reply)
4) optional :::note one line of aside or undercurrent :::
5) the reply MUST end with :::opt action A ¦ action B ¦ action C ::: (three concrete actions, separated by ¦)
② post_history_instructions (anti-drift reminder)
[FORMAT REMINDER] This reply must contain, complete: one [STATUS|...|...|...|...] line, :::scene title # prose :::, and it must END with :::opt A ¦ B ¦ C :::. The three opt choices may never be omitted — even when the scene closes on a strong emotional beat, you still hand the player three next moves. Plain-text markers only, never HTML.

How to install (Foreverse / SillyTavern)

Foreverse app (recommended — renders on import)
  1. Download the Foreverse regex pack (.json) above;
  2. App → Import → “Regex / Beautify”, import the JSON as one pack;
  3. Paste the format directive into your card (end of system_prompt) and start chatting — the model's markers get rendered by these 5 scripts.

Keep only one skin's 5 scripts active at a time (two skins race for the same markers; first match wins).

SillyTavern (web)
  1. Download the SillyTavern import pack (.zip) and unzip;
  2. Tavern → Extensions → Regex → Import — import the 5 JSONs from st-regex/ one by one and enable them;
  3. Paste the two blocks from format-directive.txt into the card's System Prompt and Post-History Instructions;
  4. Chat. Decorative art references the app-only fv.local channel — in the tavern it hides itself cleanly, no broken images.

SillyTavern's sanitizer keeps regular inline styles; third-party extensions that rewrite message HTML take precedence over this pack.

Honest limits
  1. Skins need a client that renders HTML inside messages: Foreverse (renders on import) and the SillyTavern web build (its sanitizer keeps regular inline styles; a few advanced effects may get trimmed). Plain-text frontends — raw API clients, anything that doesn't render HTML — will just show the raw markers.
  2. A regex pack is display-layer only: if the model doesn't output the marker protocol, there is nothing to skin. Pair it with the format directive, and ideally demo one full marker frame in the card's greeting — few-shot is the strongest format anchor.
  3. This preview uses system fonts (the app picks device serif fonts for CJK), and decorative art degrades to hidden when absent — which is exactly how the pack behaves in environments without the art files.

The full experience lives in the app: imported cards render out of the box, and the butler Agent can reskin a card, set the backdrop and theme the input bar in one ask.

Dress your cards in the app

Where this tool comes from

The skins are production assets, not mockups: eleven cultural-motif packs from the theme workshop behind Foreverse's official beautified cards (each = 5 regex scripts + a chat chrome theme + AI-painted art), field-tested on real devices with real models. Templates are extracted byte-for-byte from that workshop's single source of truth; the five marker-matching regexes are the exact strings the production packer emits, cross-checked in this tool's self-test. Ported 2026-07.

Regex execution reuses this site's SillyTavern-dialect engine (the same one behind the regex tester — script parsing and replacement semantics aligned with the app's engine and the tavern's web build). Your pasted text is HTML-escaped before matching, and the preview renders in a script-disabled sandboxed frame: templates are trusted constants, your text never becomes markup.

What it can't do

The preview approximates the app's chat window with system fonts and a generic bubble — device serif fonts, avatar rows and the app's quote-coloring pass aren't reproduced, so spacing can differ a little on-device. Decorative art shown here is the subset that shipped; missing pieces hide themselves, exactly as the pack behaves in a fresh environment.

A skin pack styles what the model says; it can't make the model say it. Marker discipline lives in the card (format directive + a greeting that demos the frame) — and even then, models occasionally drop a block mid-chat; the packs' regexes tolerate the common failure shapes (missing closers, wrong separators) but not a model that stops outputting markers entirely.

FAQ

What exactly is a “chat skin” here?

A set of 5 regex scripts sharing one cultural motif. The character card instructs the model to reply in a plain-text marker protocol (:::think reasoning :::, a [STATUS|…] line, :::scene title # prose :::, :::note aside :::, and closing :::opt A ¦ B ¦ C :::). Each script catches one marker and re-renders it as themed HTML — a fold-out thought card, a styled status panel, a scene sheet, tappable choice chips. Same protocol, eleven completely different looks: swapping skins means swapping one pack.

Will these packs work in SillyTavern, or only in the Foreverse app?

Both, with one honest caveat. The zip carries 5 single-script JSONs in SillyTavern's Regex-panel format (placement AI output, markdownOnly on — display layer only, your outgoing prompt stays clean). The tavern's web build renders the inline-styled HTML fine; decorative art references an app-only asset channel (fv.local) and hides itself cleanly elsewhere — layouts were designed to survive without it. Clients that don't render HTML in messages (raw API frontends) will just show the markers as text.

Why doesn't my chat look skinned after importing?

The pack is display-layer only — it has nothing to render until the model actually outputs the marker protocol. That's what the format directive on this page is for: paste it at the end of the card's system_prompt, put the reminder line into post_history_instructions, and ideally let the card's greeting demo one full marker frame (few-shot is the strongest format anchor). Also check that only one skin's 5 scripts are enabled: two skins race for the same markers and the first match wins.

Is my pasted text uploaded anywhere?

No. The whole pipeline — regex matching, HTML templating, the phone preview, the zip packer — runs in your browser; this page has no upload endpoint. The preview also runs inside a fully sandboxed frame with scripts disabled, and your text is HTML-escaped before any template touches it, so pasting hostile content can't execute anything.

Related tools & reading

← All free tools

Chat Skin Previewer & Packer — 11 Themed Beautify Packs for SillyTavern Cards, Try On Live · Foreverse · Xinmeng