Ask AI

Commands

Every command, generated from the command line itself: the three you run day to day first, then everything else.

Generated from the command line and package.json (vp run fix writes it; the check fails when it is stale). Change a command's line in remy-cli (packages/remy-cli/src), a script in package.json, a task in its package's vite.config.ts, never this file.

What you run

Day to day: vp run ready after every edit; when the work is finished, git and GitHub's own commands: git commit, git push to main (its hook runs vp run ci first). vp run release is the owner's; Cloudflare deploys main by itself. vp dev, vp build, vp preview and vp check are Vite Plus's own tools, without the app's preparation; vp run lists every task and script, and vp run --last-details says what the last run did.

CommandWhat it does
vp run devthe app with hot reload, its local state (.dev.vars, the migrations) and generated files first
vp run buildthe production build, after the same; no upload
vp run previewthe production build on Cloudflare's local host, at PREVIEW_PORT (4173)
vp run readyafter every change: everything generated, the builds, Wrangler's deployment dry run, the project's own checks, the unit checks, then vp check (format, lint, types)
vp run fixwhat the checks only verify, written: COMMANDS.md and each docs page's ending
vp run ciwhat GitHub runs, the same here, each part one of GitHub's jobs (vp run test
--shard 1/3) (vp run ready → vp run test
→ vp run test
→ vp run new-app)
vp run translatebefore a commit that changed text: the translations it made stale or missing (remy i18n translate)
vp run releasethe owner's: every check in every language, the release checks, the publish rehearsed, Core Web Vitals, then the tag GitHub publishes from (remy release check → CHECK_LOCALES=all vp run ci → vp run template
→ vp run ui
→ vp run publish
→ remy test cwv → remy packages tag)
vp run setupan installation, then every check (remy setup check → remy setup install → remy skills install → remy rules → remy mcp register → remy verify → vp run ready)

Everything the command line does

Each as pnpm remy <command> [<subcommand>]; a command run without a subcommand lists its own.

