zel ship
Somebody else's documentation to a published site, in one line.
zel ship ./docs --provider netlify✓ Detected MkDocs (certain)
✓ Converted 47 pages, 3 unmapped — see the report
✓ Content valid
✓ Built static — 47 routes
✓ Uploaded to acme-docs
https://acme-docs.netlify.app
What it is
detect → convert → check →
build → deploy, stopping at the first failure.
The whole of a migration, from a folder written for another tool to a site someone can read.
Why one command for five
Because it is one intention. "I have MkDocs documentation and I want to see what it looks like in Zellij, live, before I decide anything" is a single question, and answering it in five steps means five opportunities to stop halfway and lose the thread.
It is also the honest way to evaluate a migration. Reading a converted folder tells you the files exist; seeing the site tells you whether the navigation survived, whether the prose still reads, and whether the pages you cared about are where you expect. That judgement needs a URL, and this is the shortest path to one.
What it will not hide
Every warning the individual commands produce, ship produces:
! 3 thing(s) could not be carried over:
https://blog.acme.dev: "Blog" is an external link; sidebars hold pages.
draft.md: on disk but absent from the navigation; not converted
internal/notes.md: on disk but absent from the navigation; not converted
And the landing page is still yours. Every tool it converts from describes a documentation tree; Zellij has that and marketing pages built from nineteen section types with no equivalent in the source. What ships is a faithful guide folder and one hero to build on. That is not a gap in the converter — it is the part Zellij has that the source did not.
The one risk worth naming
zel check does not compile MDX. A converted folder can pass every step here
and still fail a later build, because MDX treats { and < as syntax and prose
written for MkDocs never had to care.
ship builds, so it does compile — which means it catches this where
migrate would not. If ship succeeds, the conversion is sound.
Options
<source> | Required. The folder to convert | — |
--provider <name> | Where to publish | from zel.toml |
--out <path> | Where the converted folder goes | ./content |
Until it lands
Everything except the upload works:
zel migrate ./docs --out ./content
zel build ./content --out dist
netlify deploy --prod --dir distSee also
zel migrate— the first three, which work today- Lab 2 — the same journey, one step at a time
- Converting existing docs — what to expect from a conversion
