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

Real-time stock analysis added to Claude Desktop via MCP server
A developer built an MCP server called agent-toolbelt that adds real-time stock analysis capabilities to Claude Desktop and Claude Code, providing live data for investment analysis instead of Claude's training data guesses.

Extracting OpenClaw Components: A Developer's Experience with Lane Queue and Memory System
A developer attempted to extract specific components from OpenClaw for use in personal AI agents, testing the Lane Queue task execution system and examining the memsearch memory system. The Lane Queue was successfully reimplemented in Python using documentation, revealing gaps in documentation and 13 implementation issues.

Claude Code Plugin /verify: Automated Browser Testing from Your Plan
/verify is an open-source Claude Code plugin that reads your plan, spins up a real browser via Playwright MCP, checks each requirement, and gives you a pass/fail report with screenshots.
AIttache: A Read-Only MCP Server That Can't Nuke Your Prod
AIttache is an MCP server with 25+ read-only connectors (terminal, servers, weather, Steam) that physically cannot modify anything — built to give LLMs log context without autonomy.