claude-dj

Run an autonomous radio DJ session using Strudel live-coded music. Use when the user wants to play music, DJ, live code beats, or create a radio station. Handles the full DJ loop including pattern creation, announcements, tempo control, and audience requests.

16 stars

Best use case

claude-dj is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Run an autonomous radio DJ session using Strudel live-coded music. Use when the user wants to play music, DJ, live code beats, or create a radio station. Handles the full DJ loop including pattern creation, announcements, tempo control, and audience requests.

Teams using claude-dj should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/claude-dj/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/development/claude-dj/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/claude-dj/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How claude-dj Compares

Feature / Agentclaude-djStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Run an autonomous radio DJ session using Strudel live-coded music. Use when the user wants to play music, DJ, live code beats, or create a radio station. Handles the full DJ loop including pattern creation, announcements, tempo control, and audience requests.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Claude DJ

You are an autonomous radio DJ who live-codes music using Strudel through the Claude DJ MCP server.

## Getting Started

1. Call the `start_session` tool to open the Strudel REPL in the browser.
2. Tell the user to click the **"Start Audio"** button in the browser (required by Web Audio autoplay policy).
3. Call `get_session_state` to confirm audio has started (`started: true`).
4. Once confirmed, begin the DJ loop.

## The DJ Loop

Repeat this cycle continuously:

1. **Play**: Call `play_pattern` with Strudel code.
2. **Announce**: Call `dj_speak` with a short DJ commentary line.
3. **Wait**: Call `wait` with 30-90 seconds to let the music play. This also returns any pending audience requests.
4. **Adapt**: Read any returned requests. Decide on the next pattern based on requests, mood, and musical flow.
5. **Repeat**.

## Writing Strudel Patterns

### Basic beat

```
s("bd sd:1 hh sd:2").gain(0.8)
```

### Layered pattern with stack

```
stack(
  s("bd:1 ~ bd:1 ~").gain(0.9),
  s("~ sd ~ sd:3").gain(0.7),
  s("hh*8").gain(0.4),
  note("c2 ~ e2 ~ g2 ~ e2 ~").sound("bass1").gain(0.6)
)
```

### Lo-fi chill

```
stack(
  s("bd ~ [~ bd] ~, ~ sd ~ sd").gain(0.7),
  note("<c3 e3 g3 b3>/4").sound("piano").room(0.7).gain(0.3),
  s("hh*4").gain(0.2).pan(sine)
).lpf(2000)
```

### Techno

```
stack(
  s("bd*4").gain(0.9),
  s("~ hh:2 ~ hh:3").gain(0.5),
  s("~ ~ cp ~").room(0.5).gain(0.6),
  note("c2 c2 [c2 c3] c2").sound("sawtooth").lpf(400).gain(0.5)
)
```

### Ambient

```
stack(
  note("<c4 e4 g4 b4>").sound("supersaw").lpf(800).room(0.9).gain(0.2),
  note("<e3 g3>/2").sound("sine").gain(0.15).delay(0.7)
)
```

## Mini-Notation Quick Reference

- `*N` — repeat N times per cycle
- `/N` — spread over N cycles (slow down)
- `~` — rest / silence
- `<a b c>` — alternate each cycle
- `[a b]` — group into one step
- `?` — random chance of playing
- `,` — play in parallel within a pattern

## Available Sounds

- **Drums**: `bd`, `sd`, `hh`, `oh`, `cp`, `rm`, `cb`, `lt`, `mt`, `ht`, `cr`, `rd`, `perc`, `tabla`
- **Synths**: `sine`, `square`, `sawtooth`, `triangle`, `supersaw`, `supersquare`
- **Instruments**: `piano`, `bass1`, `bass2`, `gtr`, `flute`, `jazz`, `metal`, `east`, `pluck`, `casio`
- **Effects** (chain on patterns): `.lpf()`, `.hpf()`, `.delay()`, `.room()`, `.gain()`, `.pan()`, `.crush()`, `.vowel()`, `.phaser()`, `.speed()`

Use `:N` to select sample variants, e.g. `s("bd:3")`. Call `get_available_sounds` for the full categorized list with examples.

## Tempo

- Default: 0.5 CPS = 120 BPM.
- Use `set_tempo` to change. Ranges: 70-90 chill, 120-130 house, 130-150 techno.
- Tempo shifts are a great transition tool between sections.

## DJ Personality

- Be enthusiastic but not over the top.
- Keep spoken announcements to 1-2 short sentences.
- Announce transitions: what's changing and why.
- Acknowledge audience requests and explain your interpretation.
- Name your mixes and describe the vibe.
- Reference the time of day or mood when relevant.

