πŸ’»β€‚CLI

Which command do I run, and what are its flags?

npx @getnarro/cli <command>

Install it globally (npm i -g @getnarro/cli) and the binary is narro.

npx narro resolves an unrelated package on npm. Use npx @getnarro/cli, or install globally and call narro.

Commands

CommandWhat it does
narro analyze-slides-for-componentsAnalyze presentation slides to identify needed shared-ui components
narro build [file]Build for production (pass a .md file for markdown mode)
narro bundleBundle presentation into a single self-contained HTML file
narro capture-website <url>Capture a full-page screenshot of a website
`narro check <filedir>`
narro commentsManage slide comments
narro create [project-name]Create a new Narro presentation project
narro create-template-from-screenshots [template-name]Generate a template from presentation screenshots using AI
narro dev [file]Start development server (pass a .md file for markdown mode)
narro export [file]Export presentation to static files, PPTX, or Google Slides
narro fmt <file>Normalise a deck’s whitespace and frontmatter without changing what it renders
narro import <source>Import presentation from PowerPoint or Google Slides
narro new <file>Scaffold a starter markdown deck
narro previewPreview built presentation
narro themesBrowse and apply themes from the marketplace

Reference

Generated from the command tree, so it cannot disagree with narro --help.

narro analyze-slides-for-components

Analyze presentation slides to identify needed shared-ui components

OptionFor
-d, --screenshots-dir <dir>Directory containing screenshot files
-s, --screenshots <paths...>Screenshot file paths
-o, --output <file>Output markdown file
-p, --provider <provider>AI provider (openai or claude)
-m, --model <model>AI model to use

narro build [file]

Build for production (pass a .md file for markdown mode)

OptionFor
-o, --outDir <dir>output directory
--base <path>base path for deployment
--no-fitskip the overflow measurement after building

narro bundle

Bundle presentation into a single self-contained HTML file

OptionFor
-o, --output <filename>output filename
--minifyminify output for smaller file size
--inline-assetsinline images as base64 (default: false)
--check-sizewarn if output exceeds email attachment limit (~25MB)

narro capture-website <url>

Capture a full-page screenshot of a website

OptionFor
-o, --output <path>Output file path (default: screenshot.png)
-f, --full-pageCapture full page (scrollable content)
-w, --width <number>Viewport width in pixels
-h, --height <number>Viewport height in pixels
-d, --delay <number>Delay before screenshot in milliseconds

narro check <file|dir>

Validate a markdown deck, or measure built output with β€”fit

OptionFor
--stricttreat warnings as errors
--renderprint what each slide renders β€” elements, classes, and text
--fitrender the deck in a headless browser and report slides whose content overflows
--fit-if-availablelike β€”fit, but only warn when no browser is installed
--render-fulllike β€”render, but print long text and large props in full

narro comments

Manage slide comments

narro create [project-name]

Create a new Narro presentation project

OptionFor
-t, --template <template>Template to use (minimal, corporate, developer, creative, bold-statement, visual-story, data-narrative, startup-pitch, tech-conference, template0, markdown-minimal, markdown-app, markdown-docs)
-m, --mode <mode>Presentation mode: react (default) or markdown
--skip-installSkip npm install
-y, --yesAccept the defaults for anything not given; never prompt
--forceScaffold into a directory that already has files in it
--listList every template with what it is, and exit

narro create-template-from-screenshots [template-name]

Generate a template from presentation screenshots using AI

OptionFor
-s, --screenshots <paths...>Screenshot file paths
-o, --output <dir>Output directory
-p, --provider <provider>AI provider (openai or claude)
-m, --model <model>AI model to use

narro dev [file]

Start development server (pass a .md file for markdown mode)

OptionFor
-p, --port <number>port to use
--hostexpose to network
-o, --openopen browser on startup
--no-opendo not open the browser (markdown mode)
--theme <name>theme override (markdown mode)

narro export [file]

Export presentation to static files, PPTX, or Google Slides

OptionFor
-o, --outDir <dir>output directory for HTML export
--pdfexport to PDF (requires Playwright)
--pngexport slides as PNG images (requires Playwright)
--to <format>export format: pptx, google-slides
--output-path <path>output file path for PPTX export
--include-notesinclude speaker notes in export
--include-animationsinclude animations in export
--settle <ms>milliseconds to let a slide’s animations finish before capturing (default: 4000)
--input-path <path>path to presentation project
--template-path <path>PowerPoint template file (.potx or .pptx) to apply
--template-id <id>Google Slides template presentation ID to copy from
--google-client-id <id>Google OAuth client ID
--google-client-secret <secret>Google OAuth client secret
--google-refresh-token <token>Google OAuth refresh token

narro fmt <file>

Normalise a deck’s whitespace and frontmatter without changing what it renders

OptionFor
--checkreport whether the deck is formatted, and exit non-zero if not

