VIBE CODING // LIVE
VIBE

// PROJECT KITT — PRE-HARDWARE SPRINT //

VIBE CODINGZERO HARDWARE REQUIRED

6
SESSIONS
~12
EVENINGS
11
DELIVERABLES
0%
COMPLETE
DEPLOY READY
0%
● SURFACE PRO
● WSL2 / UBUNTU
● CLAUDE POWERED
NO PI NEEDED YET
BEGIN
// SPRINT OVERVIEW //
~80%
CLAUDE WRITES
~20%
YOU DIRECT
¥0
COST THIS PHASE
DAY 1
PI READY ON ARRIVAL
CLAUDE WRITES
YOU DO
TOGETHER
PICO-8 / CREATIVE
// SYSTEM BUILD PROGRESS //
OBD BRIDGE
0%
DASHBOARD UI
0%
BOOT SERVICES
0%
SETUP SCRIPT
0%
JOE PROMPT
0%
WANGAN GAME
0%
// CODING SESSIONS //
01
// SESSION ONE — THE CORE ENGINE //
OBD2 BRIDGE + SIMOBD SIMULATOR
1–2 evenings · WSL2 + Chrome · The most critical session
0%
+
WHY THIS IS FIRST: Everything depends on the bridge. The dashboard reads from it. Joe gets data from it. Tests run through it. Get this working in WSL2 today and the entire rest of the project has a foundation to build on.
Ask Claude to write the complete obd_bridge.py
One prompt: "Write a Python WebSocket server on port 8765 that broadcasts OBD2 data at 10fps. Include a SimOBD class with realistic animated values for speed (0-120), RPM (800-5000), coolant (85-95°C), throttle, fuel and battery. Smooth the data so dials don't jump. Auto-detect if no OBD dongle and use SimOBD. Real OBD uses python-obd library."
CLAUDE WRITES
Run it in WSL2 and watch the numbers
pip install obd websockets --break-system-packages · python3 obd_bridge.py · Should print "OBD bridge running on ws://localhost:8765 [SIMULATOR MODE]"
YOU DO
Write a simple test HTML that reads the WebSocket
Ask Claude: "Write a minimal HTML page that connects to ws://localhost:8765 and displays the live JSON data on screen." Open it in Chrome while the bridge runs. You should see live numbers updating every 100ms.
CLAUDE WRITES
Tune the simulator feel — describe what's wrong
"The RPM jumps too fast" → Claude rewrites the smoothing. "Speed acceleration feels unrealistic" → Claude adjusts the curve. You are the art director here. The feel of the simulator is what makes the dashboard look alive.
TOGETHER
Add a simulated "night run" mode to SimOBD
Ask Claude to add a NightRunMode — speed climbs to 100+, RPM hits 4000+, then eases, like you're actually on the Shutoko. Makes demos dramatically more impressive than flat numbers.
CLAUDE WRITES
// SESSION 1 DELIVERABLES //
obd_bridge.py
Python · WSL2
~120 lines
test_ws.html
HTML · Chrome
~40 lines
requirements.txt
Python deps
3 packages
# What you'll be running in WSL2 by end of session 1 $ python3 obd_bridge.py OBD bridge running on ws://localhost:8765 Mode: SIMULATOR [night_run=False] Broadcasting: speed=67 rpm=2840 coolant=87.2 throttle=28 fuel=72.0 batt=12.4 Broadcasting: speed=71 rpm=3020 coolant=87.5 throttle=31 fuel=72.0 batt=12.4 ^C Shutdown clean.
SESSION COMPLETE
0/5 tasks
02
// SESSION TWO — THE FACE //
DASHBOARD ARTIFACT — 800×480 BLADE RUNNER
2–3 evenings · Pure Claude artifact iteration · Most fun session
0%
+
HOW THIS WORKS: Open a Claude chat. Ask for the dashboard as an artifact. It renders live in the panel. You describe changes in plain English and Claude updates it in real time. You're art directing a film set, not writing code. This is peak vibe coding.
Set up Chrome DevTools at 800×480
Open DevTools → Toggle device toolbar → Add custom device → 800×480. Keep this open the entire session. Everything you build should be tested at this exact resolution before copy to Pi.
YOU DO
Ask Claude for the initial dashboard artifact
"Build a Blade Runner-style car dashboard HTML artifact at exactly 800×480px. Amber #ff8c00 on near-black. Orbitron font. Large speed dial (SVG arc), RPM dial, coolant, throttle, fuel. Six views: Speed, Shutoko, Engine, Joe terminal, Arcade, Kanji. Arrow key navigation. Grain overlay and scanlines. Connect to WebSocket at ws://localhost:8765."
CLAUDE WRITES
Run bridge + open dashboard together — watch it live
WSL2: python3 obd_bridge.py · Chrome: open dashboard at 800×480. The dials should move with simulator data. Speed needle sweeps. RPM climbs. This is the moment where it stops being a webpage and becomes KITT.
YOU DO
Iterate on the visual — describe what feels wrong
Tell Claude things like: "Speed dial needs to be bigger and fill the left half." "The amber glow on the speed number isn't strong enough." "Add rain particles in the background." "The gear indicator should flash when simulating gear changes." Claude rewrites, you see it instantly.
TOGETHER
Lock all 6 views — pixel perfect at 800×480
Go through each view. Nothing should overflow or clip. Fonts readable at arm's length in a dark car. Shutoko view should show route status cards. Joe view should look like a terminal. Arcade view should show game cards. Kanji view should show big legible characters.
TOGETHER
Test night run mode demo
Switch bridge to night run mode. Watch the speed climb to 100+, RPM hit 4k, coolant creep up. The dashboard should look genuinely alive. This is what you demo at meets. If it looks spectacular here, it'll look spectacular on the 7" screen.
TOGETHER
// SESSION 2 DELIVERABLES //
kitt_dashboard.html
HTML/CSS/JS
~600 lines
800×480 tested
DevTools verified
6 views
Live WS connected
Real-time dials
10fps updates
THE VIBE CODING LOOP: Describe → See → Adjust → Repeat. You never have to understand how an SVG arc is calculated. You just say "the needle arc should be thicker and have a glow" and Claude handles it. Your job is to know what looks right.
SESSION COMPLETE
0/6 tasks
03
// SESSION THREE — THE SPINE //
SYSTEMD SERVICES + PI SETUP SCRIPT
1 evening · Pure file generation · Turns Pi setup into 10 minutes
0%
+
WHY THIS IS MAGIC: When the Pi arrives you SSH in, run one script, and it configures itself. Without this you'd spend an evening googling "how to autostart chromium raspberry pi" one command at a time. This session converts that into a single bash command.
Ask Claude for all three systemd service files
"Write three systemd service files for a Raspberry Pi: 1) kitt-obd.service — runs /home/pi/kitt/obd_bridge.py on boot, restarts on crash. 2) kitt-display.service — starts Chromium kiosk mode pointing at /home/pi/kitt/kitt_dashboard.html after kitt-obd starts. 3) kitt-ignition.service — runs /home/pi/kitt/ignition_monitor.py, depends on network."
CLAUDE WRITES
Ask Claude for the complete setup.sh script
"Write a bash setup script for a fresh Raspberry Pi OS install that: installs python3-pip, python-obd, websockets, flask, espeak, chromium-browser, enables I2C via raspi-config noninteractive, creates /home/pi/kitt directory, copies service files, enables all three systemd services, sets up auto-boot on power restore." Review it yourself — you should understand every line.
CLAUDE WRITES
Test setup.sh logic in WSL2
Run the script in WSL2 (not on actual Pi) to catch obvious errors. It won't run perfectly since WSL2 isn't a Pi, but you'll catch typos, wrong paths, missing commands. Ask Claude to fix any errors that come up.
TOGETHER
Write the deploy.sh — one-command file sync to Pi
Ask Claude: "Write a deploy.sh for my Surface Pro WSL2 that SSHes into raspberrypi.local and rsync-copies the /kitt folder, then runs setup.sh remotely." When Pi arrives: plug it in, find IP, run ./deploy.sh — done.
CLAUDE WRITES
// SESSION 3 DELIVERABLES //
kitt-obd.service
systemd
~15 lines
kitt-display.service
systemd
~18 lines
kitt-ignition.service
systemd
~14 lines
setup.sh
bash · Pi deploy
~80 lines
deploy.sh
bash · WSL2
~20 lines
SESSION COMPLETE
0/4 tasks
04
// SESSION FOUR — THE VOICE //
JOE PROMPT ENGINEERING + PERSONALITY
1 evening · Zero code · Pure prompt craft
0%
+
NO CODE REQUIRED: This entire session happens right here in Claude. You write prompts, test Joe's responses, refine the personality. By the end Joe sounds exactly like KITT — not a chatbot, not a GPS, something genuinely cinematic. When voice is wired up in Phase 5 the prompt is already perfect.
Draft Joe's core system prompt
Ask Claude: "Help me write a system prompt for an AI driving copilot called Joe. He lives in my Honda CRZ. He gets live data: speed, RPM, coolant, fuel. He knows the Shutoko expressway. He speaks in 1-2 sentences max. He's calm, precise, slightly cinematic. Not a chatbot. Think KITT from Knight Rider crossed with a Tokyo taxi dispatcher."
TOGETHER
Test Joe with fake OBD data — 10 scenarios
Paste the system prompt + fake data and fire questions: "C1 is jammed what route?" / "Coolant is 97°C should I be worried?" / "How far to Daikoku PA?" / "Engine warning light just came on" / "Good run tonight?" Test until every answer sounds like KITT, not ChatGPT.
TOGETHER
Write Joe's shutdown speech variants
Ask Claude: "Write 5 variants of Joe's engine-off shutdown speech. Each should be 1-2 sentences, cinematic, reference the run quality or conditions. Examples: 'Clean run tonight. Coolant held steady. Shutdown in 60.' or 'C1 was smooth. See you next time, Kris.'"
CLAUDE WRITES
Lock the final prompt into a .txt file
Save joe_system_prompt.txt into the kitt/ folder. This gets loaded by the Python voice service in Phase 5. Version-control it — you'll keep tweaking it over time as you drive more.
YOU DO
// SESSION 4 DELIVERABLES //
joe_system_prompt.txt
Prompt · Phase 5 ready
~200 words
shutdown_lines.txt
5 speech variants
Cinematic
THE TEST: Read Joe's responses out loud. If you laugh or feel something, it's working. If it sounds like a voice assistant reading a manual, iterate more. The goal is that passengers in the CRZ go "wait is that... an AI?" and mean it as a compliment.
SESSION COMPLETE
0/4 tasks
05
// SESSION FIVE — THE CONTROLLER //
RETROARCH CONFIG + GAME LAUNCHER
1 evening · Claude writes config, you test on Windows RetroArch
0%
+
Download RetroArch for Windows and test it
retroarch.com — free. Install on Surface Pro. Load any ROM. Verify it runs. You're testing the software on real hardware (your Surface) before the Pi arrives — same principle as the OBD bridge approach.
YOU DO
Ask Claude to write the two-player keyboard retroarch.cfg
"Write a RetroArch config file for two players on one keyboard. Player 1: WASD + Space/V/C/X. Player 2: Arrow keys + numpad Enter/0. Include hotkeys for menu (Escape), quit combo, and fast-forward (Tab). Format for Pi 4 RetroArch 1.9+."
CLAUDE WRITES
Ask Claude to write the Flask game launcher
"Write a Flask server on port 8766 that accepts GET /launch/[game] and opens RetroArch with a specific ROM using subprocess. Games: retroarch (SNES core), pico8 (runs .p8 file). Return JSON status."
CLAUDE WRITES
Test the two-player keyboard layout
Put the cfg in RetroArch on your Surface Pro. Grab a game. Test that WASD works for player 1 and arrows for player 2 simultaneously. This is the exact layout that'll be in the CRZ. Better to find keyboard conflicts now.
YOU DO
// SESSION 5 DELIVERABLES //
retroarch.cfg
RetroArch config
2-player tested
game_launcher.py
Flask · port 8766
~50 lines
SESSION COMPLETE
0/4 tasks
06
// SESSION SIX — THE GAME //
PICO-8 + WANGAN NIGHT RACER PROTOTYPE
Ongoing evenings · Buy PICO-8 · Claude writes the Lua · You drive
0%
+
BUY PICO-8 FIRST: lexaloffle.com · ¥1,980 one-time. Windows + Pi license in one purchase. The same .p8 cart file runs identically on both. Build on Surface Pro, deploy to Pi with zero changes.
Buy PICO-8 and get it running
lexaloffle.com. Download Windows version. Open PICO-8. Type HELP to see the basic commands. Run a demo cart (SPLORE has tons). Get a feel for the 128×128 canvas and 16-colour palette before asking Claude to write code for it.
YOU DO
Ask Claude to write the Wangan Night Racer skeleton
"Write a PICO-8 Lua game called Wangan Night Racer. Top-down view. Night cityscape scrolling background. Two player cars — P1 WASD, P2 arrows. Cars dodge traffic. Score increments for distance. Amber/orange color palette only to match KITT aesthetic. Start simple — just the car, movement, and scrolling road."
CLAUDE WRITES
Play it and describe what to add
"Add oncoming traffic cars that get faster over time." "Add a score display in the KITT font style." "When you crash, flash the screen red and show speed at time of crash." Iterate exactly like the dashboard — describe → see → adjust.
TOGETHER
Playtest with Hiro — two player on one keyboard
This is the test that matters. Can two people play comfortably on one keyboard? Does the pace feel right for a small 7" screen? If Hiro laughs while playing, it's ready for the Pi.
YOU DO
// SESSION 6 DELIVERABLES //
wangan_racer.p8
PICO-8 cart
Pi-ready
2-player tested
Hiro approved
Daikoku demo
THE DEMO PLAY: At Daikoku PA, sled on the hood of the CRZ. Two people racing each other on the KITT screen while real JDM cars sit around you. This is the image. Build toward it.
SESSION COMPLETE
0/4 tasks
// HARDWARE ARRIVAL READINESS //
// DEPLOY READINESS METER //
NOTHING READY BRIDGE DONE DASH DONE SCRIPTS DONE SHIP IT
Complete sessions to increase readiness
// ORDER OF ATTACK //
Session 1 — OBD Bridge
First evening · The foundation everything runs on
Session 2 — Dashboard artifact
Evenings 2–3 · The visual heart · Most satisfying
Session 3 — Boot scripts
One evening · Boring but critical · 10-min Pi setup
Session 4 — Joe's personality
One evening · Zero code · Pure craft
Session 5 — RetroArch config
One evening · Test on Surface Pro while you wait
Session 6 — Wangan Racer
Ongoing · Buy PICO-8 · Build it on Surface Pro
Hardware arrives
Run deploy.sh · Pi configures itself · First real OBD data