Skip to content
/

vibelint

vibelint · l-mendez/vibelint · ★ 2 · last commit 2026-03-31

Primitive shape
No installable primitives
00

Summary

vibelint — Summary

vibelint is a Node.js CLI linter that inspects local Claude Code session data and static repository configuration to detect quality problems, model-choice mismatches, and cost signals in AI-assisted development workflows. It operates post-session (read-only analysis of ~/.claude transcripts and project config) and never modifies code or Claude settings. The tool is invoked via npx vibelint with no install requirement, making it trivially embeddable in CI pipelines. It reports configuration quality, permission-setting issues, command coverage, conversation efficiency, and cross-session trends. Unlike runtime guardrails, vibelint is strictly a reporting/audit tool: it has no hooks, no policies, and no blocking mechanism.

Compared to seeds: closest to the "lint" pole occupied by spec-kit's 18 hooks that cross-validate context files, but vibelint intervenes after sessions complete rather than before/during tool calls. It resembles claude-conductor in that its value is entirely in markdown/context-file hygiene, but vibelint drives that signal programmatically from session logs rather than shipping template files.

01

Overview

vibelint — Overview

Origin

Repo: l-mendez/vibelint (github.com/l-mendez/vibelint). Published March 2026, TypeScript, MIT. 2 stars. The repo description: "The linter for vibecoding." Small personal project by a single author.

Philosophy

The tool is named after "vibecoding" — a colloquial term for AI-assisted development driven by intuition and rapid iteration rather than formal engineering discipline. vibelint applies traditional software-linting thinking to the AI session layer: you can lint JavaScript files for quality; why not lint the conversations your agent has with your codebase?

The README frames the problem plainly:

"vibelint inspects your current repository plus local Claude Code session data and reports configuration issues, session quality patterns, and model-usage signals."

Key belief: Claude Code session logs in ~/.claude carry enough signal (model choices, command invocations, output patterns) to assess whether vibe-coded sessions are actually productive or just expensive and noisy.

Manifesto-Style Quotes

From README:

"If no Claude Code sessions are available, vibelint can still run static checks with --static."

(implying the tool is designed to degrade gracefully — static linting alone has value without session data)

Anti-patterns Targeted

  • Model-choice mismatch (using a large model when a small one would suffice)
  • Stale/incorrect project config visible to agents
  • Conversations that have low output-to-token ratios
  • Missing command coverage in CLAUDE.md
02

Architecture

vibelint — Architecture

Distribution

  • npm package, published as vibelint
  • No install required: npx vibelint downloads ~minimal bundle on first run
  • Global install: npm install -g vibelint

Install Complexity

One-liner (npx vibelint).

Directory Structure (repo)

vibelint/
  src/
    index.ts          CLI entry point
    cli.ts            commander.js setup + flags
    core/             check implementations
    utils/            helpers
    __tests__/
  tests/
  package.json
  tsconfig.json
  vitest.config.ts

Required Runtime

  • Node.js 20 or newer
  • A git repository to scan
  • ~/.claude/ directory for session-based analysis (optional — --static skips)

Target AI Tools

Claude Code exclusively (reads ~/.claude session and config format).

Config Files

None — vibelint reads existing project files (package.json, CLAUDE.md, etc.) and Claude's own session store. It writes no config.

Key Data Sources

  • ~/.claude/ — session transcripts, permission settings
  • Project root CLAUDE.md, package.json, Makefile
  • .claude/ directory (local Claude Code settings)
03

Components

vibelint — Components

CLI Binary

vibelint — single binary, no subcommands. All behavior controlled by flags.

Flags

Flag Purpose
--static Static checks only (no session data read)
--session <id> Analyze a specific session by UUID or index
--last <n> Analyze last N sessions
--json Output as JSON (for CI/piping)
--verbose Show detailed explanations per check
--cost Show only model-usage / spend signals
--no-confirm Skip token usage confirmation prompt

Check Categories

From README:

