Skip to content

PlayDead: natural-language Grateful Dead jukebox (Claude Code skill) - #1

Open
lzpup wants to merge 2 commits into
claude/archive-gd-deadstream-claude-S9ebQfrom
claude/gd-archive-streaming-BVMqC
Open

PlayDead: natural-language Grateful Dead jukebox (Claude Code skill)#1
lzpup wants to merge 2 commits into
claude/archive-gd-deadstream-claude-S9ebQfrom
claude/gd-archive-streaming-BVMqC

Conversation

@lzpup

@lzpup lzpup commented Jun 8, 2026

Copy link
Copy Markdown
Owner

Replaces the agent-based implementation with a Claude Code skill that streams Grateful Dead tapes from archive.org with natural-language control and local playback.

Approach

Responsibilities are split cleanly:

  • Claude does the language understanding, guided by .claude/skills/playdead/SKILL.md.
  • playdead.py does the deterministic work: search archive.org → rank → stream locally.
You (natural language)
  → Claude reads SKILL.md (NL → command mapping)
  → playdead.py → archive.org (search + best-tape ranking + stream URLs)
  → local audio player (mpv / ffplay / vlc) → 🔊

What's included

.claude/skills/playdead/
  SKILL.md            when to use + natural-language → command mapping
  scripts/
    playdead.py       CLI: search / best / show / play / next / prev / pause / stop / status / queue
    archive.py        archive.org search, "best tape" ranking, playlist building (stdlib only)
    player.py         local playback: mpv via JSON IPC + sequential ffplay/vlc fallback
    state.py          background-playback state under ~/.playdead
    famous_shows.py   nickname → date/venue (cornell, veneta, watkins glen, …)
tests/test_playdead.py  24 offline tests
README.md

Highlights

  • "Best tape" the way a Deadhead picks: soundboards/matrices over audience tapes, then ratings, then popularity.
  • Flexible targets: date (5/8/77), archive.org identifier, nickname (cornell), or free text ("Veneta 1972 soundboard").
  • Background playback persists across CLI calls — play then later next/status/stop share one session (state in ~/.playdead).
  • Two playback backends: mpv (recommended; pause/next/prev/status via JSON IPC) with an ffplay/cvlc fallback.
  • Zero dependencies — Python standard library only.

Testing

  • ✅ 24 offline unit tests pass (date parsing, best-tape ranking, playlist building, nickname resolution, state).
  • ✅ Both playback backends verified end-to-end against fake players, including the mpv JSON IPC client (play, status, pause, next, stop).
  • Not verifiable in the sandbox (network-blocked + no audio): live archive.org calls and real audio output.

Note on history

This branch had unrelated history to the base (a separate agent-driven implementation). A merge -s ours of the base establishes a common ancestor so this can be reviewed as a PR; the resulting diff removes the previous package and adds the skill in its place.

https://claude.ai/code/session_01EMqnkJfNYW2Pxkn6cCuLaK


Generated by Claude Code

Kevin Brewster added 2 commits June 7, 2026 21:05
A Claude Code skill that streams Grateful Dead tapes from archive.org with
natural-language control and local playback.

- SKILL.md maps natural language ('play the Cornell show', 'next song') to
  CLI commands; Claude does the language understanding.
- archive.py: archive.org search + best-tape ranking (soundboards/matrices
  over audience, then ratings and popularity) + playlist building, stdlib-only.
- player.py: local playback via mpv (JSON IPC: play/pause/next/prev/status)
  with a sequential ffplay/vlc fallback (play/next/prev/stop).
- state.py: background-playback state under ~/.playdead so transport commands
  in separate invocations share one session.
- famous_shows.py: nickname -> date/venue lookups (Cornell, Veneta, etc.).
- 24 offline tests for the non-network logic.
…d skill

The default branch held a separate, agent-driven implementation with unrelated
history. This merge (strategy=ours) keeps the skill-based tree as the result
while establishing a common ancestor so the change can be reviewed as a PR.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant