Let Me Live My Life, Dad

Cataloging problems in our Claude Code policy.

Series: Santa Claude
Tags: Agentic AI, subagents, Claude Sonnet 4, Claude Code, slash commands
-
Friday, August 8, 2025 8:01 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.

Our UI is looking better after fighting with Claude Code's image sharing feature. We also created a subagent that will keep our code more organized and maintainable, but rate limits cut us off before we could use it.
Let's see what it can do.

A mint on the pillow

We'll pick up where we left off.
I forgot to have Claude push my new subagent before I had it do all this work. That's fine—we'll just have it stage the right files first.
Claude tries to stage the agent definition before unstaging the rest. Keeping an eye on Claude's actions during each step can save you headaches later on.
But something's happened with our SSH agent. Can Claude fix it for us?
We need to add the new housekeeping subagent to our custom slash command definition, so it runs regularly.
Once again, Claude forgets to finish the job.

Bureaucracy

Now we can finally try the next iteration of our subagent discipline plan: TodoWrite checklists. Maybe this will give Claude something concrete to remember.
We should make sure our subagents don't get too ambitious and start barking orders.
I'm beginning to formulate something of an org chart. The general-purpose agent should have only a few concerns:
  • Write code that conforms to our spec.
  • Dispatch appropriate subagents for everything else.
How does our claude-md-policy-analyst feel about that?
Our policy specialist is very cautious, and I'm beginning to think it's not always for the best. We'll follow its hybrid proposal this time, but we may force a purer approach soon enough.
I'm not sure it's even possible, but we want to make sure the general-purpose agent never calls a custom slash command itself.
We hit a rate limit again, but in the interim, I noticed I've been the only attributed author for the past few commits. I can't have people think I'm writing this code alone! That's not very agentic.

The mailroom

Let's test the /mr-code command with a simple change. I'll have to make sure Claude reminds me if I don't use the custom slash commands when they should be used, but I'm sure that opportunity will arise organically (I'll forget).
The TodoWrite approach seems to be working! The agent keeps a checklist and checks off each step - including all the tasks we specified in our custom slash command.
We attempt again to make policy that minimizes redundancy.
There's another kind of imperative task management tool that ourworkflow-automation-analyst has created itself: Makefile commands. Why don't we just have CLAUDE.md reference a single Makefile command that performs all the git steps?
Once again our policy analyst is very cautious. We'll force the Makefile approach later as well if it proves neccessary.
This doesn't fix the issue. And there's another problem...
More unstaged changes! I see what's happening here. The coverage files are generated, and Claude thinks they're in .gitignore. They're not yet, obviously.
Claude hasn't considered that there may be an issue if we have added files to .gitignore that we've previously committed. These files aren't critical to keep private, but we should perform the cleanup anyway.

There's always one, and it's sometimes me

I noticed that when Claude was trying to fix the spinner placement the first time, it got a little lazy and chose not to use the proper tool to determine where the safe area of the screen is. It justified this decision because "it's not installed."
It's at this point that we see something new. Our test coverage isn't meeting policy standards, so Claude just stops before committing. I didn't notice this, so I proceed with a few more changes.
We also create a menu for the user instead of including buttons at the bottom of the Recent Tracks listing.
I noticed the lack of a push here, so I told Claude to go ahead and fix the tests.
There were quite a few changes necessary to fix test coverage.
Of course, this could be done only when creating a PR (and we'll explore that process later), but because I want to utilize Claude Code's tools as much as possible, I want our subagents to keep the code clean at every commit. This also removes some manual testing from my workflow, because our codebase is testing itself at every step, which ideally reduces the number of followup promps I have to submit to fix small issues.

Is this a bow or red tape?

Now that I think about it, the custom slash commands would benefit from TodoWrite checklists as well.
This rate limit gave me a little more time to think about this approach. Maybe we can expand on it—but we'll have to be aggressive.