Back to Engineering Notes
Professional ExperienceEngineering Note

2. Vibe Coding (AI-Assisted Development Approach)

I don’t treat AI as something that “writes code for me.”

# 🧠 Vibe Coding

How I Approach AI-Assisted System Design


🧠 How I Think About AI

I don’t treat AI as something that “writes code for me.”

I treat it like an engineering component inside my system.

That means:

it must follow rules
it must respect boundaries
it must produce predictable output

If AI behaves randomly, that’s not an AI problem —

that’s a system design problem.


🎯 My Approach

Instead of prompting AI repeatedly and hoping for better results,

I design the system so AI has no choice but to behave correctly.


💡 Core Principle

plain text
Define the system first
Then let AI operate inside it

🧩 How I Structure AI Systems

I break the system into clear layers so AI can understand:

what it should see
how it should think
what it is allowed to do

🔗 Context (MCP — Model Context Protocol)

I strictly control what context goes into AI.

only relevant data is passed
no unnecessary information
tools are explicitly defined

👉 If context is messy, AI output will be messy


📄 Rules (AGENTS.md)

I define how AI should behave:

no hallucination
no assumptions
follow architecture strictly

👉 This acts as the guardrail


🧠 Reasoning (SKILL.md)

I define how AI should think:

understand requirements before acting
validate schema and inputs
apply business logic correctly
return structured outputs

👉 This prevents “AI doing everything badly”


🧭 Planning (Critical Layer)

I force AI to plan before execution.

Instead of:

plain text
input → output

I enforce:

plain text
input → analyze → plan → execute → validate

👉 This alone dramatically improves reliability


🤖 Agents (Separation of Concerns)

I don’t use one general AI.

I split responsibilities into focused agents:

Parsing Agent → structure data
Business Logic Agent → enforce rules
Communication Agent → format outputs

👉 Similar to microservices, but for AI reasoning


🔧 Tools (Execution Boundary)

AI is not allowed to “decide actions”.

It can only execute predefined tools:

strict input/output schema
no hidden side effects
permission-controlled

👉 This eliminates hallucinated operations


🎨 Design (UI Consistency)

For frontend generation, I define:

design system
layout rules
component behavior

👉 Prevents inconsistent UI across AI outputs


🔄 How It Works in Practice

plain text
User Input
→ Context Builder
→ Agent Selection
→ Planning
→ Tool Execution
→ Validation
→ Structured Output

⚖️ Trade-offs I Accept

This approach is not “quick and dirty”.

It requires:

upfront system design
strict structure
disciplined maintenance

But in return, I get:

consistent AI output
scalable architecture
production-level reliability

🧠 What This Is Inspired By

This approach aligns with modern AI agent systems (like Claude Code architecture), where:

markdown files act as system memory
context is carefully controlled
agents are specialized
tools enforce execution boundaries

📌 How I Think as an Engineer

When working with AI, I follow the same mindset I use for backend systems:

plain text
define boundaries
define responsibilities
define constraints

Then — and only then — I use AI to accelerate development.


💬 Final Thought

AI is powerful, but without structure it becomes unpredictable.

> I don’t rely on better prompts

I rely on better system design