Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Capture a conversational workflow into a structured, generalizable workflow document. Use when asked to capture the workflow, document what we just did, create a workflow from this conversation, summarize the workflow steps, or produce a WORKFLOW.md.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 416% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 179% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 229% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 918% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 1041% | 0% |
Given a conversation where the user guided an agent step-by-step through a workflow — invoking skills, running ad-hoc commands, making decisions, discovering edge cases — produce a WORKFLOW.md that captures the complete workflow in a structured, generalizable format. The result is a document that anyone (human or orchestrator-creator skill) can read to understand every step, every decision point, every feedback loop, and every input/output relationship in the workflow, without needing to replay the conversation. When an existing WORKFLOW.md is present, merge new findings with the existing document rather than replacing it.
WORKFLOW.md already exists in the working directory, read it before starting. This triggers refinement mode: merge new conversation findings with the existing document instead of writing from scratch.Workflow extraction follows four phases: inventory, extract, generalize, and write.
Scan the full conversation from beginning to end. Build a chronological list of every meaningful action. An action is meaningful if it changed state, produced output, consumed input, or represented a decision.
For each action, note:
Also inventory:
If an existing WORKFLOW.md is present, read it now. Note which steps it already covers and which are new, changed, or contradicted by the current conversation.
Transform the chronological action list into workflow steps. Consecutive actions that serve the same purpose become a single step. Independent actions that always happen together become a single step.
For each step, extract:
| Property | What to capture | |---|---| | Name | Short, descriptive label (e.g., "Analyze codebase for relevant files") | | Type | skill (with exact skill name and plugin if applicable) or ad-hoc (with exact commands/actions) | | Invocation | For skills: the exact invocation pattern used (e.g., /spec Read the architecture from ...). For ad-hoc: the commands or actions performed. | | Inputs | What the step reads or receives — file paths, prior step outputs, user-provided data | | Outputs | What the step produces — files written, state changes, data extracted | | Purpose | Why this step exists — what it accomplishes in the workflow | | Success criteria | How to know the step succeeded — specific checks on the output | | Failure modes | What can go wrong — observed failures from the conversation plus reasonably anticipated ones | | Recovery | What to do on failure — retry, go back to an earlier step, skip, or escalate | | Dependencies | Which steps must complete before this one can start |
Pay attention to the user's explanations. When the user says "we do this because..." or "the reason for this step is...", that reasoning is critical context — capture it in the Purpose field.
The conversation walked through the workflow with specific inputs (a particular file, a specific bug, a concrete feature). The WORKFLOW.md must describe the general pattern that works for any valid input.
Generalization rules:
UserController.php, the workflow step should say "the target file" or {target_file}, not UserController.php. Use {parameter_name} syntax for variable inputs.UserController.php." Examples anchor the abstract description in reality.If no existing WORKFLOW.md: Write the document from scratch following the output format below. Structure the steps into logical phases. Draw the workflow graph. Document all decision criteria, feedback loops, and project context.
If existing WORKFLOW.md found (refinement mode):
Read the existing document and compare it with the extracted workflow. Apply these merge rules:
Increment the revision field in frontmatter. Update the date field.
Every step must be documented in the form it was actually performed:
Violation: A step says "use the code-review skill" when the conversation actually used grep and manual file reading to review code.
The workflow must be generic enough to apply to different inputs, but specific enough that an agent can execute it without guessing.
Violation: A step says "check if the output looks good" without defining what "good" means. A step says "analyze the relevant files" without specifying how to identify which files are relevant.
The document must contain enough information for the orchestrator-creator skill to build an autonomous agent without asking questions. At minimum:
Prefer information directly observed in the conversation over inferred information. When inferring (e.g., "this step could probably run in parallel with that one"), mark the inference explicitly: "Inferred: these steps have no data dependency and could run in parallel."
The output uses flexible structure — adapt section organization to the workflow being described. The following sections are required; additional sections may be added when the workflow warrants them.
yaml--- skill: WORKFLOW.md date: {YYYY-MM-DD} status: {complete | has_open_questions} revision: {1 for new, increment on refinement} steps_count: {total number of workflow steps} feedback_loops: {number of feedback loops identified} open_questions: {number of unresolved questions} ---
markdown# Workflow: {Descriptive Name} {One paragraph: what this workflow accomplishes, what triggers it, and what the end state looks like. Written generically — not referencing the specific conversation.} --- ## Parameters {Workflow-level inputs that vary between runs. Each parameter has a name, type, description, and the example value from the conversation.} | Parameter | Type | Description | Example | |---|---|---|---| | `{name}` | {type} | {what it is} | {value from conversation} | (Repeat for each parameter.) --- ## Steps (For each step, use this structure. Steps are numbered for reference in the workflow graph and decision criteria.) ### Step {N}: {Name} **Type:** {`skill: /skill-name` | `skill: plugin-name:skill-name` | `ad-hoc`} **Purpose:** {Why this step exists — what it accomplishes.} **Invocation:** {For skills: the exact invocation pattern with `{parameter}` placeholders.} {For ad-hoc: the commands or actions, generalized with parameters.} **Inputs:** - {What this step reads or receives. Use `{parameter}` for workflow parameters, `Step N output` for dependencies.} **Outputs:** - {What this step produces. Exact filenames or descriptions of state changes.} **Success criteria:** - {Mechanically checkable condition — e.g., "output file exists and contains no critical issues"} **Failure modes and recovery:** - {Failure}: {What to do — retry, go back to Step M, skip, escalate} (Repeat for each step. If a step has substeps, use a nested list within the step.) --- ## Workflow Graph {ASCII diagram showing the execution order, parallel opportunities, and feedback loops. Use arrows for flow, labels for conditions.}
{Step 1} → {Step 2} → {Step 3} ↓ {Step 4} ──(failure)──→ {Step 2}
{Below the diagram, list:}
- **Sequential dependencies:** {which steps must wait for which}
- **Parallel opportunities:** {which steps can run concurrently — state why (no shared inputs/outputs)}
- **Feedback loops:** {which steps loop back, under what condition, carrying what context}
---
## Decision Criteria
(For each step that has non-trivial success/failure evaluation:)
### After Step {N}: {Name}
1. {Check}: {what to look for}
- {Outcome A} → {action: proceed to Step M}
- {Outcome B} → {action: retry / go back to Step K with context}
- {Outcome C} → {action: escalate / skip}
(Repeat for each step with decision logic. Omit steps with trivial pass/fail.)
---
## Feedback Loops
(For each feedback loop identified:)
### {Loop Name}
- **Trigger:** {what condition activates this loop — e.g., "code review finds critical issues"}
- **Source step:** Step {N} ({name})
- **Target step:** Step {M} ({name})
- **Context to carry back:** {what information from the source step the target step needs — e.g., "the list of issues found"}
- **Maximum iterations:** {recommended limit — e.g., 3}
- **Blocked behavior:** {what happens after max iterations — e.g., "mark as blocked, continue to next item"}
(Repeat for each loop. If none: "No feedback loops identified.")
---
## Project Context
{Information about the project that an agent needs to execute this workflow correctly but cannot derive from the steps themselves. Include only context that was mentioned or demonstrated in the conversation.}
- **Tech stack:** {languages, frameworks, tools observed}
- **Conventions:** {naming patterns, directory structure, coding standards mentioned}
- **Constraints:** {limitations, requirements, team practices that affect the workflow}
- **Domain knowledge:** {any domain-specific information the user explained}
(Omit subsections that have no content. If no project context was shared: "No project-specific context was provided during the conversation.")
---
## Edge Cases and Observations
{Situations discovered during the conversation that affect how the workflow should handle unusual inputs or unexpected states.}
- **{Edge case}:** {what happened, how it was handled, what the general rule should be}
(Repeat for each. If none: "No edge cases were encountered.")
---
## Open Questions
- [ ] {Question}
- **Option A:** {description} — {tradeoff}
- **Option B:** {description} — {tradeoff}
- **Recommendation:** {suggestion and reasoning}
(Repeat for each. If none: "All questions resolved.")Before the output is complete, verify:
skill, date, status, revision, steps_count, feedback_loops, open_questions){parameter} placeholders instead of conversation-specific valuesOther measured skills in the registry, with their headline benchmark lift.