Step-by-step guide to add a new UI theme to AiderDesk (SCSS + CSS variables + types + i18n).
Overall
score
98%
Validation for skill structure
Use this skill when you need to add a new theme to AiderDesk.
AiderDesk themes are implemented as SCSS files that define a .theme-<name> class with a full set of CSS custom properties (variables). The UI uses Tailwind utilities mapped to these CSS variables.
src/renderer/src/themes/theme-<name>.scsssrc/renderer/src/themes/themes.scsssrc/common/types.ts (THEMES)src/renderer/src/components/settings/GeneralSettings.tsxsrc/renderer/src/App.tsx (applies theme-<name> class to document.body)src/common/locales/en.json (themeOptions.<name>)src/common/locales/zh.json (themeOptions.<name>)Each theme is a class:
.theme-<name>--color-* variables.Best workflow: copy an existing theme (e.g. theme-dark.scss) and adjust values.
Pick a kebab-case name, e.g. sunset, nord, paper.
You will reference it consistently in:
.theme-<name>theme-<name>.scssTHEMES array value: '<name>'themeOptions.<name>Create:
src/renderer/src/themes/theme-<name>.scssStart by copying a similar theme (dark -> dark-ish, light -> light-ish), then update the hex colors.
Minimum requirement: define all variables expected by the app.
Practical way to ensure completeness:
src/renderer/src/themes/theme-dark.scss (or another full theme)Edit:
src/renderer/src/themes/themes.scssAdd:
@use 'theme-<name>.scss';If the file is not imported here, it won’t be included in the built CSS.
Edit:
src/common/types.tsAdd '<name>' to the exported THEMES array.
This makes the theme selectable and type-safe.
Edit:
src/common/locales/en.jsonsrc/common/locales/zh.jsonAdd entries under themeOptions:
{
"themeOptions": {
"<name>": "Your Theme Name"
}
}Theme not showing up:
@use import in src/renderer/src/themes/themes.scssTHEMES array in src/common/types.ts.theme-<name> and the <name> stored in settingsSome UI areas look “unstyled”:
--color-* variables; compare against a known-good theme and fill in the missing ones.If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.