Semantic workflow composer — parse natural language workflow description into a DAG of skill/CLI/agent nodes, auto-inject checkpoint save nodes, confirm with user, persist as reusable JSON template. Triggers on "wf-composer " or "/wf-composer".
73
68%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./.claude/skills/wf-composer/SKILL.mdParse user's semantic workflow description → decompose into nodes → map to executors → auto-inject checkpoints → confirm pipeline → save as reusable workflow-template.json.
User describes workflow in natural language
-> Phase 1: Parse — extract intent steps + variables
-> Phase 2: Resolve — map each step to executor (skill/cli/agent/command)
-> Phase 3: Enrich — inject checkpoint nodes, set DAG edges
-> Phase 4: Confirm — visualize pipeline, user approval/edit
-> Phase 5: Persist — save .workflow/templates/<name>.json| Constant | Value |
|---|---|
| Session prefix | WFD |
| Template dir | .workflow/templates/ |
| Template ID format | wft-<slug>-<date> |
| Node ID format | N-<seq> (e.g. N-001), CP-<seq> for checkpoints |
| Max nodes | 20 |
Parse $ARGUMENTS.
| Detection | Condition | Handler |
|---|---|---|
| Resume design | --resume flag or existing WFD session | -> Phase 0: Resume |
| Edit template | --edit <template-id> flag | -> Phase 0: Load + Edit |
| New design | Default | -> Phase 1: Parse |
Resume design session:
.workflow/templates/design-drafts/WFD-*.json for in-progress designsEdit existing template:
--edit pathRead phases/01-parse.md and execute.
Objective: Extract structured semantic steps + context variables from natural language.
Success: design-session/intent.json written with: steps[], variables[], task_type, complexity.
Read phases/02-resolve.md and execute.
Objective: Map each intent step to a concrete executor node.
Executor types:
skill — invoke via Skill(skill=..., args=...)cli — invoke via ccw cli -p "..." --tool ... --mode ...command — invoke via Skill(skill="<namespace:command>", args=...)agent — invoke via Agent(subagent_type=..., prompt=...)checkpoint — state save + optional user pauseSuccess: design-session/nodes.json written with resolved executor for each step.
Read phases/03-enrich.md and execute.
Objective: Build DAG edges, auto-inject checkpoints at phase boundaries, validate port compatibility.
Checkpoint injection rules:
skill → skill transition that crosses a semantic phase boundaryagent spawnSuccess: design-session/dag.json with nodes[], edges[], checkpoints[], context_schema{}.
Read phases/04-confirm.md and execute.
Objective: Visualize the pipeline, present to user, incorporate edits.
Display format:
Pipeline: <template-name>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
N-001 [skill] workflow-lite-plan "{goal}"
|
CP-01 [checkpoint] After Plan auto-continue
|
N-002 [skill] workflow-test-fix "--session N-001"
|
CP-02 [checkpoint] After Tests pause-for-user
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Variables: goal (required)
Checkpoints: 2 (1 auto, 1 pause)AskUserQuestion:
Success: User confirmed pipeline. Final dag.json ready.
Read phases/05-persist.md and execute.
Objective: Assemble final template JSON, write to template library, output summary.
Output:
.workflow/templates/<slug>.json — the reusable templateSuccess: Template saved. User shown: Skill(skill="wf-player", args="<template-path>")
| Spec | Purpose |
|---|---|
| specs/node-catalog.md | Available executors, port definitions, arg templates |
| specs/template-schema.md | Full JSON template schema |
0f8e801
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.