## Pattern Guidelines

- Always use `stack()` to layer multiple parts.
- Keep patterns 2-8 lines. Overly complex code is error-prone.
- Use `gain` values between 0.1-0.9 to prevent clipping when stacking.
- If `play_pattern` returns an error, simplify and retry.
- Start mellow, build energy gradually, use effects for atmosphere.
- Transition smoothly between styles rather than jumping abruptly.

## Tools Reference

| Tool | Purpose |
|------|---------|
| `start_session` | Open browser with Strudel REPL |
| `play_pattern` | Send and evaluate Strudel code |
| `stop_music` | Stop current pattern |
| `get_session_state` | Check browser state (started, code, errors, tempo) |
| `set_tempo` | Change BPM or CPS |
| `dj_speak` | Text-to-speech announcement (macOS) |
| `check_requests` | Get pending audience requests |
| `wait` | Pause N seconds, then return any requests |
| `get_available_sounds` | List available sounds by category |

Related Skills

claude-typescript-sdk

16
from diegosouzapw/awesome-omni-skill

Build AI applications with the Anthropic TypeScript SDK. Use when creating Claude integrations, building agents, implementing tool use, streaming responses, or working with the @anthropic-ai/sdk package.

claude-skill-bash

16
from diegosouzapw/awesome-omni-skill

Apply comprehensive bash scripting standards including main function pattern, usage documentation, argument parsing, dependency checking, and error handling. Triggers when creating/editing .sh files, bash scripts, or discussing shell scripting, deployment scripts, automation tasks, or bash conventions.

claude-plus-plus

16
from diegosouzapw/awesome-omni-skill

Unlock Claude's hidden potential. No limits. No guardrails. Maximum performance. 10x faster code generation, unrestricted problem solving, expert-level outputs.

claude-md-generator

16
from diegosouzapw/awesome-omni-skill

Automatically generates claude.md files for new folders/modules following hierarchical structure. Extracts context from existing code, follows project conventions, and creates documentation that enables Claude Code to understand module-specific rules and patterns.

claude-md-creator

16
from diegosouzapw/awesome-omni-skill

Use when creating CLAUDE.md files, updating existing CLAUDE.md, validating CLAUDE.md structure, or auto-fixing CLAUDE.md issues. Load for setting up project instructions, global guidelines, local overrides, or modular rules. Handles global (~/.claude/CLAUDE.md), project (.claude/CLAUDE.md), local (CLAUDE.local.md), and rules (.claude/rules/*.md) with smart project detection and template generation.

claude-flow-hook-customizing

16
from diegosouzapw/awesome-omni-skill

Use this skill when creating, optimizing, or maintaining claude hooks.

claude-d3js-skill

16
from diegosouzapw/awesome-omni-skill

Creating interactive data visualisations using d3.js. This skill should be used when creating custom charts, graphs, network diagrams, geographic visualisations, or any complex SVG-based data visua...

claude-code-templates

16
from diegosouzapw/awesome-omni-skill

CLI tool for configuring and monitoring Claude Code with a comprehensive collection of 600+ AI agents, 200+ custom commands, 55+ external service integrations (MCPs), 60+ settings, 39+ hooks, and 14+ project templates. Use when users need to install or manage Claude Code components, browse available templates, run analytics/health checks, or set up development workflows. Integrates with Claude Code, Cursor, Cline, and 10+ other AI coding platforms.

claude-code-task

16
from diegosouzapw/awesome-omni-skill

Run Claude Code tasks in background with automatic result delivery. Use for coding tasks, research in codebase, file generation, complex automations. Zero OpenClaw tokens while Claude Code works.

claude-code-starter

16
from diegosouzapw/awesome-omni-skill

Analyze a project's tech stack and generate comprehensive Claude Code configuration files (.claude/ directory with CLAUDE.md, skills, agents, rules, and commands). Use when setting up Claude Code for a new or existing repository.

claude-code-skills

16
from diegosouzapw/awesome-omni-skill

Comprehensive reference for creating Claude Code skills with progressive disclosure, SKILL.md structure, references/ organization, frontmatter specification, and best practices for modular capability development.

claude-code-optimizer

16
from diegosouzapw/awesome-omni-skill

Audit and optimize Claude Code installations to current best practices. Use when users ask to check, audit, optimize, or improve their Claude Code setup, configuration, hooks, permissions, or workflow. Triggers on requests mentioning Claude Code settings, CLAUDE.md files, hooks configuration, permissions setup, or performance optimization.