Title here
Summary here
Templates allow defining reusable step patterns with parameters. Define once, use in multiple workflows.
Templates are defined in .awf/templates/ directory.
# .awf/templates/ai-analyze.yaml
name: ai-analyze
parameters:
- name: prompt
required: true
- name: model
default: claude
- name: timeout
default: 120
states:
ai-analyze:
type: step
command: "{{parameters.model}} -c '{{parameters.prompt}}'"
timeout: "{{parameters.timeout}}"
capture:
stdout: analysis| Option | Type | Description |
|---|---|---|
name | string | Parameter identifier |
required | bool | If true, must be provided when using template |
default | any | Default value if not provided |
Reference templates in workflow steps with use_template:
# .awf/workflows/my-workflow.yaml
name: my-workflow
version: "1.0.0"
states:
initial: code_analysis
code_analysis:
use_template: ai-analyze
parameters:
prompt: "Analyze this code: {{.states.extract.Output}}"
model: gemini
on_success: format
on_failure: error
format:
type: step
command: format-output
on_success: done
on_failure: error
done:
type: terminal
error:
type: terminal
status: failure| Option | Description |
|---|---|
use_template | Template name to instantiate |
parameters | Parameter values to pass to template |
on_success | Overrides template’s on_success transition |
on_failure | Overrides template’s on_failure transition |
Template parameters use {{parameters.name}} syntax:
# Template definition
command: "{{parameters.model}} -c '{{parameters.prompt}}'"
timeout: "{{parameters.timeout}}"
# Workflow usage - these values replace the placeholders
parameters:
model: claude
prompt: "Analyze code"
timeout: 60Parameters are resolved at workflow load time, not runtime.
Templates are loaded from (in order):
.awf/templates/ (local project)$AWF_STORAGE/templates/ (global)Local templates override global ones with the same name.
Templates are validated when workflows are loaded:
awf validate to check template references before execution# Validate workflow with templates
awf validate my-workflowError: template 'ai-analyze' missing required parameter 'prompt'
Error: circular template reference detected: a -> b -> a
Error: template 'unknown-template' not found# .awf/templates/http-request.yaml
name: http-request
parameters:
- name: url
required: true
- name: method
default: GET
- name: headers
default: ""
- name: timeout
default: 30
states:
http-request:
type: step
command: |
curl -s -X {{parameters.method}} \
{{parameters.headers}} \
--max-time {{parameters.timeout}} \
"{{parameters.url}}"
timeout: "{{parameters.timeout}}"# .awf/workflows/api-check.yaml
name: api-check
version: "1.0.0"
inputs:
- name: api_url
type: string
required: true
states:
initial: health_check
health_check:
use_template: http-request
parameters:
url: "{{.inputs.api_url}}/health"
timeout: 10
on_success: fetch_data
on_failure: error
fetch_data:
use_template: http-request
parameters:
url: "{{.inputs.api_url}}/data"
method: GET
headers: "-H 'Authorization: Bearer $API_TOKEN'"
on_success: done
on_failure: error
done:
type: terminal
error:
type: terminal
status: failureawf run api-check --input api_url=https://api.example.comawf validate after creating workflows