Say Your Name, and Tell Us Something about Yourself

Beginning with a naive approach to Claude Code.

Series: Santa Claude
Tags: Agentic AI, Claude Sonnet 4, Claude Code
-
Wednesday, July 30, 2025 2:28 PM
Last Updated: Monday, August 4, 2025 11:58 PM

This post is part of a series. Follow along with the development progress here: moodring-vibe repository. More to come!

Please note that this is not a tutorial. This is a documented first-time experience with a fully-enabled AI agent. Do not take this as professional advice. Always protect your data, use version control, and refer to documentation if you decide to follow any of these steps yourself.

In my first post in this series, I philosophized at myself. Now it's time to take action, but we want to have a little conversation first.

From here on out, prepare for an onslaught of screenshots. I'll be showing you nearly step-by-step how I work through this process as someone with no prior experience with a fully-enabled agent. But don't worry—I'll have plenty of opportunity to elaborate about topics that come up along the way.

Surveying the tools

I directed my initial questions to Claude desktop.

So it sounds like Claude Code is our best bet. We want our IDE. We want full access to the code Claude writes, and the ability to modify it. What can Claude desktop do?

Well, can Claude Code do it?

At first glance, this is pretty laughable. How does Claude not know what Claude Code can do? I was beginning to think I wasn't going to get far. But let's carry on and switch to the tool we set out to use.

[Note: Claude desktop doesn't have the capabilities that Claude Code does—by default. But you can add Claude Code as an MCP server.]

Setting up

The Claude Code installation is simple. Search for the extension in the VS Code extensions pane and install it. Install the package per the documentation. Then just type claude in your terminal.

Is this agent more helpful?

From this point forward, although it doesn't stand out, my prompt will usually be at the top of the image.

Claude Code shows you the actions it takes in your system, including searching for existing databases. Can it do things outside of our system?

That's promising. But we don't want to make changes without a plan.

We can work with that. We should also make sure we can control Claude's behavior.

Claude asks for permission to search its documentation for the answer. This sheds more light on the lack of information Claude Desktop had about Claude Code earlier. We'll learn more about what Claude Desktop can to with the help of MCP servers later on.

You're either going to love the quirky loading indicator, or you're going to hate it.

We'll do some research later regarding hooks and their capabilities.

We can also create limits for Claude's write access to files. But are we sure we're using the right agent? Claude Opus is much more expensive than Claude Sonnet, and for good reason.

That advice aligns with the way I want to work. Let's give Claude an overview of what we're setting out to do.

You know, I'm something of an inventor myself

Here's the prompt I submitted to Claude. A general overview of what I would like the app to accomplish and how it should be built:

Can you help me write a set of instructions for you in order to develop the following application? Do not perform any actions yet besides looking at documentation.

Moodring is a multi-platform app that integrates with Spotify to provide a new way to organize your music: robust tags.

## Usage
- Users can use the Share option in Spotify to send the song or playlist they're currently listening to Moodring.
- They can then assign any number of tags to the song.
- Tags are hierarchical and can have parents/children.
- From Moodring, the user can then combine tags to create their own playlist. For example, the user can choose songs that they have tagged with [upbeat] + [party] + [hip-hop] but exclude any songs that they have tagged [crunk] or [explicit].
- This playlist will then be saved to the user's Spotify account.
- The same operation can be performed with entire playlists, so playlists can be created and then combined based their own tags.

## Requirements
- When we are done, this app will be ready to deploy on the Apple and Google Play app stores, and it will carry the same UI feel on web and tablet as well.
- The database should be PostgreSQL. We should have a local development database as well as Terraform files to deploy database and server infrastructure to Google Cloud Platform.
- The back end should be written in Rust, using Rocket for the API.
- The back end will need to interact with the Spotify API to load the user’s existing data such as their profile picture, recently listened songs, favorites, and playlists, as well as writing new playlists to their profile when Moodring creates them.
- The front end should be written using Expo Go, React Native, Typescript, and TailwindCSS. The UI should have a light and dark mode and have a simple 90’s retro style colorful interface. Think Trapper Keepers and neon hair.
- We should have pre-commit linting and styling enforced wherever possible.
- A git commit should be performed after any task is completed.
- Unit tests, integration tests, and end-to-end tests should be written wherever possible and run on pre-commit.

How can I flesh out these details better to make a cohesive plan for you to help me develop this application?

I know what you're thinking. Rust?! Why Rust for this app? For one, I want to see how good Claude is at writing Rust. Secondly, I've only worked in Rust casually, and I'd like an opportunity to fiddle with it in this project. Keep in mind that we're just going with the flow and doing what we feel at this point. If we want to replace the entire backend language later, why wouldn't Claude be able to do that for us?

There are recommended formats for this kind of prompt. But remember, we're taking a naive approach to start with, and we want to see how Claude handles natural explanations.

And we clarify with Claude that we need to document these specifications within the filesystem to ensure it can remember what we've discussed.

I had a clarifying question about my choice of back end language and the way it integrates with the database.

And with that, we have a plan! I think it's time to start getting things built.