Using Claude Code to revive abandoned personal projects: a practical walkthrough

Matthew Brunelle writes about using AI coding assistance tools (specifically Claude Code with Opus 4.6) to revive personal projects that have been abandoned. His project: a shim between YouTube Music and the OpenSubsonic API that allows any Subsonic-compatible client (Navidrome, Feishin, Symfonium) to stream music from YouTube Music. The project originally stalled because of the long tail of endpoints to implement.
Setup
Brunelle created a uv project with fastapi, pydantic, ytmusicapi, and yt-dlp as dependencies. He dropped the OpenSubsonic OpenAPI spec in the folder, added a brief README, an empty TODO file, and generated a CLAUDE.md via /init. He also added conventions to CLAUDE.md:
## Conventions
- Methods should have type annotations for args and returns as well as docstrings.
- Use Pydantic for data modeling. Use modern Pydantic V2 conventions.
- Doc strings should use the Google style format with an args and returns sections.
- Write unit tests with modern pytest style, eg top level methods using `assert` and fixtures.
Workflow
Brunelle's typical workflow:
- Enter plan mode. Prompt for the next piece of work.
- After getting the initial plan, look for gaps / problems and ask follow‑up questions until satisfied.
- Provide links to resources when Claude is off.
- Ask Claude to use the search tool for idiomatic approaches.
- Use "Accept and clear context". Repeat.
Initial implementation
First prompt: Have a look at the openapi.json file. This is a spec for the opensubsonic api. Implement an async fastapi server that stubs out all of the methods. You only need to handle the newer json endpoints.
After implementing stubs, he double‑checked correctness with a follow‑up prompt. Even with a spec, Claude made mistakes the first time but caught them on the second pass. He also re‑ran /init to update CLAUDE.md.
Next major prompt
The methods for all endpoints are stubbed out now. I want to connect a subsonic client, search for a song, and stream it to the client. What is the minimum amount of functionality needed to implement that? Use ytmusicapi for searching YouTube music and yt-dlp for streaming.
Brunelle reports that the initial streaming implementation looked reasonable but failed when connecting with Feishin. The article cuts off before detailing the fix, but the full post contains the resolution.
Brunelle notes that abandoned projects are ideal candidates for testing AI coding assistance: “they were never going to get done anyway.” He plans to follow up with a post on OpenCode.
📖 Read the full source: HN AI Agents
👀 See Also

Infracost cuts Claude token usage 79% by redesigning CLI for AI agents
Infracost redesigned its CLI for AI agent callers, cutting Claude output tokens by 79% and API cost by 67% vs a bare-Claude baseline. Key moves: predicate pushdown into the CLI and a token-efficient output format.

RalphTerm: ralph-style loop for Claude Code with cross-review sessions from different agents
RalphTerm is an open-source Rust CLI that runs a ralph-style outer loop around Claude Code: it takes a markdown plan, executes tasks in fresh interactive sessions, and runs cross-review with a different model (e.g., Codex) in separate fresh sessions, feeding issues back into new implementer sessions.

Definable AI adds self-hosted observability dashboard with single flag
Definable AI, an open-source Python framework for building AI agents, now includes a built-in observability dashboard that can be enabled with one flag. The dashboard provides real-time event streaming, token accounting, latency metrics, and run replay without external dependencies.

Kontext CLI: Credential Broker for AI Coding Agents
Kontext CLI is a Go-based credential broker that provides AI coding agents with short-lived access tokens instead of long-lived API keys. It uses RFC 8693 token exchange, streams audit logs for every tool call, and works with Claude Code today.