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.