[ docs · cli reference ]live

One CLI, seven subcommands.

Every operation Quill performs is also a CLI subcommand — discovery, workflow generation, the pipeline, category seeding, dev-doc captures. The portal calls these same primitives. You can drive the whole product from a terminal.

Binary name. The CLI binary is in the middle of a rebrand — the current name is demodemon (the internal codebase name); it'll ship as quill in the public 1.0 release. Until then, every quill command below also works as pnpm demodemon.
[ pipeline ]

quill — run the full pipeline

Discover features, plan workflows, run the browser, narrate, compose video, generate MDX. Without arguments, processes every feature in your catalog. Pass a feature id to run just one.

$ quill # all features $ quill flows_create # one feature, by id
[ self-serve ]

quill onboard — end-to-end mega-command

The fastest path to your first generated article. Runs the testid proposer, initializes the workspace's feature catalog and workflows, executes the pipeline, and seeds help-center categories — in that order, one command.

$ quill onboard ./path/to/your-app $ quill onboard ./your-app --dry-run # preview only, no writes
[ feature catalog ]

quill init — propose features + workflows

Reads your repo source, proposes a feature catalog (one record per customer-facing capability), and generates a workflow.json per feature so the pipeline can run end-to-end. Requires the target app to be running so route discovery is grounded in reality.

$ quill init # use config.target.repoPath $ quill init ./path/to/repo # override repo path $ quill init --force # overwrite existing $ quill init --skip-workflows # features only
[ stable selectors ]

quill testids — propose data-testids

Walks your repo for interactive elements (buttons, inputs, links) that lack a data-testid attribute and proposes stable ids for each one. Dry-run by default. The runner uses these attributes as its only contract with the UI — never CSS classes, never text content.

$ quill testids # dry-run, prints proposals $ quill testids --apply # write to disk
[ help center taxonomy ]

quill categorize — propose categories

Looks at your features and proposes a help-center category taxonomy — one level deep, customer-facing labels. Writes to .demodemon/categories.json; the portal renders the help center against it.

$ quill categorize
[ dev docs ]

quill devdocs — capture API routes

Walks your backend route handlers, hits each GET endpoint against a running dev server, captures the response shape, and lands draft dev-doc pages in the portal queue.

$ quill devdocs $ quill devdocs --repo apps/api # walk a subpath $ quill devdocs --url http://localhost:4000 $ quill devdocs --discovery-only # skip captures $ quill devdocs --recapture # rebuild + flag drift $ quill devdocs --tag v1.2.3 # named version

The --include-side-effects flag is an operator-only override; the pipeline's auto-runs must never use it.

[ environment ]

Environment variables.

The CLI reads .env.local at the workspace root before any engine touches process.env. Shell-exported vars still win — the loader is non-destructive.

ANTHROPIC_API_KEY=sk-ant-... # required: workflow agent, narration, docs-gen OPENAI_API_KEY=sk-... # optional: alternate TTS provider QUILL_WORKSPACE_ID=acme-prod # required in production QUILL_SESSION_SECRET=# 32+ char random DEMODEMON_GEN_DIR=# absolute path to generated/ DEMODEMON_TARGET_REPO_PATH=# absolute path to customer repo

Drive the pipeline from your terminal.

The portal calls these same primitives — and you can call them yourself.