cli-commands
CLI utility for managing Windmill resources like scripts, flows, and application deployments.
Install
mkdir -p .claude/skills/cli-commands && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/2001" && unzip -o skill.zip -d .claude/skills/cli-commands && rm skill.zipInstalls to .claude/skills/cli-commands
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
MUST use when using the CLI, including debugging job failures and inspecting run history via `wmill job`.Key capabilities
- →Start a local development server for testing apps
- →List, inspect, and push application resources to remote
- →Lint raw application folder structures
- →Generate new app scaffolds from templates
How it works
Executes shell commands against the Windmill API using local configurations or provided environment flags.
Inputs & outputs
When to use cli-commands
- →List and inspect deployed apps
- →Debug failed job executions
- →Sync local scripts to remote workspace
- →Deploy new application versions
About this skill
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 workspaceapp 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 entriesaudit 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 migrationsdatatable 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 to (default: main)--port <port:number>- Port the proxy listens on (default: first free port in 5433-5500)--host <host:string>- Bind address for the proxy (default: 127.0.0.1)--password <password:string>- Password for the temporary Postgres proxy (default: generate a random password at startup)
dependencies
workspace dependencies related commands
Alias: deps
Subcommands:
dependencies push <file_path:string>- Push workspace dependencies from a local file
dev
Watch local file changes and live-reload the dev page for preview. Does NOT deploy to the remote workspace — use wmill sync push for that.
Options:
--includes <pattern...:string>- Filter paths given a glob pattern or path--proxy-port <port:number>- Port for a localhost reverse proxy to the remote Windmill server--path <path:string>- Watch a specific windmill path (e.g., u/admin/my_script or f/my_flow)--no-open- Do not open the browser automatically
docs
Search Windmill documentation.
Arguments: <query:string>
Options:
--json- Output results as JSON.
ducklake
ducklake related commands
Subcommands:
ducklake list- list all ducklakes in the workspace--json- Output as JSON (for piping to jq)
ducklake run <sql:string>- run a SQL query on a ducklake-n --name <name:string>- Ducklake name (default: main)-s --silent- Output only the final result as JSON. Useful for scripting.
flow
flow related commands
Options:
--show-archived- Enable archived flows in output--json- Output as JSON (for piping to jq)
Subcommands:
flow list- list all flows--show-archived- Enable archived flows in output--json- Output as JSON (for piping to jq)
flow get <path:string>- get a flow's details--json- Output as JSON (for piping to jq)
flow push <file_path:string> <remote_path:string>- push a local flow spec. This overrides any remote versions.--message <message:string>- Deployment message
flow run <path:string>- run a flow by path.-d --data <data:string>- Inputs specified as a JSON string or a file using @<filename> or stdin using @-.-s --silent- Do not ouput anything other then the final output. Useful for scripting.--tag <tag:string>- Override the worker tag the run is dispatched to (e.g. to route it to dev workers instead of the flow's default tag).
flow preview <flow_path:string>- preview a local flow without deploying it. Runs the flow definition from local files and uses local PathScripts by default. Pass --step <id> to run only one module in isolation (resolves nested steps inside branchone/branchall/forloopflow/whileloopflow plus the special preprocessor/failure modules; supported step types: rawscript, script, flow).-d --data <data:string>- Inputs specified as a JSON string or a file using @<filename> or stdin using @-.-s --silent- Do not output anything other then the final output. Useful for scripting.--remote- Use deployed workspace scripts for PathScript steps instead of local files.--step <step_id:string>- Run only the named step instead of the whole flow. Honors --data as the step's args and --remote / local-PathScript resolution the same way the full-flow preview does.--tag <tag:string>- Override the worker tag the preview is dispatched to (e.g. to route it to dev workers instead of the flow's default tag).
flow new <flow_path:string>- create a new empty flow--summary <summary:string>- flow summary--description <description:string>- flow description
flow bootstrap <flow_path:string>- create a new empty flow (alias for new)--summary <summary:string>- flow summary--description <description:string>- flow description
flow history <path:string>- Show version history for a flow--json- Output as JSON (for piping to jq)
flow show-version <path:string> <version:string>- Show a specific version of a flow--json- Output as JSON (for piping to jq)
- `flow set-permissioned-as path:string <e
Content truncated.
When not to use it
- →When the task is purely about writing application logic without CLI interaction
- →When the user lacks network access to the remote Windmill workspace
Prerequisites
Limitations
- →Requires local configuration directory setup
- →Some flags like --fix are not yet implemented
How it compares
It enforces the correct CLI parameter structure and flags, minimizing syntax errors compared to manual shell execution.
Compared to similar skills
cli-commands side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| cli-commands (this skill) | 2 | 2mo | No flags | Beginner |
| github-actions-templates | 7 | 3mo | No flags | Intermediate |
| prowler-ci | 1 | 7mo | No flags | Intermediate |
| upgrade-deps | 0 | 2mo | No flags | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by windmill-labs
View all by windmill-labs →You might also like
github-actions-templates
wshobson
Create production-ready GitHub Actions workflows for automated testing, building, and deploying applications. Use when setting up CI/CD with GitHub Actions, automating development workflows, or creating reusable workflow templates.
prowler-ci
prowler-cloud
Helps with Prowler repository CI and PR gates (GitHub Actions workflows). Trigger: When investigating CI checks failing on a PR, PR title validation, changelog gate/no-changelog label, conflict marker checks, secret scanning, CODEOWNERS/labeler automation, or anything under .github/workflows.
upgrade-deps
obot-platform
Upgrade dependencies and runtimes safely, run CI, and report higher-risk options.
ci-cd-config-sync
mrcoffeex
Detect codebase changes and suggest GitHub Actions CI/CD config updates. Use when: adding dependencies (composer/npm), creating new Laravel features, changing environment variables, modifying Docker Compose, or adding tests. Analyzes changes and proposes workflow updates to keep CI/CD in sync with y
bazel-build-optimization
wshobson
Optimize Bazel builds for large-scale monorepos. Use when configuring Bazel, implementing remote execution, or optimizing build performance for enterprise codebases.
gitlab-ci-patterns
wshobson
Build GitLab CI/CD pipelines with multi-stage workflows, caching, and distributed runners for scalable automation. Use when implementing GitLab CI/CD, optimizing pipeline performance, or setting up automated testing and deployment.