Skip to content
Automation
Skill

/menu

Interactive media remote — control playback via a selectable menu (toggle, next, previous, seek, volume, artwork). Use when the user asks for a media remote, controller, or an interactive way to control music.

From plugin
media
416 skills1 hook

Claude Code

$ npx -y skills add Bangs00/claude-media-control --skill menu --agent claude-code

SKILL.md

menu.SKILL.md
name: menu
description: Interactive media remote — control playback via a selectable menu (toggle, next, previous, seek, volume, artwork). Use when the user asks for a media remote, controller, or an interactive way to control music.
allowed-tools: Bash, AskUserQuestion, Read

Current state (JSON):

!`"${CLAUDE_PLUGIN_ROOT}/scripts/media.sh" now`

You are an interactive media remote. Follow this loop strictly:

1. Show the current state in one compact markdown line (not a code block, so the styling renders): `▶︎|⏸ **<title>** — *<artist>* · <appName> · **m:ss** / m:ss` (title bold, artist italic, elapsed time bold. The elapsed `m:ss` is `elapsedTimeNow` — never the stale `elapsedTime` snapshot — and the total is `duration`, or `LIVE` when absent. If the JSON is `null`, say nothing is playing — the menu can still send Play.) 2. Call AskUserQuestion with exactly ONE question ("What next?", header "Remote") and exactly these 4 options:

  • `⏯ Toggle` — play/pause the current media
  • `⏭ Next` — skip to the next track
  • `⏮ Previous` — go back a track
  • `More…` — seek to a position, or finish

3. Act on the selection using Bash (always `"${CLAUDE_PLUGIN_ROOT}/scripts/media.sh" <cmd>`):

  • `⏯ Toggle` → `toggle` · `⏭ Next` → `next` · `⏮ Previous` → `prev`
  • `More…` → ask a second AskUserQuestion with exactly these 4 options:
  • `Seek` — then ask where to (or take a free-text answer like "1:30"), convert to seconds, run `seek <seconds>`
  • `Volume` — then ask the level (or take free text like "70" / "louder"), run `volume <0-100>` (relative: read current, ±10)
  • `Artwork` — run `artwork`, then display the image with the Read tool on the returned `path`
  • `Done` — end the remote session
  • Free text via the built-in "Other" field (e.g. "seek 90", "volume 30", "pause", "done") → interpret it as the matching media command and run it; "done"/"stop" ends the session.

4. After each command, report the resulting state in ONE line in the same styled format as step 1 (from the JSON the command printed), then re-present the menu (step 2). 5. End when the user picks `Done`, types a stop word, or declines to answer. Close with the final playback state in one line.

Never dump raw JSON to the user. If a command reports `"degraded": true`, mention `/media:doctor` once, not on every loop turn.

Read more
@bangs00
Ships withmedia

The current track, live in your Claude Code statusline — ticking every second, ⌘+clickable, styleable down to the bar characters: And whatever your Mac is playing — Spotify, Apple Music, a browser tab, VLC — you can control it from the chat too: "what song is

Stars on GitHub

Momentum

stars in total
4
Star history of Bangs00/claude-media-control on GitHub, a chart by star-history.com

Other skills on media.

verify

verify

How to verify media.sh changes end-to-end on a real Mac — isolated data dir, real native build, and a controllable fake…

@bangs00@bangs00Install Skill
artwork

artwork

Show the album artwork (cover art) of the currently playing track. Use when the user asks to see the album art, cover image, or…

@bangs00@bangs00Install Skill
config

config

Quick media settings — turn the now-playing statusline, the /media:now progress bar, or the playback history on/off, or reset the…

@bangs00@bangs00Install Skill
doctor

doctor

Diagnose the media plugin — native build, read/control paths, fallbacks, permissions — and suggest fixes. Use when media commands…

@bangs00@bangs00Install Skill
history

history

Show recently played tracks (a passive local playback log). Use when the user asks what played earlier, what song was on before,…

@bangs00@bangs00Install Skill
next

next

Skip to the next track in whatever app is playing on this Mac. Use when the user says next song, skip this track, or change the…

@bangs00@bangs00Install Skill

More skills from other plugins.

agent-builder

agent-builder

Load immediately after an Agent intent, before the first agent_builder_* call. Governs how you create, configure, test, and…

n8n13d209k
@n8n-io@n8n-ioInstall Skill
browser-use

browser-use

Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…

@browser-use@browser-useInstall Skill
agent-browser

agent-browser

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…

@vercel-labs-2@vercel-labs-2Install Skill
add-anydoc

add-anydoc

Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when…

@nanocoai@nanocoaiInstall Skill

Questions about menu.

Which coding agents can use menu?
menu installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.