Theme factory
Open agent skills for the skills.sh ecosystem — browser, docs, mail, media, security, networking, orchestration, and more.
npx -y skills add DrOlu/agent-skills --skill theme-factoryAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Step-by-step guide to add a new UI theme to AiderDesk (SCSS + CSS variables + types + i18n).
SKILL.md
3.3 KB, 848 tokens by cl100k_base, as published. Nobody here has run it
Theme Factory
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.
Where themes live
- Theme files:
src/renderer/src/themes/theme-<name>.scss - Theme aggregator (imports all themes):
src/renderer/src/themes/themes.scss - Theme type registry:
src/common/types.ts(THEMES) - Theme selector UI:
src/renderer/src/components/settings/GeneralSettings.tsx - Theme application:
src/renderer/src/App.tsx(appliestheme-<name>class todocument.body) - Theme display names (i18n):
src/common/locales/en.json(themeOptions.<name>)src/common/locales/zh.json(themeOptions.<name>)
Definition format
Each theme is a class:
- Class name:
.theme-<name> - Contents: a complete set of
--color-*variables.
Best workflow: copy an existing theme (e.g. theme-dark.scss) and adjust values.
Checklist: add a new theme
1) Choose a theme name
Pick a kebab-case name, e.g. sunset, nord, paper.
You will reference it consistently in:
- CSS class:
.theme-<name> - filename:
theme-<name>.scss THEMESarray value:'<name>'- i18n key:
themeOptions.<name>
2) Create the theme SCSS file
Create:
src/renderer/src/themes/theme-<name>.scss
Start 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:
- Compare with
src/renderer/src/themes/theme-dark.scss(or another full theme) - Keep variable names identical; only change values.
3) Register the theme in the theme aggregator
Edit:
src/renderer/src/themes/themes.scss
Add:
@use 'theme-<name>.scss';
If the file is not imported here, it won’t be included in the built CSS.
4) Register the theme in TypeScript types
Edit:
src/common/types.ts
Add '<name>' to the exported THEMES array.
This makes the theme selectable and type-safe.
5) Add i18n display names
Edit:
src/common/locales/en.jsonsrc/common/locales/zh.json
Add entries under themeOptions:
{
"themeOptions": {
"<name>": "Your Theme Name"
}
}
6) Verify in the UI
- Open Settings → General → Theme
- Confirm the new theme appears in the dropdown
- Switch to it and confirm the whole UI updates (no restart)
7) Quality checks
- Contrast: confirm text is readable on all backgrounds (aim for WCAG AA)
- Verify key surfaces:
- main background panels
- inputs
- buttons
- borders/dividers
- diff viewer colors
- code blocks
- muted/secondary text
- Check both states:
- normal
- hover/active
Troubleshooting
-
Theme not showing up:
- missing
@useimport insrc/renderer/src/themes/themes.scss - missing entry in
THEMESarray insrc/common/types.ts - typo mismatch between
.theme-<name>and the<name>stored in settings
- missing
-
Some UI areas look “unstyled”:
- you likely missed one or more
--color-*variables; compare against a known-good theme and fill in the missing ones.
- you likely missed one or more