jaychempan/coding-with-beat/cwb

Claude Code and agent skill by jaychempan/coding-with-beat

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Control music via coding-with-beat. Activate when the user asks to play, pause, skip, or search for music; asks what's playing; mentions a song/artist/genre; or types "cwb" or "/cwb" followed by a command.

Install

npx vskill@latest install jaychempan/coding-with-beat/cwb

SKILL.md

coding-with-beat — Music Control

You have a coding-with-beat MCP server running locally. Use its tools to control music without leaving the coding session.

When to activate

  • User says: "play", "pause", "skip", "next", "what's playing", "volume", "lyrics"
  • User names a song, artist, or genre: "play some lofi", "put on 周杰伦"
  • User types cwb <command> or /cwb <command>
  • User asks about DJ Buddy or music status

Available MCP tools

Call these tools directly — do not shell out to cwb unless MCP is unavailable.

ToolPurpose
playResume playback
resumeResume (alias for play)
toggleToggle play / pause
play_song(query)Search and play by name/artist/genre
play_number(number)Play track #n from last search or list
play_playlist(name)Play a named playlist
smart_search(queries)Mood/vibe/scene search — pass 2–3 angle queries
pausePause
next_trackSkip to next
prev_trackGo to previous
now_playingGet current track info
set_volume(percent)Volume 0–100
seek(seconds)Seek to position (seconds or mm:ss)
set_play_mode(mode)shuffle \sequential \repeat \repeat_one
like_currentLike / favourite current track
search(query)Search library + Apple Music catalog
list_library(limit)List all library tracks
list_loved(limit)List all loved/hearted tracks [♥ 喜欢]
search_loved(query)Search only within loved tracks
list_playlistsList all playlists
list_history(limit)Recently played tracks
history_search(query)Search within play history
set_source(name)Switch source: apple_music \local \qq_music
generate_profile(period)Generate listening report + open HTML in browser — daily \weekly \monthly \yearly
focus_start(work, break_, cycles)Start Pomodoro focus session
focus_statusCurrent focus phase and time remaining
focus_stopStop focus session
show_playerRender pixel player UI
show_coverRender current track cover art as pixel art
show_lyricsShow karaoke / synced lyrics
dj_say(message)Have DJ Buddy say something
vibe_set(vibe)Set session vibe / mood
statusFull player state
tipsShow a card of natural-language phrases the user can say

Natural language examples

User saysAction
"play some lofi"play_song("lofi")
"skip this"next_track
"what's playing?"now_playing
"turn it up"set_volume(80) (increase by ~15)
"pause the music"pause
"shuffle mode"set_play_mode("shuffle")
"like this song"like_current
"search for Jay Chou"search("Jay Chou")
"play #3"play_number(3)
"switch to QQ Music"set_source("qq_music")

Scene dispatch — mood / vibe / scene requests

Do NOT generate keywords. For any request that isn't a specific song/artist/command, match to a scene below and call smart_search once with queries=[angle1, angle2, angle3]. Do NOT call smart_search three separate times — each call overwrites the queue, corrupting play_number() indices.

SceneTrigger wordsAngle 1Angle 2Angle 3
🎧 Lofilofi / 深夜 / 写代码 / 低保真 / chillhoplofi hip hop late night coding chilllofi jazz rain study instrumentalchillhop beats lo-fi bedroom producer
🧠 Focus专注 / 心流 / ambient / 无人声 / flow statedeep focus ambient instrumental no vocalsflow state drone minimal electronicstudy music concentration piano quiet
🔥 Hype充能 / 运动 / 高能 / 早晨 / workout / hypemorning energy upbeat pop indie freshworkout motivation electronic dancehype rap trap energetic beats pump
☕ Jazz爵士 / jazz / 咖啡馆 / smooth / bossa novasmooth jazz cafe background mellowjazz trio acoustic bossa nova guitarlate night jazz piano bar cool relaxed
🌆 Synthwave赛博 / synthwave / 电子 / 夜驾 / neonsynthwave retrowave night drive neoncyberpunk electronic dark ambient synth80s retro synth outrun vapor
🌅 Relax放松 / 解压 / 下班 / 傍晚 / unwindrelaxing downtempo chill evening unwindacoustic folk gentle calm softnature ambient breeze afternoon easy listening
🎹 Classical古典 / 钢琴 / 弦乐 / 交响 / classicalclassical piano solo nocturne gentlestring quartet orchestral cinematic calmbach mozart ambient classical study
💙 Sad伤感 / 失落 / 难过 / melancholy / heartbreakmelancholy emotional piano sad indieheartbreak slow ballad rnb rainysorrowful strings cinematic emotional
🎉 Party派对 / 聚会 / party / dance / 蹦迪 / edmparty dance pop upbeat celebratoryedm festival club electronic bangerlatin pop reggaeton dance floor
🏮 Chinese国风 / 中国风 / 华语 / 民谣 / 古风中国风 古风 古琴 传统乐器华语流行 国语歌 indie 民谣chinese traditional folk guzheng erhu instrumental
🌙 Sleep助眠 / 睡前 / 失眠 / sleep / white noisesleep music white noise ambient dronelullaby soft piano rain sleep calmmeditation deep sleep binaural delta waves

