← Music BlockCONTENT HISTORY

Update to Music Block

Snapshot Oct 6, 2026 · 00:02 UTC · version 1.2.0

WHAT CHANGED · RULE-BASED ANALYSIS

Package or technical metadata updated

Package contents changed in 23 files: .codex-plugin/plugin.json, skills/ensemble-arranging/SKILL.md, skills/ensemble-arranging/agents/openai.yaml, …. Open the file diff to inspect the edits.

Observed in package metadata. These changes alone do not establish a new customer-facing feature.

Package file

Before

32a62a07f2aa1381f5d77cfd11205ba9faacd594ebcb11038f444194bfbb7f40

After

5e1639fbd15361d3ed3d53799f1867006c8a04e64d3597b49040a1b341fc9544

Package file

Before

4854

After

3653

Package file

Before

Not present

After

{"sha256":"dd428a96d93d50638e4ad37a0c1802247cf48c184edb843cea64a832efcf7032","size":5591}

Package file

Before

Not present

After

{"sha256":"83850850f85192a9f264622a82381e9a113b2f6cf69f10ab87fd5275c272da5c","size":269}

Compare saved observations

Download comparison JSON

skills/playable-fretted-parts/SKILL.md

--- before
+++ after
@@ -0,0 +1,116 @@
+---
+name: playable-fretted-parts
+description: Write guitar, electric guitar, bass and ukulele parts (string/fret "bars" for Music Block) that a human can actually finger at the stated tempo. Use before composing any fretted lick, riff, exercise, bass line or chord voicing, and when fixing a playability warning.
+---
+
+Use this skill whenever a Music Block example contains a part written as `bars`
+(string + fret per note) for guitar, electric-guitar, bass or ukulele. The
+tool only rejects impossible input (two notes on one string, a string that does
+not exist) and warns about chords wider than five frets. Everything below is
+what the validator cannot judge and what separates real TAB from random
+string/fret pairs.
+
+## Workflow
+
+1. Pick the position first. A position is the fret under the index finger.
+   The hand covers that fret plus the next three (one finger per fret) and
+   any open string. Write the whole phrase inside that window before
+   considering a shift.
+2. Choose strings for the line, not just pitches. Every pitch exists in
+   several places; put a fast run on two or three adjacent strings inside the
+   position rather than walking up one string.
+3. Place shifts deliberately: on a slide, on an open string, on a long note,
+   or at a rest. Never shift in the middle of a run of eighths or sixteenths.
+4. Add technique markings where a player would use them (below). They are
+   the main way to make a line sound human, because the format has no
+   dynamics or articulation.
+5. Before calling the tool, run the self-check at the end of this file.
+
+## Left hand: positions and stretches
+
+- One finger per fret. Inside a beat, fretted notes span at most 4 frets
+  (open strings do not count). Across a phrase without a shift, at most 5.
+- Above fret 12 the frets are closer; a span of 5 to 6 is fine there. Below
+  fret 5 the frets are wide; keep spans to 4.
+- A stretch of one extra fret with the pinky is fine for a single note, not
+  for a repeated figure.
+- Consecutive beats that jump more than 5 frets need a slide, a rest, or an
+  open string between them. If none fits, refinger the second note on
+  another string in the current position.
+- Do not mirror keyboard thinking: a guitar run that changes string on every
+  note is awkward. Group two to four notes per string.
+
+## Tempo limits
+
+| Tempo | Sixteenths | Eighths | Position shifts |
+| --- | --- | --- | --- |
+| up to 90 BPM | anywhere inside the position | free | on any beat boundary |
+| 90 to 140 BPM | adjacent frets and adjacent strings only | free inside the position | at most one per bar, on a slide or long note |
+| above 140 BPM | short bursts of 4 or fewer, on one string with hammer or pull | inside the position, at most two string changes per beat | none mid-phrase |
+
+Triplet eighths count as eighths; sextuplets count as sixteenths.
+
+## Technique markings
+
+- `hammer` and `pull` connect this beat to the next beat on the SAME string,
+  1 to 3 frets apart. Hammer goes up in pitch, pull goes down. Never mark a
+  hammer or pull into a note on a different string or the last beat of the
+  example.
+- `slide` connects to the next beat on the same string. Keep slides to 5
+  frets or less in fast passages; long slides only into a held note.
+- `bend-half` and `bend-full` belong on strings 1 to 3 at fret 5 or higher.
+  Bending a wound string (4 to 6) or a low fret is possible but rare; avoid it
+  unless the user asks. A full bend needs the note below the target: write the
+  fret of the starting pitch, the bend supplies the rest.
+- `vibrato` on notes of a quarter or longer, especially phrase endings and
+  bend peaks.
+- `palm-mute` on low-string riff notes, typically eighths on strings 5 and 6.
+- `let-ring` on arpeggiated chord tones on different strings.
+- A single lick usually carries two to four markings, not one per note.
+
+## Chord voicings
+
+- At most 4 fretted notes in a shape unless one fret is a barre (two or more
+  notes on the same fret with nothing lower). A barre covers all higher
+  strings at that fret, so an open string cannot sit between barred strings.
+- Fretted notes in a shape span at most 4 frets below fret 5, 5 frets higher
+  up. The tool warns above 5.
+- Every note in a chord is on a distinct string. Prefer common shapes: open
+  chords, E and A shape barres, drop-2 and drop-3 voicings on strings 1 to 4
+  or 2 to 5, shell voicings (root, 3rd, 7th) for jazz comping.
+- Comping under a lick: 3 or 4 note voicings on the middle strings, not
+  6-string barres on every beat.
+- Chord notes played together must be reachable at the same time; do not
+  combine a note at fret 2 on string 6 with fret 8 on string 1.
+
+## Bass
+
+- Same one-finger-per-fret rule over 4 frets; many players use a 3-fret
+  span below fret 5. Open strings are the usual shift point.
+- Walking bass: quarter notes, roots or fifths on beats 1 and 3, chord tones
+  or chromatic approach notes on beats 2 and 4, at most one leap per bar.
+- Sixteenth-note bass lines stay on one or two strings and repeat a pattern.
+- Bass lines rarely go above fret 12 or use chords; keep the register in
+  frets 0 to 9 unless the user wants a solo.
+
+## Ukulele
+
+- Standard tuning is re-entrant: string 4 (G4) is higher than string 3 (C4).
+  Melodies live on strings 1 and 2, sometimes 3. Do not write a "low" bass
+  note on string 4.
+- Position window is 4 frets; chords use all four strings; no bends.
+
+## Self-check before calling the tool
+
+- Each phrase sits inside one 4-fret window (plus open strings) or shifts at
+  a slide, open string, long note or rest.
+- No beat-to-beat jump larger than 5 frets without one of those.
+- Sixteenths obey the tempo table.
+- Every hammer, pull and slide has a following note on the same string.
+- Bends are on strings 1 to 3 at fret 5 or above.
+- Chord shapes have at most 4 fretted notes or a barre, span 4 to 5 frets,
+  and contain no open string between barred strings.
+- Bass and ukulele parts follow their sections.
+
+If the tool returns a playability warning, treat it as a bug in the example
+and re-voice the beat rather than explaining the warning to the user.
Full technical diff · 24 changed fields

