orange-opensource/ouds-ios/ouds-ios-guide-create-theme
Claude Code and agent skill by orange-opensource/ouds-ios
- community
Checking that the SKILL.md file is still in the repository.
Use when the user wants to create a custom OUDS theme or brand theme for an iOS app — covers subclassing OrangeTheme, building a theme from scratch on OUDSTheme, mixing existing providers, local custom fonts (.ttf registration), and tuning.
Install
npx vskill@latest install orange-opensource/ouds-ios/ouds-ios-guide-create-themeSKILL.md
Skill: ouds-ios-guide-create-theme
Step-by-step guide to create a custom OUDS theme for an iOS/iPadOS app.
0. Prerequisites — ask the user first
Before writing any code, ask the user these two questions:
Question 1 — Which strategy?
| Strategy | When to choose | |
|---|---|---|
| A — Subclass `OrangeTheme` (recommended) | Orange brand assets are needed; only some tokens differ from Orange defaults | |
| B — From scratch on `OUDSTheme` | Fully independent brand (no Orange assets); all tokens are custom | |
| C — Mix existing providers | Compose providers from existing themes without creating a new subclass |
Question 2 — Custom fonts?
Does the theme need to embed .ttf font files? If yes, collect:
- Font family name (as shown in Font Book)
- PostScript name for each weight used
📚 Reference documentation
To get the full list of properties / tokens by protocols:
- General OUDS documentation : https://ios.unified-design-system.orange.com
- Semantic tokens : https://ios.unified-design-system.orange.com/documentation/oudsTokensSemantic/
ColorSemanticTokens: https://ios.unified-design-system.orange.com/documentation/oudsTokensSemantic/ColorSemanticTokensBorderSemanticTokens: https://ios.unified-design-system.orange.com/documentation/oudsTokensSemantic/BorderSemanticTokensDimensionSemanticTokens: https://ios.unified-design-system.orange.com/documentation/oudsTokensSemantic/DimensionSemanticTokensSizeSemanticTokens: https://ios.unified-design-system.orange.com/documentation/oudsTokensSemantic/SizeSemanticTokensSpaceSemanticTokens: https://ios.unified-design-system.orange.com/documentation/oudsTokensSemantic/SpaceSemanticTokensFontSemanticTokens: https://ios.unified-design-system.orange.com/documentation/oudsTokensSemantic/FontSemanticTokens- etc.
- Component tokens : https://ios.unified-design-system.orange.com/documentation/oudsTokensComponent/
ButtonComponentTokens: https://ios.unified-design-system.orange.com/documentation/oudsTokensComponent/ButtonComponentTokensTextInputComponentTokens: https://ios.unified-design-system.orange.com/documentation/oudsTokensComponent/TextInputComponentTokens- etc.
Tip : To see all properties / tokens of a provider, look in filesValues/SemanticTokens/orValues/ComponentTokens/in Orange theme from OUDS iOS repository.
1. Inheritance hierarchy
Rule: OnlyOrangeThemecan be subclassed by external code.SoshTheme,OrangeCompactTheme, andWireframeThemeare allfinalbut their tokens providers can be reused.
2. Strategy A — Subclass OrangeTheme (recommended)
2.1 Import
2.2 Override only the providers you need
Each provider inherits from an OrangeThemeXxxProvider class. Override @objc open properties.
Semantic token providers available to override (Layer 2 — generic tokens):
| What to override | Orange base class to inherit | |
|---|---|---|
| Borders (style / width / radius) | OrangeThemeBorderSemanticTokensProvider | |
Colors (light + dark via MultipleColorSemanticToken) | OrangeThemeColorSemanticTokensProvider | |
Color modes (for OUDSColoredSurface) | OrangeThemeColorModeSemanticTokensProvider | |
| Color charts | OrangeThemeColorChartSemanticTokensProvider | |
| Color decorative | OrangeThemeColorDecorativeSemanticTokensProvider | |
| Effects | OrangeThemeEffectSemanticTokensProvider | |
| Elevations / shadows | OrangeThemeElevationSemanticTokensProvider | |
| Typography / fonts | OrangeThemeFontSemanticTokensProvider | |
| Grids | OrangeThemeGridSemanticTokensProvider | |
| Opacities | OrangeThemeOpacitySemanticTokensProvider | |
| Dimensions (base scale) | OrangeThemeDimensionSemanticTokensProvider | |
| Sizes (icon, component) | OrangeThemeSizeSemanticTokensProvider | |
| Spaces (fixed, scaled) | OrangeThemeSpaceSemanticTokensProvider |
Component token providers available to override (Layer 3 — component-specific tokens):
| Component | Orange base class | |
|---|---|---|
| Alert messages | OrangeThemeAlertComponentTokensProvider | |
| Badge | OrangeThemeBadgeComponentTokensProvider | |
| Bar (tab bar / toolbar) | OrangeThemeBarComponentTokensProvider | |
| Bullet list | OrangeThemeBulletListComponentTokensProvider | |
| Button | OrangeThemeButtonComponentTokensProvider | |
| Checkbox | OrangeThemeCheckboxComponentTokensProvider | |
| Chip | OrangeThemeChipComponentTokensProvider | |
| Divider | OrangeThemeDividerComponentTokensProvider | |
| Icon | OrangeThemeIconComponentTokensProvider | |
| Link | OrangeThemeLinkComponentTokensProvider | |
| List item | OrangeThemeListItemComponentTokensProvider | |
| Pin code input | OrangeThemePinCodeInputComponentTokensProvider | |
| Quantity input | OrangeThemeQuantityInputComponentTokensProvider | |
| Radio button | OrangeThemeRadioButtonComponentTokensProvider | |
| Select input | OrangeThemeSelectInputComponentTokensProvider | |
| Skeleton | OrangeThemeSkeletonComponentTokensProvider | |
| Switch | OrangeThemeSwitchComponentTokensProvider | |
| Tag | OrangeThemeTagComponentTokensProvider | |
| Input tag | OrangeThemeInputTagComponentTokensProvider | |
| Text area | OrangeThemeTextAreaComponentTokensProvider | |
| Text input | OrangeThemeTextInputComponentTokensProvider |
Etc.
2.3 Example provider overrides
2.4 Theme class skeleton
Allsuper.initparameters are optional (? = nil). Omit those you don't override.
3. Strategy B — From scratch on OUDSTheme
Warning: This requires implementing all providers — potentially hundreds of@objc openproperty overrides. Use only for fully independent brands with no Orange assets.SeeSoshThemein the OUDS source as the canonical reference.
3.1 Import
3.2 Provider instantiation order
Respect dependency order — some providers take others as constructor arguments:
3.3 Full AllXxx protocol list
Semantic providers (all mandatory except ✦):
super.init parameter | Protocol to implement | Notes | |
|---|---|---|---|
borders | AllBorderSemanticTokensProvider | ||
colors | AllColorSemanticTokensProvider | ||
colorModes | AllColorModeSemanticTokensProvider | depends on colors | |
colorsCharts | AllColorChartSemanticTokensProvider | ✦ optional, may be nil | |
colorsDecorative | AllColorDecorativeSemanticTokensProvider | ✦ optional, may be nil | |
effects | AllEffectSemanticTokensProvider | ||
elevations | AllElevationSemanticTokensProvider | ||
fonts | AllFontSemanticTokensProvider | ||
grids | AllGridSemanticTokensProvider | ||
opacities | AllOpacitySemanticTokensProvider | ||
dimensions | AllDimensionSemanticTokensProvider | ||
sizes | AllSizeSemanticTokensProvider | depends on dimensions | |
spaces | AllSpaceSemanticTokensProvider | depends on dimensions |
Component providers (all mandatory):
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/ouds-ios-guide-create-theme/SKILL.md
Popularity
- Repository stars
- 34
- Repository forks
- 9
- 7-day trend score
- 18
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/orange-opensource/ouds-ios/ouds-ios-guide-create-theme)