Skip to content
Automation
Skill

/cli-commands

MUST use when using the CLI, including debugging job failures and inspecting run history via `wmill job`.

From plugin
windmill
17k40 skills2 agents3 MCP
Install
$ npx -y skills add windmill-labs/windmill --skill cli-commands --agent claude-code

How 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.md
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
Read more
Ships withwindmill

Windmill is fully open-sourced (AGPLv3) and Windmill Labs offers dedicated instances and commercial support and licenses.

Get the whole plugin