Skip to content
Back to skills

Sources

ASecurity

Sources — add, edit, or remove streams and genres

  • 20 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added May 26, 2026
ai-agentsbash

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add kennethleungty/claude-music --skill sources --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Sources?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Sources
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/kennethleungty-sources/badge)](https://www.skillsdirectory.com/skills/kennethleungty-sources)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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:

```bash
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:
```yaml
genre:
  - name: Station Name
    url: http://stream.url/path
```

### Adding 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.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.