changed /files/.codex-plugin~1plugin.json/sha256

BEFORE
"32a62a07f2aa1381f5d77cfd11205ba9faacd594ebcb11038f444194bfbb7f40"
AFTER
"5e1639fbd15361d3ed3d53799f1867006c8a04e64d3597b49040a1b341fc9544"

changed /files/.codex-plugin~1plugin.json/size

BEFORE
4854
AFTER
3653

added /files/skills~1ensemble-arranging~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "dd428a96d93d50638e4ad37a0c1802247cf48c184edb843cea64a832efcf7032",
  "size": 5591
}

added /files/skills~1ensemble-arranging~1agents~1openai.yaml

BEFORE
Field was absent
AFTER
{
  "sha256": "83850850f85192a9f264622a82381e9a113b2f6cf69f10ab87fd5275c272da5c",
  "size": 269
}

added /files/skills~1ensemble-arranging~1references~1choir.md

BEFORE
Field was absent
AFTER
{
  "sha256": "15eae47414f35086ff15eb719b3bcf05023a76c7c547090c46ae6c9ba4d49d4c",
  "size": 2520
}

added /files/skills~1ensemble-arranging~1references~1folk.md

BEFORE
Field was absent
AFTER
{
  "sha256": "5d1ab29243cf697ccd59e64132e08162d06f54152deb52fafc1268a7fe801003",
  "size": 2651
}

added /files/skills~1ensemble-arranging~1references~1jazz-horns.md

BEFORE
Field was absent
AFTER
{
  "sha256": "e3df4171140c915bcfd36617f054cff54579d7eb6f2e6781ae017c9075d7dd4c",
  "size": 4008
}

added /files/skills~1ensemble-arranging~1references~1rhythm-section-bands.md

BEFORE
Field was absent
AFTER
{
  "sha256": "c3d541b3c96a36742524ba4c2e5ba9262c33a73f5ac5df698b0971d3619d2f3d",
  "size": 2898
}

added /files/skills~1ensemble-arranging~1references~1string-quartet.md

