Repository navigation
Releases
Semantic Markdown 3.0.0
Downloads
| Asset | What it is | How to install |
|---|---|---|
semantic-markdown-3.0.0.vsix |
VS Code extension | code --install-extension semantic-markdown-3.0.0.vsix, or Extensions → ⋯ → Install from VSIX… (guide) |
semantic-markdown-3.0.0.tgz |
npm package (library + smd CLI), the same file as on npm |
npm install -g ./semantic-markdown-3.0.0.tgz |
semantic-markdown-writer.zip |
Agent skill: create and edit .smd following the rules |
Unzip into ~/.claude/skills/ or upload in Claude → Settings → Capabilities → Skills (guide) |
semantic-markdown-reader.zip |
Agent skill: token-efficient reading | Same as above |
semantic-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_semantic_markdown-3.0.0-py3-none-any.whl |
MkDocs plugin (Python wheel; needs Node.js 22+) | pip install ./mkdocs_semantic_markdown-3.0.0-py3-none-any.whl (guide) |
mkdocs_semantic_markdown-3.0.0.tar.gz |
MkDocs plugin source distribution | pip install ./mkdocs_semantic_markdown-3.0.0.tar.gz |
semantic-markdown-obsidian-3.0.0.zip |
Obsidian plugin (a styled-markdown folder, the plugin's ID, with main.js, manifest.json and styles.css) |
Unzip into your vault's .obsidian/plugins/, then turn it on in Settings → Community plugins (guide) |
semantic-markdown-jetbrains-3.0.0.zip |
JetBrains plugin (IntelliJ IDEA 2025.3+, PyCharm, WebStorm…): highlighting and the language server; needs Node.js 22+ | Settings → Plugins → ⚙ → Install Plugin from Disk… (guide) |
Styled Markdown is now Semantic Markdown. The name says what the format is for: Markdown whose decisions, risks, tasks and agent instructions tools can read. The format doesn't change. .smd files, the smd command and its flags, smd: 2, the smd.* settings, commands and keybindings, diagnostic codes and the smd-* CSS classes all stay the same, so documents, CI checks and editor setups keep working. What changes are the published names. Each old name gets one last 3.0.0 release that moves you to the new one. See Moving from Styled Markdown.
⚠️ Breaking changes
- The VS Code extension is
bislink360.semantic-markdown(wasbislink360.styled-markdown), on the Marketplace and Open VSX. The old ID's 3.0.0 update installs the new extension and offers to uninstall itself. While the full 2.x extension is still enabled, the new one stays idle and asks you to uninstall the old one, because both register the same commands. Migration: nothing for most users. Settings, keybindings and.vscode/extensions.jsonrecommendations that namebislink360.styled-markdownshould namebislink360.semantic-markdown. - The npm package is
semantic-markdown(wasstyled-markdown). Imports move with it:semantic-markdown,semantic-markdown/markdown-it,/remark,/rehype,/smd.css,/frontmatter.schema.json. Thesmdandsmd-language-servercommands are the same, andnpx semantic-markdownruns the CLI.styled-markdown@3.0.0is the same code under the old name (withnpx styled-markdownstill working) and is deprecated. Migration:npm uninstall styled-markdown && npm install semantic-markdown, then replacestyled-markdownwithsemantic-markdownin imports. - The MkDocs plugin is
mkdocs-semantic-markdownon PyPI (wasmkdocs-styled-markdown), with the modulemkdocs_semantic_markdown. The plugin is still registered asstyled-markdownnext to its new namesemantic-markdown, somkdocs.ymlkeeps working.mkdocs-styled-markdown==3.0.0only installs the new package. Migration:pip install mkdocs-semantic-markdown, and rename the plugin inmkdocs.ymlwhen convenient. - The agent skills are
semantic-markdown-readerandsemantic-markdown-writer(werestyled-markdown-readerand-writer), and so are their release zips.smd skills installandsmd init --agent clauderemove the old copies they installed, so an agent never loads both. A folder whoseSKILL.mdwas edited is kept and named in the output. Migration: re-runsmd skills install(or--global). - Instruction files and markers for other agents are renamed:
.cursor/rules/semantic-markdown.mdc,.github/instructions/semantic-markdown.instructions.md, and<!-- semantic-markdown:start -->…<!-- semantic-markdown:end -->inAGENTS.md.smd skills install --target …replaces the old section and removes the old files it generated, and keeps any you edited by hand. Migration: re-runsmd skills install --target cursor,copilot,agents(the targets you use). - The MCP server is
semantic-markdownin.mcp.json,.cursor/mcp.jsonand.vscode/mcp.json(wasstyled-markdown), and in the MCP registry (io.github.bislink360/semantic-markdown).smd init --agent …replaces an oldstyled-markdownentry that runs the bundled CLI. Its tools are nowmcp__semantic-markdown__…in Claude Code. Migration: re-runsmd init --agent …, and update permission rules that namemcp__styled-markdown__…. - The Claude Code plugin and its marketplace are
semantic-markdown(werestyled-markdown). Migration:/plugin marketplace add bislink360/semantic-markdown, then/plugin install semantic-markdown@semantic-markdown, and remove the old one. - The repository is
github.com/bislink360/semantic-markdown. GitHub redirects the old repository URL, clones anduses: bislink360/styled-markdown/validate@…, but the website moves tobislink360.github.io/semantic-markdownand the old address doesn't redirect. Release files are namedsemantic-markdown-X.Y.Z.vsix,semantic-markdown-X.Y.Z.tgz,semantic-markdown-playground.zip,mkdocs_semantic_markdown-…,semantic-markdown-obsidian-X.Y.Z.zipandsemantic-markdown-jetbrains-X.Y.Z.zip. Migration: update download scripts anduses:lines when convenient.
Changed
- Semantic Markdown everywhere you read the name: the docs, the spec, the website, the playground, templates, skills, editor commands and messages, and the store listings. The JetBrains plugin (ID
com.bislink360.styled-markdown) and the Obsidian plugin (IDstyled-markdown) keep their IDs, so they update in place and keep their settings. Only their names change.
Styled Markdown 2.6.0
Downloads
| Asset | What it is | How to install |
|---|---|---|
styled-markdown-2.6.0.vsix |
VS Code extension | code --install-extension styled-markdown-2.6.0.vsix, or Extensions → ⋯ → Install from VSIX… (guide) |
styled-markdown-2.6.0.tgz |
npm package (library + smd CLI), the same file as on npm |
npm install -g ./styled-markdown-2.6.0.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.6.0-py3-none-any.whl |
MkDocs plugin (Python wheel; needs Node.js 22+) | pip install ./mkdocs_styled_markdown-2.6.0-py3-none-any.whl (guide) |
mkdocs_styled_markdown-2.6.0.tar.gz |
MkDocs plugin source distribution | pip install ./mkdocs_styled_markdown-2.6.0.tar.gz |
styled-markdown-obsidian-2.6.0.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) |
styled-markdown-jetbrains-2.6.0.zip |
JetBrains plugin (IntelliJ IDEA 2025.3+, PyCharm, WebStorm…): highlighting and the language server; needs Node.js 22+ | Settings → Plugins → ⚙ → Install Plugin from Disk… (guide) |
Collaboration, step one: with smd merge set up as a Git merge driver (smd merge --install), two branches that edit different blocks, list items, table rows or front matter keys of one .smd document no longer conflict. Also new: the release workflow can publish the JetBrains plugin, and the README opens with a recording of the playground. No breaking changes: documents, commands, flags, settings, skills and library exports from 2.5.1 keep working.
Added
smd merge: a block-aware Git merge driver for.smdfiles. Git's line merge conflicts when two branches edit neighbouring lines, even in different blocks;smd mergeresolves those. Git runs it assmd merge %O %A %B %L %P. It runsgit merge-filefirst and keeps Git's result byte for byte whenever that is clean. Only where Git leaves conflicts does it merge by blocks: a front matter key, list item, table row, container line or other block that only one side changed comes from that side as written, the same change on both sides is taken once, front matter merges key by key (comments and order kept), and anupdated:date changed on both sides takes the later date. Where both sides changed one block differently, the conflict markers stay inside that block, in the marker size andmerge.conflictStyleGit asks for. Lines neither side changed stay as they were, line breaks (LF, CRLF or mixed) included, and nothing is reformatted: a merged table may needsmd fmt. When the block merge is in doubt (different spec versions, text that isn't UTF-8, merged blocks that would read differently), Git's own conflicts are kept. Exit code 0 when merged, 1 when conflicts are left, 2 on errors.smd merge --install [--dir <repo>]: set the driver up in a repository. It writesmerge.smdto the repository's local Git config (never the global one) and adds*.smd merge=smdto.gitattributes, keeping that file's line breaks; running it again changes nothing. The driver runs the installing CLI file withnodeby its absolute path, so it works from the skills bundle or an npm install;--command smduses thesmdon PATH instead.--uninstallremoves both. Server-side merges, such as GitHub's merge button, don't run custom drivers. Setup and limits: "Collaborating on .smd" in FEATURES.md.- The collaboration RFC is accepted. COLLABORATION-RFC.smd records the maintainer's decisions: async first and live later (
smd mergeis phase 1; Live Share fixes and:::comment/:::suggestioncontainers are accepted but not built yet; live sync stays deferred), the command keeps the namesmd merge, and merged tables are left for the author to realign. - The release workflow publishes the JetBrains plugin. A new
publish-jetbrainsjob uploads the plugin zip attached to each GitHub Release to the JetBrains Marketplace (extension/scripts/release/upload-jetbrains.mjs). Like the other publish jobs it skips with a notice until its secret,JETBRAINS_TOKEN, is set, and on a dry run. JetBrains reviews each upload by hand, so a version is listed once it is approved;wait-for-version.mjs jetbrains X.Y.Zchecks that.
Changed
- The README opens with a short recording of the playground (
docs/images/playground.gif, ≈1 MB): a decision, a risk and tasks appearing in the preview as they are typed, the agent view of the same document in about half the tokens, and Diagnostics catching a misspelled status. It links to the hosted playground.
Styled Markdown 2.5.1
Downloads
| Asset | What it is | How to install |
|---|---|---|
styled-markdown-2.5.1.vsix |
VS Code extension | code --install-extension styled-markdown-2.5.1.vsix, or Extensions → ⋯ → Install from VSIX… (guide) |
styled-markdown-2.5.1.tgz |
npm package (library + smd CLI), the same file as on npm |
npm install -g ./styled-markdown-2.5.1.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.5.1-py3-none-any.whl |
MkDocs plugin (Python wheel; needs Node.js 22+) | pip install ./mkdocs_styled_markdown-2.5.1-py3-none-any.whl (guide) |
mkdocs_styled_markdown-2.5.1.tar.gz |
MkDocs plugin source distribution | pip install ./mkdocs_styled_markdown-2.5.1.tar.gz |
styled-markdown-obsidian-2.5.1.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) |
styled-markdown-jetbrains-2.5.1.zip |
JetBrains plugin (IntelliJ IDEA 2025.3+, PyCharm, WebStorm…): highlighting and the language server; needs Node.js 22+ | Settings → Plugins → ⚙ → Install Plugin from Disk… (guide) |
Fixed
- The playground's preview follows edits again when opened from a file. Opened from
file://(as from the release zip) in Chrome or Edge, the preview showed the first render and then ignored every edit until the page was reloaded. The page reports its origin asfile://but its messages arrive with the originnull, so the preview turned down the channel its updates come through. The preview now treats the two as the same for a page opened from a file; a hosted playground still has to match exactly.
Styled Markdown 2.5.0
Downloads
| Asset | What it is | How to install |
|---|---|---|
styled-markdown-2.5.0.vsix |
VS Code extension | code --install-extension styled-markdown-2.5.0.vsix, or Extensions → ⋯ → Install from VSIX… (guide) |
styled-markdown-2.5.0.tgz |
npm package (library + smd CLI), the same file as on npm |
npm install -g ./styled-markdown-2.5.0.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.5.0-py3-none-any.whl |
MkDocs plugin (Python wheel; needs Node.js 22+) | pip install ./mkdocs_styled_markdown-2.5.0-py3-none-any.whl (guide) |
mkdocs_styled_markdown-2.5.0.tar.gz |
MkDocs plugin source distribution | pip install ./mkdocs_styled_markdown-2.5.0.tar.gz |
styled-markdown-obsidian-2.5.0.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) |
styled-markdown-jetbrains-2.5.0.zip |
JetBrains plugin (IntelliJ IDEA 2025.3+, PyCharm, WebStorm…): highlighting and the language server; needs Node.js 22+ | Settings → Plugins → ⚙ → Install Plugin from Disk… (guide) |
Built for developers who use AI coding agents. One command sets an agent up (smd init --agent, or the new Claude Code plugin); smd read reads a document in one call; and the tools now cost less than they save: the MCP tool list, the reader skill and the agent rules are 63–79% smaller. Also new: opt-in MCP write tools, smd savings, a net-tokens benchmark, spec → plan → tasks templates, a compatibility policy that declares spec v2 stable, and community files. No breaking changes: documents, commands, flags, settings, skills and library exports from 2.4.0 keep working, and the MCP tools outline, section and agent still answer when called.
Added
-
smd read <file>: one call to start reading a document. It prints the whole agent view when it fits 2,000 tokens (--max-tokens <n>sets the budget) and otherwise the outline, so an agent no longer needssmd outlineand thensmd agent.--section(repeatable) reads only those sections,--outlineand--fullforce one form, and--briefand--no-lineswork as onsmd agent. -
MCP
readtool. The same assmd read, withsections,mode(auto,outline,full) andbrief. -
smd init --agent claude|cursor|copilot|agents: set up an agent in one command. It installs the skills (claude) or the reading and writing rules (cursor,copilot,agentsfor AGENTS.md), the CLI, and the MCP server in the agent's own config:.mcp.json(Claude Code),.cursor/mcp.json(Cursor) or.vscode/mcp.json(Copilot in VS Code). Existing config files are merged and other servers kept; a file with comments is left alone and the entry to add is printed. Re-run it to update;--dir <project>picks the project and--no-mcpskips the MCP config. The npm package gets astyled-markdowncommand for it, sonpx styled-markdown init --agent claudeworks once the package is on npm. -
Opt-in MCP write tools:
smd mcp --allow-write.check_taskticks or unticks one task (by the linetasksprints, optionally checking the line still has the expected text),set_statussets the front matter status (andupdatedwhen there is one), andadd_decisionappends a:::decisionblock to a section. Each changes only its own lines, keeps line endings, stays inside--root, and writes nothing when the result would have more validation errors than before. Without the flag the server stays read-only. -
smd savings <files|dirs…>: what the agent view saves across a repository. Tokens per document for the raw file, the agent view and--brief, the total saving and its price in dollars (--price, USD per million input tokens, default 3), and--jsonfor tools. On this repository'sexamples/it reports 25% (31% with--brief) for reading every document whole; reading only the needed sections saves more. -
Net-tokens benchmark.
npm run bench:tokens(inextension/) shows how many tokens an agent spends on each example. It covers two tasks, answering about one section and understanding the whole document, and compares a plain read of the file with outline + section,smd read, the agent view and--brief. The count includes the tools' own fixed cost: skill descriptions, the readerSKILL.md, agent rules and the MCP tool list, all read at run time. A key-line coverage check stands in for accuracy. The output ends with break-even document sizes. docs/TOKENS.md explains the method and has the results. -
Reader skill reference.
styled-markdown-reader/references/reading.mdholds what the slimmerSKILL.mdleft out: every marker of the agent view, the commands for many documents, the MCP tools and reading without Node.js. Agents read it only when they need it.smd skills installinstalls it. -
Claude Code plugin: the repository is a plugin marketplace.
/plugin marketplace add bislink360/styled-markdown, then/plugin install styled-markdown@styled-markdown, installs both agent skills and thesmdMCP server (.claude-plugin/marketplace.jsonandplugin.json; the server is declared in the plugin, so there is no root.mcp.json). The plugin's version is the release's:bump-version.mjssets it andcheck-versions.mjsfails a tag whoseplugin.jsondoesn't match. Setup: INSTALL.md. -
MCP Registry entry:
server.jsondescribes the MCP server as the npm package (npx styled-markdown mcp), andnpm/package.jsonhas themcpName(io.github.bislink360/styled-markdown) the registry checks. Its versions follow the release like the plugin's. Publishing is a maintainer step after the npm release: docs/PUBLISHING.md. -
Spec-driven workflow kit: three new templates,
spec(requirements with IDs, acceptance criteria, open questions, rules for implementers),plan(approach, decisions, risks, phases;related:the spec) andtasks(the agent's work queue by phase, with requirement, priority, owner and due date, and how to check tasks off), for one folder per feature.smd init x.smd --template specand the writer skill have 16 templates now. docs/SPEC-DRIVEN.md walks through spec, plan and tasks with an agent:smd tasksas the work queue,smd validateas the gate, andcheck_task(withsmd mcp --allow-write) or a line edit to tick tasks off. -
Reading
.smdon GitHub: docs/GITHUB.md compares the ways to make documents readable on github.com: Styled Markdown syntax in.mdfiles (what GitHub renders, and whichsmdcommands read.mdfiles),.mdcopies generated in CI withsmd export --to md(a complete workflow that commits the copies onmainand checks them on pull requests), and a pull request comment with the changed sections in the agent view (smd diff --since). It also says what*.smd linguist-language=Markdownin.gitattributesdoes: highlighting and language statistics, not rendering. -
Compatibility policy: docs/COMPATIBILITY.md declares spec v2 stable (a breaking change needs a spec v3 RFC), versions the spec apart from the tools (spec 2, tools 2.5.0), says what patch, minor and major releases may change, and sets the deprecation policy (deprecate in a minor, remove in the next major at the earliest) and the cadence (a minor roughly monthly, patches as needed).
SPEC.mdlinks it from its header. -
Homepage and hosted playground: a Pages workflow publishes a homepage (
site/index.smd, built withsmd build) at https://bislink360.github.io/styled-markdown/ and the web playground at/playground/, frommain. -
Community files: issue forms for bug reports and feature requests (with links to Discussions, the docs and private vulnerability reporting), a pull request template for outside contributors,
CODE_OF_CONDUCT.md(Contributor Covenant 2.1),SECURITY.md(the latest minor is supported; report through GitHub's private vulnerability reporting), and a "Good first issues" section inCONTRIBUTING.md. -
Adoption report:
node extension/scripts/adoption.mjs [--json]prints stars, forks, issues and pull requests from outside contributors, release asset downloads, npm, VS Code Marketplace, Open VSX and PyPI downloads, and a count of publicsmd: 2documents; a registry without the package shows "not listed". The Adoption workflow writes it to the job summary every Monday.
Changed
- The MCP server lists four tools instead of six, and they cost ≈500 tokens instead of ≈1,320. Every agent session pays for the to...
Styled Markdown 2.4.0
Downloads
| Asset | What it is | How to install |
|---|---|---|
styled-markdown-2.4.0.vsix |
VS Code extension | code --install-extension styled-markdown-2.4.0.vsix, or Extensions → ⋯ → Install from VSIX… (guide) |
styled-markdown-2.4.0.tgz |
npm package (library + smd CLI), the same file as on npm |
npm install -g ./styled-markdown-2.4.0.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.4.0-py3-none-any.whl |
MkDocs plugin (Python wheel; needs Node.js 22+) | pip install ./mkdocs_styled_markdown-2.4.0-py3-none-any.whl (guide) |
mkdocs_styled_markdown-2.4.0.tar.gz |
MkDocs plugin source distribution | pip install ./mkdocs_styled_markdown-2.4.0.tar.gz |
styled-markdown-obsidian-2.4.0.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) |
styled-markdown-jetbrains-2.4.0.zip |
JetBrains plugin (IntelliJ IDEA 2025.3+, PyCharm, WebStorm…): highlighting and the language server; needs Node.js 22+ | Settings → Plugins → ⚙ → Install Plugin from Disk… (guide) |
Word export everywhere, with nothing to install: smd export --to docx no longer needs Pandoc, and the JetBrains plugin gets an Export to Word (.docx) command beside VS Code's. The files open in Word, LibreOffice, Pages and Google Docs. No breaking changes: documents, commands, flags, settings and library exports from 2.3.0 keep working, and anyone with Pandoc set or on the PATH gets the same .docx as before.
Added
smd export --to docxwrites Word documents with nothing to install. When Pandoc isn't set (--pandoc,SMD_PANDOC) or on thePATH, a built-in writer makes the.docxitself, so smd still has no dependencies. Word, LibreOffice, Apple Pages and Google Docs open it. Headings (Word's own "Heading 1"…), lists (numbered by Word, each ordered list from 1), tables (with a header row that repeats on each page), footnotes (Word footnotes) and links (web links, and#linksto bookmarks on their headings and figures) are Word's own. PNG, JPEG and GIF images beside the document are embedded at their size, up to the page width. Callouts are a bar in their colour with a tint under a bold title; decisions, risks, cards, details and tabs are expanded under their title; code is monospaced on grey; badges and statuses are bold on their colour; text colours and highlights are kept. Mermaid diagrams keep their source and math its TeX. Agent and.no-printblocks are left out, as in print. The style names are Pandoc's, so--reference-docworks with both engines. The message says which wrote it:Wrote plan.docx (written by the built-in writer), and each image it couldn't embed is a warning.--engine builtin|pandocforsmd export --to docx(andsmd docx): which engine writes the document.pandocwithout Pandoc exits with code 2 and the install link, as a missing Pandoc did before.- VS Code:
smd.export.docxEngine(auto,builtinorpandoc; defaultauto) for Export to Word (.docx), which now works without Pandoc. - JetBrains plugin: Export Styled Markdown to Word (.docx) (editor right-click menu, or Tools). It saves the file, asks where to write the document, runs the bundled CLI's
smd export --to docxin the background and offers to open the result. New settings under Settings → Languages & Frameworks → Styled Markdown → Export to Word: the engine and the Pandoc path.
Changed
- Without Pandoc,
smd export --to docx,smd docxand Export to Word (.docx) in VS Code used to exit 2 (or show Install Pandoc). They now write the document with the built-in writer. With Pandoc set or on thePATH, nothing changes: Pandoc converts it, as before. The message for a missing Pandoc, now only after--engine pandoc, also suggests leaving that out.
Styled Markdown 2.3.0
Downloads
| Asset | What it is | How to install |
|---|---|---|
styled-markdown-2.3.0.vsix |
VS Code extension | code --install-extension styled-markdown-2.3.0.vsix, or Extensions → ⋯ → Install from VSIX… (guide) |
styled-markdown-2.3.0.tgz |
npm package (library + smd CLI), the same file as on npm |
npm install -g ./styled-markdown-2.3.0.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.3.0-py3-none-any.whl |
MkDocs plugin (Python wheel; needs Node.js 22+) | pip install ./mkdocs_styled_markdown-2.3.0-py3-none-any.whl (guide) |
mkdocs_styled_markdown-2.3.0.tar.gz |
MkDocs plugin source distribution | pip install ./mkdocs_styled_markdown-2.3.0.tar.gz |
styled-markdown-obsidian-2.3.0.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) |
styled-markdown-jetbrains-2.3.0.zip |
JetBrains plugin (IntelliJ IDEA 2025.3+, PyCharm, WebStorm…): highlighting and the language server; needs Node.js 22+ | Settings → Plugins → ⚙ → Install Plugin from Disk… (guide) |
PDF export everywhere, with the browser you already have: smd export --to pdf no longer needs Playwright or Puppeteer, and the VS Code extension and the JetBrains plugin get an Export to PDF command. No breaking changes: documents, commands, flags, settings and library exports from 2.2.0 keep working, and anyone who prints with Playwright or Puppeteer today gets the same PDF.
Added
smd export --to pdfprints with an installed browser. When neither--browsernor Playwright or Puppeteer is there, it uses Google Chrome, Microsoft Edge, Chromium or Brave from where they install (Windows: Program Files and the user's app data; macOS:/Applicationsand~/Applications; Linux:google-chrome,chromium,microsoft-edgeandbrave-browseron thePATH), in that order, and tries the next one when a browser won't start. Edge comes with Windows, so on most machines PDF export now works with nothing to install. The browser runs headless with a throwaway profile and is driven over the DevTools protocol on a pipe, so smd still has no dependencies. The PDF is the same page, waits for diagrams the same way and uses the same paper sizes and margins as with Playwright. The message names the browser:Wrote plan.pdf (printed with Google Chrome).--browser <path>forsmd export --to pdf(andsmd pdf), and theSMD_BROWSERenvironment variable: the Chromium-based browser to print with. It is used before Playwright, Puppeteer and the installed browsers, and a path that doesn't exist is a usage error (exit 2).- VS Code: Styled Markdown: Export to PDF (Command Palette and the editor's context menu). It prints the page Export to HTML writes, with diagrams as vectors and collapsed blocks expanded, finding a browser as the CLI does (Playwright or Puppeteer are also looked for in the workspace). New settings:
smd.export.browserPath(a machine setting, likesmd.export.pandocPath),smd.export.pdfFormat(A4orLetter, defaultA4) andsmd.export.pdfLandscape(defaultfalse). Without a browser, it says so and offers the setting or Export to HTML. - JetBrains plugin: Export Styled Markdown to PDF (editor right-click menu, or Tools). It saves the file, asks where to write the PDF, runs the bundled CLI's
smd export --to pdfin the background and offers to open the result. New settings under Settings → Languages & Frameworks → Styled Markdown → Export to PDF: the browser, the paper size and landscape.
Changed
- Without
--browser, Playwright or Puppeteer,smd export --to pdfused to exit 2. It now prints with an installed browser, and exits 2 only when there is none; the message lists the browsers,--browserandSMD_BROWSERbefore the Playwright and Puppeteer hints it gave before.
Styled Markdown 2.2.0
Downloads
| Asset | What it is | How to install |
|---|---|---|
styled-markdown-2.2.0.vsix |
VS Code extension | code --install-extension styled-markdown-2.2.0.vsix, or Extensions → ⋯ → Install from VSIX… (guide) |
styled-markdown-2.2.0.tgz |
npm package (library + smd CLI), the same file as on npm |
npm install -g ./styled-markdown-2.2.0.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.2.0-py3-none-any.whl |
MkDocs plugin (Python wheel; needs Node.js 22+) | pip install ./mkdocs_styled_markdown-2.2.0-py3-none-any.whl (guide) |
mkdocs_styled_markdown-2.2.0.tar.gz |
MkDocs plugin source distribution | pip install ./mkdocs_styled_markdown-2.2.0.tar.gz |
styled-markdown-obsidian-2.2.0.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) |
styled-markdown-jetbrains-2.2.0.zip |
JetBrains plugin (IntelliJ IDEA 2025.3+, PyCharm, WebStorm…): highlighting and the language server; needs Node.js 22+ | Settings → Plugins → ⚙ → Install Plugin from Disk… (guide) |
The JetBrains plugin gets a live preview and full highlighting, and the language server can render a page for any client's preview. The VS Code extension, the CLI and the spec behave exactly as in 2.1.0.
Added
- JetBrains plugin: a live preview.
.smdfiles open as a split editor, text and rendered page side by side (or either alone, with the editor's layout buttons), like Markdown files. The page renders again shortly after each edit, keeps its scroll position and follows the IDE's light or dark theme; relative images and code embeds resolve from the document's folder, and links open in the system browser. It needs the IDE's embedded browser (JCEF). - Language server:
smd/renderHtml, a request beyond LSP (announced asexperimental.smdRenderHtml) that answers the pagesmd export --to htmlwrites, from the client's current text, with an optionallight/darktheme for documents whose front matter names none. The JetBrains preview uses it; other editors can show the page in a webview (docs/EDITORS.md).renderPageandrenderStandaloneHtmltake that fallback theme as an optional last argument.
Fixed
- JetBrains plugin: Open Styled Markdown Preview in Browser opened a broken address on Windows (
file:///C:/%5CUsers%5C…, "can't reach this page"). It now opens a properfile:URI. - JetBrains plugin:
.smdsyntax is highlighted. In 2.1.0 only the front matter was. The IDE's TextMate support doesn't apply VS Code'sinjectTo, which is how the extension's container, directive, span, mark and math rules reach its grammar, and the Markdown around them came from the IDE's own Markdown bundle, which may be turned off. The plugin now ships one grammar with those rules as its own injections (generated from the extension's byintegrations/jetbrains/scripts/bundle-grammar.mjs; a test keeps it up to date) and its own copy of VS Code's Markdown grammar (MIT).
Styled Markdown 2.1.0
Downloads
| Asset | What it is | How to install |
|---|---|---|
styled-markdown-2.1.0.vsix |
VS Code extension | code --install-extension styled-markdown-2.1.0.vsix, or Extensions → ⋯ → Install from VSIX… (guide) |
styled-markdown-2.1.0.tgz |
npm package (library + smd CLI), the same file as on npm |
npm install -g ./styled-markdown-2.1.0.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.1.0-py3-none-any.whl |
MkDocs plugin (Python wheel; needs Node.js 22+) | pip install ./mkdocs_styled_markdown-2.1.0-py3-none-any.whl (guide) |
mkdocs_styled_markdown-2.1.0.tar.gz |
MkDocs plugin source distribution | pip install ./mkdocs_styled_markdown-2.1.0.tar.gz |
styled-markdown-obsidian-2.1.0.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) |
styled-markdown-jetbrains-2.1.0.zip |
JetBrains plugin (IntelliJ IDEA 2025.3+, PyCharm, WebStorm…): highlighting and the language server; needs Node.js 22+ | Settings → Plugins → ⚙ → Install Plugin from Disk… (guide) |
Styled Markdown for JetBrains IDEs, and an RFC on collaborative editing. The extension, the CLI, the library and the spec behave exactly as in 2.0.2.
Added
- A plugin for JetBrains IDEs (
integrations/jetbrains,styled-markdown-jetbrains-X.Y.Z.zipon the GitHub release):.smdhighlighting with the VS Code extension's TextMate grammar, and the Styled Markdown language server (problems with quick fixes, completion, hover, go to definition, the outline, symbol search and formatting) through the IDE's LSP support, with thesmdCLI shipped in the plugin. Open Styled Markdown Preview in Browser renders the file withsmd export --to html. Settings for the Node.js and CLI paths are in Settings → Languages & Frameworks → Styled Markdown. Needs IntelliJ IDEA 2025.3+ (or PyCharm, WebStorm and the other JetBrains IDEs 2025.1+; not Android Studio) and Node.js 22+. The release now has nine assets; CI builds the plugin and checks its zip. - Documentation: an exploratory RFC for collaborative editing (
docs/COLLABORATION-RFC.smd), for discussion. It recommends async features first, as small additive 2.x releases: a block-aware Git merge driver (smd merge), then:::commentand:::suggestioncontainers with an opt-in MCP tool for agents to propose edits, and defers live sync to a later prototype outside the core.
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.
Styled Markdown 2.0.1
Downloads
| Asset | What it is | How to install |
|---|---|---|
styled-markdown-2.0.1.vsix |
VS Code extension | code --install-extension styled-markdown-2.0.1.vsix, or Extensions → ⋯ → Install from VSIX… (guide) |
styled-markdown-2.0.1.tgz |
npm package (library + smd CLI), the same file as on npm |
npm install -g ./styled-markdown-2.0.1.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.1-py3-none-any.whl |
MkDocs plugin (Python wheel; needs Node.js 22+) | pip install ./mkdocs_styled_markdown-2.0.1-py3-none-any.whl (guide) |
mkdocs_styled_markdown-2.0.1.tar.gz |
MkDocs plugin source distribution | pip install ./mkdocs_styled_markdown-2.0.1.tar.gz |
styled-markdown-obsidian-2.0.1.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 documentation patch for 2.0.0: the guides, the Marketplace and npm pages and the agent skills now cover everything 1.7–2.0 added. The extension, the CLI and the library behave exactly as in 2.0.0.
Fixed
- Documentation for 2.0: an "Upgrading to 2.0" section in the README and INSTALL.md; in FEATURES.md, a Block Editor (Preview) section, a spec versions overview (
smd: 1andsmd: 2,typography), the spec v2 closing fence rule, and notes on$$math in containers,\"escapes, value case, glossary quote matching and code and math in the agent view; the Marketplace page lists Migrate to Spec v2, Preview Migration to Spec v2, Hide Completed Tasks andsmd.markdownPreview.enabled; the npm README documentsLATEST_SPEC,SpecVersion, the Notion and export types,NOTION_LIMITS,parseSmd(…).math, markdown-ittoken.metaand thesmd migrateflags; stale version pins (thevalidate@action in FEATURES.md, the language server tarball in EDITORS.md) and the spec v1 badge are updated. The agent skills describe the 2.0 errors, GitHub alerts and the spec v2 reading rules. No code changes; the CLI bundles are rebuilt for the version number.