| name | new-component |
| description | Scaffold a new RikkaUI component following all project conventions |
| disable-model-invocation | true |
| allowed-tools | Read, Write, Edit, Glob, Grep, Bash(./gradlew :components:*) |
Create New RikkaUI Component
Scaffold $ARGUMENTS in the :components library.
Current components for reference
!ls components/src/commonMain/kotlin/zed/rainxch/rikkaui/components/ui/
Theme tokens available
!grep "val " components/src/commonMain/kotlin/zed/rainxch/rikkaui/components/theme/RikkaColors.kt | head -20
Steps
-
Create file at:
components/src/commonMain/kotlin/zed/rainxch/rikkaui/components/ui/{lowercase}/{ Name}.kt
-
Follow conventions (see conventions.md for full details):
- Package:
zed.rainxch.rikkaui.components.ui.{lowercase}
- Foundation only —
BasicText, clickable, NO Material3
- Enum-based variants/sizes (not booleans, not strings)
- Private
resolve*() functions for colors/sizes
- All tokens via
RikkaTheme.colors, .typography, .spacing, .shapes, .motion
- Both overloads: generic (content lambda) + convenience (string text)
- Accessibility:
Role, label param, disabled() semantics
@Immutable on data classes
- Parameter order: required →
modifier → optional → trailing content
- KDoc with usage examples
- Max 140 char lines
-
Compile:
./gradlew :components:compileKotlinWasmJs
-
Update CLAUDE.md package structure with the new entry.
-
Ask user if they want a showcase example for the website.