<< All versions

Skill v1.0.0

currentAutomated scan100/100
rjaco/maestro/audio
──Details
PublishedSeptember 27, 2026 at 11:41 PM
Content Hashsha256:f59685d372846aa4...
Git SHA
──Files
Files (1 file, 6.0 KB)
SKILL.md6.0 KBactive
SKILL.md · 188 lines · 6.0 KB

version: "1.0.0" name: audio description: "Audio alerts when Maestro needs your attention. Terminal bell, macOS sounds, or Linux audio. Inspired by Peon Ping (100K+ users)."


Audio Feedback

Play audio alerts when Maestro needs attention. Keeps you productive while Maestro builds -- you hear a chime when a checkpoint arrives, a success sound when the feature is done, or a warning when something goes wrong.

Inspired by Peon Ping (100K+ users): developers want to know when their autonomous tool needs them, without staring at the terminal.

Event-Sound Mapping

EventSoundHow
Checkpoint needs inputChimeTerminal bell \a
Feature completeSuccessmacOS: afplay /System/Library/Sounds/Glass.aiff
QA rejectionWarningmacOS: afplay /System/Library/Sounds/Basso.aiff
Self-heal failureAlertmacOS: afplay /System/Library/Sounds/Sosumi.aiff
Error / PAUSEUrgentmacOS: afplay /System/Library/Sounds/Funk.aiff

Cross-Platform Support

Universal (works everywhere)

bash
printf '\a'

The terminal bell. Works in every terminal emulator on every OS. Some terminals flash the taskbar instead of playing a sound (configurable in terminal settings).

macOS

bash
afplay /System/Library/Sounds/Glass.aiff

Uses afplay with built-in system sounds. No extra files needed. Available sounds:

Sound FileBest For
Glass.aiffSuccess / completion
Basso.aiffWarning / QA rejection
Sosumi.aiffAlert / self-heal failure
Funk.aiffUrgent / error
Ping.aiffCheckpoint / attention needed
Hero.aiffMagnum Opus milestone complete

Linux

Try providers in order until one works:

bash
# Option 1: PulseAudio
paplay /usr/share/sounds/freedesktop/stereo/complete.oga
# Option 2: ALSA
aplay /usr/share/sounds/freedesktop/stereo/complete.oga
# Option 3: mpv (lightweight player)
mpv --no-terminal /usr/share/sounds/freedesktop/stereo/complete.oga

Common freedesktop sound files:

Sound FileBest For
complete.ogaSuccess / completion
bell.ogaCheckpoint / attention
dialog-warning.ogaWarning / QA rejection
dialog-error.ogaError / failure

WSL (Windows Subsystem for Linux)

bash
powershell.exe -c "[console]::beep(800,200)"

Frequency and duration are adjustable:

EventFrequency (Hz)Duration (ms)Pattern
Checkpoint800200Single beep
Feature complete600, 800, 1000150 eachRising triple
QA rejection400300Low single
Self-heal failure300, 300200 eachDouble low
Error / PAUSE200500Long low

Configuration

In .maestro/config.yaml:

yaml
audio:
enabled: true
provider: auto # auto | terminal | macos | linux | wsl | none
events:
on_checkpoint: true
on_complete: true
on_error: true
on_qa_rejection: false

Provider Selection

ProviderValueWhen
Auto-detectautoDefault. Detects OS and picks the best provider
Terminal bellterminalUse printf '\a' for everything. Simplest
macOS soundsmacosForce macOS afplay provider
Linux soundslinuxForce Linux paplay/aplay/mpv provider
WSL beepswslForce WSL powershell.exe provider
DisablednoneNo audio at all

Event Toggles

Each event can be individually enabled or disabled. Defaults:

EventDefaultWhy
on_checkpointtrueMost important -- user needs to respond
on_completetrueFeature done, come celebrate
on_errortrueSomething broke, user may need to intervene
on_qa_rejectionfalseUsually auto-resolved by re-dispatch, not urgent

Play Function

The play function detects the OS, selects the provider, and plays the appropriate sound.

Detection Logic

1. Read audio config from .maestro/config.yaml
2. If audio.enabled is false or provider is "none", return silently
3. If provider is "auto":
a. Check if running in WSL (grep -qi microsoft /proc/version)
b. Check if macOS (uname -s == Darwin)
c. Check if Linux (uname -s == Linux)
d. Fall back to terminal bell
4. Map the event name to the sound for the detected provider
5. Play the sound asynchronously (do not block Maestro execution)

Async Playback

Always play sounds in the background so they do not block Maestro:

bash
# macOS example (non-blocking)
afplay /System/Library/Sounds/Glass.aiff &
# Linux example (non-blocking)
paplay /usr/share/sounds/freedesktop/stereo/complete.oga &
# Terminal bell (already instant)
printf '\a'

Error Handling

If the sound command fails (missing binary, missing file), fail silently. Audio is a nice-to-have, never a blocker. Log the failure to .maestro/logs/ at debug level.

Integration Points

The audio skill is called by other Maestro components at specific moments:

CallerEventWhen
dev-loopon_checkpointPhase 7 (CHECKPOINT) in checkpoint/careful mode
maestro.mdon_completeFeature completion summary displayed
dev-loopon_qa_rejectionPhase 5 (QA) returns REJECTED
dev-loopon_errorPhase 4 (SELF-HEAL) exhausts all attempts
dev-loopon_errorAny PAUSE event
opus-loopon_checkpointMilestone checkpoint
opus-loopon_completeMagnum Opus fully complete

YOLO Mode Rule

NEVER play audio during yolo mode. In yolo mode, no user is watching the terminal. Playing sounds would be disruptive (the user may be in a meeting, wearing headphones with music, or AFK). The dev-loop should check the execution mode before calling the audio skill:

if mode != "yolo" and audio.enabled:
play_sound(event)

The only exception: on_error when Maestro PAUSEs even in yolo mode (e.g., self-heal exhausted). If Maestro is paused and waiting for input, a sound is appropriate regardless of mode.

All versions