Adventures in Agentic Coding

TL;TD:
AI is very good at writing code, but software development is mostly about non-functional requirements, context, and environment—areas where AI only works well with strong human guidance. The author’s week-long experiment using Claude Code with Jesse Vincent’s “superpowers” plugin showed that AI can meaningfully support real software development through structured requirements gathering, planning, and iteration, even for a non-expert developer. While not fully autonomous and still dependent on missing human knowledge, the result far exceeded what the author could have built alone in the same time, delivering value well beyond the cost of the AI subscription.

Writing code is presumably one of the killer applications for #AI. And if you try out the popular chat-based AI tools today, they do a good job in writing simple code.

But writing code and software development are two different things.

Writing code is bringing an idea into a description following the conventions of a programming language, fulfilling the functional requirements you had in mind.

Software Development means to produce "something", which can be deployed in a certain context, can be maintained, can be adapted to future, evolving or already known, requirements and is somehow "a bit" secure. These are just the non-functional requirements which come to my mind immediately.

I would guess that in most software projects the non-functional requirements make up much more effort (and code) than the functional requirements - and I'm not even talking about testing.

When I attended a DevJam, a session dedicated to developing code together, a couple of years ago, I remember spending a full day (with help) to only set up the development environment in a way which would finally allow me to write code for the project.

This was reflected in my first experiences with writing code with AI as well. The LLMs I used created beautiful code, quickly. But. To get the code running in my environment, I - that's no surprise - had to give a lot of context about the machine the code is running on, the way I want packages to be installed, the available packages and so on.

If you're not into programming: Imagine that you ask the AI to create a chair. It will just do that, but the chair will likely not match your interior design or could be too big to be brought into the room where you want it through the door.

Hey, ChatGPT, design a chair!

Describing exactly where the chair will be standing, how wide the passages to get into the room are, what the weight shall be at max or if the chair is under an open sky and the tissues have be to be water-repellent..all that can be much more information than the information about the chair itself.

When you move from the question of "can I write code"? (yes) to "can AI facilitate software development", one of the answers is "vibe coding". The idea is that you describe your idea and then the AI starts to develop along your idea. You then iterate in a dialogue over the code and improve it.

That's something you can do, if you know software development very well. If you do not know software development very well (that's my corner of the ball park), vibe coding will not help you a lot, because you'll miss out important things in the requirements you're not even aware of.

Beyond the buzz of vibe coding, anthropic has released Claude Code can be installed in a development environment like Microsoft's Visual Code or simply on the command line.

What brought me specifically to Claude Code was a) that I had already a subscription and b) that Jesse Vincent (who is Jesse Vincent?) has developed what he called "superpowers" for Claude Code.

I know the software that Jesse has been writing since 1996 and I learned a lot from his code and way of working - we even met once in Geneva many years ago and I still remember it so well because while he was with us, one of the rare blackouts in Switzerland took place.

When I learned that Jesse had developed a plugin for Claude Code which facilitates software development with Claude Code, I was intrigued and keen to try out.

A friend of ours had a simple and compelling idea - was there a way to get AI to analyze a given text and create a prompt which would lead to the given text as a result. You can call that reverse prompt engineering or think of the platonic cave example, asking the observer in the cave to create an image of the reality in front of the cave which leads to the shadows on the wall.

Simple enough for AI Coding, right? (Spoiler: It took me a week)

The plugin Jesse has developed is called "superpowers". It's split into the phases of brainstorming and developing (including debugging).

The brainstorming phase uses a socratic dialogue to systematically gather information around your idea. In classical programming, you'd call that phase requirements engineering.

I found this part extremely valuable - I was prompted by the tool on my idea, gave more information and even developed new ideas in the dialogue.

Based on the result of the brainstorming, an implementation plan is then developed and followed through by Claude Code. This development plan considers best practices in software development, testing and deployment.

To make sure that the tool knows its environment I created files with the installed sofware on the target system and explained that I only want to use package managers to install software.

Claude then took off with superpowers to create my software - after one week of back and forth and confirming manually many operations on the system level (a safety measure), I finally had a product. That did not work. One last piece of information was not available to Claude - I had to research it myself and give it to Claude. And then everything just went fine.

(Might be that was intentional to make me feel valuable, who knows?)

I know have an application to which you could log in using google or microsoft if I had the keys (not configured yet) - but I can send you a link to set up an account with the system itself.

That alone would have me taken a significant amount of time, even when I had used a framework.

After login, the user can enter text and launch the reverse prompt generation.

Let's try out:

Which then generates a reverse prompt:

Write in English. Use a first-person singular reflective narrator who indirectly positions the reader. The genre is reflective personal narrative. The style evokes early 21st-century introspective writing. Explore themes of time management, efficiency, and the challenges of working with tools or frameworks. The key subject is the narrator's experience with time-consuming tasks and the impact of external aids. The tone is contemplative and slightly frustrated. Sentence complexity is moderate, with a medium level of abstraction. The rhythm is steady, and there is a focus on personal reflection rather than argumentation or imagery. Produce exactly 20 words.

When I feed that back into - in this case the same - the LLM, the result is:

Juggling time, tools promise ease; yet, inefficiencies persist, testing patience. Achieving balance remains elusive, a constant, reflective struggle.

I can now change the prompt or re-feed the text again into the process.

Write in English. Use an impersonal philosophical observer perspective without directly addressing the reader. Construct a piece of philosophical prose reflecting contemporary issues, engaging with the intellectual tradition of modern existentialism. Explore themes such as the tension between technological advancement and human inefficiency, the pursuit of balance in life, and the ongoing struggle for personal fulfillment. Focus on abstract concepts such as time, tools, patience, and the quest for equilibrium. Maintain a contemplative and reflective tone, encouraging introspection. Employ complex sentences with a high level of abstraction, and establish a rhythm that balances argumentation with evocative imagery. The text should be exactly 19 words long.

Which then leads to

Amidst technological progress, humans navigate inefficiency, seeking balance and fulfillment, wrestling with time, tools, and existential patience.

And so on.

I asked Claude (with superpowers) as well to develop an admin interface:

So - the application works and is at a level where I can issue ideas to Claude Code to improve (like adding the History). That's pretty awesome and impressive and overall way above what I would have been able to do at all, or at least in the given time. Plus, when I say "a week" it's mostly in the evenings where I had time to invest into the project.

I maxed out my usage limits using the tools as well:

However, the value I have received through Claude Code and the superpowers is way above the Claude subscription.

For me, this experiment was a big success - and I definitely see the value, benefits and advantage of coding with AI and specifically the superpowers Jesse has developed. Amazing stuff.