- Home
- Skills
- Windmill Labs
- Windmill
- Write Flow
write-flow_skill
- HTML
15.8k
GitHub Stars
1
Bundled Files
2 months ago
Catalog Refreshed
4 months ago
First Indexed
Readme & install
Copy the install command, review bundled files from the catalogue, and read any extended description pulled from the listing source.
Installation
Preview and clipboard use veilstrat where the catalogue uses aiagentskills.
npx veilstrat add skill windmill-labs/windmill --skill write-flow- SKILL.md34.2 KB
Overview
This skill guides developers to author Windmill flows reliably and efficiently. It focuses on folder structure, module rules, input transforms, resource references, failure handling, and deployment steps. Use this as the canonical checklist when creating or reviewing .flow definitions.
How this skill works
The skill inspects a flow folder and YAML flow definition to ensure module IDs, input_transforms, resource references, and data flow expressions follow OpenFlow schema rules. It validates reserved module IDs, checks for duplicate IDs and common mistakes, and verifies proper use of flow inputs, results, and resource formats. It also outlines CLI commands needed to generate locks and deploy flows.
When to use it
- When creating a new .flow folder and flow YAML for Windmill
- When adding or modifying rawscript modules that require input_transforms
- Before running wmill flow generate-locks and wmill sync push
- When validating resource references (e.g., resource-postgresql or $res: paths)
- When implementing failure handlers or preprocessors
Best practices
- Name modules with unique, descriptive IDs using underscores (e.g., fetch_data)
- Always include input_transforms for rawscript modules to map parameters
- Avoid referencing results from future steps; only use results.step_id for prior steps
- Use flow_input.iter.value and .index inside for-loops to access iteration context
- Define resource inputs with type object and format resource-<type> for credentials
Example use cases
- Build a data ingestion flow using a PostgreSQL resource passed as flow input
- Create a file-processing flow that accepts an S3 object (resource-s3_object) and writes results
- Implement a failure module with id 'failure' that logs error.message and error.step_id
- Author a preprocessor module with id 'preprocessor' to normalize incoming webhook payloads
- Write a looped workflow that uses flow_input.iter.value to process batch items
FAQ
Module IDs must be unique; duplicates will break references via results.step_id and should be renamed to distinct identifiers.
How do I reference a stored resource inside a step?
Use a static input_transform with value set to "$res:folder/path/resource_id" or declare the flow input type as object with format "resource-<type>".