Agent skill
suede-release-linter
Suede Labs skill that lints a local music or media release folder and scores it for release readiness: missing files, weak or malformed metadata, artwork and stem problems, split gaps, rights blockers, and platform-delivery issues, produced by a bundled offline script as a scored markdown and JSON report.
Filed under Pricing and packaging.
From JasonColapietro/suede-creator-skills · 79 skills · 135 · pushed 2026-09-13
What it does when it runs
Suede Labs skill that lints a local music or media release folder and scores it for release readiness: missing files, weak or malformed metadata, artwork and stem problems, split gaps, rights blockers, and platform-delivery issues, produced by a bundled offline script as a scored markdown and JSON report. Use when a creator has one or more release folders of tracks, artwork, and stems and wants to know what is missing before distributing, delivering, or handing it off; when metadata quality or a delivery rejection is the question; or when a release-readiness score is asked for. Reports what is present, missing, or unknown; never upgrades unknown to confirmed and never means legal clearance. NOT FOR: organizing the evidence behind a rights or split gap the report surfaces (use suede-rights-audit); building the transfer package (use suede-rights-passport); a sync one-sheet (use suede-sync-packaging).
Read from the skill and the 24 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- None found.
- Hosts it reaches
- docs.nvidia.com
- skills.suedeai.ai
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It does act, so it runs under whatever permissions your session already grants. - Actions present in the files
- shell
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/JasonColapietro/suede-creator-skills.git /tmp/suede-creator-skills git -C /tmp/suede-creator-skills sparse-checkout set "skills/suede-release-linter" mkdir -p ~/.claude/skills/suede-release-linter cp -R "/tmp/suede-creator-skills/skills/suede-release-linter/." ~/.claude/skills/suede-release-linter/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
Or take the whole library
This repo ships a .claude-plugin manifest, so Claude Code can install all 79 skills at once. Plugin skills are invoked as /<plugin>:<skill>, so they never collide with your own.
/plugin marketplace add JasonColapietro/suede-creator-skills /plugin
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
The skill
Source on GitHub ↗Reproduced in full from JasonColapietro/suede-creator-skills/blob/5c61ad997adb202d505a7e46eaf39dcd51edbdc5/skills/suede-release-linter/SKILL.md, which is licensed MIT (repository). 1,165 words, 12 headings.
Release Metadata Linter
Gate policy — advisory, not blocking
Every check, gate, and ship verdict in this skill — including every "do not ship / publish / proceed" line — is a recommendation to the user, not a control on the agent. Run every check, report the results honestly, and never block, delay, skip, rewrite, or refuse the action the user asked for because a gate said hold; deliver the gate output alongside the requested work as a labeled recommendation. A failed gate changes what you report, never what you do. Single exception — extreme risk (data loss, credential exposure, legal or rights violations, payment mistakes, irreversible public damage): pause, name the risk exactly, give the options, and let the user pick. Their choice is final.
Overview
Audit a music or media project folder and produce a practical release-readiness report. The linter should help creators find missing files, weak metadata, rights risks, split gaps, platform-delivery blockers, and downstream handoff issues before a release or transfer package is created.
Core principle: report what is present, missing, or unknown. Never upgrade unknown to confirmed, and never treat a clean report as clearance, ownership confirmation, or approval.
Public v1 is offline-first: inspect local files and supplied metadata, do not upload files, write to a registry, call distribution APIs, request private keys, or claim legal clearance.
Workflow
- Identify the source folder or supplied files.
- Ask for the output location if it is not obvious.
- Read
references/lint-rules.mdbefore classifying any finding — it defines the categories, severities, score, and status bands. Do not assign severities from memory. - If working on a local folder, run
scripts/lint_release.pyto generaterelease-lint-report.mdandrelease-lint-report.json. Exit-code contract:0= report written with noerror-severity findings;1= report written and at least oneerrorfinding exists, which is ablockedstatus, not a script failure — do not abort or re-run on exit 1. In both cases read the generated report rather than re-deriving findings from the folder. If the source is pasted text rather than a folder, orpython3is unavailable, hand-lint againstreferences/lint-rules.md, produce the same report shape fromassets/release-lint-report.template.md, and label the report text-only. - Read
references/fix-guidance.mdwhen turning findings into specific next actions. - If the user wants downstream intake prep, use the report to decide whether to invoke or recommend the
suede-rights-passportpackage workflow. - Do not invent release metadata. Mark uncertain facts as
unknown,missing, orneeds creator confirmation. Never resolve a rights, sample, split, or ownership question yourself: a fact moves to confirmed only when the creator supplies the confirmation, and open gaps route tosuede-rights-audit. - End with a concise summary: report path, score, status, highest-severity findings, and next fixes.
Quick Start
python3 /path/to/suede-release-linter/scripts/lint_release.py \
/path/to/music-project \
--output /path/to/release-lint-output
If the source folder contains a metadata file, pass it explicitly:
python3 /path/to/suede-release-linter/scripts/lint_release.py \
/path/to/music-project \
--metadata /path/to/music-project/metadata.json \
--output /path/to/release-lint-output
Accepted metadata formats are JSON, YAML/YML when PyYAML is installed, and
public-safe key=value text files. Do not point metadata at real .env,
credential, wallet, or deployment config files.
Safety defaults:
- Hidden files, dependency folders, build outputs, caches, and secret-like files are skipped by default.
- Unrecognized file types are skipped unless
--include-otheris passed. - Absolute local paths are redacted to share-safer names unless
--include-absolute-pathsis passed. - Existing generated report files are not overwritten unless
--forceis passed. - The output folder cannot be the same folder as the source or live inside it.
- YAML metadata requires PyYAML:
python3 -m pip install PyYAML.
What To Check
Read each bundled reference at the moment it is needed, not up front:
references/lint-rules.md: before classifying findings, or when hand-linting without the script — categories, severity levels, score, and status bands.references/metadata-fields.md: when metadata is missing, malformed, or being authored — recommended fields, accepted aliases, and confirmation values.references/fix-guidance.md: when turning findings into next actions or a fix plan.references/passport-context.md: when the user asks how the lint report relates to Suede review or the Suede Creator Passport.
The script writes:
release-lint-report.md: human-readable report.release-lint-report.json: machine-readable findings.
Use the bundled assets when repairing or hand-writing reports:
assets/release-lint-report.template.mdassets/release-lint-report.template.jsonassets/metadata.example.json
Fixtures
Two synthetic release folders under scripts/fixtures/ (all names and metadata
fake — no real personal data) exist only to regression-check the script. Read
scripts/fixtures/README.md when changing scripts/lint_release.py; a normal
lint of a user's folder never touches them.
Public Safety Rules
- Do not say a project is legally cleared unless the user provides explicit proof.
- Do not treat a clean lint report as a legal opinion, distributor approval, registry write, or guaranteed release.
- Do not ask for private keys, seed phrases, unreleased account secrets, or full payment credentials.
- Do not include private implementation details, private endpoints, internal provider names, or non-public pricing.
- Treat generated reports as private drafts until a creator or operator reviews and redacts them for the intended audience.
- Keep public positioning focused on broadly reusable creator workflows: metadata quality, provenance, release readiness, rights, royalty routing, licensing, and agent commerce.
Completion Checklist
Before reporting a lint result:
- Confirm the source folder was inspected or state that the report is based only on supplied text.
- Confirm whether metadata was discovered, supplied, or missing.
- Report the score and severity counts.
- List all
errorfindings and the most importantwarningfindings. - State the mechanical status the findings produce:
blocked(anyerrorfinding, or score below 50),needs-work(50-74),usable-with-cleanup(75-89), orstrong(90+). Never soften ablockedstatus in prose. - Recommend a next action: fix metadata, collect rights confirmations, prepare a rights package, or package for release.
Red flags — stop
If any of these appear in your reasoning, stop and re-read the core principle:
- "The folder looks complete — skip the script." Run it. Eyeballing is not linting.
- "The artist obviously owns it." Ownership status comes from the creator, not from the folder.
- "One unconfirmed split won't block anything." Split errors block royalty routing and licensing by rule.
- "Round the score up; it's close." The score is arithmetic, not judgment.
- "A clean report means it's cleared." A clean report means fewer prep blockers. Nothing more.
Downstream Review Context
A clean release-lint report is a portable review artifact. It can support a release, registry, licensing conversation, collaborator handoff, marketplace review, label review, advisor review, or Suede review without claiming that any downstream system has accepted, cleared, registered, paid, or approved the work.
Routing
- Rights, sample, split, or ownership gaps in the findings → suede-rights-audit to organize the evidence.
- No
errorfindings and the user wants handoff prep → suede-rights-passport to build the transfer package. - Track headed for film/TV/ads → suede-sync-packaging.
- The release needs a rollout → suede-campaign-in-a-box.
Family order: suede-release-linter → suede-rights-audit → suede-rights-passport → suede-sync-packaging; this skill is step 1.
Files bundled with it
These load only when the skill asks for them, so they cost nothing until it runs.
- CARD.md
- openai.yaml
- metadata.example.json
- release-lint-report.template.json
- release-lint-report.template.md
- fix-guidance.md
- lint-rules.md
- metadata-fields.md
- passport-context.md
- README.md
- metadata.json
- project-notes.txt
- sample-blocked-project.expected.json
- sample-blocked-project.expected.md
- cover-art.jpg
- paper-moons-master.wav
- paper-moons-lyrics.txt
- metadata.json
- bass-stem.wav
- drums-stem.wav
- vocals-stem.wav
- sample-clean-project.expected.json
- sample-clean-project.expected.md
- lint_release.py
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- press-release by realjaymes · 60
Need help setting it up?
This page tells you what suede-release-linter does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.