Around the middle of every month, a little ritual arrives in my calendar: the wallpaper apps need fresh content. I add 20 to 40 new images, revisit the category mix, and rewrite the App Store description so it matches the season. I have been running this loop since 2014, but once the catalogue grew to four apps the monthly update had quietly stretched into a full day of work.
In February 2026 I began handing parts of that loop to Claude Code. Not full automation — more like a deliberate division of labour, where I tried to be explicit about which steps still needed my hands and which steps I was comfortable letting Claude Code draft. Three months in, the rhythm of my month has settled in a more comfortable place than I expected, so I want to write down what I have learned.
My two grandfathers were temple carpenters in Japan, and the feeling they passed down — that working with your hands is itself a form of devotion — still shapes how I think about software work. When I introduce automation, I try not to overwrite that feeling.
Mapping the monthly refresh from Claude Code's point of view
The first step was simply writing the monthly checklist out in a plain text editor, instead of carrying it in my head. Once the steps were on the page it was easier to see which decisions I made the same way every month and which ones really needed a human judgement call.
- Renaming new images according to my filename convention
- Sorting them into the right category folder
- Adding references in
Assets.xcassetson the iOS side - Dropping copies into
res/drawableon the Android side - Updating the in-app content JSON
- Refreshing the seasonal wording in App Store and Google Play metadata
The last two items mix in judgements I only revisit a few times a year, so I kept them on my desk. The other four felt rule-shaped enough to give to Claude Code.
What helped most: a draft of the category split
Three months in, the single biggest win was the category split. Beautiful HD Wallpapers runs on a simple four-bucket layout — Nature, City, Abstract, Seasonal — and every refresh I have to drop 20 to 40 new images into one of them.
I used to open every image and decide by eye. I did not dislike the work, but doing it late at night quietly degraded my judgement, and the next morning I would often shuffle half of them around.
Now I hand Claude Code the file paths plus the past six months of classification history and ask it: "Using the same standard, where would you put each of these?" It returns a candidate category and a confidence note per image. I take that as a draft and only spend my own attention on the final approval clicks. Since switching, the late-night drift has more or less disappeared.
The accuracy is around 80 percent by feel. The remaining 20 percent never lines up with my own sense of the catalogue, and I have started to treat that gap as something worth keeping — it is exactly the kind of judgement an indie developer should not outsource.
What also mattered was feeding Claude Code the six months of past classifications. In the first month I just asked plainly: "Sort each of these into Nature, City, Abstract, or Seasonal." The edge cases between seasons came back noticeably wobbly. From the second month, I attached past examples to the prompt, and the agreement with my own sense of the catalogue tightened — final-pass disagreements roughly halved.
Where I tripped: lining up JSON order with screenshot order
The unexpectedly tricky part was keeping the JSON append order aligned with the App Store screenshot order. Claude Code is good at adding entries cleanly when I say "please add these images", but it does not have enough signal to decide whether the screenshot thumbnails should also shift. Once, the on-device order and the JSON order drifted apart for about a day.
I solved it by adding a small human checkpoint at the very end of the refresh: capture a thumbnail strip from a real-device build, hand it to Claude Code, then let it re-sort the JSON to match. I did not want to remove the human entirely. Even with a catalogue that has now passed 50 million cumulative downloads across the wallpaper apps, the last few moments of trust still belong to my own eyes.
What I see after three months
By the numbers, the monthly refresh dropped from about six hours to around two and a half. Not all of that recovered time went into rest, though. A lot of it has been redirected into thinking — specifically, planning which kinds of images to bring in next month, which I had quietly stopped doing under the old workload.
Breaking the time down further: category sorting fell from about 90 minutes to 25, JSON updates from about 60 minutes to 10, and Android res/drawable placement from about 45 minutes to 15. About half of the remaining two and a half hours goes into on-device visual review. I have no plans to shorten that part. These are images people look at every day, and the last few minutes really do feel better when a person's eyes pass over them.
A pattern I keep noticing across more than a decade of indie development is that the long-running benefit of automation is rarely the saved minutes. It is the room you gain to think about quality. With Claude Code drafting and me focused on judgement and direction, that division of labour has settled in more naturally than I expected.
When I first touched the internet in 1997 at sixteen and started teaching myself programming, what struck me was that every new tool quietly expanded what I could do on my own. The past three months with Claude Code have felt a lot like that.
What I want to take on next
The next thing on my list is letting Claude Code drive the Android res/drawable-xxhdpi placement together with density-variant generation. Right now I still call ImageMagick by hand for that step, and it is where the late phase of the refresh starts to feel heavy. If Claude Code can take that over, the closing stretch of the monthly cycle should get noticeably lighter.
If you are running multiple apps on your own as well, I hope some of this is useful. Thanks for reading.