--- summary: 'Current CLI surface for IR v5, theme v2, deck projects, fixed-sample theme comparison, validation, audit, images, preview, and installation health' read_when: - looking up a supported command or flag - wiring an agent around the spec, fill, validate, audit, and render loop - creating, forking, comparing, extracting, or resolving themes - diagnosing audit output, image sourcing, or an installation --- # CLI The CLI accepts an IR v5 file, a deck project directory, or a bare deck name for most deck operations. A bare name resolves under the configured deck root. An explicit path wins. There is no render-time theme option. A project binds its theme in `deck.spec.json`. A bare IR binds it in `theme.id`. Compare unbound candidates with `theme try` before authoring the spec. ## Recommended project loop ```bash pptwise spec validate deck-dir/deck.spec.json pptwise assemble deck-dir/ pptwise validate deck-dir/ pptwise audit deck-dir/ pptwise render deck-dir/ pptwise preview deck-dir/ --html ``` Fill no more than four pages between validation passes. Use `serve` when a reviewer needs a live browser round. ## Command index | command | purpose | | --- | --- | | `render ` | Render native editable PPTX. | | `validate ` | Validate IR, theme binding, menu kinds, components, assets, and content quality. | | `audit ` | Run deterministic visual and geometry checks. | | `asset-brief ` | Report real image frames, crop, palette, safe zones, and prompts. | | `schema` | Print the IR, spec, or style-override JSON Schema. | | `spec validate ` | Validate a theme-shaped deck spec. | | `assemble ` | Merge a deck project into derived IR v5. | | `disassemble ` | Split IR v5 into a spec, page files, and assets. | | `themes` | List the 24 factory presets and metadata. | | `theme new` | Copy a named theme into a self-contained v2 file. | | `theme fork` | Copy a theme and rederive its palette around new anchors. | | `theme try` | Render the fixed fitting-room sample across two to four themes. | | `brand extract` | Extract Office colors and fonts into a complete v2 theme. | | `narratives` | List named narrative presets and axes. | | `layouts` | Inspect the internal face registry for engine maintenance. | | `images search` | Search configured stock providers. | | `images fetch` | Pin one selected stock image to a deck. | | `images list` | List pinned images for a deck. | | `images generate` | Generate and pin an image through an enabled local CLI. | | `config set` | Set optional user configuration. | | `config show` | Show effective user configuration with secrets masked. | | `init` | Create `pptwise.config.json` in the current directory. | | `preview ` | Write SVG pages and an optional self-contained review file. | | `serve ` | Start a live-reloading review server. | | `doctor` | Check runtime, skill copies, plugin state, optional capabilities, and a self-test render. | | `check-update` | Check npm for a newer release. | | `self-update` | Update the global installation. | `layouts` exposes engine vocabulary for maintainers. Deck authors and authoring agents choose content `kind`, never internal face ids. ## Render ```bash pptwise render \ [-o ] \ [--draft] \ [--allow-dropped-content] \ [--no-git-ignore] ``` Without `-o`, output goes to `.pptwise//.pptx` under the project root. Change colors with `pptwise theme fork`. That writes a complete theme. Render does not take a partial recolor overlay. `--draft` permits placeholder pages. `--allow-dropped-content` permits known content loss and should be used only with explicit user approval. The normal response is to shorten or split the page. ## Validate and audit ```bash pptwise validate pptwise audit [--json] [--pixels] ``` Validation covers strict IR v5 shape, installed theme, theme-menu kinds, effective boundary faces, component rules, duplicate ids, assets, narrative, physical capacity, and editorial warnings. Errors block `OK`. Warnings do not. Audit renders deterministic SVG and checks: - `overflow` - `out-of-bounds` - `low-contrast` - `overlap` - `content-truncated` - `content-dropped` - `monotony` Any finding exits with code 1. `--pixels` adds image-backed text contrast sampling and requires `sharp`. ## Schemas and specs ```bash pptwise schema pptwise schema --spec pptwise spec validate deck-dir/deck.spec.json ``` IR is version `"5"`. The deck spec is version `"1"`. Theme files are numeric version `2`. Current IR has no `seed`, `layout`, `beat`, or `arrangement` fields. ## Assemble and disassemble ```bash pptwise assemble [-o ] pptwise disassemble -o ``` Assembly combines spec-owned semantics, content-only page files, and local assets. Missing page files become placeholders. It does not persist face choices or other rendering state. Disassembly refuses to overwrite an existing `deck.spec.json`. It preserves page ids and writes asset files when the input source can be copied or decoded. ## Themes ```bash pptwise themes [--json] pptwise theme new --from \ [-o ] [--id ] [--label