mdt_cli
the CLI for mdt (manage markdown templates)
mdt is a data-driven template engine for keeping documentation synchronized across your project. It uses comment-based template tags to define content once and distribute it to multiple locations — markdown files, code documentation comments (in any language), READMEs, mdbook docs, and more.
Installation
CLI Commands
mdt init [--path <dir>]— Create a sampletemplate.t.mdfile with getting-started instructions.mdt check [--path <dir>] [--verbose]— Verify all consumer blocks are up-to-date. Exits non-zero if any are stale.mdt update [--path <dir>] [--verbose] [--dry-run]— Update all consumer blocks with latest provider content.mdt info [--path <dir>]— Print project diagnostics and cache observability metrics.mdt doctor [--path <dir>] [--format text|json]— Run health checks with actionable hints, including cache validity and efficiency.mdt lsp— Start the mdt language server (LSP) for editor integration. Communicates over stdin/stdout.mdt mcp— Start the mdt MCP server for AI assistants. Communicates over stdin/stdout.
Diagnostics Workflow
- Run
mdt infofirst to inspect project shape, diagnostics totals, and cache reuse telemetry. - Run
mdt doctorwhen you need actionable health checks and remediation hints (config/data/layout/cache). - Use
MDT_CACHE_VERIFY_HASH=1when troubleshooting cache consistency issues and comparing reuse behavior.
Template Syntax
Provider tag (defines a template block in *.t.md definition files):
Content to inject
Consumer tag (marks where content should be injected):
This content gets replaced
Inline tag (provider-free interpolation using configured data):
Current version: <!-- {~version:"{{ package.version }}"} -->0.0.0<!-- {/version} -->
Filters and pipes: Template values support pipe-delimited transformers:
Available transformers: trim, trimStart, trimEnd, indent, prefix, suffix, linePrefix, lineSuffix, wrap, codeBlock, code, replace, if.