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.
Generates cohesive UI audio themes with subtle sound effects for apps using ElevenLabs API. Use when creating coordinated sounds for wallet apps, dashboards, or web interfaces mapped to standard UI interactions like clicks, notifications, and navigation.
/plugin marketplace add b-open-io/prompts/plugin install bopen-tools@b-open-ioThis skill inherits all available tools. When active, it can use any tool Claude has access to.
assets/theme-template.jsonassets/vibe-presets.jsonreferences/sound-design-guide.mdscripts/generate_theme.pyGenerate cohesive sets of subtle, minimal UI sound effects using ElevenLabs text-to-sound-effects API. Create "audio themes" - coordinated sets of sounds that share a common aesthetic and map to standard UI interaction constants.
# 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"
Before generating sounds, understand the application's aesthetic:
Application Context:
Audio Direction:
Available presets in assets/vibe-presets.json:
| Preset | Tone | Best For |
|---|---|---|
corporate-trust | Warm, professional | Banking, finance |
crypto-modern | Digital, clean | Wallet apps, trading |
playful-delight | Bright, friendly | Social, consumer |
minimal-focus | Ultra-subtle | Productivity, tools |
retro-digital | 8-bit inspired | Games, nostalgic |
premium-luxury | 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-sounds
python scripts/generate_theme.py \
--regenerate "button-click-primary,notification-success" \
--vibe "crypto-modern" \
--output-dir "./audio-theme"
| Constant | Description |
|---|---|
button-click-primary | Main action buttons |
button-click-secondary | Secondary/ghost buttons |
button-click-destructive | Delete/cancel actions |
| Constant | Description |
|---|---|
nav-tab-switch | Tab navigation |
nav-back | Back button/gesture |
nav-forward | Forward navigation |
nav-menu-open | Menu drawer open |
nav-menu-close | Menu dismiss |
| Constant | Description |
|---|---|
notification-success | Success confirmation |
notification-error | Error alert |
notification-warning | Warning indicator |
notification-info | Information notice |
notification-badge | Badge/counter update |
| Constant | Description |
|---|---|
toggle-on | Switch enabled |
toggle-off | Switch disabled |
checkbox-check | Checkbox selected |
checkbox-uncheck | Checkbox deselected |
loading-start | Loading initiated |
loading-complete | Loading finished |
| Constant | Description |
|---|---|
modal-open | Modal appearance |
modal-close | Modal dismissal |
tooltip-show | Tooltip reveal |
dropdown-open | Dropdown expand |
dropdown-close | Dropdown collapse |
| Constant | Description |
|---|---|
tx-sent | Transaction sent |
tx-received | Payment received |
tx-pending | Transaction waiting |
tx-confirmed | 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/
The generated constants.ts exports ready-to-use constants:
import { 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();
UI sounds should be mixed at 20-40% to remain unobtrusive.
The more frequently a sound occurs, the subtler it should be. Button clicks should be nearly imperceptible; transaction confirmations can be more noticeable.
--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 names
scripts/generate_theme.py - CLI tool for generating themesreferences/sound-design-guide.md - Detailed sound design best practicesassets/vibe-presets.json - Predefined vibe configurationsassets/theme-template.json - Example output manifestFor custom sound generation beyond standard categories, use the content-specialist agent which has full ElevenLabs API integration for sound effects, music, and voice generation.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.