Help us improve
Share bugs, ideas, or general feedback.
From canary
Drives a real browser for one-off tasks: navigate, click, fill, scrape, screenshot, and return results. Use for quick automation, scraping, form filling, or checking a site without recording.
npx claudepluginhub wizenheimer/canary --plugin canaryHow this skill is triggered — by the user, by Claude, or both
Slash command
/canary:canary-automateThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Run a script against a real browser and return the result — ephemeral, nothing recorded. Use the
Automates browser tasks like form filling, data extraction, and multi-step web workflows using Yutori Navigator agent. Useful for website interactions requiring clicking, typing, or navigation.
Automates browser tasks with AI: navigate sites, fill forms, extract structured data, log in with credentials, and build reusable workflows. Use for web scraping, UI interactions without fixed selectors.
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
Run a script against a real browser and return the result — ephemeral, nothing recorded. Use the canary-scripting skill for the API.
User says: "get the top 10 Hacker News titles" or "scrape the headlines"
Write a script that opens the page and evaluates the data, run it, return the JSON it logs.
User says: "is the pricing page up and what's the headline?" or "screenshot the homepage"
goto, read the element (or screenshot), report.
npx @usecanary/cli install (one-time; downloads Chromium).browser.getPage, page.goto,
locator/evaluate, console.log the result), observing first on unknown pages (see Hard
rules).npx @usecanary/browser run ./script.js (or pipe the script via stdin).page.url(), page.title(), and (await page.snapshotForAI()).full (or a targeted
locator(...).count()), pick a better selector, re-run. Named pages persist between runs, so
state carries over.WARN, don't
crash) — but don't paper over a miss you can fix by observing.npx @usecanary/browser stop (alias of canary stop / canary daemon stop).(await page.snapshotForAI()).full to see what
is there, pick a semantic selector from it (getByRole, getByText), then interact. Never
guess selectors blind.