artist-workspace
How to work in artist directories — including creating, enumerating, and editing them. Use when creating or onboarding a new artist ("create artist", "onboard X", "add this artist", "set up a new artist") — this skill scaffolds the artist's `RECOUP.md` checklist file and drives the multi-step setup from it. Use when adding or updating artist context (identity, brand, voice, audience), adding songs, organizing files inside an artist directory, or figuring out where something belongs. Also use when the account asks inventory questions like "what artists do I have", "list my artists", "which orgs am I in", "what's in this sandbox" — the filesystem tree is the authoritative answer. And use when the account mentions an artist by name and the task involves their files, context, or content — even if they don't say "artist directory." This includes tasks like researching an artist, creating content for an artist, updating an artist's brand, or adding a face guide.
NPX Install
npx skill4agent add recoupable/skills artist-workspaceTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Artist Workspace
RECOUP.mdartists/{artist-slug}/orgs/Listing what's in the sandbox
# All artist workspaces in this sandbox
ls -d artists/*/ 2>/dev/null
# Every artist's identity file — read the frontmatter for name/slug/id
find artists -type f -name RECOUP.md 2>/dev/nullRECOUP.mdartistNameartistSlugartistIdheadartists/setup-sandboxCreating a new artist
Step 0: Scaffold the workspace BEFORE any API call
RECOUP.mdARTIST_SLUG=$(echo "$ARTIST_NAME" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]\+/-/g; s/^-//; s/-$//')
ARTIST_DIR="artists/$ARTIST_SLUG"
mkdir -p "$ARTIST_DIR"
cat > "$ARTIST_DIR/RECOUP.md" <<EOF
---
artistName: $ARTIST_NAME
artistSlug: $ARTIST_SLUG
artistId:
spotifyArtistId:
spotifyProfileUrl:
imageUrl:
cmArtistId:
---
# $ARTIST_NAME
## Setup checklist
- [ ] 1. Create the artist (\`POST /api/artists\`) — capture \`account_id\` → \`artistId\`
- [ ] 2. Find canonical Spotify match (\`GET /api/spotify/search\`) — capture \`id\`, \`external_urls.spotify\`, \`images[0].url\`
- [ ] 3. PATCH artist with image + Spotify profile URL
- [ ] 4. Structured research — \`/research/lookup\` (capture \`cmArtistId\`) → \`/research/profile\` + \`/research/career\` + \`/research/playlists\` + \`/research/web\`. Save responses under \`## Research\` in this file.
- [ ] 5. Pull Spotify catalog → write \`releases/{album-slug}/RELEASE.md\` per album + \`releases/top-tracks.md\` (see Releases section)
- [ ] 6. Web search for additional socials (instagram / tiktok / twitter / youtube)
- [ ] 7. PATCH artist with discovered socials
- [ ] 8. Synthesize knowledge base — append it as \`## Knowledge base\` in this file
## Notes
EOFhttps://developers.recoupable.com/workflows/create-artistrecoup-apiAfter every step: tick + persist
RECOUP.md- Tick the checkbox (→
- [ ]) for the step that just ran.- [x] - Write the captured value into frontmatter (,
artistId:,spotifyArtistId:,spotifyProfileUrl:,imageUrl:). Later steps read these values from the frontmatter — never re-derive what's already saved. Larger payloads (research responses, social URLs) belong under their own headed subsection in the body, not in frontmatter.cmArtistId:
Resuming a partial setup
$ARTIST_DIR/RECOUP.md# Show the next unchecked step
grep -n '^- \[ \]' "$ARTIST_DIR/RECOUP.md" | head -1Why the checklist
Entering an Artist Workspace
- Read to confirm you're in an artist workspace and get the artist's name, slug, and ID.
RECOUP.md - Check what exists — the directory to see which files and folders are already there.
ls - Read if it exists — this is the source of truth for who the artist is. Everything you do should be consistent with it.
context/artist.md - Check recent git history for this artist — from the repo root, shows only commits that touched this artist's files. If you're already inside the artist directory, use
git log --oneline -10 -- artists/{artist-slug}/instead. Read the commit messages to understand recent changes before making your own.git log --oneline -10 -- .
Working in an Artist Directory
What Goes Where
{artist-slug}/
├── RECOUP.md # identity — connects workspace to the platform
├── context/
│ ├── artist.md # who they are, how they present, creative constraints
│ ├── audience.md # who listens and what resonates
│ └── images/
│ └── face-guide.png # face reference for visual content generation
├── releases/
│ ├── top-tracks.md # cross-release Spotify top tracks (snapshot)
│ └── {release-slug}/ # one folder per album / EP / single
│ └── RELEASE.md # tracklist + Spotify metadata + cover art URL
└── songs/
└── {song-slug}/
├── {song-slug}.mp3
└── {song-slug}.wavStatic vs Dynamic Context
artist.mdaudience.mdartist.mdArtist Context (context/artist.md
)
context/artist.mdreferences/artist-template.mdreferences/artist-example.mdAudience Context (context/audience.md
)
context/audience.mdreferences/audience-template.mdSongs
songs/{song-slug}/songs/adhd/adhd.mp3 ✓ title becomes "adhd"
songs/adhd/audio.mp3 ✗ title becomes "audio"Releases
releases/{release-slug}/RELEASE.mdlowercase-kebab-case- Album → (no suffix — album is the default)
releases/{title-slug}/ - EP →
releases/{title-slug}-ep/ - Single →
releases/{title-slug}-single/ - Compilation →
releases/{title-slug}-compilation/
releases/after-hours/RELEASE.md # album
releases/adhd-ep/RELEASE.md # EP
releases/blinding-lights-single/RELEASE.mdRELEASE.mdreferences/release-template.md[INTERNAL][SHAREABLE][OPS]✅❌⚠️ TBDN/AWhere Spotify catalog data lands
-
Each album returned by→
GET /api/spotify/artist/albumsscaffolded fromreleases/{release-slug}/RELEASE.md. Step 5 fills the Spotify-derivable fields (Section 1: artist name, project title, release date, format; Section 2.1: Spotify URI; Section 2.2: per-track title + duration + explicit; Section 2.3: cross-reference localreferences/release-template.md; Section 18: cover art URL) and leaves everything else assongs/. ISRC, UPC, writers/producers, label, distributor, and all marketing/PR/budget sections aren't in the public Spotify response — they stay TBD until the user provides them. See⚠️ TBDfor the full mapping.references/release-template.md -
→
GET /api/spotify/artist/topTracks(cross-release snapshot — these aren't a release themselves but live here because it's all Spotify catalog data and pinning it next to releases keeps the catalog in one place). Inline structure:releases/top-tracks.mdmarkdown--- title: Top Tracks source: spotify snapshotDate: {YYYY-MM-DD} --- # Top Tracks | # | Track | Album | Duration | |---|-------|-------|----------| | 1 | {name} | {album-slug or external} | {mm:ss} |
Organizing Other Files
songs/context/Naming Conventions
- Directories and slugs:
lowercase-kebab-case - Song files:
songs/{song-slug}/{song-slug}.mp3
Tracking Changes
artist: update aesthetic — shifting from bedroom to lo-fi studio (user direction)
songs: add 5 tracks from ADHD EP with lyrics and clips
research: competitive analysis for Q2 release planning
release: update ADHD EP — distributor confirmed as SpaceHeater
context: refine audience — adding Gen Alpha psychographics from fan survey
archive: move pre-release strategy docs from ADHD EP cycle{what}: {why}Why This Structure
{placeholder}