Here’s my current way of vibe coding.

It’s probably not the best way, but its been successful enough for me, so I thought I’d share.

First, put a .agent/ folder at the root. This is where I do most of my design work.

Then generate feature briefs in the .agent folder.

My largest vibe coded project, the polygenic-risk-calculator, has tons of briefs in the .agent folder:

Screenshot 2025-06-18 at 15.21.50.png

Describe the feature/implementation. The more detail you put in the better, usually better to add to the brief directly.

Then refactor the brief, removing the garbage it added, clarifying the bits you care about.

For me it usually means refining folder structure, how each thing will feed into each other, etc.

I almost always use the term using go idiomatic best practices.

Claude responds well to those words.

Then get a new conversation agent to rewrite the whole thing, focusing on being concise and removing duplication.

The refine some more.

The real trick of vibe coding- is not coding.

Refine, refine, refine.

Really force yourself to consider the actual, real architecture you intend to build.