All skills
Music Conversion
score2md
Deterministically convert music sources into one playable Markdown ABC file with verification and resource-saving media preflight. Use when Codex needs to convert MusicXML, MXL, XML, ABC, MIDI, PDF sheet music, score images, audio, video, or YouTube links into Markdown-safe ABC notation while preserving symbolic notes, rests, chords, RH/LH piano voices, tempo, key, meter, ties, grace notes, repeats, and verification reports.
What this skill adds
Convert supported music sources into a single Markdown file containing one playable ABC fenced code block. Always prefer deterministic conversion from symbolic source files over manual note writing.
Source Policy
- Never invent notes when a symbolic source is available.
- Convert exact copyrighted music only from user-provided or otherwise authorized source material.
- Treat PDF/image output as OMR-derived and audio/YouTube output as transcription-derived.
- Use original composition mode only when the user explicitly asks for new music rather than conversion.
Primary Command
- Run from the repository root or from any project with the skill installed:
- bash
- python skills/score2md/scripts/score2md.py convert INPUT --out OUTPUT.md --verify strict
- Audio, video, and YouTube inputs are guarded by default. Use an override only when the user explicitly accepts transcription cost:
- bash
- python skills/score2md/scripts/score2md.py convert INPUT --out OUTPUT.md --skip-preflight
Routing
- Use the built-in converter for:
- .mxl, .musicxml, .xml: parse directly and verify symbolically.
- .abc: normalize/wrap into the Markdown house style.
- .mid, .midi, .kar: convert through MuseScore CLI when available, then parse MusicXML.
- Use adapters for:
- .pdf: render pages to images, run an installed OMR backend, join MusicXML, then convert.
Audio/YouTube Preflight
- Before submitting to oh-sheet, reject likely non-score sources such as podcasts, interviews, lectures, news, vlogs, spoken-word content, non-music videos, long media above the duration limit, and non-piano-looking sources when compact-piano output is requested.
- For YouTube, the preflight tries lightweight title/description/duration/caption checks. If metadata cannot be fetched or the source cannot be confidently approved, the default is to fail safely without submitting /v1/jobs. Use --allow-uncertain-audio for uncertain but not clearly bad sources, or --skip-preflight to bypass the guard entirely.
- Preflight decisions, oh-sheet job IDs, and normalized MusicXML are cached under .score2md-cache; use --refresh-cache to rerun metadata checks or media transcription.
Default agent prompt
Use $score2md to convert my music source into a verified Markdown ABC file, using the audio/YouTube preflight guard before transcription.