Compose a Weft Workflow
SkillDev toolsPropose a weft workflow from conversation context. Scans skills, identifies gaps, builds template with loops.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the Compose a Weft Workflow skill
What this skill tells your AI
The instructions your AI receives, as published by dioptx/weft in skills/wf-compose/SKILL.md and read by ahel’s review.
Read the conversation context, scan available skills, identify gaps, and propose a v2 workflow template with loops and skill blocks.
Arguments
$ARGUMENTS
Modes
| Usage | Behavior |
|---|---|
/wf-compose "review, fix, iterate until clean" | One-shot: propose from description |
/wf-compose (no args) | Interactive: ask "What are you trying to accomplish?" |
/wf-compose --from feature-workflow | Start from existing template, modify based on context |
Step 1: Gather Context
Understand what the user is trying to do:
- Review the recent conversation for intent (what task, what repo, what outcome).
- Check git state:
git branch --show-current 2>/dev/null git diff --stat 2>/dev/null | tail -5 - Check if a weft workflow is already active:
python3 "${CLAUDE_PLUGIN_ROOT}/core/cli.py" status 2>/dev/null - If
--from <template>was provided, load it as the starting point:python3 "${CLAUDE_PLUGIN_ROOT}/core/cli.py" preview <template>
Step 2: Scan Skill Registry
Build a map of what skills are available:
- Read the local skills registry, if any (path varies by setup):
cat "${CLAUDE_SKILLS_REGISTRY:-$HOME/.claude/skills-registry.json}" 2>/dev/null - List weft templates:
python3 "${CLAUDE_PLUGIN_ROOT}/core/cli.py" start - Categorize skills by function (examples — substitute what you have available):
- Review: staff-review, arch-review, code-review, differential-review
- Fix/Polish: fix-polish, refactor, simplify
- Test: infra-test, webapp-testing
- Plan: aot-plan, spec-first
- Research: perplexity, context7, research-loop
- Deploy: deploy-service, pr-ready
Step 3: Gap Analysis
Compare what the user described against available skills:
- Extract skill references from the user's description (explicit names like "/staff-review" or implicit like "review code", "test it", "deploy").
- For each referenced skill, check if it exists in the registry.
- For missing skills, present options:
Missing skill: /devils-advocate Options: 1. Create a stub skill (I'll generate a skeleton) 2. Use /staff-review instead (similar purpose) 3. Skip this step - Wait for user choice on each gap before proceeding.
Step 4: Generate Template
Build a v2 template JSON:
-
Map each step in the user's described workflow to a template step.
-
For each step, set:
name: kebab-case identifierskill: the matching skill name (e.g., "/staff-review"), or null if manualon_fail: "retry" for review/test steps, "block" for critical gates, "continue" for optional stepsguards: add logical guards (e.g., nogit pushbefore review)description: one-line summary of what the step does
-
For iterative segments (user said "until", "repeat", "loop", "iterate"):
- Identify the loop boundary (which steps repeat)
- Set
loop_back_toon the last step of the loop, pointing to the first - Set
max_iterations(default 3, or what the user specified) - Set
exit_conditionfrom the user's description (natural language)
-
Add
schema_version: 2to the template root.
Step 5: Present to User
Show the proposed workflow in two formats:
ASCII Diagram
Draw the workflow as a flow diagram showing loops:
┌────────────┐ ┌───────────────┐ ┌─────────────┐
│ review │────>│ fix-issues │────>│ run-tests │
│ /staff-rev │ │ /fix-polish │ │ │
└────────────┘ └───────────────┘ └──────┬──────┘
^ │
│ ↻ until clean (max 3) │
└─────────────────────────────────────────┘
│ done
v
┌─────────────┐
│ ship │
│ /pr-ready │
└─────────────┘
For linear segments, use a simple arrow chain:
setup ──> plan ──> implement ──> verify
JSON Preview
Show the full template JSON, formatted for readability.
Prompt
Ask the user:
Approve this workflow? (approve / edit / cancel)
- approve: Save template and optionally start it
- edit: Describe what to change
- cancel: Discard
Step 6: Save and Start
On approve:
- Save the template:
echo '<json>' | python3 "${CLAUDE_PLUGIN_ROOT}/core/cli.py" save-template - Ask: "Start this workflow now? (y/n)"
- If yes: invoke
/wf-start <template-name>
On edit:
- Ask what to change
- Modify the template
- Go back to Step 5 (re-present)
On cancel:
- Discard and confirm
Design Rules
- Every step with a matching skill gets a
skillfield. This is metadata — Claude reads it from context.md and knows which skill to invoke. - Loops are defined by
loop_back_toon the last step of the repeating segment. The state machine handles the rest. exit_conditionis evaluated by Claude (natural language), not by scripts. Keep conditions specific and observable: "no MEDIUM+ issues" not "code is good enough".max_iterationsdefaults to 3. If the user says "until done" without a cap, set it to 5 and note the cap.- Guards should prevent premature actions: no
git pushbefore review, no deploy before tests. - Template names are kebab-case. If the user doesn't name it, derive from the description.
Signals
- GitHub stars
- 27
- Forks
- 1
- Last commit
- Aug 2026
Advanced
- Item type
- skill
- Key
wf-compose- Source
- github.com/dioptx/weft