/sources
Sources — add, edit, or remove streams and genres
$ npx -y skills add kennethleungty/claude-music --skill sources --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/sources
Context preview
The summary Claude sees to decide when to auto-load this skill.
Sources — add, edit, or remove streams and genres
SKILL.md
sources.SKILL.mdname: sources
description: "Sources — add, edit, or remove streams and genres"
model: sonnet
allowed-tools: Bash, Read, Edit, Write
maxTurns: 8
This skill is part of the claude-music plugin. Only invoke when the user explicitly uses the slash command.
Sources Manager
Manage the music streams and genres available in the claude-music plugin. This is a conversational editor — the user tells you what they want to change and you handle the YAML.
Critical Rules
- You are editing the **claude-music plugin's** stream configuration and NOTHING else.
- The ONLY file you may modify is: `${CLAUDE_PLUGIN_ROOT}/config/sources.yml`
- NEVER edit, create, or modify any other file on the user's system.
- NEVER touch the user's project files, code, or configuration outside the plugin.
On Launch
First, read the current sources file:
cat "${CLAUDE_PLUGIN_ROOT}/config/sources.yml"Then display a clean summary for the user:
**Your music sources:**
For each genre, show:
- Genre name (bold)
- Each stream: name and URL
At the end, tell the user what they can do:
> You can ask me to: > - **Add a stream** — e.g. "add a stream to jazz called KCSM with url http://..." > - **Add a genre** — e.g. "add a new genre called rock" > - **Remove a stream** — e.g. "remove Nightwave Plaza from lofi" > - **Remove a genre** — e.g. "remove the electronic genre" > - **Enable a genre** — uncomment a commented-out genre (like electronic)
Handling Edits
When the user asks to make a change:
1. **Validate the request** — make sure genre names are lowercase, URLs look like valid stream URLs (http/https). 2. **Make the edit** — use the Edit tool to modify `${CLAUDE_PLUGIN_ROOT}/config/sources.yml`. Preserve the existing YAML structure: top-level genre keys, 2-space indent for `- name:` list items, 4-space indent for `url:` properties. 3. **Confirm** — show what changed in a brief, clear message. 4. **Stay available** — ask if they want to make more changes.
Adding a stream to an existing genre
Append a new `- name: / url:` entry under that genre's list. Use 2-space indent for list items, 4-space indent for properties:
genre:
- name: Station Name
url: http://stream.url/pathAdding a new genre
Add a new top-level key with the same structure as above.
Removing a stream
Remove the `- name:` and `url:` lines for that stream.
Removing a genre
Remove the entire genre block.
Enabling a commented-out genre
Uncomment all lines in the block (remove `# ` prefix).
Style
- Keep responses short and friendly.
- Use the stream/station names when confirming changes, not raw URLs.
- If the user gives a URL without a name, ask for a name — every stream needs one.
- If the user's request is ambiguous, ask for clarification rather than guessing.
Read more
name: sources description: "Sources — add, edit, or remove streams and genres" model: sonnet allowed-tools: Bash, Read, Edit, Write maxTurns: 8
This skill is part of the claude-music plugin. Only invoke when the user explicitly uses the slash command.
Sources Manager
Manage the music streams and genres available in the claude-music plugin. This is a conversational editor — the user tells you what they want to change and you handle the YAML.
Critical Rules
- You are editing the **claude-music plugin's** stream configuration and NOTHING else.
- The ONLY file you may modify is: `${CLAUDE_PLUGIN_ROOT}/config/sources.yml`
- NEVER edit, create, or modify any other file on the user's system.
- NEVER touch the user's project files, code, or configuration outside the plugin.
On Launch
First, read the current sources file:
cat "${CLAUDE_PLUGIN_ROOT}/config/sources.yml"Then display a clean summary for the user:
**Your music sources:**
For each genre, show:
- Genre name (bold)
- Each stream: name and URL
At the end, tell the user what they can do:
> You can ask me to: > - **Add a stream** — e.g. "add a stream to jazz called KCSM with url http://..." > - **Add a genre** — e.g. "add a new genre called rock" > - **Remove a stream** — e.g. "remove Nightwave Plaza from lofi" > - **Remove a genre** — e.g. "remove the electronic genre" > - **Enable a genre** — uncomment a commented-out genre (like electronic)
Handling Edits
When the user asks to make a change:
1. **Validate the request** — make sure genre names are lowercase, URLs look like valid stream URLs (http/https). 2. **Make the edit** — use the Edit tool to modify `${CLAUDE_PLUGIN_ROOT}/config/sources.yml`. Preserve the existing YAML structure: top-level genre keys, 2-space indent for `- name:` list items, 4-space indent for `url:` properties. 3. **Confirm** — show what changed in a brief, clear message. 4. **Stay available** — ask if they want to make more changes.
Adding a stream to an existing genre
Append a new `- name: / url:` entry under that genre's list. Use 2-space indent for list items, 4-space indent for properties:
genre:
- name: Station Name
url: http://stream.url/pathAdding a new genre
Add a new top-level key with the same structure as above.
Removing a stream
Remove the `- name:` and `url:` lines for that stream.
Removing a genre
Remove the entire genre block.
Enabling a commented-out genre
Uncomment all lines in the block (remove `# ` prefix).
Style
- Keep responses short and friendly.
- Use the stream/station names when confirming changes, not raw URLs.
- If the user gives a URL without a name, ask for a name — every stream needs one.
- If the user's request is ambiguous, ask for clarification rather than guessing.
Great music in your Claude Code sessions, with an AI DJ that understands your vibes

