Skip to content
Documentation
Skill

/theme

Make, change or remove a custom look for the Wenlan app: colors, fonts, corner roundness, a background image and a corner sticker. The AI tool designs the theme; Wenlan checks it and applies it. Use for "make Wenlan purple", "換個主題", "做一個可愛的主題", "go back to the normal look".

From plugin
wenlan
20721 skills3 agents1 MCP

Claude Code

$ npx -y skills add wenlan-app/wenlan --skill theme --agent claude-code

SKILL.md

theme.SKILL.md
name: theme
description: >
  Make, change or remove a custom look for the Wenlan app: colors, fonts,
  corner roundness, a background image and a corner sticker. The AI tool
  designs the theme; Wenlan checks it and applies it. Use for "make Wenlan
  purple", "換個主題", "做一個可愛的主題", "go back to the normal look".
  Invoked as `/wenlan theme [what the user wants]`.
argument-hint: "[what the user wants]"
allowed-tools: ["Read", "Write", "Bash", "mcp__plugin_wenlan_wenlan__theme"]
user-invocable: false

/wenlan theme

You design the theme; Wenlan checks it and applies it. Be creative with the user's idea, but every value must pass Wenlan's checks, and nothing is applied until it does.

1. Find the folder

Call `theme(action="list")`. It returns `themes_dir`, the themes already there, and which one is in use. To change an existing theme, read its `theme.json` first and edit it in place.

2. Write the theme

Pick an id: lowercase letters, digits and dashes, such as `night-bunny`. Write `<themes_dir>/<id>/theme.json`:

{
  "schema": 1,
  "name": "Night Bunny",
  "base": "dark",
  "author": "<this AI tool's name>",
  "colors": {
    "background": "#15101E",
    "surface": "#1F1729",
    "sidebar": "#120D1A",
    "text": "#F3ECF8",
    "textSecondary": "#CDBFD9",
    "textTertiary": "#9C8CAD",
    "border": "#352841",
    "accent": "#F29AC9",
    "textOnAccent": "#1A0F1F",
    "accentWarm": "#B99AE6",
    "link": "#E7A6D2"
  },
  "fonts": { "heading": "Fraunces", "body": "Instrument Sans" },
  "radius": 1.4,
  "images": {
    "background": { "file": "stars.png", "placement": "sidebar", "opacity": 0.35 },
    "sticker": { "file": "bunny.png", "corner": "bottom-right", "size": 88 }
  }
}

Rules the checks enforce:

  • `base` is `dark` or `light`. Every color you leave out keeps that base's

built-in value, so a theme can set only two or three colors.

  • Colors are `#RRGGBB` only. Color slots: `background`, `surface`, `card`,

`sidebar`, `text`, `textSecondary`, `textTertiary`, `border`, `accent`, `textOnAccent`, `accentWarm`, `link`, `danger`, `warning`, `success`, and the map colors `graphProject`, `graphTool`, `graphOrg`, `graphPerson`, `graphConcept`, `graphMemory`, `graphPage`, `graphEdge`.

  • Text must stay readable: `text` and `textSecondary` need 4.5:1 contrast on

the backgrounds, `textTertiary` 3:1, and `textOnAccent` 4.5:1 on `accent`. Pick a darker background or a lighter text before giving up on an idea.

  • Fonts come from a fixed list (check reports it): Fraunces, Instrument Sans,

JetBrains Mono, Georgia, Times New Roman, Palatino, Helvetica Neue, Arial, Verdana, Menlo, Courier New, PingFang TC/SC, Noto Sans/Serif CJK TC, and `serif`, `sans-serif`, `monospace`, `system-ui`. Nothing is downloaded.

  • `radius` is 0 (square corners) to 2.5; 1 is Wenlan's default.
  • Images are PNG, JPEG or WebP files placed directly in the theme folder, named

without a path. No SVG. Background at most 5 MB, sticker at most 1 MB, sticker size 48 to 160. `placement` is `sidebar` (keeps reading text on a plain surface; prefer it) or `window`. `corner` is `bottom-right`, `bottom-left` or `top-right`. Images are optional.

  • `advanced` may set any Wenlan CSS token directly (`"--kg-person": "#F2A7D0"`)

when a slot does not cover it. Prefer the slots.

Images: use files the user gives you or files you can make yourself (for example a small star pattern drawn with a script). Do not copy a brand's or a character's artwork; when the user names a character, make an original look in that spirit and say so.

3. Check, fix, apply

1. `theme(action="check", id="<id>")`. Fix every problem it lists in `theme.json` and check again. Never apply a theme that fails. 2. `theme(action="apply", id="<id>")`. The app switches within a few seconds. 3. Tell the user in one or two sentences what you made, and that they can go back with `/wenlan theme reset` or with "Back to default" in the app's Appearance settings.

`theme(action="reset")` goes back to the built-in themes.

Read more
@7xuanlu
Ships withwenlan

Open-source Obsidian alternative that works with your existing vault. The knowledge base you don't have to maintain: set up once, and your AI tools keep it organized and up to date, with no plugins to maintain. For you and your team.

20721 skills3 agents1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
207
Star history of 7xuanlu/wenlan on GitHub, a chart by star-history.com

Other skills on wenlan.

prove

prove

Per-surface verification loops for wenlan — daemon, cli, mcp, plugin, suite strength (mutation), behavior trace, weekly sweep.…

@7xuanlu@7xuanluInstall Skill
run-wenlan-app

run-wenlan-app

Build, launch, screenshot, and drive the wenlan-app Tauri desktop app in dev mode on macOS (WKWebView) or Windows (WebView2). Use…

@7xuanlu@7xuanluInstall Skill
run-wenlan

run-wenlan

Build, launch, and stop the wenlan daemon (wenlan-server) for local dev and verification. Use when asked to run or restart the…

@7xuanlu@7xuanluInstall Skill
verify

verify

Drive/evidence recipe for verifying wenlan changes at their real surfaces (daemon HTTP, CLI, MCP stdio). The handle file the…

@7xuanlu@7xuanluInstall Skill
wenlan-brief

wenlan-brief

Read the current Space-owned project Brief from Wenlan. With an optional topic, appends separately labeled related context from…

@7xuanlu@7xuanluInstall Skill
wenlan-capture

wenlan-capture

Save a memory to Wenlan in flow, or save something from this conversation as one note when the user asks for a note. Use…

@7xuanlu@7xuanluInstall Skill

More skills from other plugins.

context7-cli

context7-cli

Use the ctx7 CLI to fetch library documentation and configure Context7 MCP. Activate when the user mentions "ctx7" or "context7",…

@upstash@upstashInstall Skill
docs-components

docs-components

Comprehensive MDX component patterns (Note, Pitfall, DeepDive, Recipes, etc.) for all documentation types. Authoritative source…

@reactjs@reactjsInstall Skill
codebase-wiki

codebase-wiki

How to work in a Codebase Wiki project (the `codebase-wiki` starter pack): an agent-authored, source-grounded wiki of the…

@inkeep@inkeepInstall Skill

Questions about theme.

Which coding agents can use theme?
theme installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.