agentic/code/frameworks/media-curator/skills/analyze-artist/SKILL.md
Analyze an artist's discography to identify eras, catalog structure, and collection plan
npx skillsauth add jmagly/aiwg analyze-artistInstall 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.
The /analyze-artist command performs comprehensive discography research for a musical artist, producing a structured YAML profile that identifies creative eras, recommends catalog organization, and guides collection development. This command is the entry point for the Media Curator framework's artist-centric workflow.
<artist_name>
"Twenty One Pilots", "Radiohead", "Kendrick Lamar"--scope <scope_type>
completecomplete - Full discography across all erasera:<era_name> - Focus on specific creative period (e.g., era:Blurryface)style:<style_name> - Focus on releases matching style tag (e.g., style:acoustic)--depth <depth_level>
thoroughquick - MusicBrainz canonical releases only, basic era detection (2-5 min)moderate - MusicBrainz + Discogs cross-reference, standard era analysis (5-15 min)thorough - Full multi-source research, narrative analysis, gap identification (15-45 min)--output <file_path>
.aiwg/media-curator/profiles/<artist-slug>.yaml--output ~/music/analysis/radiohead.yaml--format <format_type>
yamlyaml - Structured YAML profile (default, machine-readable)markdown - Human-readable Markdown report with embedded YAMLjson - JSON format for programmatic integration--include-unofficial
false (official releases only)unofficial section to YAML output--interactive
false (automated analysis)Example Query:
curl "https://musicbrainz.org/ws/2/artist/?query=artist:Twenty%20One%20Pilots&fmt=json"
--include-unofficial)Data Points Collected:
Detection Signals (see @$AIWG_ROOT/agentic/code/frameworks/media-curator/agents/discography-analyst.md for complete signal taxonomy):
artist:
name: "Artist Name"
mbid: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
discogs_id: "123456"
active_years: "YYYY-YYYY"
genres:
- "Primary Genre"
- "Secondary Genre"
analysis_metadata:
generated: "YYYY-MM-DD HH:MM:SS"
depth: "thorough"
scope: "complete"
sources:
- "MusicBrainz"
- "Discogs"
- "Wikipedia"
- "AllMusic"
eras:
- name: "Era Name"
period: "YYYY-YYYY"
description: |
Multi-line narrative description of the creative period,
including key characteristics, influences, and significance.
key_characteristics:
- "Musical trait or innovation"
- "Thematic or lyrical focus"
- "Production or collaboration pattern"
boundary_markers:
start: "Event or release marking era beginning"
end: "Event or release marking era conclusion"
releases:
- title: "Release Title"
year: YYYY
type: "studio" | "live" | "compilation" | "ep" | "single"
mbid: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
discogs_id: "123456"
label: "Label Name"
significance: "Major album" | "Transitional work" | "Definitive statement" | "Minor release"
tracks: 12
duration: "45:30"
special_collections:
- name: "Collection Name"
type: "narrative_arc" | "acoustic_sessions" | "live_recordings" | "remixes" | "demos" | "collaborations"
description: |
Purpose and scope of the special collection,
including curatorial rationale.
releases:
- "Release Title (Year)"
recommended_location: "catalog/special/collection-slug/"
curation_notes: |
Additional context for organizing this collection,
such as playback order or thematic grouping.
collaborations:
- artist: "Collaborator Name"
mbid: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
releases:
- title: "Release Title"
year: YYYY
nature: "featuring" | "production" | "side_project" | "remix" | "tribute"
related_content:
- type: "solo_projects"
description: "Band member solo work or side projects"
items:
- name: "Project Name"
artist: "Artist Name"
mbid: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
- type: "affiliated_artists"
description: "Frequent collaborators or label mates"
items:
- name: "Artist Name"
mbid: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
catalog_structure:
recommended_hierarchy: |
artist-name/
01-early-era/
YYYY-release-title/
02-breakthrough-era/
YYYY-release-title/
03-mature-era/
YYYY-release-title/
special/
narrative-projects/
trilogy-name/
part-1/
part-2/
part-3/
acoustic-sessions/
live-recordings/
collaborations/
artist-name/
unofficial/
demos/
bootlegs/
organization_principles:
- "Primary hierarchy: chronological eras"
- "Secondary hierarchy: release type and significance"
- "Special collections isolated for thematic coherence"
- "Unofficial material clearly segregated"
- "Directory names: YYYY-kebab-case-title"
implementation_notes: |
Specific guidance for applying the catalog structure,
including edge cases and naming conventions.
gaps:
- description: "Missing release or material"
release_title: "Release Title"
year: YYYY
type: "studio" | "live" | "compilation" | "ep" | "single"
priority: "essential" | "recommended" | "optional"
availability: "in-print" | "out-of-print" | "digital-only" | "unreleased"
acquisition_notes: |
Guidance on obtaining this release, such as
reissue availability, streaming platforms, or secondary market.
summary:
total_releases: 42
eras_identified: 5
special_collections: 3
gaps_essential: 2
gaps_recommended: 5
gaps_optional: 8
collection_completion: "85%"
recommendations:
next_steps:
- "Acquire essential gaps: Release A, Release B"
- "Organize existing collection into era-based directory structure"
- "Research bootlegs for Era Name to assess quality and historical value"
curatorial_focus:
- "DEMA narrative arc is core to artist identity - prioritize complete trilogy"
- "Early regional material has high fan value but limited commercial availability"
When --format markdown is specified:
# Artist Name - Discography Analysis
**Generated**: YYYY-MM-DD HH:MM:SS
**Scope**: Complete discography
**Depth**: Thorough research
## Artist Overview
- **Active Years**: YYYY-YYYY
- **Genres**: Genre A, Genre B, Genre C
- **MusicBrainz ID**: `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`
- **Discogs ID**: `123456`
## Creative Eras
### Era Name (YYYY-YYYY)
Multi-line narrative description...
**Key Characteristics**:
- Characteristic 1
- Characteristic 2
**Releases**:
1. **Release Title** (YYYY) - studio - Significance note
2. **Release Title** (YYYY) - ep - Significance note
---
### Era Name (YYYY-YYYY)
...
## Special Collections
### Collection Name
**Type**: narrative_arc
**Description**: Purpose and scope...
**Releases**:
- Release Title (YYYY)
- Release Title (YYYY)
**Recommended Location**: `catalog/special/collection-slug/`
---
## Catalog Structure
artist-name/ 01-early-era/ 02-breakthrough-era/ ...
**Organization Principles**:
- Chronological eras
- Special collections isolated
- Unofficial material segregated
## Collection Gaps
### Essential
1. **Release Title** (YYYY) - Out of print - Acquisition notes...
### Recommended
1. **Release Title** (YYYY) - Digital only - Acquisition notes...
## Summary
- **Total Releases**: 42
- **Eras Identified**: 5
- **Collection Completion**: 85%
## Next Steps
1. Acquire essential gaps: Release A, Release B
2. Organize existing collection into era-based structure
3. Research bootlegs for quality assessment
---
## YAML Profile
```yaml
artist:
name: "Artist Name"
...
(Full YAML embedded at end of Markdown report)
## Examples
### Example 1: Basic Complete Analysis
```bash
/analyze-artist "Radiohead"
Output: Thorough analysis of Radiohead's complete discography with eras (Pablo Honey, The Bends, OK Computer era, Kid A/Amnesiac era, In Rainbows era, etc.), special collections (In Rainbows/King of Limbs narrative arc), and catalog structure.
Saved to: .aiwg/media-curator/profiles/radiohead.yaml
/analyze-artist "Kendrick Lamar" --scope era:DAMN --depth quick
Output: Rapid analysis focusing only on the DAMN era (2017), including the album, related singles, and immediate context. Minimal external research beyond MusicBrainz canonical data.
Saved to: .aiwg/media-curator/profiles/kendrick-lamar-damn-era.yaml
/analyze-artist "Nirvana" --include-unofficial --depth thorough
Output: Complete Nirvana discography including official studio albums (Bleach, Nevermind, In Utero), live albums, compilations, AND bootlegs, demos, radio sessions. Unofficial material segregated in YAML output.
Saved to: .aiwg/media-curator/profiles/nirvana.yaml
/analyze-artist "Pink Floyd" --format markdown --output ~/Documents/pink-floyd-analysis.md
Output: Human-readable Markdown report with embedded YAML, saved to specified location outside AIWG default directory.
Saved to: ~/Documents/pink-floyd-analysis.md
/analyze-artist "The Beatles" --interactive
Output: Standard analysis with interactive prompts at ambiguous era transitions:
Era boundary detected: 1965-1966
Possible interpretations:
1. "Rubber Soul / Revolver" as single psychedelic transition era
2. "Rubber Soul" as final pop era, "Revolver" as first experimental era
3. Combined "Mid-Period Beatles" (1965-1967) including Sgt. Pepper's
Enter selection (1-3) or provide custom era name:
User input guides final era structure in YAML output.
/analyze-artist "Bon Iver" --scope style:acoustic --depth moderate
Output: Analysis focusing only on acoustic or folk-oriented releases, filtering out electronic experiments like "22, A Million". Useful for genre-specific collection curation.
Saved to: .aiwg/media-curator/profiles/bon-iver-acoustic.yaml
The /analyze-artist command outputs YAML that feeds downstream Media Curator agents and commands:
/plan-collection): Uses gap analysis and priority rankings to build acquisition roadmap/enrich-metadata): Applies MBIDs, Discogs IDs, and era tags to existing music files/assess-quality): Prioritizes high-significance releases for quality upgrades (lossless, remaster, vinyl rip)/organize-catalog): Implements recommended directory hierarchy, moves files into era-based structure/queue-listening): Creates chronological or thematic playlists based on era structureWhen the Discography Analyst agent is active, /analyze-artist can be invoked implicitly through natural language:
User: "Analyze Twenty One Pilots discography"
Agent Response: Executes /analyze-artist "Twenty One Pilots" --depth thorough and returns YAML profile with summary.
User: "Focus on the DEMA era"
Agent Response: Executes /analyze-artist "Twenty One Pilots" --scope era:DEMA and provides detailed breakdown of Blurryface/Trench/Clancy trilogy.
Error: No artist found matching "Artst Name"
Did you mean:
1. Artist Name (MBID: xxxxxxxx...)
2. Artist Name Jr. (MBID: yyyyyyyy...)
Enter selection (1-2) or refine search:
Multiple artists found for "John Williams":
1. John Williams (film composer) - MBID: xxxxxxxx...
2. John Williams (classical guitarist) - MBID: yyyyyyyy...
3. John Williams (jazz pianist) - MBID: zzzzzzzz...
Enter selection (1-3):
Error: MusicBrainz API unavailable (HTTP 503)
Retry options:
1. Retry immediately
2. Retry after 60 seconds
3. Skip MusicBrainz, use Discogs only (degraded analysis)
4. Abort command
Enter selection (1-4):
Warning: Artist has only 2 studio albums, insufficient for era detection.
Analysis will use simplified structure:
- Complete Works (YYYY-YYYY)
Proceed? (y/n):
| Depth Level | Data Sources | Avg Time | Output Size | |-------------|--------------|----------|-------------| | Quick | MusicBrainz only | 2-5 min | 5-15 KB | | Moderate | MusicBrainz + Discogs | 5-15 min | 15-40 KB | | Thorough | MusicBrainz + Discogs + Wikipedia + AllMusic | 15-45 min | 40-150 KB |
Factors affecting duration:
Part of the AIWG Media Curator Framework Command category: media-curator Model: sonnet (Claude Sonnet 4.5)
data-ai
Report which research-corpus radar sidecars are overdue for refresh. Computes staleness (days since last refresh vs the cadence window) for every radar, sorted most-overdue-first. Runs via `aiwg corpus radar-status`.
data-ai
Aggregate research-corpus radar sidecars into a corpus or per-cluster freshness report — totals, overdue count, per-cluster / per-GRADE / per-trajectory breakdowns, an overdue table, and per-radar rationale snippets. Runs via `aiwg corpus radar-report`.
testing
Scaffold radar/freshness sidecars for research-corpus REFs. Pulls title/authors from the citation sidecar and GRADE from the analysis doc, defaults the refresh cadence from GRADE and the cluster from a corpus-local map, and stamps documentation/radar/REF-XXX-radar.md. Runs via `aiwg corpus radar-init`.
data-ai
Compute an entity's publication trajectory — per-year paper counts, topic drift, hot-streak detection (≥3 consecutive A-grade years), and career phase. Runs via `aiwg corpus profile-temporal`.