fix: hide deprecated cli metadata commands (#8699)

* fix: hide deprecated cli metadata commands

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: simplify generate-metadata guidance

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
centdix
2026-04-03 15:38:01 +00:00
committed by GitHub
co-authored by Claude Opus 4.5
parent f234df97ec
commit b960598431
36 changed files with 91 additions and 138 deletions
+4 -1
View File
@@ -284,8 +284,11 @@ const command = new Command()
.command("generate-agents", generateAgentsCommand)
.command(
"generate-locks",
"re-generate the lockfiles for app runnables inline scripts that have changed"
'DEPRECATED: re-generate app lockfiles. Use "wmill generate-metadata" instead.'
)
// Deprecated compatibility command. Keep it working for older repos, but
// exclude it from generated system prompt docs.
// @deprecated use `wmill generate-metadata`
.arguments("[app_folder:string]")
.option("--yes", "Skip confirmation prompt")
.option("--dry-run", "Perform a dry run without making changes")
+4 -1
View File
@@ -833,8 +833,11 @@ const command = new Command()
.action(preview as any)
.command(
"generate-locks",
"re-generate the lock files of all inline scripts of all updated flows"
'DEPRECATED: re-generate flow lock files. Use "wmill generate-metadata" instead.'
)
// Deprecated compatibility command. Keep it working for older repos, but
// exclude it from generated system prompt docs.
// @deprecated use `wmill generate-metadata`
.arguments("[flow:file]")
.option("--yes", "Skip confirmation prompt")
.option("--dry-run", "Perform a dry run without making changes")
+5 -5
View File
@@ -334,7 +334,7 @@ async function checkRawAppRunnables(
path: rawAppYamlPath,
target: "raw_app_inline_script",
errors: [
`Missing lock for ${language} runnable '${runnableId}'. Run 'wmill app generate-locks' to generate locks.`,
`Missing lock for ${language} runnable '${runnableId}'. Run 'wmill generate-metadata' to generate locks.`,
],
});
}
@@ -388,7 +388,7 @@ async function checkRawAppRunnables(
path: rawAppYamlPath,
target: "raw_app_inline_script",
errors: [
`Missing lock for ${language} runnable '${runnableId}'. Run 'wmill app generate-locks' to generate locks.`,
`Missing lock for ${language} runnable '${runnableId}'. Run 'wmill generate-metadata' to generate locks.`,
],
});
}
@@ -509,7 +509,7 @@ export async function checkMissingLocks(
path: yamlPath,
target: "script",
errors: [
`Missing lock for ${language} script. Run 'wmill script generate-metadata' to generate locks.`,
`Missing lock for ${language} script. Run 'wmill generate-metadata' to generate locks.`,
],
});
}
@@ -540,7 +540,7 @@ export async function checkMissingLocks(
path: flowYamlPath,
target: "flow_inline_script",
errors: [
`Missing lock for ${script.language} inline script '${script.id}'. Run 'wmill flow generate-locks' to generate locks.`,
`Missing lock for ${script.language} inline script '${script.id}'. Run 'wmill generate-metadata' to generate locks.`,
],
});
}
@@ -568,7 +568,7 @@ export async function checkMissingLocks(
path: appYamlPath,
target: "app_inline_script",
errors: [
`Missing lock for ${script.language} inline script at '${script.path}'. Run 'wmill app generate-locks' to generate locks.`,
`Missing lock for ${script.language} inline script at '${script.path}'. Run 'wmill generate-metadata' to generate locks.`,
],
});
}
+5 -2
View File
@@ -1274,7 +1274,7 @@ export async function generateMetadata(
colors.yellow('This command is deprecated. Use "wmill generate-metadata" instead.')
);
log.info(
"This command only works for workspace scripts, for flows inline scripts use `wmill flow generate-locks`"
"This command only works for workspace scripts. For flows or apps, run `wmill generate-metadata` from the affected folder."
);
if (scriptPath == "") {
scriptPath = undefined;
@@ -1695,8 +1695,11 @@ const command = new Command()
.action(bootstrap as any)
.command(
"generate-metadata",
"re-generate the metadata file updating the lock and the script schema (for flows, use `wmill flow generate-locks`)"
'DEPRECATED: re-generate script metadata. Use top-level "wmill generate-metadata" instead.'
)
// Deprecated compatibility command. Keep it working for older repos, but
// exclude it from generated system prompt docs.
// @deprecated use `wmill generate-metadata`
.arguments("[script:file]")
.option("--yes", "Skip confirmation prompt")
.option("--dry-run", "Perform a dry run without making changes")
+4 -4
View File
@@ -375,7 +375,7 @@ ${tables.length > 0 ? tables.map(t => ` - ${t}`).join('\n') : ' # Add tabl
## Quick Reference
**Backend runnable:** Add \`backend/<name>.ts\` (or .py, etc.), then run \`wmill app generate-locks\`
**Backend runnable:** Add \`backend/<name>.ts\` (or .py, etc.), then run \`wmill generate-metadata\`
**Call from frontend:**
\`\`\`typescript
@@ -2668,7 +2668,7 @@ export async function push(
log.info("Auto-regenerated metadata for stale scripts:");
} else {
log.warn(
"Stale scripts metadata found, you may want to update them using 'wmill script generate-metadata' before pushing:",
"Stale scripts metadata found, you may want to update them using 'wmill generate-metadata' before pushing:",
);
}
for (const stale of staleScripts) {
@@ -2701,7 +2701,7 @@ export async function push(
log.info("Auto-regenerated locks for stale flows:");
} else {
log.warn(
"Stale flows locks found, you may want to update them using 'wmill flow generate-locks' before pushing:",
"Stale flows locks found, you may want to update them using 'wmill generate-metadata' before pushing:",
);
}
for (const stale of staleFlows) {
@@ -2749,7 +2749,7 @@ export async function push(
log.info("Auto-regenerated locks for stale apps:");
} else {
log.warn(
"Stale apps locks found, you may want to update them using 'wmill app generate-locks' before pushing:",
"Stale apps locks found, you may want to update them using 'wmill generate-metadata' before pushing:",
);
}
for (const stale of staleApps) {
+25 -41
View File
@@ -45,7 +45,7 @@ description: MUST use when writing Bash scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- \`wmill script generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -110,7 +110,7 @@ description: MUST use when writing BigQuery queries.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- \`wmill script generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -137,7 +137,7 @@ description: MUST use when writing Bun/TypeScript scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- \`wmill script generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -802,7 +802,7 @@ description: MUST use when writing Bun Native scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- \`wmill script generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -1465,7 +1465,7 @@ description: MUST use when writing C# scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- \`wmill script generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -1522,7 +1522,7 @@ description: MUST use when writing Deno/TypeScript scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- \`wmill script generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -2191,7 +2191,7 @@ description: MUST use when writing DuckDB queries.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- \`wmill script generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -2258,7 +2258,7 @@ description: MUST use when writing Go scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- \`wmill script generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -2332,7 +2332,7 @@ description: MUST use when writing GraphQL queries.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- \`wmill script generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -2393,7 +2393,7 @@ description: MUST use when writing Java scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- \`wmill script generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -2447,7 +2447,7 @@ description: MUST use when writing MS SQL Server queries.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- \`wmill script generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -2474,7 +2474,7 @@ description: MUST use when writing MySQL queries.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- \`wmill script generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -2501,7 +2501,7 @@ description: MUST use when writing Native TypeScript scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- \`wmill script generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -3131,7 +3131,7 @@ description: MUST use when writing PHP scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- \`wmill script generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -3204,7 +3204,7 @@ description: MUST use when writing PostgreSQL queries.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- \`wmill script generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -3231,7 +3231,7 @@ description: MUST use when writing PowerShell scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- \`wmill script generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -3302,7 +3302,7 @@ description: MUST use when writing Python scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- \`wmill script generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -4123,7 +4123,7 @@ description: MUST use when writing R scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- \`wmill script generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -4224,7 +4224,7 @@ description: MUST use when writing Rust scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- \`wmill script generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -4315,7 +4315,7 @@ description: MUST use when writing Snowflake queries.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- \`wmill script generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill generate-metadata\` - Generate .script.yaml and .lock files
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -4346,7 +4346,7 @@ description: MUST use when creating flows.
Create a folder ending with \`{{FLOW_SUFFIX}}\` and add a \`flow.yaml\` file with the flow definition.
For rawscript modules, use \`!inline path/to/script.ts\` for the content key. {{INLINE_SCRIPT_NAMING}}
After writing, tell the user they can run:
- \`wmill flow generate-locks <path_to_flow_folder> --yes\` - Generate lock files for the specific flow you modified (e.g. \`wmill flow generate-locks f/my_folder/my_flow{{FLOW_SUFFIX}} --yes\`)
- \`wmill generate-metadata\` - Generate lock files for the flow you modified
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -4494,7 +4494,7 @@ my_app{{RAW_APP_SUFFIX}}/
├── backend/ # Backend runnables (server-side scripts)
│ ├── <id>.<ext> # Code file (e.g., get_user.ts)
│ ├── <id>.yaml # Optional: config for fields, or to reference existing scripts
│ └── <id>.lock # Lock file (run 'wmill app generate-locks' to create)
│ └── <id>.lock # Lock file (run 'wmill generate-metadata' to create/update)
└── sql_to_apply/ # SQL migrations (dev only, not synced)
└── *.sql # SQL files to apply via dev server
\`\`\`
@@ -4550,7 +4550,7 @@ export async function main(user_id: string) {
After creating, tell the user they can generate lock files by running:
\`\`\`bash
wmill app generate-locks
wmill generate-metadata
\`\`\`
### Optional YAML Configuration
@@ -4708,7 +4708,7 @@ Tell the user they can run these commands (do NOT run them yourself):
| \`wmill app new\` | Create a new raw app interactively |
| \`wmill app dev\` | Start dev server with live reload |
| \`wmill app generate-agents\` | Refresh AGENTS.md and DATATABLES.md |
| \`wmill app generate-locks\` | Generate lock files for backend runnables |
| \`wmill generate-metadata\` | Generate lock files for backend runnables |
| \`wmill sync push\` | Deploy app to Windmill |
| \`wmill sync pull\` | Pull latest from Windmill |
@@ -4719,7 +4719,7 @@ Tell the user they can run these commands (do NOT run them yourself):
3. **Keep runnables focused** - one function per file
4. **Use descriptive IDs** - \`get_user.ts\` not \`a.ts\`
5. **Always whitelist tables** - add to \`data.tables\` before querying
6. **Generate locks** - tell the user to run \`wmill app generate-locks\` after adding/modifying backend runnables
6. **Generate locks** - tell the user to run \`wmill generate-metadata\` after adding/modifying backend runnables
`,
"triggers": `---
name: triggers
@@ -5096,10 +5096,6 @@ app related commands
- \`--fix\` - Attempt to fix common issues (not implemented yet)
- \`app new\` - create a new raw app from a template
- \`app generate-agents [app_folder:string]\` - regenerate AGENTS.md and DATATABLES.md from remote workspace
- \`app generate-locks [app_folder:string]\` - re-generate the lockfiles for app runnables inline scripts that have changed
- \`--yes\` - Skip confirmation prompt
- \`--dry-run\` - Perform a dry run without making changes
- \`--default-ts <runtime:string>\` - Default TypeScript runtime (bun or deno)
### audit
@@ -5168,11 +5164,6 @@ flow related commands
- \`-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.
- \`flow generate-locks [flow:file]\` - re-generate the lock files of all inline scripts of all updated flows
- \`--yes\` - Skip confirmation prompt
- \`--dry-run\` - Perform a dry run without making changes
- \`-i --includes <patterns:file[]>\` - Comma separated patterns to specify which file to take into account (among files that are compatible with windmill). Patterns can include * (any string until '/') and ** (any string)
- \`-e --excludes <patterns:file[]>\` - Comma separated patterns to specify which file to NOT take into account.
- \`flow new <flow_path:string>\` - create a new empty flow
- \`--summary <summary:string>\` - flow summary
- \`--description <description:string>\` - flow description
@@ -5456,13 +5447,6 @@ script related commands
- \`script bootstrap <path:file> <language:string>\` - create a new script (alias for new)
- \`--summary <summary:string>\` - script summary
- \`--description <description:string>\` - script description
- \`script generate-metadata [script:file]\` - re-generate the metadata file updating the lock and the script schema (for flows, use \`wmill flow generate-locks\`)
- \`--yes\` - Skip confirmation prompt
- \`--dry-run\` - Perform a dry run without making changes
- \`--lock-only\` - re-generate only the lock
- \`--schema-only\` - re-generate only script schema
- \`-i --includes <patterns:file[]>\` - Comma separated patterns to specify which file to take into account (among files that are compatible with windmill). Patterns can include * (any string until '/') and ** (any string)
- \`-e --excludes <patterns:file[]>\` - Comma separated patterns to specify which file to NOT take into account.
- \`script history <path:string>\` - show version history for a script
- \`--json\` - Output as JSON (for piping to jq)
@@ -36,10 +36,6 @@ app related commands
- `--fix` - Attempt to fix common issues (not implemented yet)
- `app new` - create a new raw app from a template
- `app generate-agents [app_folder:string]` - regenerate AGENTS.md and DATATABLES.md from remote workspace
- `app generate-locks [app_folder:string]` - re-generate the lockfiles for app runnables inline scripts that have changed
- `--yes` - Skip confirmation prompt
- `--dry-run` - Perform a dry run without making changes
- `--default-ts <runtime:string>` - Default TypeScript runtime (bun or deno)
### audit
@@ -108,11 +104,6 @@ flow related commands
- `-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.
- `flow generate-locks [flow:file]` - re-generate the lock files of all inline scripts of all updated flows
- `--yes` - Skip confirmation prompt
- `--dry-run` - Perform a dry run without making changes
- `-i --includes <patterns:file[]>` - Comma separated patterns to specify which file to take into account (among files that are compatible with windmill). Patterns can include * (any string until '/') and ** (any string)
- `-e --excludes <patterns:file[]>` - Comma separated patterns to specify which file to NOT take into account.
- `flow new <flow_path:string>` - create a new empty flow
- `--summary <summary:string>` - flow summary
- `--description <description:string>` - flow description
@@ -396,13 +387,6 @@ script related commands
- `script bootstrap <path:file> <language:string>` - create a new script (alias for new)
- `--summary <summary:string>` - script summary
- `--description <description:string>` - script description
- `script generate-metadata [script:file]` - re-generate the metadata file updating the lock and the script schema (for flows, use `wmill flow generate-locks`)
- `--yes` - Skip confirmation prompt
- `--dry-run` - Perform a dry run without making changes
- `--lock-only` - re-generate only the lock
- `--schema-only` - re-generate only script schema
- `-i --includes <patterns:file[]>` - Comma separated patterns to specify which file to take into account (among files that are compatible with windmill). Patterns can include * (any string until '/') and ** (any string)
- `-e --excludes <patterns:file[]>` - Comma separated patterns to specify which file to NOT take into account.
- `script history <path:string>` - show version history for a script
- `--json` - Output as JSON (for piping to jq)
+1 -1
View File
@@ -5,7 +5,7 @@
Create a folder ending with `__flow` and add a `flow.yaml` file with the flow definition.
For rawscript modules, use `!inline path/to/script.ts` for the content key. Inline script files should NOT include `.inline_script.` in their names (e.g. use `a.ts`, not `a.inline_script.ts`).
After writing, tell the user they can run:
- `wmill flow generate-locks <path_to_flow_folder> --yes` - Generate lock files for the specific flow you modified (e.g. `wmill flow generate-locks f/my_folder/my_flow__flow --yes`)
- `wmill generate-metadata` - Generate lock files for the flow you modified
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
File diff suppressed because one or more lines are too long
+1 -17
View File
@@ -36,7 +36,7 @@ export const FLOW_BASE = `# Windmill Flow Building Guide
Create a folder ending with \`__flow\` and add a \`flow.yaml\` file with the flow definition.
For rawscript modules, use \`!inline path/to/script.ts\` for the content key. Inline script files should NOT include \`.inline_script.\` in their names (e.g. use \`a.ts\`, not \`a.inline_script.ts\`).
After writing, tell the user they can run:
- \`wmill flow generate-locks <path_to_flow_folder> --yes\` - Generate lock files for the specific flow you modified (e.g. \`wmill flow generate-locks f/my_folder/my_flow__flow --yes\`)
- \`wmill generate-metadata\` - Generate lock files for the flow you modified
- \`wmill sync push\` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -1563,10 +1563,6 @@ app related commands
- \`--fix\` - Attempt to fix common issues (not implemented yet)
- \`app new\` - create a new raw app from a template
- \`app generate-agents [app_folder:string]\` - regenerate AGENTS.md and DATATABLES.md from remote workspace
- \`app generate-locks [app_folder:string]\` - re-generate the lockfiles for app runnables inline scripts that have changed
- \`--yes\` - Skip confirmation prompt
- \`--dry-run\` - Perform a dry run without making changes
- \`--default-ts <runtime:string>\` - Default TypeScript runtime (bun or deno)
### audit
@@ -1635,11 +1631,6 @@ flow related commands
- \`-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.
- \`flow generate-locks [flow:file]\` - re-generate the lock files of all inline scripts of all updated flows
- \`--yes\` - Skip confirmation prompt
- \`--dry-run\` - Perform a dry run without making changes
- \`-i --includes <patterns:file[]>\` - Comma separated patterns to specify which file to take into account (among files that are compatible with windmill). Patterns can include * (any string until '/') and ** (any string)
- \`-e --excludes <patterns:file[]>\` - Comma separated patterns to specify which file to NOT take into account.
- \`flow new <flow_path:string>\` - create a new empty flow
- \`--summary <summary:string>\` - flow summary
- \`--description <description:string>\` - flow description
@@ -1923,13 +1914,6 @@ script related commands
- \`script bootstrap <path:file> <language:string>\` - create a new script (alias for new)
- \`--summary <summary:string>\` - script summary
- \`--description <description:string>\` - script description
- \`script generate-metadata [script:file]\` - re-generate the metadata file updating the lock and the script schema (for flows, use \`wmill flow generate-locks\`)
- \`--yes\` - Skip confirmation prompt
- \`--dry-run\` - Perform a dry run without making changes
- \`--lock-only\` - re-generate only the lock
- \`--schema-only\` - re-generate only script schema
- \`-i --includes <patterns:file[]>\` - Comma separated patterns to specify which file to take into account (among files that are compatible with windmill). Patterns can include * (any string until '/') and ** (any string)
- \`-e --excludes <patterns:file[]>\` - Comma separated patterns to specify which file to NOT take into account.
- \`script history <path:string>\` - show version history for a script
- \`--json\` - Output as JSON (for piping to jq)
@@ -41,10 +41,6 @@ app related commands
- `--fix` - Attempt to fix common issues (not implemented yet)
- `app new` - create a new raw app from a template
- `app generate-agents [app_folder:string]` - regenerate AGENTS.md and DATATABLES.md from remote workspace
- `app generate-locks [app_folder:string]` - re-generate the lockfiles for app runnables inline scripts that have changed
- `--yes` - Skip confirmation prompt
- `--dry-run` - Perform a dry run without making changes
- `--default-ts <runtime:string>` - Default TypeScript runtime (bun or deno)
### audit
@@ -113,11 +109,6 @@ flow related commands
- `-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.
- `flow generate-locks [flow:file]` - re-generate the lock files of all inline scripts of all updated flows
- `--yes` - Skip confirmation prompt
- `--dry-run` - Perform a dry run without making changes
- `-i --includes <patterns:file[]>` - Comma separated patterns to specify which file to take into account (among files that are compatible with windmill). Patterns can include * (any string until '/') and ** (any string)
- `-e --excludes <patterns:file[]>` - Comma separated patterns to specify which file to NOT take into account.
- `flow new <flow_path:string>` - create a new empty flow
- `--summary <summary:string>` - flow summary
- `--description <description:string>` - flow description
@@ -401,13 +392,6 @@ script related commands
- `script bootstrap <path:file> <language:string>` - create a new script (alias for new)
- `--summary <summary:string>` - script summary
- `--description <description:string>` - script description
- `script generate-metadata [script:file]` - re-generate the metadata file updating the lock and the script schema (for flows, use `wmill flow generate-locks`)
- `--yes` - Skip confirmation prompt
- `--dry-run` - Perform a dry run without making changes
- `--lock-only` - re-generate only the lock
- `--schema-only` - re-generate only script schema
- `-i --includes <patterns:file[]>` - Comma separated patterns to specify which file to take into account (among files that are compatible with windmill). Patterns can include * (any string until '/') and ** (any string)
- `-e --excludes <patterns:file[]>` - Comma separated patterns to specify which file to NOT take into account.
- `script history <path:string>` - show version history for a script
- `--json` - Output as JSON (for piping to jq)
@@ -30,7 +30,7 @@ my_app__raw_app/
├── backend/ # Backend runnables (server-side scripts)
│ ├── <id>.<ext> # Code file (e.g., get_user.ts)
│ ├── <id>.yaml # Optional: config for fields, or to reference existing scripts
│ └── <id>.lock # Lock file (run 'wmill app generate-locks' to create)
│ └── <id>.lock # Lock file (run 'wmill generate-metadata' to create/update)
└── sql_to_apply/ # SQL migrations (dev only, not synced)
└── *.sql # SQL files to apply via dev server
```
@@ -86,7 +86,7 @@ export async function main(user_id: string) {
After creating, tell the user they can generate lock files by running:
```bash
wmill app generate-locks
wmill generate-metadata
```
### Optional YAML Configuration
@@ -244,7 +244,7 @@ Tell the user they can run these commands (do NOT run them yourself):
| `wmill app new` | Create a new raw app interactively |
| `wmill app dev` | Start dev server with live reload |
| `wmill app generate-agents` | Refresh AGENTS.md and DATATABLES.md |
| `wmill app generate-locks` | Generate lock files for backend runnables |
| `wmill generate-metadata` | Generate lock files for backend runnables |
| `wmill sync push` | Deploy app to Windmill |
| `wmill sync pull` | Pull latest from Windmill |
@@ -255,4 +255,4 @@ Tell the user they can run these commands (do NOT run them yourself):
3. **Keep runnables focused** - one function per file
4. **Use descriptive IDs** - `get_user.ts` not `a.ts`
5. **Always whitelist tables** - add to `data.tables` before querying
6. **Generate locks** - tell the user to run `wmill app generate-locks` after adding/modifying backend runnables
6. **Generate locks** - tell the user to run `wmill generate-metadata` after adding/modifying backend runnables
@@ -10,7 +10,7 @@ description: MUST use when creating flows.
Create a folder ending with `__flow` and add a `flow.yaml` file with the flow definition.
For rawscript modules, use `!inline path/to/script.ts` for the content key. Inline script files should NOT include `.inline_script.` in their names (e.g. use `a.ts`, not `a.inline_script.ts`).
After writing, tell the user they can run:
- `wmill flow generate-locks <path_to_flow_folder> --yes` - Generate lock files for the specific flow you modified (e.g. `wmill flow generate-locks f/my_folder/my_flow__flow --yes`)
- `wmill generate-metadata` - Generate lock files for the flow you modified
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -6,7 +6,7 @@ description: MUST use when writing Bash scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- `wmill script generate-metadata` - Generate .script.yaml and .lock files
- `wmill generate-metadata` - Generate .script.yaml and .lock files
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -6,7 +6,7 @@ description: MUST use when writing BigQuery queries.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- `wmill script generate-metadata` - Generate .script.yaml and .lock files
- `wmill generate-metadata` - Generate .script.yaml and .lock files
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -6,7 +6,7 @@ description: MUST use when writing Bun/TypeScript scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- `wmill script generate-metadata` - Generate .script.yaml and .lock files
- `wmill generate-metadata` - Generate .script.yaml and .lock files
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -6,7 +6,7 @@ description: MUST use when writing Bun Native scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- `wmill script generate-metadata` - Generate .script.yaml and .lock files
- `wmill generate-metadata` - Generate .script.yaml and .lock files
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -6,7 +6,7 @@ description: MUST use when writing C# scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- `wmill script generate-metadata` - Generate .script.yaml and .lock files
- `wmill generate-metadata` - Generate .script.yaml and .lock files
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -6,7 +6,7 @@ description: MUST use when writing Deno/TypeScript scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- `wmill script generate-metadata` - Generate .script.yaml and .lock files
- `wmill generate-metadata` - Generate .script.yaml and .lock files
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -6,7 +6,7 @@ description: MUST use when writing DuckDB queries.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- `wmill script generate-metadata` - Generate .script.yaml and .lock files
- `wmill generate-metadata` - Generate .script.yaml and .lock files
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -6,7 +6,7 @@ description: MUST use when writing Go scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- `wmill script generate-metadata` - Generate .script.yaml and .lock files
- `wmill generate-metadata` - Generate .script.yaml and .lock files
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -6,7 +6,7 @@ description: MUST use when writing GraphQL queries.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- `wmill script generate-metadata` - Generate .script.yaml and .lock files
- `wmill generate-metadata` - Generate .script.yaml and .lock files
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -6,7 +6,7 @@ description: MUST use when writing Java scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- `wmill script generate-metadata` - Generate .script.yaml and .lock files
- `wmill generate-metadata` - Generate .script.yaml and .lock files
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -6,7 +6,7 @@ description: MUST use when writing MS SQL Server queries.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- `wmill script generate-metadata` - Generate .script.yaml and .lock files
- `wmill generate-metadata` - Generate .script.yaml and .lock files
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -6,7 +6,7 @@ description: MUST use when writing MySQL queries.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- `wmill script generate-metadata` - Generate .script.yaml and .lock files
- `wmill generate-metadata` - Generate .script.yaml and .lock files
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -6,7 +6,7 @@ description: MUST use when writing Native TypeScript scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- `wmill script generate-metadata` - Generate .script.yaml and .lock files
- `wmill generate-metadata` - Generate .script.yaml and .lock files
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -6,7 +6,7 @@ description: MUST use when writing PHP scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- `wmill script generate-metadata` - Generate .script.yaml and .lock files
- `wmill generate-metadata` - Generate .script.yaml and .lock files
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -6,7 +6,7 @@ description: MUST use when writing PostgreSQL queries.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- `wmill script generate-metadata` - Generate .script.yaml and .lock files
- `wmill generate-metadata` - Generate .script.yaml and .lock files
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -6,7 +6,7 @@ description: MUST use when writing PowerShell scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- `wmill script generate-metadata` - Generate .script.yaml and .lock files
- `wmill generate-metadata` - Generate .script.yaml and .lock files
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -6,7 +6,7 @@ description: MUST use when writing Python scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- `wmill script generate-metadata` - Generate .script.yaml and .lock files
- `wmill generate-metadata` - Generate .script.yaml and .lock files
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -6,7 +6,7 @@ description: MUST use when writing R scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- `wmill script generate-metadata` - Generate .script.yaml and .lock files
- `wmill generate-metadata` - Generate .script.yaml and .lock files
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -6,7 +6,7 @@ description: MUST use when writing Rust scripts.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- `wmill script generate-metadata` - Generate .script.yaml and .lock files
- `wmill generate-metadata` - Generate .script.yaml and .lock files
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
@@ -6,7 +6,7 @@ description: MUST use when writing Snowflake queries.
## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- `wmill script generate-metadata` - Generate .script.yaml and .lock files
- `wmill generate-metadata` - Generate .script.yaml and .lock files
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
+1 -1
View File
@@ -5,7 +5,7 @@
Create a folder ending with `__flow` and add a `flow.yaml` file with the flow definition.
For rawscript modules, use `!inline path/to/script.ts` for the content key. Inline script files should NOT include `.inline_script.` in their names (e.g. use `a.ts`, not `a.inline_script.ts`).
After writing, tell the user they can run:
- `wmill flow generate-locks <path_to_flow_folder> --yes` - Generate lock files for the specific flow you modified (e.g. `wmill flow generate-locks f/my_folder/my_flow__flow --yes`)
- `wmill generate-metadata` - Generate lock files for the flow you modified
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.
+4 -4
View File
@@ -25,7 +25,7 @@ my_app__raw_app/
├── backend/ # Backend runnables (server-side scripts)
│ ├── <id>.<ext> # Code file (e.g., get_user.ts)
│ ├── <id>.yaml # Optional: config for fields, or to reference existing scripts
│ └── <id>.lock # Lock file (run 'wmill app generate-locks' to create)
│ └── <id>.lock # Lock file (run 'wmill generate-metadata' to create/update)
└── sql_to_apply/ # SQL migrations (dev only, not synced)
└── *.sql # SQL files to apply via dev server
```
@@ -81,7 +81,7 @@ export async function main(user_id: string) {
After creating, tell the user they can generate lock files by running:
```bash
wmill app generate-locks
wmill generate-metadata
```
### Optional YAML Configuration
@@ -239,7 +239,7 @@ Tell the user they can run these commands (do NOT run them yourself):
| `wmill app new` | Create a new raw app interactively |
| `wmill app dev` | Start dev server with live reload |
| `wmill app generate-agents` | Refresh AGENTS.md and DATATABLES.md |
| `wmill app generate-locks` | Generate lock files for backend runnables |
| `wmill generate-metadata` | Generate lock files for backend runnables |
| `wmill sync push` | Deploy app to Windmill |
| `wmill sync pull` | Pull latest from Windmill |
@@ -250,4 +250,4 @@ Tell the user they can run these commands (do NOT run them yourself):
3. **Keep runnables focused** - one function per file
4. **Use descriptive IDs** - `get_user.ts` not `a.ts`
5. **Always whitelist tables** - add to `data.tables` before querying
6. **Generate locks** - tell the user to run `wmill app generate-locks` after adding/modifying backend runnables
6. **Generate locks** - tell the user to run `wmill generate-metadata` after adding/modifying backend runnables
+6 -1
View File
@@ -351,6 +351,11 @@ def parse_command_block(content: str, file_path: Path | None = None) -> dict:
if not cmd_match:
continue
# Explicit source marker for backwards-compatible CLI commands that
# should not be suggested in generated system prompts.
if '@deprecated' in section:
continue
cmd_name = cmd_match.group(1)
second_arg = cmd_match.group(2).strip() if cmd_match.group(2) else ''
@@ -957,7 +962,7 @@ def generate_skills(
script_cli_intro = """## CLI Commands
Place scripts in a folder. After writing, tell the user they can run:
- `wmill script generate-metadata` - Generate .script.yaml and .lock files
- `wmill generate-metadata` - Generate .script.yaml and .lock files
- `wmill sync push` - Deploy to Windmill
Do NOT run these commands yourself. Instead, inform the user that they should run them.