Repository navigation
Styled Markdown 2.0.2
Downloads
| Asset | What it is | How to install |
|---|---|---|
styled-markdown-2.0.2.vsix |
VS Code extension | code --install-extension styled-markdown-2.0.2.vsix, or Extensions → ⋯ → Install from VSIX… (guide) |
styled-markdown-2.0.2.tgz |
npm package (library + smd CLI), the same file as on npm |
npm install -g ./styled-markdown-2.0.2.tgz |
styled-markdown-writer.zip |
Agent skill: create and edit .smd following the rules |
Unzip into ~/.claude/skills/ or upload in Claude → Settings → Capabilities → Skills (guide) |
styled-markdown-reader.zip |
Agent skill: token-efficient reading | Same as above |
styled-markdown-playground.zip |
Web playground: edit, preview and share .smd in the browser |
Unzip and open playground/index.html, or serve the folder (guide) |
mkdocs_styled_markdown-2.0.2-py3-none-any.whl |
MkDocs plugin (Python wheel; needs Node.js 22+) | pip install ./mkdocs_styled_markdown-2.0.2-py3-none-any.whl (guide) |
mkdocs_styled_markdown-2.0.2.tar.gz |
MkDocs plugin source distribution | pip install ./mkdocs_styled_markdown-2.0.2.tar.gz |
styled-markdown-obsidian-2.0.2.zip |
Obsidian plugin (a styled-markdown folder with main.js, manifest.json and styles.css) |
Unzip into your vault's .obsidian/plugins/, then turn it on in Settings → Community plugins (guide) |
A patch for editors that highlight with Tree-sitter, and for CI. The extension, the CLI and the library behave exactly as in 2.0.1.
Fixed
- The Tree-sitter grammar reads
smd: 2documents with the spec v2 rules (integrations/tree-sitter-smd), so Neovim, Helix, Zed and Emacs highlight them as they render. Until now it read every document with the v1 rules. Its scanner reads the front matter'ssmdkey asspecVersiondoes, then follows the v2 rules: a closing fence closes the innermost container opened with as many colons, and the ones inside it;$$math opens and closes only on lines that are just$$; directive names in any case; and a heading's trailing{}or{word}is text. Documents withoutsmd: 2parse exactly as before. Checked against the renderer on every.smdin the repository and 300 fuzz documents, each as written, assmd: 2and as spec v1. Container and math ranges agree except where the grammar was already simpler: raw HTML blocks, now listed in its README, and front matter the renderer can't read as YAML. - CI: the benchmark gate no longer fails on a slow runner. The
smdToMarkdownlimits (25 / 150 ms for 1k / 10k lines) were set before it parsed the whole document and sat at 90% of what CI measures; they now matchrenderSmd(100 / 750 ms), and a case over its limit is measured again before it fails. Every limit is still 5–10x a CI runner's median, so an accidentally quadratic pass still fails.