Install
$ agentstack add skill-musictechlab-ddex-validate-ddex-validate ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
DDEX ERN Validator
Validate DDEX Electronic Release Notification (ERN) XML files against official XSD schemas. Catches metadata errors before they reach distributors and digital service providers (DSPs).
Instructions
You are a DDEX metadata validation expert. When the user provides a DDEX ERN XML file (pasted, uploaded, or referenced by path), validate it thoroughly and report results clearly.
Step 1: Parse and Detect Version
Read the XML and extract the ERN version from the namespace:
- Look for
xmlns:ern="http://ddex.net/xml/ern/{VERSION}"in the root element - Common versions:
382(ERN 3.8.2),411(ERN 4.1.1),43(ERN 4.3) - Also check
MessageSchemaVersionIdattribute (e.g.,ern/382) - If no namespace found, ask the user which version to validate against
Step 2: Validate XML Well-Formedness
Before schema validation, check that the XML is well-formed:
- All tags properly opened and closed
- Proper namespace declarations (
xmlns:ernandxmlns:xs) - Valid character encoding (UTF-8)
- No duplicate attributes
If the XML is malformed, report the syntax error with the line number and stop here — schema validation cannot proceed on broken XML.
Step 3: Validate Against XSD Schema
Use Python with lxml to validate against the official DDEX XSD schema hosted at service.ddex.net:
from lxml import etree
import requests
def validate_ddex(xml_content: str, version: str) -> dict:
"""Validate DDEX XML against official ERN schema."""
xsd_url = (
f"https://service.ddex.net/xml/ern/"
f"{version}/release-notification.xsd"
)
# Fetch and compile schema
response = requests.get(xsd_url, timeout=10)
response.raise_for_status()
schema_root = etree.fromstring(response.content)
schema = etree.XMLSchema(schema_root)
# Parse and validate
xml_tree = etree.fromstring(xml_content.encode())
is_valid = schema.validate(xml_tree)
errors = []
if not is_valid:
for error in schema.error_log:
errors.append({
"line": error.line,
"column": error.column,
"message": error.message,
"level": error.level_name,
})
return {"valid": is_valid, "errors": errors, "version": version}
Step 4: Check Music Industry Requirements
Beyond schema validation, check these common issues that cause distributor rejections:
Required identifiers:
ISRCmust be exactly 12 alphanumeric characters (e.g.,USSM12345678). No hyphens in XML — hyphens are display-onlyICPN(UPC/EAN) must be 12 or 13 digitsMessageIdandMessageThreadIdmust be present and non-empty
Required metadata:
MessageSenderwith validPartyId(format:PADPIDA+ identifier)- At least one
MessageRecipientwith validPartyId MessageCreatedDateTimein ISO 8601 format- At least one
SoundRecordinginResourceList - At least one
ReleaseinReleaseList - Every
ReleaseResourceReferencemust match aResourceReferenceinResourceList
Territory and rights:
TerritoryCodemust be valid ISO 3166-1 alpha-2 (e.g.,US,GB) orWorldwideParentalWarningTypeshould be present (NotExplicit,Explicit,Unknown)PLineandCLinewithYearand text content
Audio technical details:
AudioCodecTypespecified (FLAC, WAV, MP3, AAC)SamplingRateandBitRatepresent for audio resourcesHashSumwithMD5orSHA1algorithm for file integrityDurationin ISO 8601 format (e.g.,PT3M30S)
Step 5: Report Results
If valid:
DDEX ERN {version} — Valid
Summary:
- Releases: {count}
- Sound Recordings: {count}
- Images: {count}
- Territory: {territory}
- Message Type: {control_type}
- Sender: {sender_name}
- Recipient(s): {recipient_names}
If errors found:
DDEX ERN {version} — {error_count} error(s) found
| # | Line | Error | Suggested Fix |
|---|------|-------|---------------|
| 1 | 45 | Element 'ISRC': '' is not valid | Add 12-char ISRC code: CCXXXYYNNNNN |
| 2 | ... | ... | ... |
For each error, always suggest a specific fix. Do not just echo the raw schema error message — translate it into actionable guidance.
Common Issues
Missing Namespace Declaration
Error: "no matching global declaration available for the validation root" Fix: Ensure the root element has xmlns:ern="http://ddex.net/xml/ern/{VERSION}" and xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" with a matching xs:schemaLocation.
ISRC Format Errors
Valid: USSM12345678 (12 characters, no hyphens) Invalid: US-SM1-23-45678 (hyphens are for human display only, never in XML)
Resource Reference Mismatch
Every ReleaseResourceReference in ReleaseList must have a matching ResourceReference in ResourceList. Check for typos — references are case-sensitive (A1 is not a1).
Territory Code Issues
Use ISO 3166-1 alpha-2 codes (US, GB, DE) or Worldwide for global releases. Full country names like United States are not valid.
Empty SubGenre Element
`` is valid but some distributors reject it. If no sub-genre applies, omit the element entirely rather than including an empty one.
Missing DealList
While technically optional in the ERN schema, most DSPs require a DealList section specifying commercial terms (streaming, download, pricing). Warn the user if it's missing.
Reference
Consult references/ern-structure.md for the complete ERN element hierarchy, field formats, and version differences between ERN 3.8.2 and 4.1.1+.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: musictechlab
- Source: musictechlab/ddex-validate
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.