{"id":51408921,"url":"https://github.com/musictechlab/ddex-validate","last_synced_at":"2026-07-04T13:02:21.840Z","repository":{"id":361187636,"uuid":"1176890368","full_name":"musictechlab/ddex-validate","owner":"musictechlab","description":"Claude skill for validating DDEX ERN XML files against official schemas. Catches music metadata errors before they reach distributors.","archived":false,"fork":false,"pushed_at":"2026-05-29T15:04:46.000Z","size":21,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-29T15:15:06.960Z","etag":null,"topics":["claude-skill","ddex","music-metadata","validation","xml"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/musictechlab.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-09T13:37:25.000Z","updated_at":"2026-05-29T15:05:53.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/musictechlab/ddex-validate","commit_stats":null,"previous_names":["musictechlab/ddex-validate"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/musictechlab/ddex-validate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/musictechlab%2Fddex-validate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/musictechlab%2Fddex-validate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/musictechlab%2Fddex-validate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/musictechlab%2Fddex-validate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/musictechlab","download_url":"https://codeload.github.com/musictechlab/ddex-validate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/musictechlab%2Fddex-validate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35122501,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-04T02:00:05.987Z","response_time":113,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-skill","ddex","music-metadata","validation","xml"],"created_at":"2026-07-04T13:02:20.869Z","updated_at":"2026-07-04T13:02:21.833Z","avatar_url":"https://github.com/musictechlab.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# ddex-validate\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![Built by MusicTech Lab](https://musictechlab.io/oss/build-by-musictechlab.io.svg)](https://musictechlab.io)\n\n\u003e **Proof of Concept** — This skill is an experiment in using AI to streamline daily routines when working with music industry data. Instead of switching to web validators or remembering CLI flags, you validate DDEX files from the same conversation where you're already working. It's a small example of a bigger idea: embedding domain expertise directly into AI workflows so that repetitive data checks happen automatically, not manually.\n\nA [Claude skill](https://docs.anthropic.com/en/docs/claude-code/skills) that validates DDEX ERN (Electronic Release Notification) XML files against official schemas — catching music metadata errors before they reach distributors.\n\n## Why this exists\n\nMusic labels and distributors deal with DDEX XML files daily. Every release submission requires valid metadata — ISRCs, UPCs, territory codes, contributor roles, deal terms. Getting it wrong means rejected deliveries and delayed releases.\n\nThe validation itself is well-defined and mechanical: parse XML, check against a schema, verify field formats. That makes it a perfect candidate for an AI skill — let the machine handle the tedious checks while you focus on the music.\n\nThis proof of concept explores how Claude skills can turn domain knowledge (DDEX standards, distributor requirements, common pitfalls) into reusable, on-demand expertise that activates right when you need it.\n\n## What it does\n\nPaste or upload a DDEX ERN XML file and get instant validation with actionable error messages:\n\n- **Schema validation** against official DDEX XSD schemas (ERN 3.8.2, 4.1.1+)\n- **Music industry checks** — ISRC format, UPC/EAN digits, territory codes, required fields\n- **Fix suggestions** — every error comes with a specific, copy-pasteable fix\n- **Structural summary** — release count, recordings, territories, sender/recipient info\n\n## Quick start\n\n### Option 1: Claude Code (CLI)\n\n```bash\n# Clone into your skills directory\ngit clone https://github.com/musictechlab/ddex-validate.git ~/.claude/skills/ddex-validate\n```\n\nThen in Claude Code:\n```\n\u003e Validate this DDEX file: /path/to/release.xml\n```\n\n### Option 2: Claude.ai (Web)\n\n1. Download this repo as a ZIP\n2. Go to **Settings \u003e Capabilities \u003e Skills**\n3. Upload the ZIP\n4. Toggle on the **ddex-validate** skill\n\n### Option 3: Manual install\n\nCopy the skill folder to your Claude Code skills directory:\n```bash\ncp -r ddex-validate/ ~/.claude/skills/ddex-validate/\n```\n\n## Usage\n\nThe skill activates automatically when you mention DDEX, ERN, release metadata validation, or upload an XML file. You can also trigger it explicitly:\n\n```\nValidate this DDEX ERN XML against the 3.8.2 schema:\n\u003cpaste XML here\u003e\n```\n\n```\nCheck my release metadata for errors: /path/to/ern-release.xml\n```\n\n```\nIs this DDEX file valid for distribution?\n```\n\n### Example output\n\n**Valid file:**\n```\nDDEX ERN 382 — Valid\n\nSummary:\n- Releases: 1\n- Sound Recordings: 1\n- Images: 1\n- Territory: Worldwide\n- Message Type: TestMessage\n- Sender: Sample Music Corp\n- Recipient(s): Music Distribution Corp\n```\n\n**File with errors:**\n```\nDDEX ERN 382 — 2 error(s) found\n\n| # | Line | Error                              | Suggested Fix                          |\n|---|------|------------------------------------|----------------------------------------|\n| 1 | 36   | Element 'ISRC': '' is not valid    | Add 12-char ISRC: CCXXXYYNNNNN         |\n| 2 | 45   | Missing element 'TerritoryCode'    | Add \u003cTerritoryCode\u003eWorldwide\u003c/…\u003e       |\n```\n\n## Supported versions\n\n| ERN Version | Schema URL | Status |\n|-------------|-----------|--------|\n| 3.8.2 | `service.ddex.net/xml/ern/382/` | Fully supported |\n| 4.1.1 | `service.ddex.net/xml/ern/411/` | Fully supported |\n| 4.3 | `service.ddex.net/xml/ern/43/` | Supported |\n\nThe skill auto-detects the version from the XML namespace. If detection fails, it asks which version to use.\n\n## Skill structure\n\n```\nddex-validate/\n├── SKILL.md                        # Core instructions (YAML frontmatter + Markdown)\n├── references/\n│   └── ern-structure.md            # ERN element hierarchy and field formats\n├── assets/\n│   └── ern382-sample.xml           # Example ERN 3.8.2 file for testing\n└── README.md                       # This file (for humans on GitHub)\n```\n\n## What is DDEX?\n\n[DDEX](https://ddex.net) (Digital Data Exchange) is the music industry standard for exchanging metadata between labels, distributors, and digital service providers (DSPs) like Spotify, Apple Music, and Amazon Music.\n\n**ERN** (Electronic Release Notification) is the most common DDEX message type — it describes a music release including tracks, artwork, contributors, territory rights, and commercial terms.\n\nGetting ERN metadata wrong means your release gets rejected by the distributor or DSP, delaying your release date. This skill catches those errors before submission.\n\n## Where this is heading\n\nThis is a proof of concept — the first step in exploring how AI skills can fit into music data workflows. Some ideas we're considering:\n\n- **Batch validation** — process a directory of ERN files before a bulk delivery\n- **Auto-fix mode** — instead of just reporting errors, rewrite the XML with fixes applied\n- **DSRF support** — extend to Digital Sales Report Format (flat file) validation\n- **MCP integration** — connect to distributor APIs to validate _and_ submit in one workflow\n- **Royalty data checks** — apply the same pattern to streaming reports and financial data\n\nIf you work with music metadata and have ideas for what an AI-powered validation workflow should look like, we'd love to hear from you.\n\n## Contributing\n\nContributions are welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) before submitting a PR.\n\n## Security\n\nTo report a vulnerability, please see [SECURITY.md](SECURITY.md).\n\n## License\n\nMIT\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  MusicTech Lab - Rockstars Developers dedicated to the Music Industry\u003cbr\u003e\n  \u003ca href=\"https://musictechlab.io\"\u003eWebsite\u003c/a\u003e\n  \u003cspan\u003e | \u003c/span\u003e\n  \u003ca href=\"https://linkedin.com/company/musictechlab\"\u003eLinkedIn\u003c/a\u003e\n  \u003cspan\u003e | \u003c/span\u003e\n  \u003ca href=\"https://musictechlab.io/contact\"\u003eLet's talk\u003c/a\u003e\u003cbr\u003e\n  Crafted by \u003ca href=\"https://musictechlab.io\"\u003emusictechlab.io\u003c/a\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmusictechlab%2Fddex-validate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmusictechlab%2Fddex-validate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmusictechlab%2Fddex-validate/lists"}