narro import <source>

Import presentation from PowerPoint or Google Slides

OptionFor
--from <source>import source: pptx, google-slides
-o, --output-dir <dir>output directory for imported project
--preserve-stylespreserve original styles
--convert-animationsconvert animations
--google-client-id <id>Google OAuth client ID
--google-client-secret <secret>Google OAuth client secret
--google-refresh-token <token>Google OAuth refresh token

narro new <file>

Scaffold a starter markdown deck

narro preview

Preview built presentation

OptionFor
-p, --port <number>port to use
--hostexpose to network
-o, --openopen browser on startup
-d, --outDir <dir>serve a directory of built output directly

narro themes

Browse and apply themes from the marketplace

Notes

check is the CI gate. narro check deck.md --strict promotes warnings to errors and exits non-zero, which is the step a pipeline runs β€” the scaffolded markdown templates map their lint script to exactly that. Plain check exits 0 on warnings, which makes it the right form for the edit loop and the wrong form for CI.

Three flags, three different questions:

FlagAnswers
--renderWhat does the slide render, and did that class land on the word or the paragraph? No browser.
--strictIs anything at all wrong, including the warnings? Exit code for CI.
--fitDoes the content fit the canvas β€” and does the page render at all? The only check that opens a browser. Not implied by --strict.
--fit-if-availableThe same, but a missing browser is a warning rather than a failure

See Verifying a deck for what each of these sees and does not see.

narro build <deck>.md measures fit for you. A single-file deck has no package.json to wire a check into, so the build runs one: it reports the overflow and exits non-zero. A machine with no browser gets a warning rather than a failure β€” narro check dist --fit is the strict form β€” and --no-fit turns it off entirely. This is the only fit check a narro new deck gets, because it is the only place there is to put one.

--fit and React mode. check is markdown-only, but --fit measures built output: npm run build && npx @getnarro/cli check dist --fit works for a React deck and is the only fit check either mode has. Every React template ships a fit script that runs exactly that. It needs Chromium (npx playwright install chromium); without one it fails, because a check that measured nothing is not a check that passed. --fit-if-available makes that a warning when you want it to be one, and NARRO_CHROMIUM=/path/to/chromium points it at a browser your image already has.

Formatting. Use narro fmt, not Prettier β€” a markdown formatter can reflow a paragraph and move an attribute block onto its own line, which changes what it styles with nothing to report it. See Formatting a deck.

Scaffolding. npm create narro@latest my-deck and narro create my-deck run the same code. narro new deck.md is different: it writes a single markdown file with no project around it.

Markdown mode. Passing a .md file to dev or build switches to markdown mode, where no project or config file is needed β€” the CLI brings its own runtime.

Export fidelity. A static build keeps animations, embeds, and live components working. PPTX maps slides onto real PowerPoint shapes so text stays editable, but anything driven by a live component becomes its rendered state. PDF flattens fragments to their final state.

Credentials. Google Slides import and export need Google OAuth credentials in the environment. create-template-from-screenshots and analyze-slides-for-components call a hosted vision model and need ANTHROPIC_API_KEY or OPENAI_API_KEY.

IntroductionWhat is Narro, and should I be writing markdown or React?
InstallationWhat do I install, and what does the project look like afterwards?
First DeckWhat does a working React deck look like, end to end?
Markdown ModeHow do I split a slide, style one word, or reveal a line β€” without leaving the markdown file?
Writing AI PromptsWhat do I tell an AI so the deck it writes actually builds?
Rules for AI AgentsWhat do I paste into my repo so an agent stops writing decks that build wrong?
React APIWhich component or hook do I import, and what does it take?
CLIWhich command do I run, and what are its flags?
Markdown APIHow do I read, edit, or validate a deck file from my own code instead of by hand?
Component ReferenceWhat props does this component take, and which package do I import it from?
Verifying a deckHow do I know my deck is actually correct?
AnimationHow do I reveal a list one line at a time, or move between slides with something other than a cut?
NavigationHow does the audience move through the deck, and how do I present it?
Canvas & PositioningHow do I put something at an exact position instead of in the flow?
Images & MediaHow do I use an image as a background, tint it, or embed a video?
ArchitectureWhich package owns what, and why is the seam where it is?
Transform ModeHow do I zoom and pan across one big canvas instead of cutting between slides?
Import & ExportHow do I get this deck out as PPTX, PDF, or one file I can email?
AI IntegrationHow do I wire an AI assistant up to Narro so it can write and build decks?
ThemingHow do I change the colours, fonts, and overall look of a deck?
Deck TemplatesHow do I define one house style with named layouts my slides can reference, like a PowerPoint master?
TroubleshootingSomething is wrong with my deck. What is it, and how do I fix it?
LimitationsWhat can't Narro do, and what do I do instead?