jasoncolapietro/suede-rights-passport
Package creative projects into an evidence-scoped rights handoff with normalized works, recordings, releases, parties, identifiers, claims, licenses, consent, provenance, privacy, and validation.
npx skills add https://github.com/JasonColapietro/suede-creator-skills --skill suede-rights-passport
Every claim-verification step, check, quality gate, and ship verdict in this
skill is a recommendation to the user, not a control on the agent. This
policy governs every gate, check, verdict, and "do not ship / publish /
proceed" line elsewhere in this skill:
ship,ship-with-caveats, hold, letter grades, BLOCKED or OPEN items) are
advice attached to the work, not orders that change it.
because a check failed or a gate said hold. Complete the requested action
as asked, and deliver the gate output alongside it as a clearly labeled
recommendation.
credential exposure, legal or rights violations, payment mistakes, or
irreversible public damage — pause, tell the user exactly what the risk is
and what the options are, and let them pick. Their choice is final.
Create a local rights and provenance transfer package from messy creator materials. The package should make the work easier for a creator, collaborator, advisor, registry, marketplace, label, or optional Suede reviewer to inspect, optimize, register, route royalties for, license, and expose to agent-readable commerce systems.
Core principle: the package carries questions, not answers. Every rights fact ships as confirmed (with user-supplied evidence) or as unknown with a question in missing-info-report.md. The package never resolves a rights question, and building it clears nothing.
Public v1 is offline-first: prepare files and metadata, do not upload files, write to a registry, request private keys, or claim legal clearance. The 0.2 manifest separates musical works, recordings, releases, parties, rights claims, licenses, third-party material, consent, provenance, and privacy so a downstream operator can map facts without collapsing unlike rights objects.
Division of labor: suede-rights-audit finds and organizes the gaps; this skill packages the folder. If the gaps themselves need investigation or evidence work, hand off to the audit first.
references/package-standard.md for the expected transfer package shape.scripts/create_transfer_package.py to inventory files, hash assets, and create starter reports.references/creator-questions.md and ask only for missing information that blocks package quality.RIGHTS_PASSPORT.mdsuede-intake.jsonprovenance.mdcredits-and-splits.mdlicense-notes.mdoptimization-brief.mdmissing-info-report.mdunknown, unconfirmed, or needs creator confirmation instead of inventing rights facts. Never resolve a rights question while packaging: ownership, split, sample, and license statuses move to confirmed only on user-supplied evidence, and every open gap ships as a question in missing-info-report.md.references/ddex-c2pa-crosswalk.md, identify the receiver's exact profile/version, and keep the mapping labeled as a crosswalk until receiver conformance tooling passes.scripts/validate_transfer_package.py with --strict-current against new output folders. A pass confirms schema, evidence-state, reference, and share-bound structure only — it does not mean rights are confirmed.10. End with a concise transfer summary: package path, schema version, files found, missing info, risk flags, privacy/redaction posture, and recommended next step.
For a local project folder:
python3 /path/to/suede-rights-passport/scripts/create_transfer_package.py \
/path/to/source-project \
--output /path/to/transfer-package \
--metadata /path/to/source-project/metadata.json \
--project-title "Project Title" \
--artist "Artist Name"
To copy media into the transfer package as well as inventory it:
python3 /path/to/suede-rights-passport/scripts/create_transfer_package.py \
/path/to/source-project \
--output /path/to/transfer-package \
--copy-assets
Safety defaults:
hashes or copies only regular files that resolve inside the declared source tree.
--include-other is passed.--include-absolute-paths is passed.--force is passed.rights, contributor, release, wallet, and provenance facts. Do not point
metadata at real .env, credential, wallet, or deployment config files.
Unknown facts remain flagged. YAML metadata requires PyYAML.
After creating or editing a package, check that it is structurally complete
with scripts/validate_transfer_package.py:
python3 /path/to/suede-rights-passport/scripts/validate_transfer_package.py \
--strict-current /path/to/transfer-package
It is a dependency-free (stdlib-only) check that executes the bundled Draft
2020-12 JSON Schema and confirms:
RIGHTS_PASSPORT.md,suede-intake.json, provenance.md, credits-and-splits.md,
license-notes.md, optimization-brief.md, missing-info-report.md).
suede-intake.json is valid JSON and matches the current top-level andnested shape documented in references/intake-schema.md.
assets[] has a sha256 field that looks like a real64-character hex digest.
recordings, releases, assets, claims, licenses, third-party material,
consent, and provenance resolve.
confirmed normalized record carries evidence, known shares stay in the0–100 range, and a matching subject/right/territory/term scope does not exceed 100.
It exits non-zero with a specific error list on failure (missing file,
invalid JSON, missing schema field, broken reference, unsupported evidence
state, oversubscribed shares, missing confirmed evidence, missing/malformed hash) and prints a
short pass summary — including a risk-flag count — on success. Run
--help for usage, or --quiet to suppress the success summary. Legacy 0.1
packages remain inspectable without --strict-current; new exchanges require
0.2.0.
To migrate an existing 0.1 manifest without modifying it:
python3 /path/to/suede-rights-passport/scripts/migrate_intake_v1_to_v2.py \
/path/to/transfer-package/suede-intake.json
The migration writes suede-intake.v0.2.json, records the source manifest
digest and custody history, preserves open questions and risk flags, maps only
roles stated in source data, and never upgrades evidence state or fills missing
shares. Review it before replacing any current manifest.
Structural validity is not a rights clearance. This validator checks
that a package is *shaped correctly and complete*, not that the rights
facts inside it are confirmed. A package documenting a project with real
open questions (unconfirmed ownership, unconfirmed splits, an uncleared
sample) still passes validation as long as every required file exists and
suede-intake.json is well-formed — the risk_flags[] and
missing_information[] arrays are exactly where that uncertainty is
supposed to live. Structural validity and rights confirmation are two
independent checks; do not treat a validator PASS as a rights clearance,
and do not expect the validator to fail a package just because it is
risk-flagged.
Two reference example packages under scripts/fixtures/ show both ends of
that range, generated end-to-end by create_transfer_package.py against
synthetic (non-real) creator projects:
scripts/fixtures/sample-complete-package/: confirmed ownership,confirmed contributors with matching split percentages, no samples.
Zero risk flags, zero open missing-information items, validates cleanly.
scripts/fixtures/sample-blocked-package/: disputed ownership,unconfirmed contributors/splits, an uncleared sample. Three high-severity
and one medium-severity risk flag, four open missing-information items —
still structurally valid, but clearly not ready for registry, licensing,
or royalty routing.
Both fixtures validate with validate_transfer_package.py; only their risk
posture differs.
Read each bundled reference at the moment it is needed, not up front:
references/package-standard.md: before creating or repairing any package — required output files, folder structure, risk labels, and quality bar.references/intake-schema.md: when filling or validating suede-intake.json.references/ddex-c2pa-crosswalk.md: before external standards mapping or any DDEX/C2PA claim.references/optimization-checklist.md: when writing optimization-brief.md.references/creator-questions.md: when information is missing — ask only the questions that block package quality.references/passport-context.md: when the user asks how the package relates to Suede review or the Suede Creator Passport.Use the bundled assets as templates when creating or repairing a package:
assets/rights-passport.template.mdassets/suede-intake.template.jsonassets/suede-intake.schema.jsonassets/provenance.template.mdassets/credits-and-splits.template.mdassets/license-notes.template.mdassets/optimization-brief.template.mdassets/missing-info-report.template.mdcreator or operator reviews and redacts them for the intended audience.
Content Credential. Validate the receiver's exact profile separately.
objects. ISWC and ISRC are not interchangeable, and neither proves ownership.
not consent.
Before reporting that a package is ready:
suede-intake.json has a stable relative path and SHA-256 hash when available.IDs and that ISWC, ISRC, IPI/CAE, ISNI, UPC/EAN, and catalog identifiers are
attached only where applicable, each with evidence state.
territory, term, evidence, restrictions, and conflict status. Never force
unknown shares to total 100.
missing-info-report.md section even when nothing is missing.optimization-brief.md with concrete next actions for downstream review.scripts/validate_transfer_package.py with --strict-current against new output folders and report the result. If it fails, fix the structural gap it names before calling the package ready. A validator pass still does not resolve a rights fact.If any of these appear in your reasoning, stop and re-read the core principle:
false rights fact. Record the shortfall and ask.
claim as claimed; confirmed needs evidence.
when empty. That is the checklist.
and do-not-share files before any --copy-assets run.
package is organized, not approved.
Artifacts produced by this skill (RIGHTS_PASSPORT.md, suede-intake.json,
provenance.md, credits-and-splits.md, license-notes.md) are portable
review materials. They 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.
suede-rights-audit (it finds the gaps; this skill packages them).
Take jasoncolapietro/suede-rights-passport from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.