Skip to content

keryx reel new

Create a reel workspace.

Usage

keryx reel new <slug> [--theme <keyword>] [--bundle <dir>] [--from-post <file>] [--force]

Flags

Flag Description Default Required
--theme Reel theme keyword recorded in workspace.yaml the configured reel default
--bundle Content directory to associate with the reel
--from-post Mark the workspace as seeded from a post
--force Overwrite an existing workspace false

The slug is a positional argument; omitting it gives missing argument (usage: keryx reel new <slug> [--theme t] [--bundle dir] [--force]).

What the slug has to look like

Lowercase kebab-case, no path separators — ^[a-z0-9]+(-[a-z0-9]+)*$. Anything else is refused with invalid slug (want lowercase kebab-case). The slug is the directory name and the reel's stable id; rename it later with reel rename.

What it creates

reels/<slug>/, containing workspace.yaml, an empty-but-valid storyboard.json ([]), a .gitignore, and the vo/, vo/takes/, cards/, cards/takes/, music/takes/ and .cache/ directories. The directories are pre-created so the first generation has somewhere to write.

$ keryx reel new my-post
created reels/my-post

The full layout, and which of those files belong in git, is in the workspace layout reference.

Refusing to clobber

An existing workspace directory is refused with workspace already exists. --force overwrites workspace.yaml, storyboard.json and .gitignore; it does not delete media you have already selected.

What --from-post actually does

It records unreviewed: true in workspace.yaml and prints a hint. It does not draft a storyboard — the workspace still starts with an empty board:

$ keryx reel new my-post --from-post post.md
created reels/my-post
(empty storyboard — run `keryx storyboard draft` to seed from the post)

Run storyboard draft to actually generate one.

See also