MoonshotAI / MoonshotAI/kimi-cli
RFC: user-customizable color skins via YAML (~/.kimi/skins/)
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 11.4k
- Forks
- 1.3k
- Avg merge
- 9h 47m
- Merged PRs (30d)
- 2
Description
Problem
The current /theme command offers two built-in palettes (dark / light). There's no way for users to define their own color scheme without patching source code. Power users running custom terminals, branded environments, or accessibility-tuned setups have nowhere to go.
Proposed solution
Add a YAML-based skin system that lets users drop a file into ~/.kimi/skins/<name>.yaml and activate it with /skin <name> or skin = "<name>" in config.toml.
Key design decisions:
- Hermes-compatible format — same
colors:/branding:/font:structure, so skins are portable across compatible tools - Backwards-compatible —
/theme dark|lightstill works;get_active_theme()returns"dark"for custom skins so no existing callers break - Graceful fallback — any token omitted from the YAML falls back to the dark-theme default, so a minimal skin file is just a few lines
- Zero new dependencies —
pyyamlis already in the dependency tree
Example skin file
name: dracula
description: Dracula color scheme
colors:
diff_add_bg: "#1e3a2e"
diff_del_bg: "#3a1e2e"
mcp_connected: "#50fa7b"
toolbar_yolo: "#ff79c6"
branding:
prompt_symbol: "❯"
font:
primary: "Fira Code"
Implementation
A working implementation is ready in PR #2170. It includes:
- Rewritten
theme.pywithSkin/SkinColors/SkinBrandingdataclasses _load_yaml_skin()and_discover_custom_skins()for filesystem loading/skinslash command (list / switch)skinfield inconfig.py- 50 passing tests covering all code paths
- EN + ZH documentation
Happy to adjust the design based on feedback before merge — opening this issue to start the conversation per the contribution guidelines.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing PR #2170, which contains the working implementation described in this RFC. Inspect theme.py, config.py, the 50 associated tests, and the EN/ZH documentation; the work is complete when custom YAML skins, /skin switching, configuration support, fallback behavior, and compatibility requirements are covered and the tests pass.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- cli
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 15/100