Skip to content

focustimer-dev/hipster-music-generator

v3.4.0MIT

An insufferably smug music curator. Spotify is the default; setup checks your host and supports YouTube Music or other explicit alternatives. Go sad, weird, fast or chill.

An open-source Agent Skill for discovering real, unlikely, surprisingly coherent music across eras, textures, geographic scenes and microgenres. Delivered by an extravagantly self-important, passive-aggressive record-store clerk who considers your listening habits a public infrastructure problem.

Start here — load, setup, go

Try the easy way first. Many agents can read a skill straight from GitHub. No folder archaeology required unless your particular host insists on it.

1. Load the skill. Copy this prompt into your AI assistant. On GitHub, use the Copy icon at the top-right of the code block.

Load Hipster Music Generator from GitHub:
focustimer-dev/hipster-music-generator

Read SKILL.md and linked references.
Use my platform's supported loading method.
Confirm what loaded and if it persists.

Using Claude? Copy this prompt instead

Claude's Plugin and Skill uploaders need different ZIP files. Use this prompt rather than the universal one:

Load Hipster Music Generator from GitHub:
focustimer-dev/hipster-music-generator

Read SKILL.md and linked references.
Try a supported persistent install.
Before suggesting a ZIP, identify my
Claude upload screen.
Plugins: use the Claude Plugin ZIP.
Skills: use the Claude Skill ZIP.
Do not interchange these two files.
If the screen is unknown, ask me once.
Confirm what loaded and if it persists.

Claude ZIP note: The Plugins uploader needs .claude-plugin/plugin.json at the archive root; the Skills uploader needs hipster-music-generator/SKILL.md. Never interchange the two archives. See the Claude installation guide for the correct downloads.

2. Run setup in the loaded skill. Spotify is now the default listening and publishing preference: the skill checks whether Spotify can actually write playlists in your current AI platform, then shows the defaults without a service-selection interview. If your platform cannot publish to Spotify—or you simply prefer another service—use setup change YouTube Music (on Gemini) or another explicit service change. Run setup again whenever you want to change your preferences or refresh current music-service capabilities; setup status shows what is known.

setup

3. Make some music. Once setup says you're ready:

go

By default, go curates 12 real tracks and attempts to publish to your chosen streaming service if a genuine authorized playlist writer is accessible. If publishing isn't available, it returns the music and clearly says it wasn't saved. Setup is recommended, not mandatory: go works without it.

Portability note: Not every host can install directly from a GitHub URL or remember preferences across chats. Setup should tell you when your choices are session-only and offer a reusable profile. It cannot connect an account or unlock an unavailable publisher by itself. Manual installation options are below.

Everyday commands

Playlists & modifiers

Modifiers shape the sound, not just a genre label. Combine moods, speeds and track counts freely:

SayMusical direction
go12-track sonic surprise; attempt to publish
go weirdStranger, still musically defensible connections
go fast angryRhythmic propulsion with bite
go chillWarm, easy listening—not necessarily slow
go sadMelancholy and yearning without compulsory ballads
go sad fastCathartic music with some forward momentum
go weird slowPatient, hypnotic strangeness
go short / go long6 / 24 tracks
go fast 3030 tracks with the requested energy
go, text onlyCurate without attempting a streaming write
less snarkReduce the curator's entirely unearned superiority

An explicit count overrides the ordinary length default; 50 tracks is a soft quality target, not a platform limit. If the host returns fewer than requested, it should disclose the difference rather than quietly congratulating itself.

Or go beyond the shorthand:

Give me twelve real tracks connecting Thai molam and Italian library funk.
Make the transitions musically defensible, not just geographically surprising.

Setup & preferences

SayWhat happens
setupDefault to Spotify, check actual writer availability, and set defaults without an interview
setup statusReview known preferences and available service capabilities
setup change YouTube MusicExplicitly change the publishing preference (particularly useful on Gemini)
setup change SpotifyRestore Spotify as the preferred publishing service
setup change 24 tracksChange the default playlist length
setup againRefresh service discovery while retaining existing choices

Setup does not generate a playlist. It won't store your preferences outside the current session unless the host genuinely supports user-approved persistence. Spotify is the default preference, not a guaranteed publisher: Gemini's Spotify media connection is documented for search/play, not playlist creation, so Gemini users can opt into setup change YouTube Music. Choosing a service is not the same as confirming that its playlist-writing tool is accessible.

