CLI
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:
npx diagramkit --version./node_modules/.bin/diagramkit --versionnode ./node_modules/diagramkit/dist/cli/bin.mjs --versionUse 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.
diagramkit render <file-or-dir> [options]A file renders that single diagram. A directory recursively discovers and renders all diagram files.
# Render all diagrams in the current directorydiagramkit render .# Render a single filediagramkit render docs/architecture.mermaid# Render a specific directorydiagramkit render ./content/postswarmup
Pre-install the Playwright Chromium browser binary. Run once per environment.
diagramkit warmupdoctor
Validate environment readiness (Node, Playwright, Chromium, sharp):
diagramkit doctordiagramkit doctor --jsoninit
Create a config file in the current directory.
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.
diagramkit --install-skillThis 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
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 passTip
PNG, JPEG, WebP, and AVIF require sharp. Install with npm add sharp.
Theme
diagramkit render . --theme both # default -- produces -light and -dark variantsdiagramkit render . --theme light # light onlydiagramkit render . --theme dark # dark onlyScale and Quality (Raster Only)
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 2Force Re-render
diagramkit render . --force # ignore manifest cache, re-render everythingdiagramkit render . -f # short formWatch Mode
diagramkit render . --watch # watch for changes, re-render on savediagramkit render . -w # short formSee Watch Mode for details.
Dark Mode Contrast
diagramkit render . --no-contrast # skip WCAG contrast optimization on dark SVGsBy default, dark-mode Mermaid and Graphviz SVGs are post-processed to fix fill colors with poor contrast.
Filter by Type
diagramkit render . --type mermaiddiagramkit render . --type excalidrawdiagramkit render . --type drawiodiagramkit render . --type graphvizCustom Output
# 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
diagramkit render . --config ./custom.config.json5Use --config to point at a specific config file instead of auto-discovery. Useful for CI or monorepo setups.
Manifest Control
diagramkit render . --no-manifest # disable incremental cachingdiagramkit render . --manifest-file custom-manifest.json # custom manifest filenameScripting and CI
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 2Global Flags
diagramkit --help # show helpdiagramkit -hdiagramkit --version # show versiondiagramkit -vdiagramkit --agent-help # output full reference for LLM agentsdiagramkit --install-skill # install project skillsExamples
# 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 --jsonJSON 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).