Check Description
Project config quality CLAUDE.md completeness, command coverage
Permission settings Claude Code permission-mode assessment
Repository context Coverage of key paths + workflows
Conversation efficiency Output-to-token ratio analysis
Model-choice mismatch Whether chosen model fits session complexity
Cost signals Spend per session, trend over time
Cross-session trends Patterns across multiple sessions

Source Modules

  • src/cli.tscreateCli() with Commander.js setup
  • src/core/ — check implementations (exact file names not publicly exposed)
  • src/utils/ — shared helpers

No Hooks, Scripts, or MCP Servers

vibelint ships zero hooks, zero skills, zero MCP tools. It is a pure read/report binary.

05

Prompts

vibelint — Prompts

vibelint ships no prompt files. It is a pure analysis/reporting tool, not an agent-framework or skill-pack. There are no CLAUDE.md instructions, no slash-command prompts, no skill files.

Source Code as Closest Analog

The CLI flag definitions in src/cli.ts represent the closest thing to "prompt design" in this codebase — they define what the tool communicates back to the developer:

// From src/cli.ts (verbatim)
program
  .name('vibelint')
  .description('Linter and analyzer for AI-assisted coding sessions')
  .version('0.1.0')
  .option('--static', 'Only run static checks (zero tokens, instant)', false)
  .option('--session <id>', 'Analyze a specific session by UUID or index')
  .option('--last <n>', 'Analyze last N sessions', parseInt)
  .option('--json', 'Output as JSON (for CI/piping)', false)
  .option('--verbose', 'Show detailed explanations for each check', false)
  .option('--cost', 'Show only the model usage / cost analysis section', false)
  .option('--no-confirm', 'Skip the token usage confirmation prompt')

Prompting technique: N/A — this tool reports TO a developer, not TO an LLM. The output of vibelint could be fed into a CLAUDE.md or CI step, but the tool itself contains no LLM prompts.

Design Note

This distinguishes vibelint from the rest of Batch 31: every other framework in this batch (ctxlint, clauder, DashClaw, Sponsio, etc.) uses hooks or policies that run code during an agent session. vibelint runs after sessions, feeding human developers rather than feeding the agent.

09

Uniqueness

vibelint — Uniqueness & Positioning

Differs from Seeds

vibelint occupies a distinct niche from all 11 seed frameworks: it is a post-session audit tool rather than a session-steering framework. The closest seed is spec-kit (which also has 18 hooks for context-file linting and cross-validation), but spec-kit's hooks fire during agent sessions (PreToolUse/PostToolUse) to enforce correctness in real-time. vibelint fires after sessions complete, reading transcript artifacts to score session quality for the developer's benefit — not the agent's. claude-conductor is also context-file hygiene focused but ships markdown templates rather than a linting engine. vibelint is the only tool in the seed set that treats session transcripts as the primary lint target.

Positioning

Signal type: post-session audit / cost reporting Intervention point: none (no blocking) — pure read + report Target user: developer reviewing AI session quality, CI pipeline enforcing minimum quality gates Unique feature: model-choice mismatch detection and cross-session cost trends

Observable Failure Modes

  • If Claude Code changes its session file format, vibelint breaks silently (no schema validation shown in source)
  • Limited to Claude Code — any team using Cursor/Copilot/Codex gets zero value
  • No auto-fix capability (ctxlint in this batch has --fix for broken path references)
  • Tiny install base (2 stars) — unclear how actively maintained checks are

Relationship to Other Batch 31 Frameworks

vibelint is the most minimal intervention-point framework in this batch: it intervenes after everything is done. ctxlint is closer to it (both are linters for AI context) but ctxlint runs on context files before/during sessions. All other frameworks (Sponsio, DashClaw, clauder, pi-steering-hooks) intervene before or during agent tool use.

04

Workflow

vibelint — Workflow

Phases

Phase Description Artifact
Static analysis Scan CLAUDE.md, package.json, .claude/ Config quality report
Session scan Read ~/.claude session transcripts Session quality metrics
Cost analysis Aggregate model-usage signals Cost/efficiency report
Output Terminal report or JSON stdout / piped JSON

Typical Workflow

# Step 1: Quick static check (no tokens, instant)
npx vibelint --static

