I thought I needed more AI agents. What I actually needed was a better way to work with AI.
I thought becoming better at vibe coding meant using more AI.
When I first got excited about AI-assisted coding, the formula seemed simple:
Better model + better prompt + more agents = better software.
If one AI could build a feature, why not have five?
One agent for the frontend.
One for the backend.
One for the database.
One for testing.
Another one to manage all of them.
It sounds powerful.
And sometimes it is.
But as I started looking more closely at recent research on AI agents and context engineering, I came away with a different idea:
The biggest improvement to my vibe coding isn't adding more AI. It's designing a better system for the AI I already have.
That changed how I approach projects.
Instead of asking:
"How can I get AI to build more of my application?"
I started asking:
"How can I organize the work so AI can build my application without losing control of it?"
That is the idea I want to explore in this article.
The problem with "just build the app"
Let's say you want to build a SaaS.
You open your AI coding tool and type:
"Build me a SaaS application with authentication, subscriptions, a dashboard, an admin panel, and an AI assistant."
The AI starts working.
Files appear.
Components appear.
Database tables appear.
API routes appear.
It looks incredible.
Until you make your first serious change.
Then something breaks.
You ask:
"Fix this."
It fixes it.
Something else breaks.
You ask:
"Fix that too."
Now the AI changes three files you weren't expecting.
You ask why.
The answer sounds reasonable.
But you don't really know whether the architecture is still sound.
Eventually you reach a dangerous point:
You have a lot of code.
↓
AI wrote most of it.
↓
The project works... mostly.
↓
But nobody has a clear picture
of why everything is structured that way.
This is where vibe coding can start turning into vibe debugging.
And I think the solution is not simply a better prompt.
It's a better workflow.
The first thing I learned: don't start with agents
Recent Google research on multi-agent systems helped clarify something important for me.
The researchers tested 180 different agent configurations across multiple benchmarks and model families.
One of their central findings was that multi-agent systems can be extremely useful for some problems, particularly when work can be done in parallel.
But for sequential problems, adding agents can actually hurt performance.
That sounds obvious when you see it laid out.
Consider research:
Research
|
+------------+------------+
| | |
Market Competitors Pricing
| | |
+------------+------------+
|
Synthesis
These tasks can happen independently.
Multiple agents make sense.
Now compare that with building software:
Requirements
↓
Architecture
↓
Database
↓
Backend
↓
Frontend
↓
Testing
Those steps are connected.
The database depends on the architecture.
The backend depends on the database.
The frontend depends on the backend.
Testing depends on what was actually implemented.
If you create a separate autonomous agent for every step and make them constantly coordinate, you may have created a more complicated system without creating a better one.
The lesson
Before asking:
"How many agents should I use?"
Ask:
"What kind of problem am I solving?"
Is it:
- Parallel?
- Sequential?
- Iterative?
- Research-heavy?
- Tool-heavy?
- Dependent on human decisions?
Architecture should follow the shape of the problem.
That became my first rule.
Rule #1: Don't add an agent unless it earns its complexity
This doesn't mean multi-agent systems are bad.
It means every agent should have a reason to exist.
Use multiple agents when:
- Work can genuinely happen independently.
- Different perspectives are useful.
- Specialization creates a real benefit.
- Parallel execution saves meaningful time.
Use one agent when:
- The task is sequential.
- Later steps depend heavily on earlier decisions.
- The work requires a coherent understanding of the whole task.
- Coordination would create more overhead than value.
And use a hybrid when you have both.
For example:
Product idea
|
+------------+------------+
| | |
Market Technical Competitor
research research research
| | |
+------------+------------+
|
Synthesis
|
Architecture
|
Implementation
|
Testing
This is much more interesting to me than simply saying:
"Use more agents."
Rule #2: Stop giving AI the entire project
This is where another piece of research changed the way I think about AI coding.
The Interpretable Context Methodology (ICM) proposes a practical way to organize AI workflows using structured folders and files.
The idea is simple:
Give the AI the context it needs for the stage it is working on.
Not everything.
Just what matters.
This is extremely relevant to coding.
Imagine your project contains:
my-app/
│
├── docs/
│ ├── product-spec.md
│ ├── architecture.md
│ ├── database.md
│ └── decisions.md
│
├── ai/
│ ├── rules/
│ │ ├── coding.md
│ │ ├── security.md
│ │ └── testing.md
│ │
│ └── tasks/
│ └── current-task.md
│
├── src/
└── tests/
Now suppose you're fixing authentication.
Does the AI need to understand every component in the application?
Probably not.
It might need:
✓ Authentication requirements
✓ User schema
✓ Authentication service
✓ Security rules
✓ Relevant API routes
✓ Relevant tests
It probably doesn't need:
✗ Landing page
✗ Marketing copy
✗ Dashboard animations
✗ Unrelated components
✗ Every file in the repository
This leads to a simple principle:
More context isn't automatically better context.
The right context is better than the maximum context.
Rule #3: Make your project the AI's memory
This is one of my favorite ideas.
AI conversations are temporary.
Projects are persistent.
So instead of keeping important decisions only inside chat history, put them into files.
For example:
docs/
├── product-spec.md
├── architecture.md
├── database.md
└── decisions.md
Now the project can answer questions like
Why did we choose this database structure?
What is this feature supposed to do?
Why isn't business logic placed in the frontend?
What authentication strategy are we using?
What decisions have already been made?
The AI doesn't need to "remember" everything.
The project remembers for it.
I think of it this way:
Chat
=
short-term working memory
Project files
=
long-term project memory
That distinction becomes increasingly valuable as projects get larger.
Rule #4: Separate permanent rules from temporary work
Not everything in a project changes every day.
Some information should remain stable.
For example:
ai/rules/security.md
might say:
Never expose API keys in frontend code.
Validate user input on the server.
Do not bypass authentication checks.
Follow the existing authorization model.
And:
ai/rules/coding.md
might say:
Use the existing component system.
Do not introduce a new framework without approval.
Prefer existing utilities over duplicated functionality.
Those are rules.
Then you have temporary working context:
ai/tasks/current-task.md
which might say:
We are currently implementing subscription management.
Users need to upgrade and downgrade plans.
The billing provider is already configured.
This separation is powerful because it prevents every task from becoming a giant prompt.
Rule #5: Give every important AI task a contract
One of the biggest upgrades you can make to your AI coding workflow is to stop giving vague instructions.
Instead of:
"Build the backend."
Give AI a contract.
For example:
## INPUTS
- product-spec.md
- architecture.md
- database.md
## GOAL
Implement user authentication.
## YOUR JOB
- Create the required API endpoints.
- Validate requests.
- Follow the existing architecture.
- Add tests.
## DO NOT
- Change the database schema.
- Modify unrelated frontend code.
- Change the authentication strategy.
## SUCCESS CRITERIA
- Users can register.
- Users can log in.
- Invalid credentials are rejected.
- Authentication tests pass.
## OUTPUT
- Working implementation.
- Tests.
- Short summary of what changed.
Now the AI has boundaries.
It knows:
What it receives.
What it needs to accomplish.
What it must not touch.
How success will be measured.
That makes its work much easier to review.
Rule #6: Stop reviewing thousands of lines of code
Here's another mindset shift.
If AI generates 5,000 lines of code, you don't necessarily want to manually inspect every line.
Instead, review the important decisions at the points where they are made.
For example:
AI creates requirements
↓
YOU REVIEW
↓
AI creates architecture
↓
YOU REVIEW
↓
AI designs database
↓
YOU REVIEW
↓
AI implements
↓
AI tests
↓
YOU REVIEW RESULT
You are not doing the coding yourself.
You're controlling the direction.
This is important because mistakes become more expensive as they move downstream.
Imagine the AI chooses the wrong architecture.
If you catch it before implementation:
Change architecture.
Done.
If you catch it after:
Architecture
↓
Database
↓
Backend
↓
Frontend
↓
Payments
↓
Tests
↓
Production
You have a much bigger problem.
So I don't think human review means
"I have to supervise everything AI does."
I think it means:
"I should review important decisions before they become expensive."
Rule #7: Build in stages, not one enormous AI session
Here's the workflow I'm increasingly convinced makes sense for serious vibe coding.
Stage 1—Define the product
Ask AI:
"Help me turn this idea into a clear product specification."
Output:
product-spec.md
Review it.
Stage 2—Design the architecture
Give AI the approved product specification.
Ask:
"Design the technical architecture. Don't write application code yet."
Output:
architecture.md
Review it.
Stage 3—Design the database
Give AI:
- product specification
- architecture
- database rules
Ask:
"Design the database based on the approved architecture."
Output:
database.md
Review it.
Stage 4—Build one feature
Instead of:
"Build the application."
say:
"Implement authentication according to the approved architecture."
Then:
"Implement user profiles."
Then:
"Implement subscriptions."
Then:
"Implement the dashboard."
Each feature becomes a controlled unit.
Stage 5—Test continuously
Don't wait until the end.
Use:
Implementation
↓
Tests
↓
Fix
↓
Verify
Then move forward.
The AI Development Loop
Putting everything together, here's the workflow I would use:
YOUR IDEA
↓
REQUIREMENTS
↓
REVIEW
↓
ARCHITECTURE
↓
REVIEW
↓
SMALL FEATURE
↓
AI IMPLEMENTS
↓
AI TESTS
↓
REVIEW
↓
UPDATE PROJECT RULES
↓
NEXT FEATURE
Notice something important.
The AI is doing a huge amount of work.
But the workflow is keeping the project understandable.
That's the goal.
What happens when AI keeps making the same mistake?
This is where the workflow gets even more interesting.
Imagine you repeatedly tell AI:
"Don't put business logic in the frontend."
It fixes the code.
Then two days later it does it again.
You fix it again.
Then again.
That's a sign you don't just have a coding problem.
You have a system problem.
Instead of correcting the same mistake forever, update:
ai/rules/architecture.md
Add:
Business logic must remain in the backend/service layer.
Frontend components should handle presentation
and user interaction only.
Now your correction becomes a permanent rule.
You aren't just fixing today's output.
You're improving the system that produces tomorrow's output.
What about debugging?
This approach changes debugging too.
Instead of:
"Something is broken. Fix it."
You can ask:
"Which stage introduced the problem?"
For example:
Requirements ✓
↓
Architecture ✓
↓
Database ✓
↓
API ✗
↓
Frontend
Now you have a place to investigate.
Maybe the requirement was misunderstood.
Maybe the architecture was wrong.
Maybe the implementation violated the architecture.
Maybe the tests didn't cover the problem.
A staged workflow gives you provenance.
You can trace a bad result backward instead of randomly asking AI to keep changing things.
The context budget
Here's a concept I think every serious vibe coder should adopt:
Every AI task has a context budget.
Don't treat your context window like a storage warehouse.
Treat it like a workbench.
Put the tools you need on it.
Leave the rest on the shelf.
For an authentication task:
ON THE WORKBENCH
✓ Auth requirements
✓ User schema
✓ Auth service
✓ Security rules
✓ Relevant API routes
✓ Relevant tests
Everything else can stay in the project.
This makes the AI's job more focused.
So when should you actually use multiple agents?
Here's my simple decision framework.
Use one agent when:
- The task is sequential.
- Later decisions depend on earlier decisions.
- You need a coherent understanding of the problem.
- Coordination would add unnecessary complexity.
Use multiple agents when:
- Tasks can happen independently.
- You need different perspectives.
- Specialization provides a real advantage.
- Parallel work can save meaningful time.
Use a hybrid when:
Some parts are parallel and others are sequential.
For example:
Product idea
|
+------------+------------+
| | |
Market Technical Competitor
research research research
| | |
+------------+------------+
|
Synthesis
|
Architecture
|
Implementation
|
Testing
This is the kind of architecture that makes sense to me.
Not:
Agent 1
Agent 2
Agent 3
Agent 4
Agent 5
Agent 6
Agent 7
Agent 8
just because we can.
The folder structure I would start with
You don't need an elaborate agent framework to start using these ideas.
Try something like
my-project/
│
├── docs/
│ ├── product.md
│ ├── architecture.md
│ └── decisions.md
│
├── ai/
│ ├── rules/
│ │ ├── coding.md
│ │ ├── security.md
│ │ └── testing.md
│ │
│ └── tasks/
│ └── current-task.md
│
├── src/
└── tests/
And use this template for important tasks:
## Context
[Relevant files]
## Goal
[What I want you to accomplish]
## Constraints
[What you must not change]
## Success Criteria
[How we know it worked]
## Output
[What you should give me when finished]
You can adapt this to almost any AI coding tool.
The exact tool matters less than the workflow.
5 things I stopped doing when vibe coding
❌ 1. "Build the entire app."
I build in stages now.
❌ 2. Giving AI everything.
I give it the context relevant to the task.
❌ 3. Letting AI silently change architecture.
Important architectural changes should be explicit.
❌ 4. Creating an agent for every job.
I use multiple agents when the problem actually benefits from parallelism or specialization.
❌ 5. Fixing the same mistake repeatedly.
Repeated mistakes become project rules.
5 things I do instead
✅ 1. Define before implementing.
✅ 2. Store important decisions in the project.
✅ 3. Give AI explicit task boundaries.
✅ 4. Review architecture before code.
✅ 5. Turn corrections into reusable instructions.
These sound almost boring.
And that's exactly why I like them.
The goal isn't to build the most impressive AI architecture.
The goal is to build software.
What this means if you're just starting to vibe code
You don't need to learn multi-agent orchestration.
You don't need to build an autonomous coding company.
You don't even need a complicated folder structure.
Start with:
1. Write down what you're building.
2. Ask AI to turn it into requirements.
3. Review the requirements.
4. Ask AI for an architecture.
5. Review the architecture.
6. Build one feature at a time.
7. Test each feature.
8. Save important decisions.
9. Create rules for repeated mistakes.
10. Add agents only when you have a reason.
That's enough to make a meaningful difference.
What this means if you're already good at vibe coding
If you're already comfortable with AI coding tools, I think the next skill isn't necessarily
"How do I make AI generate more code?"
It's:
"How do I design an environment where AI can reliably produce good work?"
That means learning to think about:
- Context
- Boundaries
- Workflows
- Checkpoints
- Verification
- Parallelism
- Coordination
- Error propagation
- Project memory
You're moving from:
Prompting AI
to:
Designing AI workflows.
That's a much more valuable skill.
And this could become something much bigger
These ideas aren't only useful for your own projects.
They can become reusable AI skills.
Instead of selling someone:
"Here is a prompt that helps you code."
Imagine giving them:
AI CODING SYSTEM
│
├── Project initializer
├── Requirements workflow
├── Architecture workflow
├── Database workflow
├── Feature builder
├── Testing workflow
├── Debugging workflow
└── Deployment workflow
Each stage has:
- instructions
- context
- inputs
- outputs
- constraints
- validation
Now you're not selling a prompt.
You're selling a repeatable way of working with AI.
That is much more valuable.
The bigger lesson
The most interesting development in AI coding isn't simply that AI can generate code.
We already know it can.
The interesting question is
How do we organize AI's ability to reason and act so that we can actually build reliable software with it?
Recent agent research gives us useful evidence that task structure matters.
Context-engineering research gives us practical ideas for controlling what AI sees.
And the growing body of multi-agent research reminds us that complexity has a cost.
Put those together and I think the lesson is surprisingly simple:
Don't build an agent swarm because agents are exciting.
Don't dump your entire codebase into a prompt because the context window is large.
Don't ask AI to make ten architectural decisions in one giant conversation.
Instead:
Give AI the right task.
Give it the right context.
Give it clear boundaries.
Give it checkpoints.
Then let it work.
Maybe this is what vibe coding becomes next
I used to think vibe coding meant
I have an idea
↓
I tell AI
↓
AI writes code
↓
I tell AI what to fix
Now I think it can become:
IDEA
↓
REQUIREMENTS
↓
REVIEW
↓
ARCHITECTURE
↓
REVIEW
↓
IMPLEMENTATION
↓
TESTING
↓
VERIFICATION
↓
SHIP
AI is still doing most of the work.
But now the workflow is designed instead of improvised.
Maybe the future of vibe coding isn't:
"AI, build everything for me."
Maybe it's
"Here's the system. Here's the context. Here's the task. Now do the work."
And that's the biggest change these ideas have made to the way I vibe code.
You don't necessarily need more AI.
You need a better way to work with the AI you already have.
Sources and further reading
Google Research—"Towards a science of scaling agent systems: When and why agent systems work"
January 28, 2026.
"Interpretable Context Methodology: Folder Structure as Agent Architecture"
The ICM research discussed in this article.
"Scaling LLM-Driven Multi-Agent Systems: Design Principles and Architectural Scalability Analysis"
July 2026 research on multi-agent system complexity and scalability.
A note on the research
The Google study provides experimental evidence for the specific question of when multi-agent architectures help or hurt. The ICM paper presents a practical methodology and practitioner experience rather than a controlled comparison proving that ICM is superior to every alternative. The workflow described in this article is therefore a practical synthesis of the research, not a claim that any single paper proves the entire methodology.
Top comments (0)