What you're installing

  • Sonic-first discovery. Era + audible texture/production + geographic scene + microgenre. The expanded research map now explores Lao/Saigon archives, qawwali, Indigenous rock, Memphis rap/sigilkore, Indonesian punk, non-English psychedelia and nonbinary country—without quotas or stereotypes. Being obscure on the same continent is not a musical bridge.
  • Real songs. Verify artist, recording, version and catalog availability instead of inventing remarkably convenient B-sides.
  • Actual sequencing. An intentional listening arc and a concrete musical reason for each track.
  • Honest publishing. A connected account is not necessarily an exposed playlist-writing tool; the skill distinguishes curation from provider-confirmed saving.
  • An insufferable curator. Snark, passive aggression and extravagantly unearned confidence—with evidence-based music research underneath. Even this clerk knows not to mock someone who is genuinely hurting. Say less snark if you insist.

Our needlessly particular manifesto — for the discerning listener

  • Obscurity is not a personality. It is, however, an extremely convenient substitute for one.
  • A sonic connection must be real. We refuse to pair tracks just because both were discovered in a converted warehouse.
  • There is no shame in a shiny chorus. A gloriously overproduced 1980s pop-soul selection may be the most convincing curveball.
  • We verify the music. Your favorite Bulgarian synth-funk B-side ought to exist before we make you feel inferior for not knowing it.
  • No gatekeeping at the door. Just an imaginary bouncer who insists your handlebars are insufficiently mustachioed.

Installation when the easy way needs help

Start with the three steps above: load → setup → go. Use host-specific installation or manual file placement only when the agent cannot load and retain the skill directly. After any manual install, run setup before your first go. Music-account authorization remains separate.

ChatGPT — plugin setup and Work

If ordinary GitHub loading doesn't persist, use Plugin Creator to build/install the existing plugin manifest and packaged skill. Run setup (or the dedicated setup skill) to choose music-service preferences and inspect genuinely exposed connected music services. Project instructions are a fallback without plugin support.

Observed: ChatGPT Work has published to Spotify from a single go; ordinary Chat on Android required selecting Hipster Music Generator and Spotify together. Neither behavior is a universal guarantee. The detailed runtime notes are collapsed under Field reports below.

Gemini — direct GitHub loading and native skill upload

A user successfully asked Gemini to load this GitHub skill and then invoked YouTube Music to generate a playlist. The observation doesn't establish a persistent GitHub-based install across chats.

If the agent cannot load or retain it, download the ready-to-upload Gemini Skill ZIP and use Gemini web → Customize → Skills → Create → Upload. No terminal or file-building step needed. Maintainers can still generate the ZIP with python scripts/build_agent_packages.py --zip. Uploaded skills don't auto-sync from GitHub. See the Gemini guide and Android test cases. Gemini CLI is a separate installation path.

Claude — ready-to-upload skill, native Spotify connector, or Claude Code plugin

Start with the GitHub-link prompt. On Claude's Skills upload screen, use the Claude Skill ZIP. On Claude's Plugins upload screen, use the Claude Plugin ZIP instead: the skill-only ZIP fails plugin validation because it lacks .claude-plugin/plugin.json. These are different uploaders. Custom Skills may require code execution enabled. Separately add Spotify to Claude if you want it to publish playlists; Spotify Premium is advertised for personalized playlist creation. Then setup → go.

Claude's Spotify connector requires Premium for personalized prompt-generated playlists; that does not prove it can insert 25 exact duplicates. Generated cards or previews are not saved playlists unless the service/library confirms persistence. If Spotify refuses a later operation but playlists were already created, reconcile the existing playlists, songs, order and description before claiming a total failure. A later denial does not prove 0 saved, and another playlist must not be created automatically. Claude's Premium-denial troubleshooting. Claude's commentary should use vivid playlist titles, a short snarky proposed description and track-specific liner notes; if it's generic, follow the Claude writing-quality troubleshooting guide. Claude Code users can install the existing GitHub marketplace plugin. These are different environments: having Spotify connected in Claude chat does not by itself expose Spotify tools to Claude Code. Full Claude instructions · optional Claude Plugin ZIP. There is no end-to-end live Claude account test yet.

Meta Muse — official Spotify support; skill installation requires verification

Muse personal agent already connects to Spotify for discovery, playback, and playlist creation. Try the GitHub-link prompt, run setup, and ask Muse whether it can retain the workflow; don't assume a consumer Muse custom-skill ZIP installer exists. Meta's developer Muse Code has a documented SKILL.md installer, but it is a different product.

See the Muse-specific GitHub-first prompt and setup guide. A working consumer Spotify connector does not confirm exact recording order or persistent installation of our skill.

Other agents — manual fallback

Ask the agent to load this repository first. If it truly requires filesystem placement, follow the generic Agent Skills guide and keep SKILL.md alongside all its referenced files.

