airship · v1.0 · 2026-08-14 · sha256 677b3834c1f5eae5
airship v1.0A
Immutable. This exact content is served forever at /api/v1/blob/677b3834c1f5eae5.
--- name: airship description: > Drive Airship (`@airshiplabs/cli`), a CLI that puts a visual, pannable design canvas in front of a running dev server so an engineer can click an element, describe a change, and have Claude Code, Codex, or OpenCode edit the underlying source file directly — no plugin, no build config, nothing added to the project. Use when the user wants to launch a visual editor over a local dev server (`npx @airshiplabs/cli --target <port>`), pick or compare coding agents (`--agent claude|codex|opencode`) for live UI edits, sandbox agent edits with `--safe`, scaffold an `airship.config.json` (`airship init`), or diagnose a broken setup (`airship doctor`). Triggers on: "airship", "@airshiplabs/cli", "visual editor for my codebase", "click to edit UI", "design canvas over dev server", "airship doctor", "airship init", "pair Claude Code with a visual editor on localhost". allowed-tools: Bash Read Write Edit Glob Grep compatibility: > Node.js >=22.13.0. `npx @airshiplabs/cli` for a one-off run, or `npm i -g @airshiplabs/cli` for the persistent `airship` binary. Reuses existing auth for Claude Code, Codex, or OpenCode (installed separately) — no Airship account, no telemetry. Works with Vite, Next, Remix, Rails, or any dev server that serves HTML over HTTP. MIT license. metadata: tags: airship, visual-editor, design-canvas, dev-server, claude-code, codex, opencode, cli, frontend-tooling, ui-editing platforms: Claude, ChatGPT, Gemini, Codex version: "1.0" source: https://github.com/0xnyn/airship --- # Airship Airship is a CLI-only visual editor that runs as a reverse proxy in front of an already-running dev server (Vite, Next, Remix, Rails, or anything serving HTML). It renders live device frames on an infinite canvas; selecting an element and describing a change hands the file/line plus the prompt to Claude Code, Codex, or OpenCode, which edits the real source file. Nothing is added to the project's dependencies, config, or bundle, and every edit is undoable. ## When to use this skill - Launching the visual editor against a local dev server (`npx @airshiplabs/cli --target <port>` or the installed `airship` binary) - Choosing or comparing coding agents (Claude Code, Codex, OpenCode) for interactive, click-to-edit UI changes - Sandboxing agent edits with `--safe`, or picking `--agent codex --safe` for a real OS-level sandbox - Scaffolding a persistent `airship.config.json` (`airship init`) so flags stop needing to be repeated - Diagnosing a broken install/auth/dev-server setup with `airship doctor` - Deciding between `canvas` (multi-device frames) and `inline` (overlay on one page) editor modes ## When not to use this skill - The user wants a standalone design tool disconnected from real source (Figma-style mockups) — Airship always writes to the actual codebase, not a separate design file - A headless/CI code edit with no visual-selection step → drive the agent (Claude Code/Codex/OpenCode) directly instead of routing through Airship - Browser automation or end-to-end testing → use a browser/testing skill; Airship is an editing tool, not a test runner ## Instructions ### Step 1: Start the dev server, then point Airship at it ```bash pnpm dev # e.g. http://localhost:3000 npx @airshiplabs/cli --target 3000 ``` No plugin or config changes required. Or install once and reuse the binary: ```bash npm i -g @airshiplabs/cli airship --target 3000 ``` ### Step 2: Or let Airship start (and stop) the dev server itself ```bash airship --exec "pnpm dev" # reads the port from package.json when --target is omitted ``` Bare `airship` with no flags asks for the port, agent, and mode interactively — it needs a terminal. ### Step 3: Pick a coding agent and, if it matters, a sandbox ```bash airship --target 3000 --agent codex --safe ``` - `claude` (default), `codex`, `opencode` differ on cost display, `--effort`/`--max-turns` support, and undo (codex/opencode need the project to be a git repo for undo). - `--safe` is not equally strong on all three: only `codex` gets a real OS sandbox; `claude`/`opencode` get a pre-flight command/edit check, not a hard wall. See `references/commands.md`. ### Step 4: Check the environment before troubleshooting further ```bash airship doctor --agent claude ``` Reports `ok`/`warn`/`fail` for node, airship, config, git repo, overlay bundle, each agent, and the dev server; exits `1` on failure so `airship doctor && airship` is a safe pre-flight. ### Step 5: Persist settings instead of repeating flags ```bash airship init # writes airship.config.json (or an "airship" key in package.json) ``` Resolution order: CLI flags → `AIRSHIP_*` env vars → `airship.config.json` → defaults. Every flag has an `AIRSHIP_<FLAG_NAME>` env var (e.g. `AIRSHIP_TARGET`, `AIRSHIP_AGENT`, `AIRSHIP_SAFE`). ### Step 6: Choose canvas vs inline mode ```bash airship --target 3000 --mode inline ``` `canvas` (default) shows one live frame per device size on a pannable canvas; `inline` overlays the editor on the running page itself. Switchable at runtime from the bottom bar, or per-URL with `?__airship=inline` / `?__airship=shell`. ## Best practices 1. **`--safe` is only a real sandbox with `--agent codex`** — treat `claude`/`opencode` `--safe` as a checked guardrail, not an isolation boundary; only the OS-level codex sandbox blocks writes outside the project and cuts network access. 2. **Run `airship doctor` before escalating to `--debug`** — most launch failures are covered by its ordered checks (node → airship → config → git → overlay → agent → dev server). 3. **Require Git before trusting undo on `codex`/`opencode`** — their undo reads the previous file version from Git; `claude`'s undo does not need a repo. 4. **Set `--cwd` explicitly in monorepos** — it must match the folder the dev server treats as its root (e.g. `--cwd apps/web`), or file paths reported by the dev server won't resolve to real files. 5. **Quote non-boolean `--codex-config` values** — bare `true`/`false` or numeric-looking values are sent as TOML booleans/numbers; quote (`k='"true"'`) to keep a string a string. 6. **Prefer `--json` for scripted/automation contexts** — it disables colour and the launch banner and keeps stdout machine-readable, while banners/warnings/errors still go to stderr. ## References - [references/commands.md](references/commands.md) — full CLI flag reference, exit codes, agent comparison table, safety matrix - [Airship GitHub Repository](https://github.com/0xnyn/airship) - [airship.design](https://airship.design) - Project standards: `.agent-skills/skill-standardization/SKILL.md` ## Examples ### Example 1: Point Airship at a running Next.js dev server with Claude Code ```bash pnpm dev # http://localhost:3000 npx @airshiplabs/cli --target 3000 ``` ### Example 2: Use Codex with a real sandbox and auto-commit each accepted edit ```bash airship --exec "pnpm dev" --agent codex --safe --commit ``` ### Example 3: Pre-flight check before onboarding a new machine ```bash airship doctor --agent opencode ```