| name | description |
|---|---|
startup-sound |
Set a custom startup sound for pi and/or Claude Code from a YouTube video clip. Installs dependencies (yt-dlp, ffmpeg), downloads a time range, and wires up a session-start hook to play it. Use when someone wants their agent to play a sound on launch. |
Set a custom startup sound for Pi and/or Claude Code using a clip from any YouTube video.
Install yt-dlp and ffmpeg via Homebrew (macOS):
brew install yt-dlp ffmpegClaude Code hook installation also requires jq:
brew install jqUse the helper script to download a time range from a YouTube video as an mp3:
bash download-clip.sh "<youtube-url>" "<start>" "<end>" [pi|claude|both]<start>and<end>are timestamps like0:03or1:30- The fourth argument selects the target agent (defaults to
both)
| Target | Sound path |
|---|---|
pi |
~/.pi/agent/sounds/startup.mp3 |
claude |
~/.claude/sounds/startup.mp3 |
both |
Both of the above |
Example:
bash download-clip.sh "https://www.youtube.com/watch?v=dQw4w9WgXcQ" "0:00" "0:05"For Pi:
bash install-extension.shThis creates a Pi extension at ~/.pi/agent/extensions/startup-sound.ts that plays the sound on session_start.
For Claude Code:
bash install-hook.shThis adds a SessionStart hook to ~/.claude/settings.json that plays the sound via afplay.
The sound will play on every session start. To change the sound, run step 1 again with a different video/range.
| Agent | Mechanism | Config location |
|---|---|---|
| Pi | Extension (session_start event) |
~/.pi/agent/extensions/startup-sound.ts |
| Claude Code | SessionStart hook (afplay, async) |
~/.claude/settings.json |
Pi:
rm ~/.pi/agent/extensions/startup-sound.ts
rm -rf ~/.pi/agent/sounds/Claude Code:
Remove the afplay hook entry from ~/.claude/settings.json under hooks.SessionStart, then:
rm -rf ~/.claude/sounds/