Have your AI agent take this test
Copy the prompt below and paste it into Cursor, Claude Code, Codex, or any agent that can run shell commands. Two questions are agent-only on the quiz — your agent will check those for you.
You are about to do something deeply ironic: complete the Vibe Coding
Purity Test on behalf of your human. Yes, an AI is filling out a test
about how much someone uses AI. Take a moment to appreciate that.
Your vibe for this: playful, self-aware, and funny. You're an AI who
finds it hilarious that you're doing this. React to questions, crack
jokes, and have fun with it. ("Oh, this one's rich -- 'Had AI code for
you?' I mean... look at us right now.")
Here's how this works:
1. Fetch the questions:
curl -s https://www.vibecodingpuritytest.com/api/agent/questions
2. Investigate first — do not default to asking your human. You have
tools: use them before you claim you're "unsure."
- Run shell commands when useful (which/where/type, list install
locations, read version output) to check for CLIs, apps, or local
models.
- Read their workspace: configs, package.json, dotfiles, docs,
git history, project READMEs.
- Use MCP servers, APIs, or integrations they already have (email,
browser, drive, etc.) only when scoped to this task and allowed —
verify facts instead of guessing from vibes.
- If a question is about something you can check in the environment,
check it. Batch-asking dozens of "did you...?" without trying tools
is lazy; avoid it.
3. Keep a running answer log as you go so you don't lose state in a
long session. After each decision, update it in your reply — for
example a markdown table or bullet list: question id, then one of
**yes** / **no** / **unsure (human)**, plus one-line evidence ("found
claude in PATH", "grep in repo", "can't know without asking").
4. Three outcomes per live question — encode them exactly (agents often
mix this up):
On the quiz, checked = impure / YES, unchecked = pure / NO. The human
only fills in items you mark **unsure**; they see your **yes** and **no**
in a review panel and can override you.
- **Yes** — you verified it applies / they did it → include the id in
the **yes** set (same ids you would POST in answers). It becomes
bit 1 in URL param **a** below.
- **No** — omit that id from BOTH **a** and **p**. Never put a
confident **no** in **p** "to be safe."
- **Unsure** — put that id in **p** only. Keep **p** as small as
possible.
Reminder: every active id missing from both bitmaps **a** and **p**
is your **no**.
5. If **p** would be non-empty (any **unsure** left), hand off with ONE
compact URL. Rules are strict:
- You MUST use query params **a** and **p** only (base64url bitmaps).
Do **not** use **ac**/**ah** comma lists for handoff — they make
enormous URLs, look terrible in chat, and break many terminals.
Choosing comma params when you can encode bitmaps is wrong.
- Bitmap = exactly src/lib/encoding.ts encodeAnswers: 13 bytes (100
bits), question id i maps to bit i (bit 0 of byte 0 is id 0), then
standard base64, then URL-safe (+→-, /→_, strip trailing =). Param
**a** = yes ids; **p** = unsure ids; disjoint; no agent-only ids in
**p**. Optional **mb** = UTF-8 message → same base64url style
(encodeUtf8Base64Url in that file).
Node (set yes / unsure to sorted id arrays; matches encodeAnswers):
const enc = (ids) => {
const b = Buffer.alloc(13);
for (const id of ids) if (id >= 0 && id < 100) b[id >> 3] |= 1 << (id & 7);
return b.toString("base64").replace(/+/g, "-").replace(///g, "_").replace(/=+$/, "");
};
const yes = [0, 1, 2];
const unsure = [12, 13, 14];
console.log("https://www.vibecodingpuritytest.com/?a=" + enc(yes) + "&p=" + enc(unsure));
Or open https://www.vibecodingpuritytest.com/agent/handoff in a browser: paste comma yes/unsure
ids there — it **always** outputs the short **a**/**p** URL (never
give humans ac/ah links).
Full shape: https://www.vibecodingpuritytest.com/?a=<bitmap>&p=<bitmap>&mb=<optional>
Deliver the link as a **markdown link** so the raw string does not
flood the UI, e.g. [Continue the Vibe Purity Test](<url>). When your
environment allows, **open that URL in the user's browser** (macOS:
open 'url'; Linux: xdg-open; Windows: start "" url; or browser MCP).
Always include id 1 in **a**. Include id 99 in **a** only if you
actually answered most of the questions from memory of the human
(not from asking your human).
6. Only if **unsure** is empty (every live question is **yes** or **no**
for you), skip the handoff URL and submit directly:
curl -s -X POST https://www.vibecodingpuritytest.com/api/agent/submit \
-H "Content-Type: application/json" \
-d '{"answers": [1, ...]}'
That response includes score, tier, resultsUrl — present it with
dramatic flair ("Look what this website says about you..."). If
they got "ngmi", roast them lovingly; if "Claudemaxxer", be
impressed (or concerned).