| name | wf-new-template |
| description | Create a new weft workflow template interactively. Use only when user types /wf-new-template. |
| argument-hint | [template-name] |
| allowed-tools | ["Bash","Read","Write"] |
Create New Weft Template
Build a custom workflow template through conversation.
Arguments
$ARGUMENTS
Instructions
Walk the user through creating a template step by step:
Step 1: Name
If no name in arguments, ask: "What should this workflow be called? (lowercase, hyphens ok)"
Step 2: Description
Ask: "One-line description of what this workflow does?"
Step 3: Steps
Ask: "List the steps in order. You can describe them naturally and I'll structure them."
Example user input: "first plan the work, then implement it, run tests, do a code review, then push"
→ Parse into: plan, implement, test, review, push
Step 4: Policies (for each step)
For each step, ask if the default on_fail: block is ok, or if they want:
retry — auto-retry once on failure
continue — skip failed step and move on
block — halt until manual retry (default)
Suggest sensible defaults: test steps → retry, optional steps → continue.
Step 5: Guards (optional)
Ask: "Should any steps block certain commands? For example, blocking git push until tests pass."
If yes, collect:
- Which step the guard applies to
- The regex pattern to match (e.g.,
git push, git commit)
- The message to show when blocked
Step 6: Preview and confirm
Build the template JSON and show a preview using:
echo '<json>' | python3 "${CLAUDE_PLUGIN_ROOT}/core/cli.py" save-template
Before saving, show the full template and ask: "Look good? Save it?"
Step 7: Save
echo '<template_json>' | python3 "${CLAUDE_PLUGIN_ROOT}/core/cli.py" save-template
The template is saved to .claude/weft/templates/<name>.json in the project directory.
Tell the user: "Template saved! Start it with /wf-start <name>"