/cli-commands
MUST use when using the CLI, including debugging job failures and inspecting run history via `wmill job`.
$ npx -y skills add windmill-labs/windmill --skill cli-commands --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/cli-commands
Context preview
The summary Claude sees to decide when to auto-load this skill.
MUST use when using the CLI, including debugging job failures and inspecting run history via `wmill job`.
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/Vue, 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 | vue. 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. Created (CREATE SCHEMA IF NOT EXISTS) if it doesn't already exist.
- `--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)
- `datatable migrate up` - apply all pending migrations to the main datatable (or one via --datatable)
- `-d --datatable <datatable:string>` - Target datatable (default: main)
- `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 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 datatables (fork metadata on existing ones is not preserved)
- `datatable serve` - Serve all datatables as a Postgres-wire endpoint (psql, DBeaver, pgAdmin); the client picks the datatable via the database name in its connection string
- `--port <port:number>` - Port to listen on (default: first free port in 5433-5500)
- `--host <host:string>` - Bind address (default: 127.0.0.1)
- `--password <password:string>` - Password for Postgres clients (default: generate a random password at startup)
- `datatable psql` - Start a serve listener and launch psql connected to it
- `-n --name <name:string>` - Datatable to connect psql t
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/Vue, 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 | vue. 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. Created (CREATE SCHEMA IF NOT EXISTS) if it doesn't already exist.
- `--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)
- `datatable migrate up` - apply all pending migrations to the main datatable (or one via --datatable)
- `-d --datatable <datatable:string>` - Target datatable (default: main)
- `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 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 datatables (fork metadata on existing ones is not preserved)
- `datatable serve` - Serve all datatables as a Postgres-wire endpoint (psql, DBeaver, pgAdmin); the client picks the datatable via the database name in its connection string
- `--port <port:number>` - Port to listen on (default: first free port in 5433-5500)
- `--host <host:string>` - Bind address (default: 127.0.0.1)
- `--password <password:string>` - Password for Postgres clients (default: generate a random password at startup)
- `datatable psql` - Start a serve listener and launch psql connected to it
- `-n --name <name:string>` - Datatable to connect psql t
Windmill is fully open-sourced (AGPLv3) and Windmill Labs offers dedicated instances and commercial support and licenses.
Repo: windmill-labs/windmill
Other skills on windmill.
- /adding-a-trigger
../../../.agents/skills/adding-a-trigger/SKILL.md
Open skill - /ai-chat
../../../.agents/skills/ai-chat/SKILL.md
Open skill - /ai-evals
../../../.agents/skills/ai-evals/SKILL.md
Open skill - /commit
../../../.agents/skills/commit/SKILL.md
Open skill - /local-review-codex
../../../.agents/skills/local-review-codex/SKILL.md
Open skill - /local-review
../../../.agents/skills/local-review/SKILL.md
Open skill