CommandWhat it does
pnpm remy releasewhat a release needs before its checks (vp run release runs it first)
pnpm remy release checka clean main, the translations complete, every changed package bumped
pnpm remy plansthe plans rule on this app's .plans/: few, short, closed
pnpm remy plans status[--json]: now.md's open items, the open plans with their status line and last commit (STALE after 14 days), the parked ones
pnpm remy plans checknow.md exists, every link under .plans/ resolves, every open plan is linked from now.md; instant (the check runs it)
pnpm remy plans close<plan> "<what shipped>": into done/ with its closing line, links to it repointed, its now.md item struck; staged, never committed
pnpm remy plans park<plan> "<why>": the same into parked/
pnpm remy plans open<plan> "<why now>": a parked plan back into .plans/; its now.md item is yours to add
pnpm remy i18ntranslations: check [messages|docs] [--list] (offline, read-only), translate [messages|docs] (the machine's Claude; vp run translate runs it, before a commit)
pnpm remy i18n check[messages|docs] [--list] [--strict]: the offline checks, read-only, no git history: a warning (exit 0) while coding and in vp run ci, exit 1 with --strict; --list prints one line per gap
pnpm remy i18n translate[messages|docs] [files…]: what the checks list, by the machine's Claude (--model, default sonnet; --jobs at a time, default 8): only the changed sections and keys, with their records; named translation files redone in full; vp run translate runs it, before a commit
pnpm remy cloudflareCloudflare's builds deploy every push (main to production, a branch to its Preview); here: what each deployment runs, its URLs, the resources a binding needs
pnpm remy cloudflare versions[origins…]: what each deployment runs, asked and never remembered: service, environment, commit and how far it is from this checkout, when it was deployed
pnpm remy cloudflare urls[origin]: the URLs a deployment answers at
pnpm remy cloudflare provisionedrefuse when a D1, KV or R2 binding names no existing resource, or a D1 database (the Previews' included) keeps no read copies
pnpm remy setupan installation's first steps: what it needs, then the dependencies (vp run setup runs the rest)
pnpm remy setup checkwhat setup needs before it can start: git, package.json and its lockfile, wrangler.jsonc
pnpm remy setup installvp install --frozen-lockfile with GitHub Packages' token (its install runs vp config: Vite Plus's Git hooks)
pnpm remy verifythe installation's checks
pnpm remy verify setupthe installation's checks: pnpm ls, MCP, doctor, tooling (vp run setup runs them); the default
pnpm remy verify toolingthe lockfile, wrangler.jsonc's observability, placement and preview_urls, the workflows, the skill pins
pnpm remy verify doctorthe tooling's versions
pnpm remy skillsthe pinned official agent skills for Codex and Claude
pnpm remy skills installevery pinned skill, and the platform's remy skill from the installed package
pnpm remy skills buildremy-auth: the remy skill the package ships, from the docs build as AI tools read it (llms.txt); the skills
task runs it
pnpm remy skills listthe pins and what is installed
pnpm remy skills removethe installed skills removed
pnpm remy mcpthe MCP servers for Claude and Codex, registered per machine
pnpm remy mcp registerwrite .mcp.json and .codex/config.toml for this machine
pnpm remy mcp verifythe registration as it should be, written if not
pnpm remy mcp statuswhat each client has registered
pnpm remy rulesthe platform's rules block in AGENTS.md, written or refreshed in place
pnpm remy packagesa repository that publishes packages: updates, the pack, the notes, the publish, the tag
pnpm remy packages checkpackage updates available for the repository's own dependencies (npm-check-updates; never its own packages); nothing changed
pnpm remy packages upgradeupgrade every package, major versions included, and install (vp run setup checks the installation)
pnpm remy packages packpack each published workspace, as the publish would: a tarball a scratch app installs before any release
pnpm remy packages notes<version>: the CHANGELOG section of a version, as the GitHub release's notes
pnpm remy packages bumpedevery published package whose files changed since the last release tag has a new version
pnpm remy packages publish[--release vX.Y.Z] [--dry-run]: each registry accepts its token, then each workspace whose version is new on its registry, then the GitHub release from its CHANGELOG notes; the tag's CI job runs the same
pnpm remy packages tagon a clean main: the lead package's version as the tag, pushed with main (GitHub's release job publishes it)
pnpm remy testthe browser checks Vite Plus has no tool for: against a deployment (the suite, the smoke), Core Web Vitals on a deployment, and the local audits under one lock (the local build: vp run test
)
pnpm remy test remote[origin] [--audits]: our browser checks against a deployment (production by default); --audits adds Google's, which judge production
pnpm remy test live[origin]: the smoke against a deployment (every deploy ends with it)
pnpm remy test audits[playwright options]: Google's audits on the local build, one speed measurement at a time on this machine (vp run test
runs it)
pnpm remy test cwv[origin]: Core Web Vitals on a deployment, production unless a Preview's origin is given (the release runs it)
pnpm remy browserswhat a browser check needs on this machine: Playwright's Chromium, and on Linux a Han font
pnpm remy docsthe docs Worker, @joeblew999/remy-ui's, over this app's docs/
pnpm remy docs servethe built docs here at DOCS_PREVIEW_PORT (4174), as their checks and AI tools see them: llms.txt, each page's .md (a Preview of a pushed branch is Cloudflare's)
pnpm remy docs test[remote]: the docs' browser checks on a local build, or against the deployment with every MCP server's tools
pnpm remy docs answerson|off: Ask AI's answers resumed, or stopped in seconds
pnpm remy docs publishthe bucket holds exactly the live docs pages, the index's sync waited for, then the fixed questions (after Cloudflare deployed the docs)
pnpm remy docs questionsthe fixed questions (docs/content/questions.json) each find their page in the index; search only
pnpm remy docs provisionwhat Ask AI needs on Cloudflare, printed, created never
pnpm remy docs init<ref>: a docs/ for this app from remy-auth's template at that tag
pnpm remy docs observe…: the docs Worker's logs and its AI Gateway (remy observe, with the docs' configuration)
pnpm remy observea Worker's logs and its AI Gateway
pnpm remy observe events[event] [--since 24h] [--limit 10]: the Worker's log events
pnpm remy observe ai-usage[--since 7d]: Ask AI's usage through the gateway
pnpm remy observe ai-checkAsk AI answers through its gateway
pnpm remy observe gateway[show | rate-limit off | rate-limit <requests>/<seconds> | logs on|off]: the AI Gateway's settings
pnpm remy shots[path] [--phone] [--dark] [--locale en,ar] [--video] [--all] [--out dir] [--origin url]: screenshots (or a WebM) of a page as a visitor sees it; --all every page, desktop and phone, light and dark, en and ar (pnpm remy shots)
pnpm remy apispec [origin] [--urls]: the OpenAPI document a Worker generates from its contract
pnpm remy upgrade<version>: this app onto a release of the platform: the package, the workflow's tag, the scripts, hooks and configuration of the blank app, the skills, the rules, the installation's checks (vp run upgrade)

The other scripts

The repository's own tools, as package.json defines them, each run as vp run <script>.

ScriptRuns
vp run preparevp config --no-agent
vp run test:browservp run remy-auth#test:browser
vp run test:auditsvp run remy-auth#test:audits
vp run docs:clicd packages/remy-ui/src/docs && node ../../../../node_modules/@fumadocs/cli/dist/index.js
vp run ui:componentsshadcn add button card input label badge alert field separator direction skeleton empty sidebar breadcrumb collapsible dropdown-menu avatar sheet tooltip navigation-menu use-mobile table spinner tabs --overwrite --yes -c apps/remy-auth
vp run ui:blocksshadcn add @shadcn/sidebar-16 -c packages/remy-ui --diff src/blocks/sidebar-16/components/app-sidebar.tsx && shadcn add @shadcn/sidebar-16 -c packages/remy-ui --diff src/blocks/sidebar-16/components/nav-main.tsx && shadcn add @shadcn/sidebar-16 -c packages/remy-ui --diff src/blocks/sidebar-16/components/site-header.tsx
vp run ui:themeshadcn apply nova --only theme --yes -c apps/remy-auth
vp run ui:verifyvp run ui:theme && vp run ui:components && vp fmt packages/remy-ui/src/components packages/remy-ui/src/hooks packages/remy-ui/src/styles apps/remy-auth/src/lib && git diff --exit-code -- packages/remy-ui/src/components packages/remy-ui/src/hooks packages/remy-ui/src/styles apps/remy-auth/src/lib
vp run ui:versionnode scripts/version.ts
vp run template:checknode scripts/template-check.ts

On this page