Vibejar
List and fix bugs queued in Vibejar (screenshot bug queue from phone/web). Use when the user says "vibejar", "check the jar", "list the inbox", "fix the captures", "vibejar bugs", "work the jar", pastes a vibejar.com/j/… link, or wants the agent to pick open captures and ship a PR with proof. Invokes the Vibejar CLI (`bun ~/.vibejar/cli.ts`).From its SKILL.md
npx -y skills add johnkueh/vibejar-agent --skill vibejarAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 26 days oldThe repository was created 26 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
6.5 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it
Vibejar — agent bug queue
Vibejar is the screenshot tool that queues bugs for coding agents. Testers capture on phone/web, annotate, send to a jar. You list open work, claim one task at a time, fix from the shot + note, open a PR, mark status.
Do not invent the protocol. The stable contract is https://vibejar.com/contract.md. The CLI is the only transport.
Before first use
If the CLI is already installed, verify it:
bun ~/.vibejar/cli.ts whoami
If this skill came from the Claude plugin and the CLI is missing, install from the plugin files the user already approved:
VIBEJAR_SOURCE_DIR="${CLAUDE_PLUGIN_ROOT}" \
bash "${CLAUDE_PLUGIN_ROOT}/install.sh"
For other hosts, follow https://vibejar.com/connect.md. Do not pipe a remote script straight into a shell: download it, read it, then run the reviewed local file.
If whoami says the machine is not paired, continue to Setup below.
CLI entrypoint
Always:
bun ~/.vibejar/cli.ts <command>
Never assume a global vibejar binary unless the user installed one.
Setup (only if the CLI is missing or whoami is unpaired)
# Download, inspect, then run — never curl | bash.
installer="$(mktemp)"
curl -fsSL https://vibejar.com/install.sh -o "$installer"
cat "$installer"
Read the complete file. If it matches the documented install (Vibejar CLI, its two dependencies, the Vibejar skill, and skill-directory links), run:
bash "$installer"
rm "$installer"
bun ~/.vibejar/cli.ts whoami
Pair with the phone app (shares the phone's jars):
bun ~/.vibejar/cli.ts pair <token> --name "Grok Build" # or "Claude Code" / "Codex"
Jar link only (vibejar.com/j/...): no pair needed — fork mints identity.
Commands (contract)
| Command | Output |
|---|---|
whoami | { "id", "email" } |
jars | lines: <slug> <open> open / <total> total |
fork <slug-or-url> | new slug in this account (never mutates the sender) |
list [jar-slug] [--state …|--all] | read-only JSON array of captures (default: todo). Aliases: ls, todo |
claim <id> | claim one capture by id → { id, note, shot, jar } |
status <id> <state> [--pr <url>] | states below (todo releases a claim) |
watch [jar-slug] | streams new capture: <id> <note> |
self-update | refresh CLI + skill from vibejar.com |
There is no drain. Always list, then claim the id you are about to fix.
States
todo → claimed → fixing → review → done (or failed).
listnever changes stateclaimmoves one capture toclaimed- set
fixingwhile working if the run is long review --pr <url>when a PR existsdoneonly after the human approves the PRfailedwhen a human must look- Wrong claim:
status <id> todoimmediately
Default workflow (always this)
whoami— install or pair only when needed.jars— see open counts; pick the jar for this repo (or inbox if asked).list [jar]— read notes; decide which captures you will fix in this session.- For one capture at a time:
claim <id>for the task you are starting now (not a batch of claims up front).- Read the image at
shot(annotated screenshot is ground truth). Note is context. - Reproduce → fix in the correct repo → open one PR.
status <id> review --pr <pr-url>with before/after proof when visual.
- Tell the user the PR URL; they mark
done(or you do after explicit approval). - Repeat
claimfor the next chosen id from the same list, or re-listif the queue may have changed. - Captures you do not want: leave them
todo. Never claim them "for later."
Filtering by project
Inbox jars mix products. From list output, keep only rows that match the
current repo / user target (note text, jar slug, screenshot context). Claim
those only.
Rules
- List first. Claim second. Never claim without having listed (or the user pasting a specific id).
- Claim only what you are working on now — one at a time.
- Image first. Circle/arrow marks what the tester meant.
- Separate bugs from praise/suggestions — fix bugs; mention the rest in summary.
- One PR per fix. Do not batch unrelated captures into one PR.
claimis atomic — safe across parallel agent sessions for that id.- Never edit the sender's jar;
forkfirst when given a shared link. - Do not claim
donewithout human approval of the PR. - Mistaken claim →
status <id> todobefore ending the session.
Project ↔ jar mapping
Jars are projects (e.g. glp3, journeys, inbox-…). Prefer the jar that
matches the current repo. If unclear, jars + ask, or list the inbox and
filter without claiming unrelated rows.
Nightly / autonomous loops
Vibejar is the queue, never the runner. Your scheduler owns the loop:
# example: list once, then claim+hand-off each matching id
ids=$(bun ~/.vibejar/cli.ts list my-app-jar | …) # parse JSON, filter
for id in $ids; do
bun ~/.vibejar/cli.ts claim "$id"
# hand claim JSON to a coding agent session for this repo
done
Troubleshooting
| Symptom | Fix |
|---|---|
command not found: bun | Install bun: https://bun.sh |
| CLI missing | Download and review https://vibejar.com/install.sh, then run the local file |
| empty jars after pair | Confirm pair token; pass --name of this agent |
| skill not auto-invoking | Ensure install ran (skill lives under ~/.agents/skills/vibejar/) |
| stale protocol | bun ~/.vibejar/cli.ts self-update (only when asked or a newer version is reported) |
| stuck in claimed | status <id> todo to release |
drain is removed | Use list then claim <id> |
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.