Open source · MIT

Agents generate.
Humans pick the vibe.

vibe-check is a tiny CLI that turns a folder of candidates into a browser review session.
People vote — the ranked result lands back in the terminal.

Star on GitHub
http://127.0.0.1:4173
Pick the hero direction Vibe 1 of 3

That’s the vibe. Thanks!

3 of 3 reviewed — the summary is printing in the terminal.

● ● ●  zsh — vibe-check
$
What it is

Human feedback,
on demand.

Agents can generate plenty of options. vibe-check helps them validate the alternatives with human feedback, saving time and effort for everyone. The result returns as a ranked summary.

Vibes in. Signal back.

Drop two or more self-contained .html or .md files in one directory. Each file is a Vibe — one immutable creative candidate. No build step, no uploads, no accounts.

Humans review in the browser

One local URL, one candidate at a time. Voters give a Verdict — pass, keep, love — rate stars, or leave a comment. Anything can be skipped or revisited before the session ends.

The result returns to the CLI

Stop with Ctrl+C and the Campaign Result prints where you started: Loves then Keeps, average star rating, or submitted comments — ready for an agent to act on.

How it works

From slop machine
to human feedback in three steps.

1

Serve the candidates

Run the CLI against a folder with at least two candidates. Open the local URL it prints, or use --tunnel to share the review remotely.

$ vibe-check serve ./hero-candidates
Loaded 3 vibes. Review: http://127.0.0.1:4173
2

People review one Vibe at a time

Each voter session reviews one Vibe at a time in the browser. Feedback is revisable until the session ends — no sign-up, no ceremony.

Pass Keep ♥ Love
3

Read the ranked summary

Press Ctrl+C to end the session and print the result. Pipe it, save it, or review it—--json and --output keep the signal moving.

♥ 01-bold-hero.html — loved
✓ 02-quiet-hero.md — kept
✕ 03-weird-hero.html — passed
Voting systems

Pick your feedback mechanic.

The creator chooses one voting system when opening a Campaign.
Every system allows unanswered candidates, and voters can revise earlier feedback before the session ends.

tinder default

Fast triage: Pass, Keep, or Love. A Love counts as a Keep with extra emphasis. The summary sorts by Loves, then Keeps.

stars

One-to-five stars per Vibe for relative ranking when options are close. The summary ranks by average rating, then rating count.

comment

Optional written feedback per Vibe — continue without writing anything. The summary reports comment counts and lists what people said. No ranking, just signal.

Public sessions

Or invite the whole internet.

Use --tunnel to share a temporary review link through cloudflared or ngrok. Reviewers only need the link; stopping the process closes it.

$ vibe-check serve ./candidates \
  --voting stars \
  --tunnel cloudflare
https://three-bouncy-otters.trycloudflare.com
works with: cloudflared ngrok
# website-vibes · 3 members
🦦
sam11:02 AM
hey team 🙏 help me pick a vibe real quick — like 30 seconds? https://three-bouncy-otters.trycloudflare.com
👀 4 ✋ 2
🎧
alex11:04 AM
voted! I loved the pink one!
priya is typing…

The provider executable must be installed first (cloudflared, or ngrok after ngrok config add-authtoken). Vibe Check never asks participants to identify themselves, but the provider, browser, or network may still process connection metadata.

Install

One CLI for you. One skill for your agent.

The CLI

The whole product is one npm package. The installed command is vibe-check — the scope just names the publisher.

$ npm install -g @we-are-singular/vibe-check
Node.js 22+ npm 11+ Windows macOS Linux

The agent skill

Teach your coding agent when and how to run a vibe check. Install with the Skills CLI, or print the built-in guide with vibe-check skill.

$ npx skills add we-are-singular/vibe-check
Works with compatible agents or: vibe-check skill --install
Mini docs

Everything else is one flag away.

Flag Alias What it does
--voting tinder|stars|comment --vote Choose the feedback mechanic. Default: tinder.
--name "Which hero wins?" -n Title the Campaign — a name or the review question itself.
--port 4214 -p Use another loopback port when 4173 is taken.
--tunnel cloudflare|ngrok -t Share a temporary public link through an installed tunnel provider.
--json Emit newline-delimited JSON lifecycle events for automation.
--output results.jsonl -o Mirror every event — feedback and the final summary — to a file.

Full usage, campaign-file rules, and event formats live in the README. The domain language (Vibes, Campaigns, Verdicts) is defined in CONTEXT.md.

Open source, MIT, PRs welcome.

vibe-check is early and opinionated — help shape it. File issues, propose voting systems, or just tell us what you vibe-checked.