# Step 2: Review last 5 sessions
npx vibelint --last 5

# Step 3: Cost focus
npx vibelint --cost

# Step 4: Full JSON for CI
npx vibelint --json

Approval Gates

None. vibelint is read-only. No approval gates, no blocking, no interactive prompts (unless --no-confirm not set, in which case a token usage confirmation appears before session analysis).

Spec Format

Not applicable — vibelint analyzes existing markdown/json/session files but does not define a spec format.

Execution Mode

One-shot: invoked per developer on-demand or in CI. No daemon, no watching (watch mode not implemented in v0.1.0).

06

Memory Context

vibelint — Memory & Context

State Storage

vibelint reads from Claude Code's own state storage (~/.claude/) but does not write any state of its own. It is purely a reader/analyzer.

Data Sources Read

Source Content
~/.claude/ Session transcripts, Claude Code settings, permission configs
Project CLAUDE.md Context file quality analysis
package.json Command cross-reference
.claude/ local dir Project-scoped Claude settings

Persistence

None. Each invocation is stateless. No database, no cache, no cross-session memory of its own analyses.

Cross-Session Analysis

The --last <n> and trend analysis features aggregate across multiple Claude Code sessions stored in ~/.claude/, but this is read-only analysis, not state persistence by vibelint.

Compaction

Not applicable.

Handoffs

Not applicable — vibelint is a standalone CLI tool, not an agent framework.

07

Orchestration

vibelint — Orchestration

Multi-Agent

No. vibelint is a single-process CLI tool. No agent spawning, no subagents, no parallelism.

Orchestration Pattern

None.

Isolation Mechanism

None. Runs in-process, reads local filesystem. No sandboxing.

Execution Mode

One-shot: developer or CI invokes npx vibelint, process runs checks, prints report, exits.

Multi-Model

No. vibelint does not call any LLM. It analyzes session artifacts statically.

Consensus

None.

Prompt Chaining

Not applicable.

Cross-Tool Portability

Low / single-tool. Reads Claude Code's session format specifically (~/.claude). Does not support Cursor, Copilot, Codex, or other AI tools.

08

Ui Cli Surface

vibelint — UI & CLI Surface

CLI Binary

Exists: yes Name: vibelint Package: npm install -g vibelint or npx vibelint Is thin wrapper: no — its own runtime, not wrapping claude/codex CLI Subcommands: 0 (all behavior via flags on single command)

Local UI

None. Terminal-only output (colored text or JSON).

Output Modes

Mode Trigger Format
Interactive terminal report default ANSI-colored text
JSON --json Machine-readable JSON for CI/piping
Cost analysis --cost Focused spend/model report
Verbose --verbose Per-check explanations

IDE Integration

None.

Observability

vibelint IS the observability tool — it turns Claude Code sessions into human-readable quality reports. No separate observability layer.

CI Integration

# .github/workflows/lint.yml (pattern)
- run: npx vibelint --static --json

The --json flag makes CI integration straightforward. The --static flag avoids needing ~/.claude in CI.

Related frameworks

same archetype · same primary tool · same memory type

BMAD-METHOD ★ 48k

Provides a full agile delivery lifecycle with named expert-persona AI collaborators that elicit the human's best thinking rather…

Agent OS ★ 4.6k

Extracts implicit codebase conventions into token-efficient markdown standards files and injects them selectively into AI agent…

Claude Conductor ★ 367

Gives Claude Code a persistent, cross-linked, auto-analyzed documentation system so it retains codebase context across sessions.

Spec-Driver (Greenfield Spec-Driven Development) ★ 25

Prevents spec rot in AI-assisted development by making implementation changes flow back into evergreen, authoritative specs via…

Anthropic Knowledge Work Plugins ★ 16k

Role-specialized plugin bundles with live MCP connectors that turn Claude into a domain expert for enterprise knowledge workers.

Codex Integration for Claude Code (skill-codex) ★ 1.3k

Single Claude Code skill that handles Codex CLI invocation correctly (stdin blocking, thinking token suppression, session resume)…