agentsclimarketplace

Tab formatting

Skill cportka/claude-plugins/plugins/tab-chord-formatter/skills/tab-formatting

Claude Code plugin marketplace for Portka Tools & Standards. Includes video-bug-analyzer, repo-bootstrap, app-website-evaluator, tab-chord-formatter. Add with /plugin marketplace add cportka/claude-plugins

Install
npx -y skills add cportka/claude-plugins --skill tab-formatting

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Format a guitar tab or chord sheet into a clean, readable layout, or render a monospace PDF songbook. Use when the user pastes or links chords/tab (chords over lyrics, ASCII tablature, a Capo/Key/Tuning header) and asks to clean it up, align the chords, "make this readable," or print/PDF a songbook.

SKILL.md

4.6 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it

Tab / Chord Formatter

Turn a messy tab or chord sheet into a clean, standard, readable one and output it as plain text. The input is usually copied from somewhere — a web page, a forum, an email — so it arrives with broken alignment, HTML entities, stray tags, inconsistent section labels, and random blank lines. Your job is to produce the canonical layout described in reference.md.

There are two halves to this, and keeping them separate is the whole method:

  1. Mechanical cleanup is deterministic — run the script. It never guesses.
  2. Alignment and structure need judgment — that is you. A monospace chord line only means anything if each chord sits above the right syllable, and a paste often destroys that spacing. Restoring it, inferring sections, and standardizing chord names is the model's job.

1. Run the normalizer first

${CLAUDE_PLUGIN_ROOT}/skills/tab-formatting/scripts/format-tab.py < input.txt
# or pass a path:
${CLAUDE_PLUGIN_ROOT}/skills/tab-formatting/scripts/format-tab.py input.txt

It does only the safe, reversible things (strip tags/entities, normalize endings, standardize [Section] labels, collapse blank runs — full list in --help), never a line's internal spacing (that spacing IS the chord/lyric alignment), and is idempotent. It deliberately does not touch alignment — pass its output to step 2.

If the user pasted the tab inline rather than as a file, you can still reason over it directly; the script is most useful for a copied-from-web blob with entities/tags.

2. Apply judgment — the part the script can't

Read reference.md for the full target format. The work that needs a human/model eye:

  • Re-align chords over lyrics. This is the most common breakage: a plaintext paste collapses the multiple spaces that positioned each chord, so the chord line and lyric line merge or drift. Rebuild a monospace chord line where each chord starts directly above the syllable it changes on. When the source has the chords inline (e.g. [G]Somewhere over the [D]rainbow), lift them onto a separate line above. Count characters — alignment is literal column position.
  • Identify and label sections. Infer Intro / Verse N / Pre-Chorus / Chorus / Bridge / Solo / Outro etc. from repetition and context when they're missing or inconsistent, as [Section].
  • Standardize chord spelling. Consistent root + quality (F#m7, Cadd9, Bbmaj7, D/F#); N.C. for no-chord; keep the source's actual chords — don't reharmonize.
  • Build/keep a metadata header. Title, Artist, and any of Album / Capo / Key / Tuning / Tabbed by that are known. Don't invent facts you don't have.
  • Tidy ASCII tab blocks (the 6-line e|B|G|D|A|E grids): align the bar | and - runs, keep all six strings, don't alter the actual fret numbers.

3. Output

Print the finished tab as plain text (in a fenced code block so the monospace alignment survives). Preserve the song faithfully — fix layout, not content. If something is genuinely ambiguous (an unreadable chord, an uncertain section boundary), format your best reading and note the uncertainty briefly below the tab rather than silently guessing.

See reference.md for the canonical format spec: the metadata header, section vocabulary, chord-over-lyric alignment rules, ASCII-tab conventions, and chord-naming standards.

Print mode — a PDF songbook

format-tab.py has two modes. Screen (the default, above) emits clean plain text. Print renders a PDF (or print-ready HTML) in a single consistent monospace font + size — the usual fix for a songbook assembled from mixed sources — paginated by song.

# one song per page (default), Courier New 10pt:
${CLAUDE_PLUGIN_ROOT}/skills/tab-formatting/scripts/format-tab.py --print --pdf songbook.pdf book.txt
# pack two songs per page; shrink the font for wide ASCII-tab blocks:
… --print --pdf songbook.pdf --songs-per-page 2 --size 9 book.txt
# no Chromium? emit print-ready HTML and print it from a browser:
… --print --html songbook.html book.txt

Flags, defaults, and the song-split rule are in --help (PDF needs Chromium/Chrome; --html is the no-Chromium fallback). Clean each song's alignment (steps 1–2) before rendering — the PDF is a faithful monospace snapshot, so the alignment must already be right in the text.

What ships with it: 2 files

18.9 KB alongside SKILL.md, 1 of them executable

scripts/

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.