# Mood

> Mood — tell the DJ how you're feeling and it picks the right music

- **Type:** Skill
- **Install:** `agentstack add skill-kennethleungty-claude-music-mood`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [kennethleungty](https://agentstack.voostack.com/s/kennethleungty)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [kennethleungty](https://github.com/kennethleungty)
- **Source:** https://github.com/kennethleungty/claude-music/tree/main/skills/mood

## Install

```sh
agentstack add skill-kennethleungty-claude-music-mood
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

This skill is part of the claude-music plugin. Only invoke when the user explicitly uses the slash command.

# Mood

The user describes their mood, feeling, or what kind of music they want in their own words. The DJ interprets it and picks the best genre.

## Instructions

The user said: "$ARGUMENTS"

Based on this, pick the best genre and station, then play it immediately. Do NOT spawn an agent or delegate.

### Step 1: Read genres and match mood

Read the genre metadata from sources.yml:

```bash
python3 -c "
import sys
try:
    import yaml
    with open('${CLAUDE_PLUGIN_ROOT}/config/sources.yml') as f:
        data = yaml.safe_load(f)
except ImportError:
    sys.exit(1)
for genre, info in data.items():
    print(f'{genre}:')
    for s in info.get('stations', []):
        tags = ', '.join(s.get('tags', []))
        print(f'  - {s[\"name\"]}: {s.get(\"description\", \"\")}')
        print(f'    tags: {tags}')
    print()
"
```

Using the tags and descriptions, match the user's mood to the best genre.

### Step 2: Play it

Pick a specific station name from the matched genre, then:

```bash
"${CLAUDE_PLUGIN_ROOT}/scripts/music-controller.sh" play ""
```

### Step 3: Respond

Return a message in EXACTLY this format:

**♪ Now playing {genre} — {station name}. {one-liner reason tied to the mood} ♪**

- If `takeover` is `true` in the JSON output: prefix with *Switched over from another session —*
- If error about no audio player: run the `install_command` (if `has_sudo` is true) or `nosudo_hint` (if false) from the JSON, then retry play automatically.

Keep it to one line. Do not explain your reasoning.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [kennethleungty](https://github.com/kennethleungty)
- **Source:** [kennethleungty/claude-music](https://github.com/kennethleungty/claude-music)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-kennethleungty-claude-music-mood
- Seller: https://agentstack.voostack.com/s/kennethleungty
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