Display results grouped by angle with emoji labels (returned by the tool), number globally across groups (1, 2, 3…), end with: 喜欢哪首?说编号我来播。 Do NOT auto-play.

Loved / 喜欢列表

When user says: 从喜欢里 / 收藏里找 / 我喜欢的 / loved only / play from liked / 心动歌单 → call search_loved(query) instead of smart_search()

When user says: 列出收藏 / 我的喜欢 / show liked / list loved / 喜欢列表 → call list_loved()

Normal smart_search() already includes loved tracks (ranked first, tagged [♥ 喜欢]).

Tips / 帮助

When user says: DJ 能做什么 / DJ Buddy 能做什么 / DJ 有什么指令 / DJ 怎么用 / ask DJ / DJ help / what can DJ do → call tips()

Library-only search

When the user explicitly restricts the search to their local library — trigger phrases include:

  • 中文: "从资料库找"、"资料库里有没有"、"我已经有这首"、"本地库里"
  • English: "in my library", "library only", "do I have", "from my library"

Do this:

  1. Call search(query) as normal.
  2. From the results, only show entries where `source == "library"`.
  3. If none are found, tell the user: "资料库里没找到,要不要搜一下线上?" — do NOT auto-expand to catalog.

Do NOT call list_library for this — search() is more targeted. list_library is only useful when the user wants to browse all tracks without a specific query.

play_number — number parsing

Always parse the user's number expression before calling play_number(N):

User saysCall
"3" / "#3" / "第3首" / "第三首" / "第三个" / "三"play_number(3)
"第一" / "1" / "one" / "the first one"play_number(1)
"第二" / "2" / "second" / "下一个" (when result list is shown)play_number(2)
"最后一首" / "last one"use the highest number shown in the results

Chinese ordinals 第一/第二/第三/第四/第五 map to 1/2/3/4/5. Always resolve before calling.

play_number recovery — index out of bounds

When play_number(N) returns an error containing "only", "had", "items", or "out of range":

  1. If the scene queries are visible in the current conversation: immediately call smart_search(queries=[...]) again with the same queries, then call play_number(N).
  2. If the scene is not visible: ask once — "队列已被刷新,你想播哪个场景的第 N 首?" — then re-search and play.

Do NOT tell the user to re-search manually. Always recover automatically when context is available.

Setup check — first-time installation

Do not run a shell curl preflight against /mcp. Streamable HTTP MCP endpoints are not plain health-check URLs, and Codex shell sandboxing may block local sockets even when the MCP tools are available.

Use the MCP tools as the source of truth:

  1. If mcp__coding_with_beat__ tools are available, call the requested tool directly.
  2. If MCP tools are unavailable or the MCP call itself reports the server is unreachable,

fall back to the cwb CLI commands below.

  1. If both MCP and CLI are unavailable, tell the user and offer the one-liner:
coding-with-beat 还没安装。运行下面这行来一键安装:
curl -LsSf https://raw.githubusercontent.com/jaychempan/coding-with-beat/main/bootstrap_codex.sh | sh
安装完重开一个 shell 和 Codex session,状态栏出现 (•_•) 就好了。

CLI fallback

If MCP tools are unavailable, fall back to the cwb CLI:

bash
cwb play "query" # search and play
cwb play <n> # play track #n from last search (NOT cwb play-number)
cwb pause # pause
cwb next # skip
cwb np # now playing
cwb volume 70 # volume
cwb like # like current
cwb search "query" # search without playing
cwb loved # list all loved/hearted tracks
cwb search_loved "q" # search within loved tracks only

Response style

After any music action, give a one-line confirmation: ▶ Now playing: Midnight City — M83. No extra commentary unless the user asks.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/jaychempan/coding-with-beat/cwb/badge)](https://verified-skill.com/skills/jaychempan/coding-with-beat/cwb)

Something wrong with this skill or its page? Tell us.