Skip to content
Automation
Skill

/config

Quick media settings — turn the now-playing statusline, the /media:now progress bar, or the playback history on/off, or reset the statusline to its default look. `config <key> [on|off|value]` changes any key directly. Use when the user wants to enable, disable, or reset a media

From plugin
media
416 skills1 hook

Claude Code

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

SKILL.md

config.SKILL.md
name: config
description: Quick media settings — turn the now-playing statusline, the /media:now progress bar, or the playback history on/off, or reset the statusline to its default look. `config <key> [on|off|value]` changes any key directly. Use when the user wants to enable, disable, or reset a media display feature. (Arranging and styling the statusline lives in /media:statusline.)
argument-hint: [key] [on|off]
allowed-tools: Bash, AskUserQuestion

Requested change (may be empty): $ARGUMENTS

Current settings:

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

---

Pick the mode from `$ARGUMENTS`:

Mode A — a key was given (`$ARGUMENTS` is NOT empty)

The user named a specific key (e.g. `display.statusline on`, `statusline.marquee off`). Apply it directly and report the result:

"${CLAUDE_PLUGIN_ROOT}/scripts/media.sh" config $ARGUMENTS

Valid keys:

  • `display.progressbar` — progress bar in the `/media:now` reply
  • `display.statusline` — the statusline now-playing segment
  • `statusline.multiline` — layout: `on` = each group on its own line, `off` = one line (unused when `statusline.fields` has `/` breaks)
  • `statusline.color` — ANSI colors/bold/italic in the statusline (default `on`; the `NO_COLOR` env var also disables it)
  • `statusline.marquee` — scroll statusline titles wider than 30 cells, one char/second (default `on`)
  • `statusline.links` — which parts of the statusline segment are cmd+clickable, each switchable on its own (default `on` = all four): `toggle` (the ▶︎/⏸ icon toggles playback), `track` (title/artist jump to the playing media — the playing browser tab or Music's current track when the app is scriptable, plain app activation otherwise), `app` (the same jump from the app name), and `seek` (each progress-bar cell seeks). Takes `on` (all), `off` (none), or a comma/space list of parts — `config statusline.links toggle,seek` leaves the text plain and keeps the icon and bar clickable. Any part left on builds + registers the local `claude-media-control://` handler app, and is refused (exit 3) when that build fails; parts switched off render exactly as they would with links off. Works in hyperlink-capable terminals (iTerm2, Ghostty, WezTerm, Kitty, VS Code)
  • `history.record` — log played tracks to the local history (default `on`; view with `/media:history`)
  • `statusline.fields` — which items the statusline shows, as an ordered comma/space list of `track app volume progressbar time output` with optional `/` line breaks (interactive: `/media:statusline`)
  • `style.<part>` — per-item statusline styles (15 string-valued keys; `config style` lists them, the value `reset` restores one, `config style reset` restores all). Guided styling lives in `/media:statusline`.
  • `statusline reset` — restore the whole statusline **appearance** to defaults: arrangement, explicit lines, colors, marquee, and every `style.*` key. Does not touch `display.statusline` or the non-statusline toggles.

Rules you must follow:

  • Enabling runs a preflight. **Exit code 3** means the feature cannot work right now and the

enable was **refused** (fail-closed by design). Explain the reason from stderr, point to `/media:doctor`, and do NOT retry or work around the refusal.

  • Enabling `display.statusline` also **wires the segment into

`~/.claude/settings.json` automatically** (wrapper + backup of the previous `statusLine`; details in `docs/statusline.md`). Relay the wiring line the command prints — it says whether it wired, refreshed, or found a manual setup it left alone. The segment shows up on the next statusline tick, no restart needed.

  • A wish to **unwire** the statusline (remove it from settings.json, "배선

해제", "settings에서 빼줘") maps to `"${CLAUDE_PLUGIN_ROOT}/scripts/media.sh" statusline uninstall` — it restores the backed-up `statusLine`, removes the wrapper + backup, and turns `display.statusline` off. (Plain `display.statusline off` only hides the segment and keeps the wiring for a fast re-enable. Uninstalling the plugin reverts the wiring by itself.)

  • Disabling always succeeds.
  • Afterwards show the resulting state (re-run `config` with no key if helpful).

Mode B — no key given (`$ARGUMENTS` is empty) → quick settings

Ask ONE **AskUserQuestion** call with exactly ONE question (single-select, header "Settings"): "Which setting do you want to change?" — exactly these four options, with the CURRENT value from the settings table above baked into each label so the user sees the state before picking:

1. `Statusline: <on|off>` — description: the now-playing segment rendered into Claude Code's statusline (enabling wires it into `settings.json` automatically and it appears on the next tick); selecting flips it. 2. `/media:now progress bar: <on|off>` — description: the progress bar drawn under the `/media:now` reply; selecting flips it. 3. `Playback history: <on|off>` — description: passively log played tracks (view with `/media:history`); selecting flips it. 4. `Reset statusline settings` — description: restore the statusline's default look — arrangement, lines, colors, marquee, and all per-item styles. The three toggles above are not touched.

Then apply the selection with one Bash call:

"${CLAUDE_PLUGIN_ROOT}/scripts/media.sh" config display.statusline on   # option 1 (flip)
"${CLAUDE_PLUGIN_ROOT}/scripts/media.sh" config display.progressbar on  # option 2 (flip)
"${CLAUDE_PLUGIN_ROOT}/scripts/media.sh" config history.record on       # option 3 (flip)
"${CLAUDE_PLUGIN_ROOT}/scripts/media.sh" config statusline reset        # option 4

If enabling `display.statusline` is **refused (exit 3)**, no now-playing read path works right now; relay the stderr reason and point to `/media:doctor` — fail-closed by design, never bypass it. An "Other" answer names a key or a wish — map it onto Mode A (arrangement or styling wishes belong to `/media:statusline`; run that flow instead of guessing keys here).

Show the result

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
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
menu

menu

Interactive media remote — control playback via a selectable menu (toggle, next, previous, seek, volume, artwork). Use when the…

@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…

n8n10d209k
@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-usetoday120k
@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 config.

Which coding agents can use config?
config 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.