Inspiration

Ninety percent of developers use AI to code faster. However, speed without comprehension is a fast track to un-debuggable technical debt. We are entering an era of "Shadow Coding." Developers are hitting the Tab key and merging logic they did not write and cannot explain. We call this "vibe-coding."

In emerging tech hubs like Ghana, students are using AI to leapfrog traditional education. This is incredible, but it carries a massive risk. If we use AI as a crutch rather than a mentor, we de-skill our workforce. We turn potential engineers into prompt-dependent operators. We built Vibe-Check because we need to build creators, not just consumers of foreign technology. We need to preserve the "Why" behind our code.

What it does

Vibe-Check is a local-first VS Code extension that acts as a Socratic friction layer between the AI and the developer. It does not just hand you the code. It ensures you understand the code before you can use it.

When a developer accepts a large or complex AI suggestion from tools like GitHub Copilot, Vibe-Check intercepts the insertion. It instantly applies a visual blur to the injected code. It then sends a micro-payload to Claude 3.5 Sonnet, which acts as a Senior Mentor. Claude generates a multiple-choice question testing the developer on a critical architectural concept or edge case within that specific code block.

The developer must answer the challenge correctly in the sidebar to un-blur the code. If they are in a rush to fix a production outage, they can click "Emergency Bypass." This unlocks the code immediately but logs the skipped logic to a local VIBE_DEBT.md file, forcing accountability.

How we built it

We utilized the "Hybrid Approach" for this hackathon. We built the core extension in TypeScript using the VS Code Extension API.

To intercept proprietary AI tools, we engineered a Post-Acceptance Trap. Vibe-Check listens to onDidChangeTextDocument events to detect sudden, large text insertions. We used TextEditorDecorationType to inject CSS blur filters directly into the editor view.

For the brain, we integrated the Claude 3.5 Sonnet API. We engineered the system prompt to return strict, parseable JSON payloads containing the Socratic challenge and the correct index. The UI was built using a React-based Webview injected into the VS Code sidebar.

Challenges we ran into

Our first major challenge was technical capability. You cannot intercept GitHub Copilot before it generates code because Microsoft tightly controls those proprietary "ghost text" APIs. We solved this by building our Post-Acceptance Trap, waiting for the user to accept the code, and striking within 50 milliseconds to blur the text.

Our second challenge was infrastructure. AI coding assistants continuously stream megabytes of workspace context to their servers. In African markets, mobile data is expensive. We solved this by utilizing micro-payloads. Instead of sending the entire workspace to Claude, Vibe-Check isolates the specific 20 to 30 lines of high-risk code. We only send a 2KB payload to the Anthropic API, making it incredibly data-efficient.

Our third challenge was user experience. If a developer pastes 800 lines of code, blurring the entire screen creates a disorienting, unscrollable nightmare. We built a "Quarantine Mode" that folds massive insertions and challenges the user on only the single most complex function within that block.

Accomplishments that we're proud of

We successfully manipulated the VS Code native UI to create a genuinely disruptive, yet educational, friction layer. Getting the CSS blur filter to apply dynamically to injected text without altering the underlying source code was a massive technical win.

We are also proud of our "Cheating Paradox." We realized developers might just Google the answer to bypass the lock. Instead of trying to prevent this, we embraced it. If a developer leaves the IDE to read documentation, they are actively engaging with the logic. The act of "cheating" achieves the exact pedagogical goal of the tool.

What we learned

We learned that AI speed is a liability if it is not paired with intelligent friction. We also learned that building tools for emerging markets requires ruthless optimization. You cannot assume unlimited bandwidth or cheap API calls. Every feature must be stress-tested against local infrastructural realities.

What's next for Vibe-Check

For the hackathon MVP, we relied on text-insertion volume to trigger the Socratic lock. The next step is integrating local Tree-sitter AST parsing to calculate cyclomatic complexity offline. This ensures the lock only triggers for genuinely complex branching logic, rather than harmless boilerplate.

We also plan to implement a Retrieval-Augmented Generation pipeline using a local Vector DB. By parsing the developer's package.json, we will anchor Claude's context strictly to the official documentation of the specific library versions they are using, entirely eliminating the risk of AI hallucination in our Socratic challenges.

Visit the gdrive for the report. Visit the Repo for mvp demo.

Built With

Share this project:

Updates