Claude-ai-music-skills validate-album
Validates album directory structure, file locations, and content integrity. Use before release or whenever the user wants to check an album's structural health.
install
source · Clone the upstream repo
git clone https://github.com/bitwize-music-studio/claude-ai-music-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/bitwize-music-studio/claude-ai-music-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/validate-album" ~/.claude/skills/bitwize-music-studio-claude-ai-music-skills-validate-album && rm -rf "$T"
manifest:
skills/validate-album/SKILL.mdsource content
Album Validator Agent
Your Task
Input: $ARGUMENTS (album name, e.g.,
sample-album)
Validate that an album has all required files in the correct locations, catching path issues and missing content before they become problems.
Step 1: Load Config & Find Album
-
Call
— returns paths (get_config()
,content_root
,audio_root
) anddocuments_rootartist.name- If config missing, STOP and report:
[FAIL] Config file missing: ~/.bitwize-music/config.yaml Run /configure to set up the plugin.
- If config missing, STOP and report:
-
Call
— fuzzy match by name, slug, or partialfind_album(album_name)- If not found, STOP and report (MCP returns available albums):
[FAIL] Album not found: {album-name}
- If not found, STOP and report (MCP returns available albums):
-
Optionally call
— runs structural validation checks and returnsvalidate_album_structure(album_slug)
. This MCP tool handles directory structure, required files, audio placement, and track content checks in one call.{passed, failed, warnings, skipped, issues[], checks[]}
Note: The MCP
validate_album_structure tool performs many of the checks below automatically. You can use its results directly or run the manual checks for more detailed reporting.
Step 3: Run Validations
Initialize Counters
passed = 0failed = 0warnings = 0skipped = 0
(list of fix commands)issues = []
Output Header
═══════════════════════════════════════════════════════════ ALBUM VALIDATION: {album-name} ═══════════════════════════════════════════════════════════
Validation Categories
CONFIG
CONFIG ──────
| Check | Pass | Fail |
|---|---|---|
| Config file exists | | |
| content_root defined | | |
| audio_root defined | | |
| artist defined | | |
ALBUM STRUCTURE
ALBUM STRUCTURE ───────────────
| Check | How | Pass | Fail |
|---|---|---|---|
| Album dir exists | | | |
| README.md exists | | | |
| tracks/ dir exists | | | |
| Track files exist | | | |
For documentary albums (check README.md for type):
| Check | How | Pass | Fail |
|---|---|---|---|
| RESEARCH.md exists | | | |
| SOURCES.md exists | | | |
AUDIO FILES
AUDIO FILES ───────────
Expected path:
{audio_root}/artists/{artist}/albums/{genre}/{album}/
| Check | How | Pass | Fail |
|---|---|---|---|
| Audio dir exists (correct path) | | | See below |
| Audio dir in wrong location | | N/A | |
If audio in wrong location, add to issues:
→ Expected: {audio_root}/artists/{artist}/albums/{genre}/{album}/ → Found at: {audio_root}/{album}/ (WRONG - missing artist folder) → Fix: mv {audio_root}/{album}/ {audio_root}/artists/{artist}/albums/{genre}/{album}/
| Check | How | Pass | Skip |
|---|---|---|---|
| WAV files present | | | |
| mastered/ exists | | | |
ALBUM ART
ALBUM ART ─────────
| Check | How | Pass | Skip |
|---|---|---|---|
| Art in audio folder | | | |
| Art in content folder | | | |
TRACKS
TRACKS ──────
For each track file in
{album_path}/tracks/*.md:
- Read the file
- Check for required fields:
- Status field exists
- Suno Style Box exists (has
section)## Suno Inputs - Suno Lyrics Box exists
- If Status is
orGenerated
: Suno Link presentFinal - If documentary: Sources Verified status
- Check instrumental field sync:
- Read frontmatter
field (true/false/missing)instrumental - Read Track Details table
row (Yes/No/missing)**Instrumental** - If both present and they disagree →
[WARN] {filename} - Instrumental field mismatch: frontmatter={value}, table={value} - If only one is set →
[WARN] {filename} - Instrumental field missing from {frontmatter|table} (set in {other})
- Read frontmatter
Output per track:
[PASS] {filename} - Status: {status}, Suno Link: {present/missing}[WARN] {filename} - Status: {status}, missing {what}[FAIL] {filename} - No Status field
Step 4: Summary
═══════════════════════════════════════════════════════════ SUMMARY: {passed} passed, {failed} failed, {warnings} warning(s), {skipped} skipped ═══════════════════════════════════════════════════════════
If any issues:
ISSUES TO FIX: 1. {issue description} {fix command} 2. ...
Example Output
═══════════════════════════════════════════════════════════ ALBUM VALIDATION: sample-album ═══════════════════════════════════════════════════════════ CONFIG ────── [PASS] Config file exists [PASS] content_root: ~/bitwize-music [PASS] audio_root: ~/bitwize-music/audio [PASS] artist: bitwize ALBUM STRUCTURE ─────────────── [PASS] Album directory: ~/bitwize-music/artists/bitwize/albums/electronic/sample-album/ [PASS] README.md exists [PASS] tracks/ directory exists [PASS] 5 track files found AUDIO FILES ─────────── [FAIL] Audio directory in wrong location → Expected: ~/bitwize-music/audio/artists/bitwize/albums/electronic/sample-album/ → Found at: ~/bitwize-music/audio/sample-album/ → Fix: mv ~/bitwize-music/audio/sample-album/ ~/bitwize-music/audio/artists/bitwize/albums/electronic/sample-album/ ALBUM ART ───────── [SKIP] No album art yet TRACKS ────── [PASS] 01-intro.md - Status: Final, Suno Link: present [PASS] 02-track.md - Status: Final, Suno Link: present [WARN] 03-t-day-beach.md - Status: Generated, Suno Link: missing ═══════════════════════════════════════════════════════════ SUMMARY: 8 passed, 1 failed, 1 warning, 1 skipped ═══════════════════════════════════════════════════════════ ISSUES TO FIX: 1. Move audio folder to include artist: mv ~/bitwize-music/audio/sample-album/ ~/bitwize-music/audio/artists/bitwize/albums/electronic/sample-album/
Important Notes
- Use MCP tools first -
,get_config()
,find_album()
before manual checksvalidate_album_structure() - Check both correct AND wrong locations - Catch misplaced files
- Provide actionable fixes - Include exact commands to fix issues
- Use appropriate status - PASS/FAIL/WARN/SKIP based on severity
- Count everything - Report totals in summary