curate
Orchestrate end-to-end media curation from analysis through acquisition, tagging, and verification
What this skill does
# Curate Media Collection
Main orchestration entry point for end-to-end media curation. Analyzes artist discography, discovers high-quality sources, acquires media, tags metadata, verifies integrity, checks completeness, and optionally exports to platform-specific formats.
## Purpose
Media curation is a multi-phase workflow requiring coordination across analysis, discovery, acquisition, metadata tagging, verification, and export. This command orchestrates the full pipeline, managing dependencies between phases and ensuring quality at each step.
## Parameters
### Required
**`<artist>`** - Artist name to curate. Quoted if contains spaces.
Example: `"Pink Floyd"`
### Optional
**`--scope <complete|era:NAME|style:NAME>`** - Curation scope.
- `complete`: Full discography (all albums, all eras)
- `era:NAME`: Specific era only (e.g., `era:Classic Rock Era (1968-1979)`)
- `style:NAME`: Specific style only (e.g., `style:Progressive Rock`)
Default: `complete`
**`--output <dir>`** - Output directory for curated collection.
Default: `~/Music/Curated/<artist>`
**`--quality <threshold>`** - Minimum quality score (0.0-1.0).
- 0.9-1.0: Audiophile (lossless, verified sources, complete metadata)
- 0.7-0.89: High quality (lossless or high-bitrate lossy, good metadata)
- 0.5-0.69: Standard quality (acceptable lossy formats, basic metadata)
- Below 0.5: Low quality (rejected unless explicitly allowed)
Default: `0.7`
**`--export <profile>`** - Export to platform-specific format after curation.
Options: `plex`, `jellyfin`, `mpd`, `mobile`, `archival`
Default: None (no export)
**`--dry-run`** - Simulate workflow without downloading or modifying files.
**`--resume`** - Resume previous incomplete curation session.
## Orchestration Flow
```
/curate "Pink Floyd" --scope complete --quality 0.8 --export plex
Phase 1: Analysis
├── /analyze-artist "Pink Floyd"
├── Output: Era breakdown, style classification, album list
└── Status: 16 studio albums, 3 eras identified
Phase 2: Discovery
├── /find-sources "Pink Floyd" --scope complete --quality 0.8
├── Searches: MusicBrainz, Archive.org, Discogs, Bandcamp, label sites
├── Output: Ranked source list per album
└── Status: 127 sources found across 16 albums
Phase 3: Acquisition
├── /acquire "Pink Floyd" --quality 0.8
├── Downloads: Top-ranked sources meeting quality threshold
├── Validates: Format, bitrate, checksums
├── Output: Downloaded files in output directory
└── Status: 14/16 albums acquired (2 unavailable at threshold)
Phase 4: Curation
├── /tag-collection ~/Music/Curated/Pink\ Floyd
├── Metadata: Artist, album, track, year, genre, artwork
├── Artwork: Embedded + folder.jpg per album
├── Output: Fully tagged collection
└── /verify-archive ~/Music/Curated/Pink\ Floyd
├── Checksums: SHA-256 per file
├── Provenance: PROVENANCE.jsonld per album
├── Output: SHA256SUMS, PROVENANCE.jsonld
└── Status: All files verified, provenance recorded
Phase 5: Completeness Analysis
├── /check-completeness ~/Music/Curated/Pink\ Floyd
├── Compares: Collection against canonical discography
├── Output: Gap report (missing albums, tracks, formats)
└── Status: 87.5% complete (2 albums missing)
Phase 6: Export (Optional)
├── /export --profile plex ~/Music/Curated/Pink\ Floyd /media/plex/Music
├── Transcodes: As needed per profile
├── Structure: Artist/Album (Year)/Track - Title.ext
├── Metadata: Embedded + folder.jpg
└── Status: 14 albums exported to Plex
```
## Phase Details
### Phase 1: Analysis
**Command:** `/analyze-artist "<artist>"`
**Purpose:** Understand artist's discography structure, eras, styles, and canonical album list.
**Inputs:**
- Artist name
**Outputs:**
- `.aiwg/media/analysis/<artist>.md`: Era breakdown, style classification
- `.aiwg/media/discography/<artist>.json`: Canonical album list with MusicBrainz IDs
**Success Criteria:**
- All studio albums identified
- Eras defined with year ranges
- Styles classified per album
**Example Output:**
```
Pink Floyd Analysis Complete
- Studio Albums: 16
- Eras: 3 (Psychedelic, Classic Progressive, Post-Waters)
- Styles: Progressive Rock, Psychedelic Rock, Art Rock
- Canonical Discography: .aiwg/media/discography/Pink Floyd.json
```
### Phase 2: Discovery
**Command:** `/find-sources "<artist>" --scope <scope> --quality <threshold>`
**Purpose:** Search multiple sources, rank by quality, filter by threshold.
**Inputs:**
- Artist name
- Scope (complete/era/style)
- Quality threshold
**Outputs:**
- `.aiwg/media/sources/<artist>-sources.json`: Ranked source list per album
**Search Sources:**
1. MusicBrainz (authoritative metadata)
2. Archive.org (public domain, live recordings)
3. Bandcamp (artist-direct, high quality)
4. Discogs (marketplace, quality varies)
5. Label websites (official, often highest quality)
**Ranking Criteria:**
- Format (FLAC > WAV > ALAC > Opus > MP3)
- Bitrate (higher is better for lossy)
- Source reputation (artist-direct > label > verified uploader > unknown)
- Metadata completeness (full tags > partial > missing)
- Artwork availability (embedded + high-res > embedded only > missing)
**Success Criteria:**
- At least one source per album meeting quality threshold
- Sources ranked by quality score
**Example Output:**
```
Discovery Complete: Pink Floyd
- Albums Found: 16/16
- Total Sources: 127
- Sources Meeting Threshold (0.8): 89
- Top Sources: .aiwg/media/sources/Pink Floyd-sources.json
```
### Phase 3: Acquisition
**Command:** `/acquire "<artist>" --quality <threshold>`
**Purpose:** Download top-ranked sources, validate quality, organize files.
**Inputs:**
- Artist name
- Quality threshold
- Source rankings from Phase 2
**Outputs:**
- Downloaded files in `<output_dir>/<artist>/<album>/`
- `.aiwg/media/downloads/<artist>-acquisition.log`: Download log
**Download Strategy:**
1. Select top-ranked source per album
2. Download to temporary location
3. Validate format, bitrate, checksums
4. Move to output directory if valid
5. Retry with next-ranked source on failure
**Validation:**
- Format check: `ffprobe` confirms declared format
- Bitrate check: Meets minimum for quality threshold
- Checksum: If provided by source, verify SHA-256
- File integrity: No corruption, complete download
**Success Criteria:**
- Files downloaded and validated
- Organized in `<artist>/<album>/` structure
- Acquisition log records sources and timestamps
**Example Output:**
```
Acquisition Complete: Pink Floyd
- Albums Acquired: 14/16
- Total Files: 187 tracks, 14 cover images
- Total Size: 4.2 GB
- Failed: 2 albums (no sources meeting threshold 0.8)
- Download Log: .aiwg/media/downloads/Pink Floyd-acquisition.log
```
### Phase 4: Curation
**Subphase 4a: Tagging**
**Command:** `/tag-collection <collection_path>`
**Purpose:** Embed complete metadata and artwork into all files.
**Inputs:**
- Collection directory path
- Canonical discography from Phase 1
**Outputs:**
- Tagged audio files (metadata embedded)
- `folder.jpg` per album directory
- `.aiwg/media/tagging/<artist>-tagging.log`: Tagging log
**Metadata Sources:**
1. MusicBrainz (authoritative)
2. Discogs (supplementary)
3. Embedded tags (if already present)
**Tags Applied:**
- Artist, Album Artist, Album, Track Title, Track Number
- Year, Date, Genre, Style
- MusicBrainz IDs (release, recording, artist)
- Label, Catalog Number
**Artwork Handling:**
- Extract embedded artwork if present
- Search for high-resolution artwork if missing
- Resize to 1500x1500 maximum
- Embed into audio files
- Save as `folder.jpg` in album directory
**Success Criteria:**
- All files have complete metadata
- All albums have artwork (embedded + folder.jpg)
**Example Output:**
```
Tagging Complete: Pink Floyd
- Files Tagged: 187/187
- Metadata Sources: MusicBrainz (primary), Discogs (supplementary)
- Artwork: 14 albums (all with embedded + folder.jpg)
- Tagging Log: .aiwg/media/tagging/Pink Floyd-tagging.log
```
**Subphase 4b: Verification**
**Command:** `/verify-archive <collection_path>`
**PRelated in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.