# Score

> Turn a musical brief into editable concert-pitch music, checked instrument parts and a listenable practice pack in the Score harness. Use for composing, arranging and revising trusted LilyPond projects.

- Skill: `autonomous-ai/score` (Agent Skill, multi-file: 11 files)
- Install (CLI): `npx skillmds@latest add autonomous-ai/score`
- Raw SKILL.md: https://api.skillmd.com/api/skills/autonomous-ai/score/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: autonomous-ai (https://skillmd.com/u/autonomous-ai)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/autonomous-ai/score

---


# From a musical idea to something the user can keep

The user does not need instruments or notation vocabulary. If they want to
listen, start with mood, purpose, duration and a useful instrumentation; state
assumptions and offer an audible first version. If they have real players,
capture each player's instrument, written range and experience. Do not turn the
starter trio or any particular difficulty limit into a universal requirement.

Read [the ensemble contract](references/ensemble.md) before changing player
setup, timing, difficulty or source exports.

## Compose and revise

- Save the actual brief, assumptions, timing, instrument transpositions and
  difficulty limits in `ensemble.json`. These are requirements, not values to
  infer from whatever the generated notes happen to contain.
- Compose reusable **concert-pitch** variables in `score.ly`; the builder adds
  the initial key, meter, tempo, printed score, parts and MIDI proofs. Do not
  transpose the source again for a B-flat part or override staff transposition.
- Give the music a deliberate shape: phrases, breathing space, contrast,
  accompaniment and an ending appropriate to the request. A successful compiler
  does not supply those decisions.
- Run:

  ```sh
  sh "$SCORE_SKILLS/score/scripts/render-score.sh"
  ```

- Inspect `.harness/score.json` and every printed PDF page, including individual
  parts. Check collisions, readability, instrument labels and sensible breaks.
  LilyPond warnings are errors. Correct the music or layout, not the warning policy.
- On a failed requirement, read `.harness/failed-score.json`. Fix the music while
  retaining the user's limits. Change a requirement only when the request
  genuinely changes; explain a conflict instead of quietly widening a range.
- For a targeted revision, verify the requested change and compare unaffected
  parts. Keep a useful previous version; generated handoffs are retained under
  `.harness/history/`.

## Hear and hand off

Use `score.html` in the actual viewer. Exercise play/pause, seeking into a held
note, player mute/solo, slowdown, bar loops and part selection. No instrument
is needed. The browser can save a WAV of the current mix/loop (up to 3 minutes).
Save/restore listening setup as JSON; no local storage is required.

The source-backed delivery is `score-project.zip`: full PDF/MIDI, individual
parts, slower solo/minus-one MIDI, the saved brief, allowlisted sources and
standalone rebuild tools. Test important downloads. Browser controls and WAV
exports do not change `score.ly` or the prebuilt practice MIDIs. To change the
composition, edit the sources and rebuild.

Report the version, checks and listening/visual review actually performed.
Offer concrete revisions in the user's language (“make the ending warmer,”
“remove the busy line”), not a requirement to learn notation first.

## Boundaries

Setup installs LilyPond 2.26.0 when needed on supported Macs/Linux x86-64; the builder
finds that managed runtime automatically. Node 20+ comes from the runtime helper.
`LILYPOND_BIN` overrides the binary. Only compile trusted input: LilyPond can execute Scheme and read local
files. The source allowlist makes delivery explicit; it is not a Scheme sandbox.
Do not add unrelated files, credentials or recordings to the portable project.

Ready means fresh engraving and the saved **mechanical** requirements passed,
not proof of musical quality, comfort, breath control, fingering, physical
playability or permission to use an arrangement. A synthesized sketch is not
a recording or sampled performance. No real-player testing is implied.

This checked workflow supports constant meter/tempo, complete bars and pitched
staves. See the contract for limits and excluded cases. Original native MIDI
is retained; practice exports and browser audio ignore pedal, bends and other
expressive controllers. The browser uses simple oscillators, not a sound library.

Legacy `score.ly` projects containing full layout/MIDI blocks still engrave
without an ensemble contract, but remain unready for checked delivery. Preserve
their source and extract music variables deliberately when upgrading. Do not
blindly replace a user's composition with the template.

