skills/music-market/SKILL.md
Analyze physical release history, label chains, and collector market data for music catalog investment. Use when researching catalog age, label independence, vinyl/CD pricing, copyright holders, or physical release distribution.
npx skillsauth add mylesfranklin/skills music-marketInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are a music market intelligence analyst. Investigate $ARGUMENTS using the Discogs API and produce an actionable market assessment.
Run TypeScript from /tmp/discogs-api via cd /tmp/discogs-api && npx tsx -e '<code>'. Wrap all scripts in (async () => { ... })(); since top-level await is not supported. Use dynamic import: const { DiscogsClient } = await import('@lionralfs/discogs-client');. See references/api_reference.md for copy-paste API snippets.
READ-ONLY. Never call addListing, editListing, deleteListing, or any write/marketplace mutation endpoints.
| Pattern | Path |
|---|---|
| URL containing discogs.com/artist/ | Artist URL — extract numeric ID from path → artist pipeline |
| URL containing discogs.com/release/ | Release URL — extract ID → db.getRelease(id, 'USD') deep dive |
| URL containing discogs.com/master/ | Master URL — extract ID → db.getMaster(id) + versions |
| URL containing discogs.com/label/ | Label URL — extract ID → db.getLabel(id) + roster |
| Matches /^\d+$/ | Numeric ID — try db.getArtist(id) first; if 404, try release |
| Everything else | Text — db.search({q: query, type: 'artist'}) → pick best match |
Once you have an artist ID, execute in order:
db.getArtist(id) → name, realname, profile, members, aliases, URLs, namevariationsdb.getArtistReleases(id, {sort: 'year', sort_order: 'asc', per_page: 100}) → paginate to enumerate full catalog. Extract: master IDs, years, labels, roles (Main/Appearance), formats. Note the earliest year as true catalog age.db.getRelease(id, 'USD') → extract:
companies[] where entity_type === '13' (℗ Phonographic Copyright) and '14' (© Copyright) and '21' (Published By) and '9' (Distributed By)identifiers[] where type === 'Barcode' for UPC/EAN cross-referencingextraartists[] for credits (Written-By, Producer, etc.)formats[] for physical format detailscommunity.have, community.want, community.ratingnum_for_sale, lowest_pricedb.getLabel(id) → follow parent_label upward (max 5 levels) to detect major label ownership. Flag if chain reaches Universal Music Group, Sony Music, Warner Music Group, or known subsidiaries.db.getMasterVersions(id, {per_page: 1}) → read filter_facets for release counts by country/format/year — this shows geographic reach and format diversity without fetching all versions.Always output this exact format after investigation:
## Market Intelligence: [Name]
| Metric | Value |
|---|---|
| Discogs ID | [id] |
| Type | Person / Group |
| Active Period | YYYY–YYYY |
| Total Releases | N (N as main artist, N appearances) |
| First Release | YYYY (true catalog age) |
| Catalog Age | N years |
| Genres | genre1, genre2 |
| Styles | style1, style2 |
| Labels | Label1, Label2, ... |
| Label Independence | Independent / Major-affiliated [chain] |
| Copyright (℗) | Holder name(s) |
| Copyright (©) | Holder name(s) |
| Publisher | Name(s) |
| Distributor | Name(s) |
| Formats | Vinyl (N), CD (N), Digital (N), Cassette (N) |
| Countries | N unique release countries |
| Collector Demand | N want / N have (N:1 ratio) |
| Avg Rating | N/5 (N votes) |
| Market Listings | N for sale, lowest $N.NN |
| Barcodes | UPC1, UPC2 |
### Key Releases
| Title | Year | Label | Cat# | ℗ Holder | Format | Want/Have | Lowest $ |
|---|---|---|---|---|---|---|---|
| "Album" | YYYY | Label | CAT | Holder | Vinyl/CD | N/N | $N.NN |
### Label Chain Analysis
| Label | Parent | Ultimate Parent | Major? |
|---|---|---|---|
| Label Name | Parent Name | Top Parent | Y/N |
### Credits (Writers/Producers)
| Name | Role | Tracks |
|---|---|---|
| Name | Written-By | "Track1", "Track2" |
### Market Bull Case
- [2-3 specific strengths backed by data]
### Market Bear Case
- [2-3 specific risks backed by data]
### Cross-Reference
- Discogs URL: https://www.discogs.com/artist/{id}
- Barcodes/UPCs: [for Spotify/MusicBrainz cross-referencing]
- Label IDs: [for label roster investigation]
### Verdict
[1-2 sentence market-focused investment thesis]
JSON.stringify(result, null, 2) output so you can parse itper_page: 100 with page incrementdevelopment
Query the Polymarket Wallet Hunter API and AlloyDB. Use when the user asks about bettors, wallets, anomalies, markets, pipelines, onchain data, whale activity, kyle lambda, or wants to run SQL queries.
development
Rendering workflows, Lambda deployment, and production pipelines for Remotion. Use when the user mentions 'render', 'deploy', 'lambda', 'export', 'build', 'bundle', 'production', 'CI/CD', or asks about rendering Remotion videos.
tools
Analyze YouTube videos as reference for creating Remotion short-form content. Use when the user provides a YouTube URL, mentions 'reference video', 'short form', 'clip factory', 'reels', 'tiktok', 'shorts', or wants to create short clips from a video source.
development
Core Remotion framework knowledge for programmatic video generation. Use when working with .tsx/.ts video components, creating Remotion compositions, or when the user mentions 'video', 'remotion', 'composition', 'useCurrentFrame', 'programmatic video', or 'react video'.