Skip to content

The Four-Step Problem-Solving Loop for AI Coding Assistants

I spent three hours debugging an infinite loop in my React component. I tried five different fixes. None of them worked. Then I stopped, applied a systematic methodology, and solved it on the first try.

The problem wasn’t my React knowledge. It was my approach to problem-solving with AI coding assistants.

The Problem: AI Generates Patches, Not Solutions

Here’s what kept happening to me:

AI conversation patch loop
Me: "Fix this infinite loop in useEffect"
AI: Adds a dependency, removes a dependency, adds a ref...
Me: "Still broken"
AI: Adds a cleanup function
Me: "Now I have a different bug"
AI: Wraps in useCallback
... 5 iterations later ...

The AI kept patching symptoms. I kept accepting patches. We were both treating the output, not the process.

Then I found a methodology from a developer who built a 668K line codebase with Claude Code. The methodology is simple: Identify → Research → Fix Structure → Automate Verification.

Step 1: Identify the Real Problem

Don’t start with “how do I fix this?” Start with “what’s actually wrong?”

I was asking “how do I stop this infinite loop?” The real question was “why is my component re-rendering on every state change?”

Diagnosis comparison
WRONG APPROACH:
- Symptom: Infinite loop
- Question: How do I stop it?
- Result: Patches on patches
RIGHT APPROACH:
- Symptom: Infinite loop
- Question: What process is creating this output?
- Diagnosis: State change → effect triggers → updates state → repeat

The diagnostic question I now use: “Is this a problem with the output, or a problem with the process that created the output?”

If it’s the process, fixing the output is a treadmill.

Step 2: Research What Exists

Before building anything, investigate what’s been tried.

For my infinite loop, I found:

Research findings table
RESEARCH FINDINGS:
| Approach | Category | Result |
|----------|----------|--------|
| Add missing deps | Workaround | Fixes lint, breaks loop |
| Remove deps | Workaround | Loop gone, new bugs |
| useRef guard | Workaround | Works until it doesn't |
| useEffect cleanup | Partial | Handles unmount, not cause |
THE GAP: Nobody asked why the effect needed to update state in the first place.

When smart people are all working around a problem instead of solving it, that’s your signal: the problem is real, it’s unsolved, and the solution space is clear.

Step 3: Build the Structural Fix

Attack the process, not the output.

The principle: Take what the model is bad at and replace it with what the model is good at.

In my case:

Model strengths vs weaknesses
What the model is bad at:
- Understanding render cycles
- Predicting state cascades
- Mental simulation of React lifecycle
What the model is good at:
- Refactoring code structure
- Following explicit rules
- Writing pure functions
STRUCTURAL FIX:
Before: Effect with complex state dependencies
After: Derived state + memoized selectors
Result: No effect needed, no loop possible

The model couldn’t debug my render cycle, but it could refactor my architecture to eliminate the problematic pattern entirely.

Step 4: Make the System Verify Itself

This is the step I was always skipping.

Verification as infrastructure, not as prompts.

Verification approach comparison
WHAT I USED TO DO:
- "Make sure this doesn't break anything"
- Manually test after each change
- Hope nothing regresses
WHAT I DO NOW:
- Tests run before task completion
- Type checks on the file just changed
- Quality gates for acceptance criteria
- Automatic regeneration on failure

The difference: Rules degrade as context grows. Infrastructure doesn’t.

The Complete Loop in Practice

Here’s how I applied this to a real problem: AI generating misaligned ASCII diagrams.

Problem-solving log
Problem: AI generates misaligned ASCII diagrams
Step 1 - Identify Real Problem:
Question: "Why does the model fail at alignment?"
Answer: Sequential text generation has no spatial awareness
Step 2 - Research:
Existing attempts: Manual fixes, tool switches, validators
Gap: Nobody addressed structural limitation
Step 3 - Structural Fix:
Solution: Grid engine + coordinate API + verifier
Build: 19 grid engine cases, 13 verifier tests, 12 E2E tests
Step 4 - Self-Verification:
Auto-verify after every diagram render
Regenerate on failure before showing result
User never sees broken output
Result: One session to build, reliable diagrams forever

The thinking took 30 minutes. The building took 2 hours. Most people skip the thinking.

Creating a Reusable Skill

Another developer saw this methodology and immediately turned it into a skill:

chuckle-skill.md
# /chuckle skill (problem-solving methodology)
When I encounter a bug:
1. STOP and diagnose: Is this symptom or root cause?
2. RESEARCH: What's been tried? Categorize attempts.
3. FIX: Attack the process, not the output.
4. VERIFY: Build verification into the solution.
Usage: "/chuckle I'm getting an infinite loop in my useEffect"

They used it to fix a bug on the first try after 5 failed attempts. The methodology is portable across any AI coding assistant and any codebase.

Why This Works

Four-step loop diagram
┌─────────────────────────────────────────────────────────┐
│ THE FOUR-STEP LOOP │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ │
│ │ IDENTIFY │ "What's actually wrong?" │
│ └──────┬───────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ RESEARCH │ "What's been tried?" │
│ └──────┬───────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ FIX │ "Attack the process" │
│ └──────┬───────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ VERIFY │ "Make it self-checking" │
│ └──────┬───────┘ │
│ │ │
│ └─────────────────────► Loop back if needed │
│ │
└─────────────────────────────────────────────────────────┘
  • Thinking before coding: Most debugging time is wasted on wrong problems
  • Research before building: Don’t reinvent workarounds
  • Process over output: Structural fixes don’t regress
  • Automation over manual review: Scales without human bottleneck

Common Mistakes I Still Make

Common mistakes and fixes
MISTAKE: "I'll just try this fix"
FIX: Force 5 minutes of diagnosis first
MISTAKE: Treating symptoms because the fix is easier
FIX: Ask "will this fix regress?" If yes, wrong approach
MISTAKE: Adding more prompts instead of building infrastructure
FIX: If I have to remind the AI twice, build a check instead
MISTAKE: Accepting workarounds as solutions
FIX: Workaround + new bugs = not a solution

The Hard Part Isn’t the Code

The ASCII alignment skill took one session to build. Not because it was simple (19 grid engine cases, 13 verifier tests, 12 end-to-end tests). Because the methodology was clear before I wrote the first line of code.

The thinking was the hard part. The building was execution.

Next time you’re stuck in a loop of AI patches, stop. Identify the real problem. Research what exists. Build the structural fix. Make the system verify itself. Four steps. Every time.

Final Words + More Resources

My intention with this article was to help others share my knowledge and experience. If you want to contact me, you can contact by email: Email me

Here are also the most important links from this article along with some further resources that will help you in this scope:

Oh, and if you found these resources useful, don’t forget to support me by starring the repo on GitHub!

Comments