← schlacter.me

Vibe Check

am i any good at this?

Anyone can hold down a camera shutter. Doesn't make them a photographer. Anyone can vibe code. Doesn't make them a software engineer. This page is an honest, self-graded report card of how much my vibe coding actually holds up — and what I'm doing about the gaps.

Vibe Score

60

decent

↓ -3 pts
over 52 weeks

click for how this number gets made →

How 60 gets calculated

Average of three theme scores below. Each theme = average of 3 sub-metrics. Each metric scored 0–100 (higher = better) against a clear threshold (e.g. 0 fix commits = 100, 80% fix commits = 0).

62
🚨
67
🤡
52
🧹

(62 + 67 + 52) ÷ 3 = 60

What I'm working on this month

Stop the 6-hour loops

Targeting Longest debug spiral (0/100, lowest sub-score).

  • →Worst loop was 6.0h in Interior-Design — when 3 hours in and looping, stop. Restart with a written goal.
  • →Set a personal 2-hour timer on hard debugging sessions before walking away.

Refreshed every Sunday. Next score in this metric tells the story.

Improver activity (last 30 days)

The improver runs every Monday at 9am and opens a draft PR targeting the weakest metric. First run: next Monday. Check back for the loop closing.

Autonomous engine — opens draft PRs only, never auto-merges.

Habits I'm trying to break

Extracted weekly from my own session transcripts by vibe-coach. The lessons get written into my global CLAUDE.md so the next session enforces them automatically.

  • → Break sessions at the 2-hour mark

    Long sessions ≠ productive sessions. Force a commit and re-orient at 2h.

    Evidence: 5 of 8 recent sessions hit the 6-hour cap · 1 week in flight

  • → Grep before re-implementing

    Check if the utility already exists before writing it. Habit lives in CLAUDE.md so the next session enforces it.

    Evidence: Almost wrote safe_msg twice in one session · 1 week in flight

  • → End research sessions with a written handoff

    Any research session ≥1h ends with a one-page note. Otherwise the next session restarts the search from zero.

    Evidence: One 6-hour session produced zero artifacts · 1 week in flight

  • → Audit scheduled-task sessions that hit the 6h cap with no work

    Cron tasks running to the cap with zero Edits/Writes are likely stuck, not productive. Verify their lastRunAt completion vs the cap timeout.

    Evidence: 4 cron sessions (reddit-pulse-health-check, claude-reddit-pulse, calmar-bug-fixer, resume trigger) hit 6h cap with 0 Edits/Writes · 1 week in flight

Going well, keep doing it

  • ✓ Dry-runs caught real bugs before prod (awk truncation in vibe-improver)
  • ✓ Zero hotfix sequences in the last 7 days (vs 69 in the 30-day baseline)

9 sessions analyzed · refreshed Saturdays

How well is Claude executing my vibe-coding?

Three signals: how often I have to course-correct, how well Claude follows my custom rules, and who's driving the habit fixes.

Override rate

How often I have to course-correct Claude per user message. Lower = Claude predicting my intent better.

2.7% this week
↓ -0.5 pts
over 6 weeks

⚠ Detects course-correction language ("no", "actually", "wait", "that's wrong"). Noisy in weeks where I'm refining requirements vs catching mistakes — won't fully separate productive corrections from Claude failures.

CLAUDE.md compliance

83

Sampled session: 3270008a. Each rule scored against actual session behavior.

  • 90Scope discipline — boring vs ambitious framing before >2 moving parts — Framed boring vs ambitious 4 times this session (privacy fixes, vibe-improver, vibe-coach, claude-quality). One miss on page UI changes.
  • 60Constraint check before coding — Verified gh auth + local clones before vibe-improver run. Skipped pre-checks on aggregator + page changes.
  • 100Deploy verification — confirmed live URL after every push — Every push followed by curl + grep verification in background. Zero "declared done before verified" instances.
  • 80Don't punt work back to Hannah — Mostly self-sufficient. One legitimate UI handoff ("hit Run now in the sidebar") that I couldn't drive myself.

Who's driving the habit fixes?

Each habit in flight gets tagged with who first surfaced it. claude_proactive = Claude flagged the issue in the moment. hannah_corrected = Hannah noticed and pushed back. tool_caught = an automated check (linter, test, vibe-improver) caught it before review.

1
Claude proactive
1
Hannah corrected
2
Tool caught

🚨Does it actually work?⌄

the prod reality check

62

Average of 4 metrics below. Weakest: Live site latency (16/100).

Broken in prod⌄

hotfixes within 24h of the commit they broke

0

100/100

Live site latency⌄

avg time to first byte across live sites

1708ms

16/100

Live site response times (slowest first)

  • https://www.muse.shopping200 · 2708ms
  • https://schlacter.me200 · 1323ms
  • https://kindle.schlacter.me200 · 1094ms

Mean time to fix⌄

median hours bugs lived before patched

n/a

100/100

Scheduled task health⌄

scheduled tasks firing on time (stale = >2× expected period)

2 stale

33/100

Stale scheduled tasks

  • git-sync-fixer 3.5d stale (3.5× expected)
    last ran 2026-09-11 · expected every 1d
  • vibe-coach-weekly 2.1d stale (2.1× expected)
    last ran 2026-09-12 · expected every 1d

🤡Do I know what I'm doing?⌄

the panic index

67

Average of 3 metrics below. Weakest: Longest debug spiral (0/100).

Fix-to-feature ratio⌄

of commits start with 'fix'

0%

100/100

Revert / oops count⌄

reverts and 'oops' commits

0

100/100

Longest debug spiral⌄

longest single debug spiral, capped 6h

6.0h

0/100

Longest single sessions, capped at 6h

  • 6h in Interior-Design · session c83448a2 · 2026-07-18
  • 6h in Interior-Design · session 0a5ea082 · 2026-08-03
  • 6h in Interior-Design · session f77a1d52 · 2026-08-09
  • 6h in Interior-Design · session ce71e534 · 2026-08-05
  • 6h in Interior-Design · session 4e566d59 · 2026-07-31

🧹Did I leave a mess?⌄

the tech debt tax

52

Average of 3 metrics below. Weakest: Test coverage (25/100).

Test coverage⌄

repos with any test file at all

1/4

25/100

Repos with zero tests

  • claude-code-insights-dashboard
  • managed-agents-pulse
  • twitch-community-research

TODOs left in code⌄

TODOs, FIXMEs, HACKs across the codebase

40

80/100

Sample TODOs left in code

  • muse-shopping/frontend/app/onboarding/start/page.tsx:76
    // TODO: Send to backend to actually follow these curators
  • muse-shopping/frontend/scripts/auto-resolver.js:93
    // TODO: Integrate with notification system (email, Slack, PagerDuty, etc.)
  • claude-code-insights-dashboard/insight-detector.py:22
    data["suggestions"] = [] # TODO v2: actual pattern detection

Secret protection⌄

secret-y patterns gitignored before they leaked

3

50/100

Repos missing secret protection

  • claude-code-insights-dashboard — no secret patterns in .gitignore
  • twitch-community-research — no .gitignore
methodology

Every metric is computed from data I can't fudge: my own commit history (hbschlac/*, public repos only), my Claude Code session logs, and direct curl hits to live sites. No API keys, no third parties.

Each metric is scored 0–100 (higher = better). Theme score is the average of its metrics. Vibe Score is the average of theme scores. Window: rolling 90 days. 4 repos scanned. Sparkline shows weekly Vibe Score history.

Refreshed weekly · last run Sep 14, 2026 · biggest lever: Longest debug spiral