/cli-commands
MUST use when using the CLI, including debugging job failures and inspecting run history via `wmill job`.
Claude Code
$ npx -y skills add windmill-labs/windmill --skill cli-commands --agent claude-code
Codex
$ npx skills add windmill-labs/windmill --skill cli-commands -a codex -y
Cursor
$ npx skills add windmill-labs/windmill --skill cli-commands -a cursor -y
Gemini CLI
$ npx skills add windmill-labs/windmill --skill cli-commands -a gemini-cli -y
GitHub Copilot
$ npx skills add windmill-labs/windmill --skill cli-commands -a github-copilot -y
OpenCode
$ npx skills add windmill-labs/windmill --skill cli-commands -a opencode -y
Windsurf
$ npx skills add windmill-labs/windmill --skill cli-commands -a windsurf -y
SKILL.md
cli-commands.SKILL.mdname: cli-commands
description: MUST use when using the CLI, including debugging job failures and inspecting run history via `wmill job`.
Windmill CLI Commands
The Windmill CLI (`wmill`) provides commands for managing scripts, flows, apps, and other resources.
Global Options
- `--workspace <workspace:string>` - Specify the target workspace. This overrides the default workspace.
- `--debug --verbose` - Show debug/verbose logs
- `--show-diffs` - Show diff informations when syncing (may show sensitive informations)
- `--token <token:string>` - Specify an API token. This will override any stored token.
- `--base-url <baseUrl:string>` - Specify the base URL of the API. If used, --token and --workspace are required and no local remote/workspace already set will be used.
- `--config-dir <configDir:string>` - Specify a custom config directory. Overrides WMILL_CONFIG_DIR environment variable and default ~/.config location.
Commands
app
app related commands
**Options:**
- `--json` - Output as JSON (for piping to jq)
**Subcommands:**
- `app list` - list all apps
- `--json` - Output as JSON (for piping to jq)
- `app get <path:string>` - get an app's details
- `--json` - Output as JSON (for piping to jq)
- `app push [file_path:string] [remote_path:string]` - push a local app. With no args, infers the app from the current directory and the remote path from its location relative to wmill.yaml.
- `app dev [app_folder:string]` - Start a development server for building apps with live reload and hot module replacement
- `--port <port:number>` - Port to run the dev server on (will find next available port if occupied)
- `--host <host:string>` - Host to bind the dev server to
- `--entry <entry:string>` - Entry point file (default: index.ts for Svelte, index.tsx otherwise)
- `--no-open` - Don't automatically open the browser
- `--recording` - Frame the app in a shell with a Record button, to capture a replayable session recording of the app under development
- `app lint [app_folder:string]` - Lint a raw app folder to validate structure and buildability
- `--fix` - Attempt to fix common issues (not implemented yet)
- `app bundle [app_folder:string]` - Bundle a raw app folder to js/css without deploying it
- `--out <dir:string>` - Directory to write bundle.js and bundle.css into (default: <app_folder>/dist)
- `--no-minify` - Skip minification
- `app new` - create a new raw app from a template
- `--summary <summary:string>` - App summary (short description). Skips the prompt when provided. Triggers non-interactive mode.
- `--path <path:string>` - App path (e.g., f/folder/my_app or u/username/my_app). Skips the prompt when provided. Triggers non-interactive mode.
- `--framework <framework:string>` - Framework template: react19 | react18 | svelte5. Skips the prompt when provided. Triggers non-interactive mode.
- `--datatable <datatable:string>` - Datatable to wire up. Without this flag in non-interactive mode, no datatable is configured.
- `--schema <schema:string>` - Schema to use with --datatable. If it doesn't exist yet, a sql_to_apply/ migration (CREATE SCHEMA IF NOT EXISTS) is written for it.
- `--overwrite` - Overwrite the target directory if it already exists, without prompting.
- `--no-open-in-desktop` - Do not prompt to open the new app in Claude Desktop.
- `app generate-agents [app_folder:string]` - regenerate AGENTS.md and DATATABLES.md from remote workspace
- `app set-permissioned-as <path:string> <email:string>` - Set the on_behalf_of_email for an app (requires admin or wm_deployers group)
audit
View audit logs (requires admin)
**Subcommands:**
- `audit list` - List audit log entries
- `audit get <id:string>` - Get a specific audit log entry
- `--json` - Output as JSON (for piping to jq)
config
Show all available wmill.yaml configuration options
**Options:**
- `--json` - Output as JSON for programmatic consumption
**Subcommands:**
- `config migrate` - Migrate wmill.yaml from gitBranches/environments to workspaces format
datatable
datatable related commands
**Subcommands:**
- `datatable list` - list all datatables in the workspace
- `--json` - Output as JSON (for piping to jq)
- `datatable run <sql:string>` - run a SQL query on a datatable
- `-n --name <name:string>` - Datatable name (default: main)
- `-s --silent` - Output only the final result as JSON. Useful for scripting.
- `datatable migrate` - manage datatable migrations
- `datatable migrate new <name:string>` - scaffold a new migration (.up.sql / .down.sql files)
- `-d --datatable <datatable:string>` - Target datatable (default: main)
- `-s --schemas <schemas:string>` - Comma-separated schemas the migration changes, written as its `-- schemas` line. Without it the migration applies to the whole database and every later migration waits for it
- `datatable migrate up` - apply all pending migrations to the main datatable (or one via --datatable)
- `-d --datatable <datatable:string>` - Target datatable (default: main)
- `--schema <schema:string>` - Apply only the pending migrations that declare this schema; refused while an earlier overlapping migration is pending
- `datatable migrate down` - roll back the most recent migration on the main datatable (or one via --datatable)
- `-d --datatable <datatable:string>` - Target datatable (default: main)
- `datatable migrate status` - show applied and pending migrations on the main datatable (or one via --datatable)
- `-d --datatable <datatable:string>` - Target datatable (default: main)
- `--json` - Output as JSON (for piping to jq)
- `datatable create [name:string]` - register a datatable database in the workspace (default: instance-backed 'main') so scripts can use datatable://<name>
- `--resource <resource:string>` - Back the datatable with an existing postgresql resource path instead of the instance database
- `--force` - Allow adding to a workspace that already has da
Read more
name: cli-commands description: MUST use when using the CLI, including debugging job failures and inspecting run history via `wmill job`.
Windmill CLI Commands
The Windmill CLI (`wmill`) provides commands for managing scripts, flows, apps, and other resources.
Global Options
- `--workspace <workspace:string>` - Specify the target workspace. This overrides the default workspace.
- `--debug --verbose` - Show debug/verbose logs
- `--show-diffs` - Show diff informations when syncing (may show sensitive informations)
- `--token <token:string>` - Specify an API token. This will override any stored token.
- `--base-url <baseUrl:string>` - Specify the base URL of the API. If used, --token and --workspace are required and no local remote/workspace already set will be used.
- `--config-dir <configDir:string>` - Specify a custom config directory. Overrides WMILL_CONFIG_DIR environment variable and default ~/.config location.
Commands
app
app related commands
**Options:**
- `--json` - Output as JSON (for piping to jq)
**Subcommands:**
- `app list` - list all apps
- `--json` - Output as JSON (for piping to jq)
- `app get <path:string>` - get an app's details
- `--json` - Output as JSON (for piping to jq)
- `app push [file_path:string] [remote_path:string]` - push a local app. With no args, infers the app from the current directory and the remote path from its location relative to wmill.yaml.
- `app dev [app_folder:string]` - Start a development server for building apps with live reload and hot module replacement
- `--port <port:number>` - Port to run the dev server on (will find next available port if occupied)
- `--host <host:string>` - Host to bind the dev server to
- `--entry <entry:string>` - Entry point file (default: index.ts for Svelte, index.tsx otherwise)
- `--no-open` - Don't automatically open the browser
- `--recording` - Frame the app in a shell with a Record button, to capture a replayable session recording of the app under development
- `app lint [app_folder:string]` - Lint a raw app folder to validate structure and buildability
- `--fix` - Attempt to fix common issues (not implemented yet)
- `app bundle [app_folder:string]` - Bundle a raw app folder to js/css without deploying it
- `--out <dir:string>` - Directory to write bundle.js and bundle.css into (default: <app_folder>/dist)
- `--no-minify` - Skip minification
- `app new` - create a new raw app from a template
- `--summary <summary:string>` - App summary (short description). Skips the prompt when provided. Triggers non-interactive mode.
- `--path <path:string>` - App path (e.g., f/folder/my_app or u/username/my_app). Skips the prompt when provided. Triggers non-interactive mode.
- `--framework <framework:string>` - Framework template: react19 | react18 | svelte5. Skips the prompt when provided. Triggers non-interactive mode.
- `--datatable <datatable:string>` - Datatable to wire up. Without this flag in non-interactive mode, no datatable is configured.
- `--schema <schema:string>` - Schema to use with --datatable. If it doesn't exist yet, a sql_to_apply/ migration (CREATE SCHEMA IF NOT EXISTS) is written for it.
- `--overwrite` - Overwrite the target directory if it already exists, without prompting.
- `--no-open-in-desktop` - Do not prompt to open the new app in Claude Desktop.
- `app generate-agents [app_folder:string]` - regenerate AGENTS.md and DATATABLES.md from remote workspace
- `app set-permissioned-as <path:string> <email:string>` - Set the on_behalf_of_email for an app (requires admin or wm_deployers group)
audit
View audit logs (requires admin)
**Subcommands:**
- `audit list` - List audit log entries
- `audit get <id:string>` - Get a specific audit log entry
- `--json` - Output as JSON (for piping to jq)
config
Show all available wmill.yaml configuration options
**Options:**
- `--json` - Output as JSON for programmatic consumption
**Subcommands:**
- `config migrate` - Migrate wmill.yaml from gitBranches/environments to workspaces format
datatable
datatable related commands
**Subcommands:**
- `datatable list` - list all datatables in the workspace
- `--json` - Output as JSON (for piping to jq)
- `datatable run <sql:string>` - run a SQL query on a datatable
- `-n --name <name:string>` - Datatable name (default: main)
- `-s --silent` - Output only the final result as JSON. Useful for scripting.
- `datatable migrate` - manage datatable migrations
- `datatable migrate new <name:string>` - scaffold a new migration (.up.sql / .down.sql files)
- `-d --datatable <datatable:string>` - Target datatable (default: main)
- `-s --schemas <schemas:string>` - Comma-separated schemas the migration changes, written as its `-- schemas` line. Without it the migration applies to the whole database and every later migration waits for it
- `datatable migrate up` - apply all pending migrations to the main datatable (or one via --datatable)
- `-d --datatable <datatable:string>` - Target datatable (default: main)
- `--schema <schema:string>` - Apply only the pending migrations that declare this schema; refused while an earlier overlapping migration is pending
- `datatable migrate down` - roll back the most recent migration on the main datatable (or one via --datatable)
- `-d --datatable <datatable:string>` - Target datatable (default: main)
- `datatable migrate status` - show applied and pending migrations on the main datatable (or one via --datatable)
- `-d --datatable <datatable:string>` - Target datatable (default: main)
- `--json` - Output as JSON (for piping to jq)
- `datatable create [name:string]` - register a datatable database in the workspace (default: instance-backed 'main') so scripts can use datatable://<name>
- `--resource <resource:string>` - Back the datatable with an existing postgresql resource path instead of the instance database
- `--force` - Allow adding to a workspace that already has da
Windmill is fully open-sourced (AGPLv3) and Windmill Labs offers dedicated instances and commercial support and licenses.
Other skills on windmill.
More skills from other plugins.
browser-use
Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…
agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…
Questions about cli-commands.
- Which coding agents can use cli-commands?
- cli-commands installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

