menu

menu is a skill for Claude Code, Codex from Bangs00/claude-media-control. It costs 45 tokens per session (650 once invoked), scanned A, original, MIT.

An interactive remote for controlling music and other media from a selectable menu.

In plain words
What is it for?
It is for viewing the current track and using controls such as play or pause, next, previous, seeking, volume, and artwork.
Why use it?
It avoids switching between apps to see what is playing or change playback.

Skill for Claude CodeCodex

Installs and runs on its own, but its text points at files inside its plugin — anything it tells you to read at a ${CLAUDE_PLUGIN_ROOT} path is only there once the plugin is installed. Installing the plugin gets both.

Part of the media plugin — 16 skills, 1 hook shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/bangs00/claude-media-control/menu
Any agent
npx skills add Bangs00/claude-media-control --skill menu
Clone the repo
git clone --depth 1 https://github.com/Bangs00/claude-media-control

Made for: Claude Code, Codex.

Or install media, the plugin that ships this one along with the rest of its 16 skills, 1 hook.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for menu

README.md
[![agentmods](https://agentmods.dev/badge/skills/bangs00/claude-media-control/menu.svg)](https://agentmods.dev/skills/bangs00/claude-media-control/menu)
Your own site
<a href="https://agentmods.dev/skills/bangs00/claude-media-control/menu"><img src="https://agentmods.dev/badge/skills/bangs00/claude-media-control/menu.svg" alt="Measured on agentmods" height="20"></a>
Per session 45 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 650 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00045 $0.00650
Opus 5 $0.00023 $0.00325
Sonnet 5 $0.00009 $0.00130
Haiku 4.5 $0.00005 $0.00065

Measured 4d ago against content hash 4e38fe87cfbe, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

menu scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/menu/SKILL.md · 33 lines

What it actually says

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>):
    • ⏯ Toggletoggle · ⏭ Nextnext · ⏮ Previousprev
    • 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.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago First seen · 33 lines · 45 tokens per session scan A 4e38fe87cfbe

Subscribe to this mod's changes

menu is a skill published in the GitHub repository Bangs00/claude-media-control (4 stars, last pushed 1mo ago), licensed MIT. It adds 45 tokens to every session and 650 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

economist-style

Apply The Economist style guide to written content. Use when editing markdown, HTML, documentation, or any written text that needs professional editing for clarity, precision, and brevity. Detects weasel words, fillers, passive voice, and style issues.

TAJD/economist-style-guide-plugin · 54 tokens

quiz-me

Quiz the user on root cause and intended fix BEFORE writing any non-trivial code, then verify comprehension of every change after. Use when the user asks for a bug fix, refactor, or feature and wants to stay technically sharp instead of vibe-coding. Also use when the user says "quiz me", "don't let me vibe code", or…

emanzurv/quiz-me-skill · 82 tokens

configure

Set up the telegram-topics channel — save the bot token and forum group id, then run a preflight check. Use when the user pastes a Telegram bot token, asks to configure telegram-topics, asks "how do I set this up", or wants to check channel status.

2naive/claude-telegram-topics · 60 tokens

allowlist

Put this plugin on the Claude Code channels allowlist (managed settings) so --channels delivers inbound messages — one command, one admin prompt. Use when preflight reports NOT ALLOWLISTED, when Telegram messages never arrive in sessions although the send tools work, or when the user asks to set up the channels…

2naive/claude-telegram-topics · 70 tokens

access

Manage who may drive telegram-topics sessions — view and edit the user allowlist. Use when the user asks to allow or remove a Telegram user, check who's allowed, or lock the channel down.

2naive/claude-telegram-topics · 42 tokens

spotify

Control Spotify on macOS. Use for playing music, controlling playback, and getting track information.

rbouschery/marketplace · 21 tokens