Skip to main content
On this page

CLI

diagramkit CLI command structure

The CLI is the recommended way to use diagramkit. It handles file discovery, incremental builds, watch mode, and output naming automatically.

Invocation Paths

After installation, these entrypoints all invoke the same CLI:

Shell
npx diagramkit --version./node_modules/.bin/diagramkit --versionnode ./node_modules/diagramkit/dist/cli/bin.mjs --version

Use whichever form fits your environment. Local npm bin shims and direct dist/cli/bin.mjs execution behave the same as npx diagramkit.

Commands

render

Render one or more diagram files to images.

Shell
diagramkit render <file-or-dir> [options]

A file renders that single diagram. A directory recursively discovers and renders all diagram files.

Shell
# Render all diagrams in the current directorydiagramkit render .# Render a single filediagramkit render docs/architecture.mermaid# Render a specific directorydiagramkit render ./content/posts

warmup

Pre-install the Playwright Chromium browser binary. Run once per environment.

Shell
diagramkit warmup

doctor

Validate environment readiness (Node, Playwright, Chromium, sharp):

Shell
diagramkit doctordiagramkit doctor --json

init

Create a config file in the current directory.

Shell
diagramkit init          # diagramkit.config.json5diagramkit init --ts     # diagramkit.config.ts with defineConfig()

--install-skill

Install project-level skills for Claude and Cursor in the current repository.

Shell
diagramkit --install-skill

This writes .claude/skills/diagramkit/SKILL.md and .cursor/skills/diagramkit/SKILL.md if they do not already exist. The generated skill tells agents to read node_modules/diagramkit/llms.txt, add a render:diagrams script, and create diagramkit.config.json5 only when the repo needs non-default behavior.

Render Options

Output Format

Shell
diagramkit render . --format svg      # defaultdiagramkit render . --format pngdiagramkit render . --format jpegdiagramkit render . --format webpdiagramkit render . --format avifdiagramkit render . --format svg,png  # multiple formats in one pass

Tip

PNG, JPEG, WebP, and AVIF require sharp. Install with npm add sharp.

Theme

Shell
diagramkit render . --theme both      # default -- produces -light and -dark variantsdiagramkit render . --theme light     # light onlydiagramkit render . --theme dark      # dark only

Scale and Quality (Raster Only)

Shell
diagramkit render . --format png --scale 3       # 3x resolution for HiDPIdiagramkit render . --format jpeg --quality 80    # compression quality 1-100diagramkit render . --format webp --quality 85 --scale 2

Force Re-render

Shell
diagramkit render . --force      # ignore manifest cache, re-render everythingdiagramkit render . -f           # short form

Watch Mode

Shell
diagramkit render . --watch      # watch for changes, re-render on savediagramkit render . -w           # short form

See Watch Mode for details.

Dark Mode Contrast

Shell
diagramkit render . --no-contrast    # skip WCAG contrast optimization on dark SVGs

By default, dark-mode Mermaid and Graphviz SVGs are post-processed to fix fill colors with poor contrast.

Filter by Type

Shell
diagramkit render . --type mermaiddiagramkit render . --type excalidrawdiagramkit render . --type drawiodiagramkit render . --type graphviz

Custom Output

Shell
# Single file to a custom directorydiagramkit render diagram.mermaid --output ./build/images# Change the output folder name (default: .diagramkit)diagramkit render . --output-dir images# Place outputs next to source files (no subfolder)diagramkit render . --same-folder# Add prefix/suffix to output filenamesdiagramkit render . --output-prefix "dk-"diagramkit render . --output-suffix "-v2"

When you use --output, diagramkit writes to that folder directly. Directory renders skip manifest tracking for that run, and single-file renders do not update the source directory manifest. Use --output-dir if you want custom folder naming while keeping incremental manifests.

Explicit Config File

Shell
diagramkit render . --config ./custom.config.json5

Use --config to point at a specific config file instead of auto-discovery. Useful for CI or monorepo setups.

Manifest Control

Shell
diagramkit render . --no-manifest                        # disable incremental cachingdiagramkit render . --manifest-file custom-manifest.json # custom manifest filename

Scripting and CI

Shell
diagramkit render . --dry-run    # preview what would render, without renderingdiagramkit render . --plan       # include stale reasons in plan outputdiagramkit render . --quiet      # suppress info output, errors onlydiagramkit render . --log-level warndiagramkit render . --log-level verbosediagramkit render . --json       # machine-readable JSON outputdiagramkit render . --strict-configdiagramkit render . --max-type-lanes 2

Global Flags

Shell
diagramkit --help       # show helpdiagramkit -hdiagramkit --version    # show versiondiagramkit -vdiagramkit --agent-help # output full reference for LLM agentsdiagramkit --install-skill # install project skills

Examples

Shell
# Render everything with defaultsdiagramkit render .diagramkit .    # alias for "render ."# High-res PNGs for documentationdiagramkit render ./docs --format png --scale 3# Watch mode during developmentdiagramkit render . --watch# Only mermaid, force re-renderdiagramkit render . --type mermaid --force# Graphviz DOT to dark-only SVGdiagramkit render dependency.dot --theme dark# Single file to a custom folderdiagramkit render flow.mermaid --output ./static/images# Explicit config file for CIdiagramkit render . --config ./ci.config.json5# CI: JSON output, no cachingdiagramkit render . --json --no-manifest# CI: explain stale reasons before renderingdiagramkit render . --plan --json

JSON Contract Upgrade

--json now emits a versioned envelope with schemaVersion: 1 and nested result.
If you parsed legacy root-level JSON fields directly, migrate to result.*.

JSON schema: diagramkit/schemas/diagramkit-cli-render.v1.json (exported from the npm package).

Exit Codes

Code Meaning
0 Success
1 Error (unknown command, render failure, etc.)

In watch mode, the process stays running until Ctrl+C (SIGINT).