A CLI lets users batch-generate outside the browser. `manudesign generate ...` produces a PNG to stdout or to a file, no UI needed.
What this looks like
```
manudesign generate \
--prompt "founder portrait, golden hour" \
--style editorial-chromatic \
--composer hero_light \
--aspect 4:5 \
--headline "We train ambitious people to build with AI" \
--out hero.png
```
```
manudesign carousel \
--prompt "AI internship launch" \
--style warm-analog-film \
--slides hero,problem,stat,cta \
--out-dir ./launch-deck/
```
Where to put it
- New `packages/cli/` directory at the repo root
- TypeScript, runnable via `bun packages/cli/index.ts` and `npx manudesign`
- Reuse `runSlideGeneration` from `src/lib/generate.core.ts` directly — no HTTP layer needed
- For the composer step, call `composeFromImageUrl` and then `rasterizeSvgToPng`
Stretch
- `manudesign workflow run carousel-from-archive.yaml` — read a declarative pipeline file
- `--style-pack ./my-brand-kit.json` for one-off branding overrides
Why this matters
CI/CD-friendly. Plays with bash scripts. Fits the "Unix philosophy" half of the developer crowd. Also a great installed-base proxy — npm download counts become a public metric.
A CLI lets users batch-generate outside the browser. `manudesign generate ...` produces a PNG to stdout or to a file, no UI needed.
What this looks like
```
manudesign generate \
--prompt "founder portrait, golden hour" \
--style editorial-chromatic \
--composer hero_light \
--aspect 4:5 \
--headline "We train ambitious people to build with AI" \
--out hero.png
```
```
manudesign carousel \
--prompt "AI internship launch" \
--style warm-analog-film \
--slides hero,problem,stat,cta \
--out-dir ./launch-deck/
```
Where to put it
Stretch
Why this matters
CI/CD-friendly. Plays with bash scripts. Fits the "Unix philosophy" half of the developer crowd. Also a great installed-base proxy — npm download counts become a public metric.