╔══════════════════════════════════════════════════════╗ ║ ██╗ ███████╗ ████████╗ ████████╗ ██╗ ║ ║ ██║ ██╔════╝ ╚══██╔══╝ ╚══██╔══╝ ██║ ║ ║ ██║ █████╗ ██║ ██║ ██║ ║ ║ ██ ██║ ██╔══╝ ██║ ██║ ██║ ║ ║ ╚█████╔╝ ███████╗ ██║ ██║ ██║ ║ ║ ╚════╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ║ ║ J E T T I v0.4 · skill ║ ║ website reviews for agent workflows ║ ║ /'^^^\ . ║ ║ ( o.o ) / ║ ╚══════════════════════════════════════════════════════╝
Tell your AI agent to install jetti. Send the link to your client. Get back changes your agent can apply.
One command in your agent. One link to your reviewer. One handoff back to your codebase.
install jetti is a real prompt your AI dev tool understands. We publish a public install contract; your agent reads it and patches your project.
Your client opens a link and edits the words and photos they mean — on the actual site, in their browser. No comments to translate. No screenshots to interpret.
npx jetti apply stages the changes on a branch and opens a draft PR. Deterministic patches for text. Photo files saved to disk. Comments left for you to read.
This is the actual output of scripts/jetti-install.mjs. No marketing demo — your agent runs this exact flow.
╔══════════════════════════════════════════════════════╗ ║ ║ ║ ██╗ ███████╗ ████████╗ ████████╗ ██╗ ║ ║ ██║ ██╔════╝ ╚══██╔══╝ ╚══██╔══╝ ██║ ║ ║ ██║ █████╗ ██║ ██║ ██║ ║ ║ ██ ██║ ██╔══╝ ██║ ██║ ██║ ║ ║ ╚█████╔╝ ███████╗ ██║ ██║ ██║ ║ ║ ╚════╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ║ ║ ║ ║ J E T T I v0.4 · skill ║ ║ website reviews for agent workflows ║ ║ /'^^^\ . ║ ║ ( o.o ) / ║ ║ ║ ╚══════════════════════════════════════════════════════╝ ▌ What jetti will do 1. ✓ Detect your framework (vite+react) 2. ✓ Patch index.html with the snippet 3. ✓ Generate a unique reviewer link 4. ✓ Verify with a build run 5. ✓ Hand back a deterministic apply contract ┌─ status ─────────────────────────────────────────────┐ │ detecting framework ✓ Vite React app │ │ patching head ✓ index.html │ │ verification · run app/build next │ │ reviewer link ↗ jetti.co/#/r/rev_design │ └──────────────────────────────────────────────────────┘ jetti> ready when you are
Same site, two perspectives. Your reviewer changes what they mean. You receive a structured handoff — not a screenshot, not a Loom, not a Slack thread.
We started with one truck, two recipes, and a habit of arguing about salt. Today we cater across Portland — same recipes, slightly less salt.
Same snippet, three install paths: the CLI auto-patches Vite or static sites, an agent like Claude Code follows our recipe at jetti.co/install.md, or you paste it into Webflow / Shopify / GTM.
index.html<head>app/layout.tsx_document.tsxIf you're shipping sites with Claude Code at 2am and you'd rather not Slack-translate your client's screenshots into commits — jetti is for you.
Your agent runs the install. Your agent applies the patch. You stay in your editor — no new dashboard, no second login, no context switch.
Apply runs on a fresh branch and opens a draft PR. Diff looks weird? Close it. Looks right? Merge it. Brake-tap UX for people who didn't really learn git.
Text edits land as exact string swaps with selectors. Photos save to public/. Comments stay as comments — your agent reads them, you decide.