
Windmill AI Agents
Creates and changes Windmill AI agent resources following its agent setup rules.
Install
npx skills add windmill-labs/windmill --skill agents -g -a claude-code -y- Repository
- windmill-labs/windmill18.4k
- Category
- AI and agents
- Updated
- 3d ago
- License
- See repository
- Context cost
- Lightabout 1,474 tokens
- Runs scripts
- No, instructions only
What it does
MUST use when creating or changing an AI agent, the reusable `ai_agent` resource the Agents page lists.
Windmill AI Agents
An agent, as the Agents page lists it, is a saved LLM with its own system prompt, tools and
memory, stored as a resource of type ai_agent. It is built once and used in several places: it is
run from its own page (a chat, or a run form), a flow's AI agent step links to it by path, and it
can be shared in Slack channels from its page. Build a standalone agent when the user wants an
assistant they talk to or reuse. Build a flow when the agent is one step of a larger process.
File Format
An agent is a resource file like any other, {path}.resource.yaml (or .resource.json), with
resource_type: ai_agent.
Structure
{
"resource_type": "ai_agent",
"description": "Answers support questions from the product docs",
"value": {
"provider": { "kind": "openai", "resource": "$res:f/ai_providers/openai", "model": "gpt-4o" },
"system_prompt": "You are the support assistant for Acme. Answer from the docs; say so when they don't cover a question.",
"memory": { "kind": "compaction" },
"output_type": "text",
"tools": [
{
"id": "search_docs",
"summary": "search_documentation",
"description": "Search the product documentation. Use it whenever the user asks how a feature works.",
"value": {
"tool_type": "flowmodule",
"type": "script",
"path": "f/support/search_docs",
"input_transforms": {
"query": { "type": "ai" },
"index": { "type": "static", "value": "product_docs" }
}
}
}
]
}
}
The agent's own settings are plain values, not the input_transforms an agent step in a flow uses:
each is fixed when the agent is saved. Only a tool's arguments keep input_transforms (see Tools). $res: and $var: references inside it are resolved at run time.

