Loading...
Loading...
Generate cohesive UI audio themes with subtle, minimal sound effects for applications. This skill should be used when users want to create a set of coordinated interface sounds for wallet apps, dashboards, or web applications - generating sounds mapped to UI interaction constants like button clicks, notifications, and navigation transitions using ElevenLabs API.
npx skill4agent add b-open-io/prompts ui-audio-theme# Verify ElevenLabs API key is configured
echo $ELEVENLABS_API_KEY
# If not set, get key from https://elevenlabs.io (Profile -> API Keys)
# Add to shell profile: export ELEVENLABS_API_KEY="your-key"assets/vibe-presets.json| Preset | Tone | Best For |
|---|---|---|
| Warm, professional | Banking, finance |
| Digital, clean | Wallet apps, trading |
| Bright, friendly | Social, consumer |
| Ultra-subtle | Productivity, tools |
| 8-bit inspired | Games, nostalgic |
| Rich, refined | High-end apps |
# Using preset vibe
python scripts/generate_theme.py \
--vibe "crypto-modern" \
--output-dir "./audio-theme"
# Using custom vibe description
python scripts/generate_theme.py \
--vibe-custom "warm organic subtle wooden interface sounds" \
--output-dir "./audio-theme"
# Generate specific categories only
python scripts/generate_theme.py \
--vibe "crypto-modern" \
--categories buttons feedback transactions \
--output-dir "./audio-theme"
# List available presets
python scripts/generate_theme.py --list-vibes
# List all sound names
python scripts/generate_theme.py --list-soundspython scripts/generate_theme.py \
--regenerate "button-click-primary,notification-success" \
--vibe "crypto-modern" \
--output-dir "./audio-theme"| Constant | Description |
|---|---|
| Main action buttons |
| Secondary/ghost buttons |
| Delete/cancel actions |
| Constant | Description |
|---|---|
| Tab navigation |
| Back button/gesture |
| Forward navigation |
| Menu drawer open |
| Menu dismiss |
| Constant | Description |
|---|---|
| Success confirmation |
| Error alert |
| Warning indicator |
| Information notice |
| Badge/counter update |
| Constant | Description |
|---|---|
| Switch enabled |
| Switch disabled |
| Checkbox selected |
| Checkbox deselected |
| Loading initiated |
| Loading finished |
| Constant | Description |
|---|---|
| Modal appearance |
| Modal dismissal |
| Tooltip reveal |
| Dropdown expand |
| Dropdown collapse |
| Constant | Description |
|---|---|
| Transaction sent |
| Payment received |
| Transaction waiting |
| Confirmation success |
audio-theme/
├── theme.json # Theme manifest
├── constants.ts # TypeScript constants
├── buttons/
│ ├── button-click-primary.mp3
│ ├── button-click-secondary.mp3
│ └── button-click-destructive.mp3
├── navigation/
├── feedback/
├── states/
├── modals/
└── transactions/constants.tsimport { UI_SOUNDS } from './audio-theme/constants';
const audio = new Audio(UI_SOUNDS.BUTTON_CLICK_PRIMARY);
audio.volume = 0.3;
audio.play();import { useCallback, useEffect, useRef } from 'react';
export function useUISound(soundUrl: string, volume = 0.3) {
const audioRef = useRef<HTMLAudioElement | null>(null);
useEffect(() => {
audioRef.current = new Audio(soundUrl);
audioRef.current.volume = volume;
audioRef.current.preload = 'auto';
return () => { audioRef.current = null; };
}, [soundUrl, volume]);
const play = useCallback(() => {
if (audioRef.current) {
audioRef.current.currentTime = 0;
audioRef.current.play().catch(() => {});
}
}, []);
return play;
}
// Usage
function SendButton() {
const playClick = useUISound(UI_SOUNDS.BUTTON_CLICK_PRIMARY);
return <button onClick={() => { playClick(); sendTransaction(); }}>Send</button>;
}import { Howl } from 'howler';
const sounds = {
click: new Howl({ src: [UI_SOUNDS.BUTTON_CLICK_PRIMARY], volume: 0.3 }),
success: new Howl({ src: [UI_SOUNDS.NOTIFICATION_SUCCESS], volume: 0.4 }),
};
// Play on interaction
sounds.click.play();--vibe NAME Preset vibe name
--vibe-custom DESC Custom vibe description
--output-dir PATH Output directory (default: ./audio-theme)
--format FORMAT mp3 or wav (default: mp3)
--categories CATS Specific categories to generate
--regenerate SOUNDS Comma-separated sounds to regenerate
--prompt-influence N 0-1, higher = stricter prompt adherence (default: 0.5)
--list-vibes Show available presets
--list-sounds Show all sound namesscripts/generate_theme.pyreferences/sound-design-guide.mdassets/vibe-presets.jsonassets/theme-template.json