add-new-service-theme
Adds a new World Service language/service theme to the SCSS modules theming system (ThemeProviderSCSSModules). Use this when asked to add or set up a theme for a new service.
来源信息
- 仓库
- bbc/simorgh
- 最近来源活动
- 2026年9月16日 11:35
- 检测到的 SKILL.md 语言
- 英语
- 星标
- 1,718
- 分支
- 280
安装方式
默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。
检查来源文件
决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。
正在显示 SKILL.md
SKILL.md
来源说明 · 只读预览- name
- add-new-service-theme
- description
- Adds a new World Service language/service theme to the SCSS modules theming system (ThemeProviderSCSSModules). Use this when asked to add or set up a theme for a new service.
# Skill: Add a New Service Theme (SCSS Modules)
## Purpose
All existing World Service language themes have been migrated from Emotion CSS-in-JS to SCSS modules + CSS custom properties (`ThemeProviderSCSSModules`). This skill covers creating a theme for a **new** service using that same system going forward.
The Mundo theme is the best reference implementation to follow: `src/app/components/ThemeProviderSCSSModules/themes/mundo/`
## When to Use
Use this skill when a new World Service language/service is being added and needs a theme set up under the SCSS modules theming system.
## How the theming system works
For the Mundo theme, there is a directory including the main theme file itself: src/app/components/ThemeProviderSCSSModules/themes/mundo/mundo.ts; this file imports various SCSS files and relies on their side-effects to either import relevant resources or set CSS custom properties to apply runtime theme customisations.
The theme is made available to be dynamically imported in src/app/components/ThemeProviderSCSSModules/themes/loadableConfig.ts.
## Steps
1. Inspect the mundo theme as a guide: `src/app/components/ThemeProviderSCSSModules/themes/mundo/`
2. Create a new directory for the service under `src/app/components/ThemeProviderSCSSModules/themes/<service>/`
3. Create `palette.scss` in that directory, mapping the service's palette tokens to CSS custom properties (use `src/app/components/ThemeProviderSCSSModules/themes/mundo/palette.scss` as a guide, importing from `../../palette.scss`)
4. Create the main `<service>.ts` theme entrypoint, importing:
- The appropriate font face SCSS files from `../../fontFaces/`
- The appropriate font variant SCSS file from `../../fontVariants/`
- The appropriate font script SCSS file from `../../fontScripts/`
- `./palette.scss`
- `withThemeProvider` from `#app/components/ThemeProviderSCSSModules/withThemeProvider`
- `brandSVG` from `../../chameleonLogos/<service>` (see step 5)
If creating a new font variant SCSS file under
`ThemeProviderSCSSModules/fontVariants/`, load
`./fontVariantAliases.scss` from that file so the shared
`--gel-font-variant-*` fallback aliases are available to the variant
mixins.
5. **Create the chameleon logo** at `src/app/components/ThemeProviderSCSSModules/chameleonLogos/<service>.tsx` — this step is easy to miss and must not be skipped
6. **Register the theme in `loadableConfig.ts`** at `src/app/components/ThemeProviderSCSSModules/themes/loadableConfig.ts`, adding a new entry following the same pattern as `mundo` — this step is easy to miss and must not be skipped
7. Present this for feedback and iterate.
## Checklist
Before considering a new service theme complete, verify all of the following:
- [ ] `themes/<service>/palette.scss` created with correct CSS custom properties
- [ ] `themes/<service>/<service>.ts` created, importing font faces, variants, script, palette, and brandSVG
- [ ] Any new font variant file loads `fontVariantAliases.scss`
- [ ] `chameleonLogos/<service>.tsx` created
- [ ] `themes/loadableConfig.ts` updated to include the new service
在 GitHub 查看