.aider-desk/skills/theme-factory/SKILL.md
Create new AiderDesk UI themes by defining SCSS color variables, registering theme types, and adding i18n display names. Use when adding a theme, creating a color scheme, customizing appearance, or implementing dark mode and light mode variants.
npx skillsauth add hotovo/aider-desk theme-factoryInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.scsspackages/common/src/types/common.ts (THEMES)src/renderer/src/components/settings/GeneralSettings.tsxsrc/renderer/src/App.tsx (applies theme-<name> class to document.body)packages/common/src/locales/en.json (themeOptions.<name>)packages/common/src/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:
packages/common/src/types/common.tsAdd '<name>' to the exported THEMES array.
This makes the theme selectable and type-safe.
Edit:
packages/common/src/locales/en.jsonpackages/common/src/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 packages/common/src/types/common.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.development
Write unit tests, component tests, and integration tests for AiderDesk using Vitest and React Testing Library. Use when creating new tests, adding test coverage, configuring mocks, setting up test files, or debugging failing tests.
development
Create AiderDesk Agent Skills by writing SKILL.md files, defining frontmatter metadata, structuring references, and organizing skill directories. Use when building a new skill, creating a SKILL.md, planning skill architecture, or writing skill content.
tools
Create AiderDesk extensions by setting up extension files, defining metadata, implementing Extension interface methods, and updating documentation. Use when building a new extension, creating extension commands, tools, or event handlers.
tools
Create and configure AiderDesk agent profiles by defining tool groups, approval rules, subagent settings, and provider/model selection. Use when setting up a new agent, creating a profile, or configuring agent tools and permissions.