The Debug-First Collaborative Coding Pattern (aka Semi-vibe coding)

July 16, 2025

The Problem

LLMs often confidently use libraries without understanding their actual runtime behavior. They make assumptions about APIs that turn out to be wrong, leading to buggy code that’s hard to debug.

The Solution: Debug Script → Code → Human-Guided Fixes

Instead of coding blind, we investigate first, then implement:

Debug-first workflow diagram

Key Benefits of This Pattern

Today’s SpaCy Example

Traditional Approach (would have failed): ❌ LLM: “I’ll use spaCy to segment sentences and extract line breaks” ❌ Writes code based on assumptions ❌ Tests fail mysteriously ❌ Multiple rounds of blind fixes

Our Debug-First Approach: ✅ 1. Debug script revealed: “Spaces are between sentences, newlines are IN sentences” ✅ 2. Wrote segmenters based on this reality ✅ 3. Tests failed with specific assertion errors ✅ 4. Human: “I think it has to do with comparing two similar looking types of whitespace” ✅ 5. Targeted fix addressing the exact issue

The “Semi-Vibe” Aspect

I call it “semi-vibe coding” because:

This pattern leverages the best of both:

“measure twice, cut once” - someone in the world