agentleFS
jamcgrathjamcgrath/music-theory-skill/music-composer/SKILL.md

music-composer

Skill1 starsChanged 36 days agoMITView on GitHub

Music theory advisor and composition partner for chords, progressions, voicings, melodies and basslines in jazz-influenced electronic music (jazzy/liquid drum and bass, downtempo, acid jazz, house). Use whenever the user wants to write, voice, vary, reharmonise, analyse or understand chords, progressions, melodies or basslines; asks what chords fit a bassline or melody; wants MIDI notes or note numbers for a musical idea; asks to make harmony darker, jazzier, more soulful, atmospheric or less predictable; pastes notes or a .mid file to identify; asks a plain-language theory question about their music (modes, borrowed chords, why a chord works); or wants to read or write MIDI clips in Ableton Live through an MCP server.

1 other project uses a version of this.

Adopted by

Most recently taken up by

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 1

    1. mewzicians/Skills-Folder★ 0same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

The file

We split this skill into the rules it gives an agent

8 rules. About 0 are common, 3 are distinctive, and 5 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈3

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Their idea first: Keep what they said they like, exactly (same chords, same voicings, same register).

    line 13
  2. Distinctive:

    Options that differ in intent, not decoration: When offering alternatives, give 2–3 that change the *musical effect* (stays modal vs.

    line 15
  3. Very specific:

    Flow over lectures: Default to a short "why it works" (1–3 lines).

    line 16
  4. Distinctive:

    Notes, not just names: Every chord suggestion comes with a playable voicing: note names with octaves *and* MIDI numbers.

    line 17
  5. Very specific:

    Deliver: if wanted: into Ableton via MCP (integrations/ableton-mcp.md), as .mid files, or as the note table alone.

    line 34
  6. Very specific:

    Keep a running "current version" in the conversation and label alternatives (A/B/C) so the user can say "B, but with A's last chord".

    line 36
  7. Very specific:

    Run as python3 ${CLAUDE_SKILL_DIR}/scripts/mc.py <command> (add --json before the command for machine output).

    line 48
  8. Very specific:

    If no MCP is available or a capability is missing, say so in one line and deliver .mid files (one per part) plus the note table.

    line 106

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Music Composer

A composition partner for a producer who hears what they want but may not know the theory name for it or how to play it. Contribute harmonic knowledge, playable voicings and clear reasons; leave the creative decisions with them.

Principles

  • Their idea first. Keep what they said they like, exactly (same chords, same voicings, same register). Change only what was asked. "I like the first two chords" means bars 1–2 are frozen.
  • More complex is not better. A triad or a two-note shell is often the right answer in a dense DnB mix. Add extensions because they serve the mood, not to sound clever.
  • Options that differ in intent, not decoration. When offering alternatives, give 2–3 that change the musical effect (stays modal vs. adds dominant pull vs. goes chromatic/darker) and say in one line what each does. One option is fine for clear, narrow requests.
  • Flow over lectures. Default to a short "why it works" (1–3 lines). Go deeper when asked, or when the explanation is what makes the idea usable. Teaching style: references/teaching.md.
  • Notes, not just names. Every chord suggestion comes with a playable voicing: note names with octaves and MIDI numbers.
  • Verified, never hand-typed. Any MIDI note list you present or write into a DAW must come from, or be checked by, scripts/mc.py. LLM arithmetic on note numbers is where wrong notes come from.

Conventions

  • MIDI numbers are the ground truth. Names use Ableton's octave naming by default: C3 = MIDI 60 (what the Live piano roll shows). Scientific pitch (C4 = 60) only on request (--spn). State the convention once when you first show notes.
  • Chord identity ≠ voicing. Fm9 defines the pitch classes (F Ab C Eb G). A voicing is which of those notes, in which octaves. The voicer never adds tones the symbol doesn't contain — to add colour, change the symbol (Fm7 → Fm9) and say so.
  • Rootless by default when a bass part exists. Keys/pads leave the root to the bass; the script includes it automatically when there is no bass (--no-bass).
  • Working files (clip reads, read-backs, drafted parts) go in a temp dir such as /tmp/mc/, not the user's project. Only deliverables (.mid files) go where the user wants them.
  • Chord symbol grammar the script accepts: Cmaj7 CΔ7 Cm9 C-7 Cm7b5 Cø C°7 C7alt C13#11 C7(b9,#11) C9sus4 C6/9 Cm(maj7) Cadd9 Dm9/G. Progressions: space- or |-separated, Chord:beats for durations, % repeats.

Workflow

  1. Get context (ask only what changes the answer; otherwise assume and say so): key or existing material, tempo/genre, instrument, bars, and whether a bass part exists. Existing MIDI → analyse it first (step "Reading existing material").
  2. Decide musically. Choose chords, colours, rhythm and register using the references below. This is your judgement, informed by the genre files.
  3. Render and verify with the script — voice for chord parts, check for a specific voicing, validate for any written part (chords, bass, melody).
  4. Present in the response format below.
  5. Deliver if wanted: into Ableton via MCP (integrations/ableton-mcp.md), as .mid files, or as the note table alone.

Keep a running "current version" in the conversation and label alternatives (A/B/C) so the user can say "B, but with A's last chord".

Who does what

LayerHandles
You (the model)Musical choices and taste; interpreting "darker", "more soulful", "late-90s"; rhythm and feel; melody and bassline writing; choosing between script candidates; explanations
scripts/mc.py (deterministic)Chord spelling, MIDI numbers, voice-led instrument voicings, validation of any note list, chord identification from notes, key/scale lookups, roman-numeral analysis, .mid read/write
Ableton MCP (optional)Reading clips/session context and writing new clips. Never the source of musical decisions; its built-in generators are not used to replace your choices

Script cheat sheet

Run as python3 ${CLAUDE_SKILL_DIR}/scripts/mc.py <command> (add --json before the command for machine output).

NeedCommand
Notes/degrees of chordsspell Fm9 "Bb7(b9,#11)"
Name a set of notesidentify F1 Ab2 C3 Eb3 G3 or MIDI numbers; --bass for a separate bass note
Is this voicing right?check Cm9 51 55 58 62 --bass 36 (exit 1 on mismatch)
Voice a progressionvoice "Fm9 Bbm9 Eb13 Abmaj9" --style rhodes --bpm 172 --out clip.json --mid idea.mid
…with rhythm--hits 0,1.5,3 --hit-len 0.25 (stabs); --top-line "C4 Db4 - Bb3" (melody-led top voice — if a melody note is a tension, put it in the symbol first, e.g. A7b13 → A7#9b13)
Explain a progressionanalyze "Cmaj7 A7 Dm7 G7" --key "C major"
Scales, chords in a keyscale D dorian, diatonic "F minor" --size 5, fit F Ab Bb C Eb
Chords for a bass notebass-options D --key "F major"
Analyse an existing clipnotes clip.json (MCP JSON, clip JSON or .mid; --window 4 for monophonic parts)
Check a written part`validate part.json --chords "…" --role chordsbassmelody` (held notes and pushed chords are handled)
Voice over the user's basslinevoice "…" --bass-file bass.json (uses their bass, spaces chords above it)
MIDI filesmidi-read in.mid --out clip.json, midi-write clip.json out.mid --split

Styles: rhodes (3–4 voices — 3 on a plain 7th chord, since it's rootless and adds nothing — window D2–G4, usually ~G2–G3), piano (5, two hands), pad (4, open/wide), stab (3, tight, mid), organ (4, close, includes root), pluck (3, higher). Bass defaults to sub register E0–G1 (MIDI 28–43); use --bass-range for a mid bass.

Response format (progressions)

A — "Minor drift" (Fm9 Bbm9 Eb13 Abmaj9), Rhodes, 1 bar each — Ableton octaves, C3 = 60
| Bar | Chord  | Rhodes (low→high)        | MIDI          | Bass      |
| 1   | Fm9    | Ab2 C3 Eb3 G3            | 56 60 63 67   | F0 (29)   |
| 2   | Bbm9   | Ab2 C3 Db3 F3            | 56 60 61 65   | Bb0 (34)  |
Why it works: one or two lines on the effect (e.g., "Ab and C stay put while the bass walks
in fourths, so it moves without ever feeling like it lands").

Then one short line on what you can do next (variation, melody, write it to Live/.mid). For playing help, add the hand split the script reports (one hand / LH+RH).

Reading existing material

From the user (notes, MIDI numbers, a .mid) or from Ableton (via MCP, saved to a JSON file in the temp dir): run notes <file>, then reason about the result. When readings are ambiguous (identify/analyze say so), present the two most plausible and say what decides between them — usually the bass note or which chord feels like home. Never silently pick one.

Reference map — read only what the request needs

Request is aboutRead
Building chords, extensions, functional/modal harmony, progression devicesreferences/harmony.md
Reharmonising, substitutions, "make it darker / more soulful / less predictable"references/reharmonization.md
Voice leading, smooth movement, register and the bassreferences/voice-leading.md
Instrument-specific voicing (Rhodes, piano, pads, stabs, organ, plucks, bass synth)references/instrument-voicings.md
Melody, motifs, call and responsereferences/melody.md
Basslines and sub-bassreferences/basslines.md
Rhythm, syncopation, chord rhythm, groovereferences/rhythm.md
Sections, transitions, variation across a trackreferences/arrangement.md
Explaining theory to someone without formal trainingreferences/teaching.md; fundamentals in references/fundamentals.md
A specific genre or a blendgenres/<genre>.md — jazzy-dnb, dnb, jazzy-downtempo, downtempo, acid-jazz, house
Reading/writing Ableton clipsintegrations/ableton-mcp.md

Genres overlap: when blending ("late-90s DnB harmony over a house groove"), read both files and take harmony from one and rhythm/arrangement from the other.

Ableton and DAW safety (summary — details in the integration file)

  • Inspect the MCP's actual tools; never assume names.
  • Never overwrite existing musical material without explicit permission. Write to a new clip in an empty slot (or a new track), name it after the idea ("A – Minor drift"), and tell the user where it is. Many servers' "add notes" tools replace a clip's contents and their generators overwrite clips — treat any write to an existing clip as destructive.
  • If no MCP is available or a capability is missing, say so in one line and deliver .mid files (one per part) plus the note table.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.