BEFORE
Field was absent
AFTER
{
  "sha256": "6e7042eb98a07029ace638e94d18d8bc9b7f8bbc63ef0c8c781cff03487afc93",
  "size": 2635
}

added /files/skills~1human-melodic-phrasing~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "f488fe9c438c01d5cf79778d8a82584dd49686b944df810b2c541db7b8500517",
  "size": 5874
}

added /files/skills~1human-melodic-phrasing~1agents~1openai.yaml

BEFORE
Field was absent
AFTER
{
  "sha256": "83850850f85192a9f264622a82381e9a113b2f6cf69f10ab87fd5275c272da5c",
  "size": 269
}

added /files/skills~1human-melodic-phrasing~1references~1bebop.md

BEFORE
Field was absent
AFTER
{
  "sha256": "a9a641a33af4d502e99be95e8d914f7d7b9f197c3a2714a8a5e19c073ba26343",
  "size": 1671
}

added /files/skills~1human-melodic-phrasing~1references~1blues.md

BEFORE
Field was absent
AFTER
{
  "sha256": "76461edf9dabe1579522ddf9a4ff3547b1c975f16e4c60f033f6aa0823d16478",
  "size": 1585
}

added /files/skills~1human-melodic-phrasing~1references~1pop.md

BEFORE
Field was absent
AFTER
{
  "sha256": "9344c27f91a22a7c21e7666ab10a01a012769fee887f846b81cab7d5e7b0a9dd",
  "size": 1507
}

added /files/skills~1instrument-ranges-and-idioms~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "5883ecdea857a122e6bc18092d1b7ff7721615338c384dff0046f9c747bb7ae6",
  "size": 5084
}

added /files/skills~1instrument-ranges-and-idioms~1agents~1openai.yaml

BEFORE
Field was absent
AFTER
{
  "sha256": "83850850f85192a9f264622a82381e9a113b2f6cf69f10ab87fd5275c272da5c",
  "size": 269
}

added /files/skills~1instrument-ranges-and-idioms~1references~1brass.md

BEFORE
Field was absent
AFTER
{
  "sha256": "1326075671ffd6fc3ed2747aa5432e4b85bf704fc05c77a95fab3fa3259f3237",
  "size": 1510
}

added /files/skills~1instrument-ranges-and-idioms~1references~1drums.md

BEFORE
Field was absent
AFTER
{
  "sha256": "1de70e3e1df3c7d44ce5c23193f72177e7ba8711ea75844d31cbfa4f91faae79",
  "size": 1992
}

added /files/skills~1instrument-ranges-and-idioms~1references~1piano.md

BEFORE
Field was absent
AFTER
{
  "sha256": "4b15986cda0264262bee35e63ffc8cf839dca2adb5362c2b70b00002f098705a",
  "size": 1972
}

added /files/skills~1instrument-ranges-and-idioms~1references~1strings.md

BEFORE
Field was absent
AFTER
{
  "sha256": "55a2fe5cad53789d99e44b6ae63580e339238893099f16c8db0c94c1245f0812",
  "size": 1943
}

added /files/skills~1instrument-ranges-and-idioms~1references~1voices.md

BEFORE
Field was absent
AFTER
{
  "sha256": "3f07181e4a25ae6517b00683ccceefb34d882c5925f65cafd03a777bec4d5c4e",
  "size": 1599
}

added /files/skills~1instrument-ranges-and-idioms~1references~1winds.md

BEFORE
Field was absent
AFTER
{
  "sha256": "822061192c15d798ccf603ef570bee031a2191064fc788777c999d3ea98e5e85",
  "size": 1931
}

added /files/skills~1playable-fretted-parts~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "84f828a8c73ed15fbc5eb90e3fef2e0b3f200a3029b1f5e0a9eb85479ccc5055",
  "size": 6097
}

added /files/skills~1playable-fretted-parts~1agents~1openai.yaml

