|
1 | 1 | --- |
2 | | -summary: Comparison of mdsmith with other Markdown linters and formatters. |
| 2 | +summary: How mdsmith compares to other Markdown linters. |
3 | 3 | --- |
4 | 4 | # Markdown Linters Comparison |
5 | 5 |
|
@@ -136,7 +136,38 @@ To ease migration, mdsmith maps common Hugo template |
136 | 136 | fields to placeholders. See the |
137 | 137 | [Hugo migration guide][hugo-migration] for that mapping. |
138 | 138 |
|
139 | | -### LLM as Linter |
| 139 | +### [Obsidian][] |
| 140 | + |
| 141 | +Electron app. Markdown note-taking tool with local-first |
| 142 | +storage. ~60k stars. Included here because teams that |
| 143 | +write docs in Obsidian often want structural linting on |
| 144 | +the same `.md` files. |
| 145 | + |
| 146 | +- Uses its own [Obsidian Flavored Markdown][obsidian-fm] |
| 147 | + (OFM): wikilinks (`[[Page]]`), callouts (blockquote |
| 148 | + with `[!type]` prefix), embed syntax (`![[file.png]]`), |
| 149 | + and inline metadata (`key:: value`) |
| 150 | +- No built-in linter — community plugins (e.g. [Linter |
| 151 | + plugin][obsidian-linter]) add YAML front matter fixes, |
| 152 | + heading normalisation, and whitespace rules |
| 153 | +- Files are plain `.md` on disk and are committed to Git |
| 154 | + like any other source; CI can run mdsmith over the vault |
| 155 | + |
| 156 | +| Aspect | Obsidian | mdsmith | |
| 157 | +|--------------------|-----------------------------------|--------------------------------------| |
| 158 | +| Purpose | Note-taking editor | Linter / fixer | |
| 159 | +| Linting | Community plugin only | Built-in, CI-ready | |
| 160 | +| Wikilinks | Native (`[[Page]]`) | Treated as text; no validation | |
| 161 | +| Callouts | Native (`> [!note]`) | Treated as blockquotes | |
| 162 | +| Front matter | YAML or Dataview inline (`key::`) | YAML only (inline not recognized) | |
| 163 | +| Agent friendliness | Editor-centric, manual saves | Direct file access, no editor needed | |
| 164 | + |
| 165 | +mdsmith can lint the Markdown subset that Obsidian and |
| 166 | +standard parsers share. Wikilinks and callouts pass |
| 167 | +through without errors (they look like valid Markdown |
| 168 | +to CommonMark parsers). Dataview inline fields are not |
| 169 | +front matter and will not be read by mdsmith's |
| 170 | +`require`/`schema` directives. |
140 | 171 |
|
141 | 172 | Using language models (GPT-4, Claude, etc.) directly to |
142 | 173 | check prose quality, conciseness, and style. This is |
@@ -517,8 +548,8 @@ current posture: |
517 | 548 | | Hardening | mdsmith | markdownlint | remark-lint | Prettier | Vale | |
518 | 549 | |------------------------------------|------------------------|-----------------|------------------|------------------|-----------| |
519 | 550 | | File-size cap on input | yes | no | no | no | no | |
520 | | -| YAML billion-laughs guard | yes (anchor cap) | n/a (no FM) | parser-dependent | parser-dependent | n/a | |
521 | | -| ANSI escape sanitisation | yes | no | no | n/a | no | |
| 551 | +| YAML billion-laughs guard | yes (alias rejection) | n/a (no FM) | parser-dependent | parser-dependent | n/a | |
| 552 | +| ANSI escape sanitization | yes | no | no | n/a | no | |
522 | 553 | | Symlinks denied by default | yes | follows | follows | follows | follows | |
523 | 554 | | Cross-file links sandboxed to repo | yes ([MDS027][mds027]) | n/a | plugin-dependent | n/a | n/a | |
524 | 555 | | Include size cap | yes | n/a | n/a | n/a | n/a | |
@@ -555,7 +586,7 @@ items most relevant to this comparison are: |
555 | 586 | [104][plan104]) — a `mdsmith build` subcommand with |
556 | 587 | a `<?build?>` directive, staleness tracking, and |
557 | 588 | lifecycle hooks. This will close part of the gap |
558 | | - with Hugo: deriving artefacts from Markdown sources |
| 589 | + with Hugo: deriving artifacts from Markdown sources |
559 | 590 | without leaving the linter. |
560 | 591 | - **Closing rule gaps with markdownlint** — plans |
561 | 592 | [105][plan105] (no-inline-html / MD033), |
@@ -693,6 +724,10 @@ you need a stable rule set while these land. |
693 | 724 | [Hugo]: https://gohugo.io/ |
694 | 725 | [hugo-shortcodes]: https://gohugo.io/content-management/shortcodes/ |
695 | 726 | [hugo-migration]: ../guides/directives/hugo-migration.md |
| 727 | +<!-- obsidian links --> |
| 728 | +[Obsidian]: https://obsidian.md/ |
| 729 | +[obsidian-fm]: https://help.obsidian.md/Editing+and+formatting/Obsidian+Flavored+Markdown |
| 730 | +[obsidian-linter]: https://github.com/platers/obsidian-linter |
696 | 731 | <!-- mdsmith plan + security + reference links --> |
697 | 732 | [mdsmith-sec]: ../security/2026-04-05-adversarial-markdown.md |
698 | 733 | [conventions]: ../reference/conventions.md |
|
0 commit comments