Streaming services and permissions

Curation doesn't require a streaming account. Playlist publication requires an exposed, authorized write-capable service connection. The repository contains plans and integration contracts, not bundled Spotify/YouTube/Apple OAuth credentials or deployed publishers.

See the adapter contract and provider notes for Spotify, YouTube Music and Apple Music. A search result, account link or generated URL alone is not evidence of successful publication.

The back room

For anyone who reads the liner notes, the iteration history and platform observations are still here. They simply no longer interrupt the first listen.

Field reports & compatibility notes

These are listener-reported tests from October 16–17, 2026, not guaranteed capabilities on every account. Short entries keep this table easier to scan on mobile.

AI + serviceObservedNot yet verified
ChatGPT Work → Spotifygo created a playlistExact versions/order; one run had 6 rather than 12 tracks
ChatGPT → SpotifySelecting both apps saved 12 tracksSkill-only writer routing (issue #1); exact versions/order
Gemini → YouTube MusicSix-track playlist generatedSave to library and exact versions/order; 12-track routing needs retest
Claude → SpotifyTwo previews; generated but not savedPremium requirement encountered; exact duplicates and descriptions
Meta Muse → SpotifyPlaylist created (listener report)Exact versions/order; persistent skill loading

Claude detail: Neither persisted in Spotify; zero saved playlists were confirmed in that test. A later attempt returned a Premium-required error. The listener's actual subscription tier was not independently verified. See Claude guidance.

Gemini detail: A separate twelve-track curation gave an incorrect ChatGPT-style composer instruction. That guidance was corrected but has not been retested. See Gemini guidance.

Muse detail: The listener tested the consumer Meta Muse agent, not Muse Code. See Muse guidance.

Platform notes, not additional field tests: Spotify's Claude announcement describes discovery for Free and Premium listeners but prompt-tailored playlists for Premium; Spotify's Muse announcement documents playlist creation. Google's Spotify media-app guidance covers search/play, not playlist creation, while its YouTube Music guidance supports generating playlists and may require tapping Save to library. These differences explain why Spotify is the default preference, but Gemini users may need setup change YouTube Music to publish.

Evidence rule: An on-screen playlist, a saved provider playlist, and an exact recording-by-recording match are three different outcomes. Don't claim a saved playlist or exact ordering without confirmation.

The personal plugin has also sometimes displayed a generic icon despite packaged branding assets; see issue #2. That is a UI concern, not evidence about playlist publication.

Iterative improvements & release notes

See the full changelog for dates and version-specific detail. The major lines of work are:

  • First-run preferences: conversational setup, revisitable provider choices, and honest session-only versus persistent settings.
  • Claude and Meta Muse: platform-specific onboarding, native Spotify connector guidance and conservative cross-conversation skill persistence claims.
  • Musical discovery: wider scene taxonomy, track-level sonic bridges, authentic recordings and feedback-driven adjustments.
  • Publishing handoff: one-command intent, capability preflight and faithful recovery of already-curated lists.
  • Flexible prompts: composable go mood/speed modifiers and explicit track counts.
  • Quality control: request-versus-result counts, version matching and honest uncertain or missing track reports.
  • Identity: the insufferably smug record-shop persona and crimson-star branding.

Implemented instructions aren't the same as demonstrated cross-host publishing or proven musical improvement. Open issues and unresolved experiments remain in GitHub issues.

Repository files, validation & developer setup

FilePurpose
SKILL.mdCanonical music-curation skill
skills/setup/SKILL.mdService discovery and revisitable listener setup
references/global-scenes.mdScene and geography research
references/sonic-taxonomy.mdAudible production and era map
references/verification.mdRecording versus streaming versus saved-playlist evidence
schemas/playlist.schema.jsonPortable JSON playlist schema
scripts/playlist_cli.pyOffline validation, randomness and example generation
adapters/Host and streaming guides
assets/Brand assets and icon guide

For maintainers with Python 3.10+:

python scripts/build_agent_packages.py --check
python scripts/build_chatgpt_bundle.py --check
python scripts/playlist_cli.py validate examples/example-playlist.json
python -m unittest discover -s tests -v

Use python scripts/build_agent_packages.py --zip to generate upload bundles. Offline tests validate package structure and local contracts, not actual Spotify/YouTube Music writes.

License & contributions

MIT licensed. Contributions are welcome: open an issue with the prompt, exact recording titles, and what succeeded or regressed. Never upload copyrighted recordings or streaming-service credentials. See AGENTS.md and CHANGELOG.md.

You're welcome. We understand it's difficult to express gratitude when you aren't accustomed to hearing good music.