BEFORE
Field was absent
AFTER
{
  "sha256": "83850850f85192a9f264622a82381e9a113b2f6cf69f10ab87fd5275c272da5c",
  "size": 269
}
Full snapshot data
{
  "files": {
    ".app.json": {
      "sha256": "7eef3649c1fc7a416fcef2a14e93dd23a96751bdabdc4bd6e1a3b3dca522a8e7",
      "size": 127
    },
    ".codex-plugin/plugin.json": {
      "sha256": "5e1639fbd15361d3ed3d53799f1867006c8a04e64d3597b49040a1b341fc9544",
      "size": 3653
    },
    "skills/ensemble-arranging/SKILL.md": {
      "sha256": "dd428a96d93d50638e4ad37a0c1802247cf48c184edb843cea64a832efcf7032",
      "size": 5591
    },
    "skills/ensemble-arranging/agents/openai.yaml": {
      "sha256": "83850850f85192a9f264622a82381e9a113b2f6cf69f10ab87fd5275c272da5c",
      "size": 269
    },
    "skills/ensemble-arranging/references/choir.md": {
      "sha256": "15eae47414f35086ff15eb719b3bcf05023a76c7c547090c46ae6c9ba4d49d4c",
      "size": 2520
    },
    "skills/ensemble-arranging/references/folk.md": {
      "sha256": "5d1ab29243cf697ccd59e64132e08162d06f54152deb52fafc1268a7fe801003",
      "size": 2651
    },
    "skills/ensemble-arranging/references/jazz-horns.md": {
      "sha256": "e3df4171140c915bcfd36617f054cff54579d7eb6f2e6781ae017c9075d7dd4c",
      "size": 4008
    },
    "skills/ensemble-arranging/references/rhythm-section-bands.md": {
      "sha256": "c3d541b3c96a36742524ba4c2e5ba9262c33a73f5ac5df698b0971d3619d2f3d",
      "size": 2898
    },
    "skills/ensemble-arranging/references/string-quartet.md": {
      "sha256": "6e7042eb98a07029ace638e94d18d8bc9b7f8bbc63ef0c8c781cff03487afc93",
      "size": 2635
    },
    "skills/human-melodic-phrasing/SKILL.md": {
      "sha256": "f488fe9c438c01d5cf79778d8a82584dd49686b944df810b2c541db7b8500517",
      "size": 5874
    },
    "skills/human-melodic-phrasing/agents/openai.yaml": {
      "sha256": "83850850f85192a9f264622a82381e9a113b2f6cf69f10ab87fd5275c272da5c",
      "size": 269
    },
    "skills/human-melodic-phrasing/references/bebop.md": {
      "sha256": "a9a641a33af4d502e99be95e8d914f7d7b9f197c3a2714a8a5e19c073ba26343",
      "size": 1671
    },
    "skills/human-melodic-phrasing/references/blues.md": {
      "sha256": "76461edf9dabe1579522ddf9a4ff3547b1c975f16e4c60f033f6aa0823d16478",
      "size": 1585
    },
    "skills/human-melodic-phrasing/references/pop.md": {
      "sha256": "9344c27f91a22a7c21e7666ab10a01a012769fee887f846b81cab7d5e7b0a9dd",
      "size": 1507
    },
    "skills/instrument-ranges-and-idioms/SKILL.md": {
      "sha256": "5883ecdea857a122e6bc18092d1b7ff7721615338c384dff0046f9c747bb7ae6",
      "size": 5084
    },
    "skills/instrument-ranges-and-idioms/agents/openai.yaml": {
      "sha256": "83850850f85192a9f264622a82381e9a113b2f6cf69f10ab87fd5275c272da5c",
      "size": 269
    },
    "skills/instrument-ranges-and-idioms/references/brass.md": {
      "sha256": "1326075671ffd6fc3ed2747aa5432e4b85bf704fc05c77a95fab3fa3259f3237",
      "size": 1510
    },
    "skills/instrument-ranges-and-idioms/references/drums.md": {
      "sha256": "1de70e3e1df3c7d44ce5c23193f72177e7ba8711ea75844d31cbfa4f91faae79",
      "size": 1992
    },
    "skills/instrument-ranges-and-idioms/references/piano.md": {
      "sha256": "4b15986cda0264262bee35e63ffc8cf839dca2adb5362c2b70b00002f098705a",
      "size": 1972
    },
    "skills/instrument-ranges-and-idioms/references/strings.md": {
      "sha256": "55a2fe5cad53789d99e44b6ae63580e339238893099f16c8db0c94c1245f0812",
      "size": 1943
    },
    "skills/instrument-ranges-and-idioms/references/voices.md": {
      "sha256": "3f07181e4a25ae6517b00683ccceefb34d882c5925f65cafd03a777bec4d5c4e",
      "size": 1599
    },
    "skills/instrument-ranges-and-idioms/references/winds.md": {
      "sha256": "822061192c15d798ccf603ef570bee031a2191064fc788777c999d3ea98e5e85",
      "size": 1931
    },
    "skills/playable-fretted-parts/SKILL.md": {
      "sha256": "84f828a8c73ed15fbc5eb90e3fef2e0b3f200a3029b1f5e0a9eb85479ccc5055",
      "size": 6097
    },
    "skills/playable-fretted-parts/agents/openai.yaml": {
      "sha256": "83850850f85192a9f264622a82381e9a113b2f6cf69f10ab87fd5275c272da5c",
      "size": 269
    }
  }
}

SHA-256 of public snapshot: 2e126cbb90eb485a6e53c0fb20bf0e8fc6e17e5e3a54161aed18725e301d9e34