jordanpartridge/conduit-spotify
A Laravel package that connects your application to the Spotify Web API through Conduit, providing a clean, consistent interface for authentication and Spotify data access.
--format=json plus --non-interactive turns each Spotify command into a machine-callable tool with a predictable envelope (timestamp, command, success, data). This is the difference between "a CLI a human types" and "a capability an LLM or workflow engine can invoke." Any roadmap item involving an assistant that controls playback now has a viable substrate without new service code.spotify:current returning track, playback.progress_ms, and device in one call makes polling cheap and avoids N+1 API calls in our own code.HandlesSpotifyOutput trait is evidence Conduit is converging on a house CLI style (--format, --non-interactive, smart mode detection). If we own or plan to own other command packages, the PM decision is whether to adopt this pattern org-wide now — cheaper than retrofitting JSON output command-by-command later.current, play, pause). If the product story is "assistant controls music," expect next asks for search, queue, playlists, and device transfer — plan for those as incoming requirements rather than surprises.Adopt when:
--format=json.Look elsewhere or defer when:
schema_version field — treat it as unstable until that exists.interactive remains the default format, so every scripted call must pass both --format=json and --non-interactive explicitly; anything that forgets can block on a prompt. Validate "smart mode detection" in a non-TTY context before relying on it.Open questions worth resolving before deep investment:
schema_version field — cheap now, painful later.data.track.artist appears singular; confirm how multi-artist tracks, podcasts, and ad/local playback are represented before building UI on it.To executives: A low-risk, no-migration upgrade to an existing internal Spotify CLI that converts it from a human-only tool into an automatable one. Every command can now emit structured JSON and run without prompts, which is the prerequisite for agent/AI integration. Zero breaking changes, existing workflows untouched, small engineering surface. The strategic value is optionality: it unlocks assistant-driven and automated music control without new services, and it establishes a reusable CLI convention we can apply to other tooling.
To engineering: Purely additive release — new --format=json|interactive and --non-interactive flags, a HandlesSpotifyOutput trait for consistent envelopes and error handling, and standardized exit codes across spotify:current, spotify:play, and spotify:pause. Backward compatible; 13/13 tests pass; Pint-formatted. Two asks before we build on it: (1) confirm non-TTY mode detection actually bypasses prompts, since interactive is still the default; (2) we wrap the output in a thin adapter rather than consuming its field names directly, so schema drift doesn't leak into our features. Also flag the narrow command surface — assume new commands will be requested.
How can I help you explore Laravel packages today?