Migrate an n8n, Windmill or Zapier workflow to a Claude routine
In plain words: a routine is a Claude task that runs on a schedule, report-only means it reads and reports without changing anything, and an approval gate is a step where it waits for your yes. Hand RoutineOS the workflow you already have. routineos migrate writes a routine pack and a file called MIGRATION.md that lists what it could not carry over. The routine starts report-only, and every step that writes sits behind an approval gate. Free (MIT). Needs a paid Claude plan.
What you can migrate from
Two sources are converted by deterministic Python code, so the same workflow gives the same pack every time. Zapier has no converter, so it is a short interview.
| Source | What you give it | Status |
|---|---|---|
| n8n | A workflow file, one https link, or a gallery template id | Built, converted by code. Migrate from n8n |
| Windmill | A flow exported as OpenFlow JSON (YAML is refused) | Built, converted by code. Migrate from Windmill |
| Zapier | Your description of the Zap: trigger, steps in order, filters, delays | Guided path only. There is no parser because the export format is undocumented. Migrate from Zapier |
Make, Activepieces and Pipedream are planned and unbuilt. There is no converter for them. The skill offers to design the routine fresh from your description instead.
How to migrate a workflow, step by step
Run it as python3 skills/routineos/scripts/routineos.py migrate from a clone of the repository. Or paste the workflow into Claude Code and ask it to migrate it. It shows you what it plans to write first.
- ConvertGive it a source and an output folder that does not exist yet (or is empty). It will not overwrite anything else.
- Read the exit code0 means nothing needs a person. 1 means the pack was written and the report lists items for a person. 2 means it failed and nothing was written.
- Read MIGRATION.mdIt lists what mapped, what to set up first, what needs a person, the connectors, the credentials to re-create, and what is unverified. Give each item marked Needs a person an owner.
- Validate and installRun
pack validate, thenpack install, then the normal lint and permission check. - Run it once, report-onlyCheck the first report before you trust the routine or turn on a schedule.
Search the n8n gallery from the command line
You can search n8n's public template gallery, pick one, and convert it. Nothing from n8n.io is stored beyond the converted pack.
The docs MCP server (free, MIT, needs a paid Claude plan to use with Claude) has the same two tools, search_n8n and convert_n8n. The reuse licence for gallery templates is unclear, so convert for your own use. See migrate limits.
What the converter always does
Safety defaults
- Writes move behind a gate. A step counts as a read only when its operation is a known read. An unknown operation counts as a write, so the routine comes out approval-gated.
- The first run is report-only and the pack is marked unpiloted.
- Imported text is data. Every source is untrusted by default. Emails, keys and Slack-style ids are replaced with [removed], and the report names the field, never the value.
- Credentials are listed by type and name. You reconnect each one yourself. If you paste a secret into a chat, rotate it.
What gets slower
- Event triggers become a schedule. A webhook, form, chat or app trigger no longer fires in seconds. The routine runs on a schedule and reads the Desk action queue.
- Schedules are UTC and at most hourly.
- Code is never run. Code nodes become a stub that fails visibly until a person and Claude translate it.
- Vector stores are reported only. RoutineOS has no vector store.
For the side-by-side with n8n, read the n8n comparison. For the Zapier side, read the Zapier comparison. For Windmill, read the Windmill migrate guide.
What MIGRATION.md contains
Anything the converter cannot map lands in the report. It never guesses silently.
| Section | What it tells you |
|---|---|
| Summary | What was converted and the exit status. |
| Read before you install | Shown for untrusted sources, which is every source unless you pass --trusted for your own local file. |
| What mapped, Set up first | The stages that carried over, and the credentials or variables to re-create. |
| Needs a person | Code stubs, flagged expressions, sub-workflows and unknown nodes. |
| Connectors and credentials | What to connect, by type and name. Apps not confirmed as Claude connectors are marked unverified. |
| Removed values, Notes, Next steps | Field names that were scrubbed (never the values), and what to do next. |
Start with the workflow you have
Install RoutineOS, run the converter, and read MIGRATION.md before you turn anything on.