<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Docs on gomarklint</title><link>https://shinagawa-web.github.io/gomarklint/docs/</link><description>Recent content in Docs on gomarklint</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://shinagawa-web.github.io/gomarklint/docs/index.xml" rel="self" type="application/rss+xml"/><item><title>Quick Start</title><link>https://shinagawa-web.github.io/gomarklint/docs/quick-start/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://shinagawa-web.github.io/gomarklint/docs/quick-start/</guid><description>&lt;h1 id="quick-start"&gt;Quick Start&lt;a class="anchor" href="#quick-start"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="install"&gt;Install&lt;a class="anchor" href="#install"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Download binary&lt;/strong&gt; (no Go required):&lt;/p&gt;
&lt;p&gt;Download the latest binary for your platform from &lt;a href="https://github.com/shinagawa-web/gomarklint/releases/latest"&gt;GitHub Releases&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# macOS (Intel)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tar -xzf gomarklint_Darwin_x86_64.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Linux (x86_64)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tar -xzf gomarklint_Linux_x86_64.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo mv gomarklint /usr/local/bin/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# or install to user-local directory (no sudo required)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir -p ~/.local/bin &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; mv gomarklint ~/.local/bin/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Windows (PowerShell)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Expand-Archive -Path gomarklint_Windows_x86_64.zip -DestinationPath &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$env:LOCALAPPDATA&lt;span style="color:#e6db74"&gt;\Programs\gomarklint&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Add to PATH (run once)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#66d9ef"&gt;Environment&lt;/span&gt;]::SetEnvironmentVariable(&lt;span style="color:#e6db74"&gt;&amp;#34;PATH&amp;#34;&lt;/span&gt;, $env:PATH + &lt;span style="color:#e6db74"&gt;&amp;#34;;&lt;/span&gt;$env:LOCALAPPDATA&lt;span style="color:#e6db74"&gt;\Programs\gomarklint&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;User&amp;#34;&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Via &lt;code&gt;go install&lt;/code&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;go install github.com/shinagawa-web/gomarklint@latest&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Build from source:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Rules</title><link>https://shinagawa-web.github.io/gomarklint/docs/rules/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://shinagawa-web.github.io/gomarklint/docs/rules/</guid><description>&lt;h1 id="rules"&gt;Rules&lt;a class="anchor" href="#rules"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;gomarklint&lt;/code&gt; currently runs the following checks (ordered as executed):&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Rule key&lt;/th&gt;
 &lt;th&gt;What it detects&lt;/th&gt;
 &lt;th&gt;Notes / Options&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;final-blank-line&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Missing final blank line at EOF&lt;/td&gt;
 &lt;td&gt;Toggle: &lt;code&gt;--enable-final-blank-line-check&lt;/code&gt; (default &lt;strong&gt;on&lt;/strong&gt;)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;unclosed-code-block&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Unclosed fenced code blocks (&lt;code&gt;```&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;Always on&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;empty-alt-text&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Image syntax with an empty alt text&lt;/td&gt;
 &lt;td&gt;Always on&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;heading-level&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Invalid heading level progression (e.g., H2 → H4 skip)&lt;/td&gt;
 &lt;td&gt;Toggle: &lt;code&gt;--enable-heading-level-check&lt;/code&gt; (default &lt;strong&gt;on&lt;/strong&gt;) / &lt;code&gt;--min-heading&lt;/code&gt; (default &lt;strong&gt;2&lt;/strong&gt;)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;duplicate-heading&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Duplicate headings within one file&lt;/td&gt;
 &lt;td&gt;Toggle: &lt;code&gt;--enable-duplicate-heading-check&lt;/code&gt; (default &lt;strong&gt;on&lt;/strong&gt;)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;no-multiple-blank-lines&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Multiple consecutive blank lines&lt;/td&gt;
 &lt;td&gt;Toggle: &lt;code&gt;--enable-no-multiple-blank-lines-check&lt;/code&gt; (default &lt;strong&gt;on&lt;/strong&gt;)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;external-link&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;External links that fail validation&lt;/td&gt;
 &lt;td&gt;Toggle: &lt;code&gt;--enable-link-check&lt;/code&gt; (default &lt;strong&gt;off&lt;/strong&gt;). Skips URLs that match &lt;code&gt;--skip-link-patterns&lt;/code&gt; (regex).&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;no-setext-headings&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Setext heading used instead of ATX style&lt;/td&gt;
 &lt;td&gt;Toggle: &lt;code&gt;--enable-no-setext-headings-check&lt;/code&gt; (default &lt;strong&gt;on&lt;/strong&gt;)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="execution-details"&gt;Execution details&lt;a class="anchor" href="#execution-details"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Files/dirs are expanded with ignore patterns from config.&lt;/li&gt;
&lt;li&gt;Per-file issues are sorted by line asc before printing.&lt;/li&gt;
&lt;li&gt;Line count is computed as &lt;code&gt;\n&lt;/code&gt; count + 1 for reporting.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>CLI</title><link>https://shinagawa-web.github.io/gomarklint/docs/cli/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://shinagawa-web.github.io/gomarklint/docs/cli/</guid><description>&lt;h1 id="cli"&gt;CLI&lt;a class="anchor" href="#cli"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gomarklint &lt;span style="color:#f92672"&gt;[&lt;/span&gt;files or directories&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;flags&lt;span style="color:#f92672"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If no paths are given, the tool will use &lt;code&gt;include&lt;/code&gt; from &lt;code&gt;.gomarklint.json&lt;/code&gt; if present, otherwise error out with:&lt;/p&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&amp;ldquo;please provide a markdown file or directory (or set &amp;lsquo;include&amp;rsquo; in .gomarklint.json)&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="flags"&gt;Flags&lt;a class="anchor" href="#flags"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Flag&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--config&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;.gomarklint.json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Path to config file.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--output&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;text&lt;/code&gt; | &lt;code&gt;json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;text&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Output format. Any other value is rejected.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--severity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;warning&lt;/code&gt; | &lt;code&gt;error&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;warning&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Minimum severity level to include in output (see below).&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="severity-levels"&gt;Severity levels&lt;a class="anchor" href="#severity-levels"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Each rule can be configured with a severity of &lt;code&gt;&amp;quot;error&amp;quot;&lt;/code&gt; or &lt;code&gt;&amp;quot;warning&amp;quot;&lt;/code&gt; in the config file.&lt;/p&gt;</description></item><item><title>Configuration</title><link>https://shinagawa-web.github.io/gomarklint/docs/configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://shinagawa-web.github.io/gomarklint/docs/configuration/</guid><description>&lt;h1 id="configuration"&gt;Configuration&lt;a class="anchor" href="#configuration"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;A JSON config is read from the path given by &lt;code&gt;--config&lt;/code&gt; (defaults to &lt;code&gt;.gomarklint.json&lt;/code&gt;) if the file exists.&lt;/p&gt;
&lt;h2 id="example"&gt;Example&lt;a class="anchor" href="#example"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;default&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;rules&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;final-blank-line&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;unclosed-code-block&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;empty-alt-text&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;heading-level&amp;#34;&lt;/span&gt;: { &lt;span style="color:#f92672"&gt;&amp;#34;severity&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;error&amp;#34;&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;minLevel&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;duplicate-heading&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;no-multiple-blank-lines&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;no-setext-headings&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;warning&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;external-link&amp;#34;&lt;/span&gt;: { &lt;span style="color:#f92672"&gt;&amp;#34;severity&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;error&amp;#34;&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;timeoutSeconds&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;skipPatterns&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;^https://localhost&amp;#34;&lt;/span&gt;] }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;include&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;docs&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;README.md&amp;#34;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;ignore&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;node_modules&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;vendor&amp;#34;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;output&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;text&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="top-level-fields"&gt;Top-level fields&lt;a class="anchor" href="#top-level-fields"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;default&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;bool&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Whether unlisted rules are enabled by default (opt-out mode). Set to &lt;code&gt;false&lt;/code&gt; for opt-in mode.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;rules&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;object&lt;/td&gt;
 &lt;td&gt;all rules enabled as &lt;code&gt;error&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Per-rule configuration. See &lt;a href="#rule-values"&gt;Rule values&lt;/a&gt; below.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;include&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string[]&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[&amp;quot;README.md&amp;quot;, &amp;quot;testdata&amp;quot;]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Paths to lint when no CLI paths are provided.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ignore&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string[]&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Path patterns to exclude.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;output&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;text&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;text&lt;/code&gt; or &lt;code&gt;json&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="default-field"&gt;&lt;code&gt;default&lt;/code&gt; field&lt;a class="anchor" href="#default-field"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Controls how rules &lt;strong&gt;not listed&lt;/strong&gt; in &lt;code&gt;rules&lt;/code&gt; are treated.&lt;/p&gt;</description></item><item><title>Output</title><link>https://shinagawa-web.github.io/gomarklint/docs/output/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://shinagawa-web.github.io/gomarklint/docs/output/</guid><description>&lt;h1 id="output"&gt;Output&lt;a class="anchor" href="#output"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="human-readable---output-text-default"&gt;Human-readable (&lt;code&gt;--output text&lt;/code&gt;, default)&lt;a class="anchor" href="#human-readable---output-text-default"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;❯ gomarklint testdata/sample_links.md
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Errors in testdata/sample_links.md:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; testdata/sample_links.md:1: First heading should be level &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;found level 1&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; testdata/sample_links.md:4: Link unreachable: https://httpstat.us/404
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; testdata/sample_links.md:12: Link unreachable: http://localhost-test:3001
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; testdata/sample_links.md:16: duplicate heading: &lt;span style="color:#e6db74"&gt;&amp;#34;overview&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; testdata/sample_links.md:18: image with empty alt text
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;✖ &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt; issues found
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;✓ Checked &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; file&lt;span style="color:#f92672"&gt;(&lt;/span&gt;s&lt;span style="color:#f92672"&gt;)&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;19&lt;/span&gt; line&lt;span style="color:#f92672"&gt;(&lt;/span&gt;s&lt;span style="color:#f92672"&gt;)&lt;/span&gt; in 757ms&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Summary: &lt;code&gt;✖ N issues found&lt;/code&gt; if issues, &lt;code&gt;✔ No issues found&lt;/code&gt; if clean.&lt;/li&gt;
&lt;li&gt;Prints stats line: &lt;code&gt;Checked &amp;lt;files&amp;gt;, &amp;lt;lines&amp;gt;[, &amp;lt;links&amp;gt;] in &amp;lt;Xms|Ys&amp;gt;&lt;/code&gt; (includes link count when link checking is enabled).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="json---output-json"&gt;JSON (&lt;code&gt;--output json&lt;/code&gt;)&lt;a class="anchor" href="#json---output-json"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;files&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;lines&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;19&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;errors&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;elapsed_ms&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;790&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;details&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;testdata/sample_links.md&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; { &lt;span style="color:#f92672"&gt;&amp;#34;File&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;testdata/sample_links.md&amp;#34;&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;Line&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;Message&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;First heading should be level 2 (found level 1)&amp;#34;&lt;/span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; { &lt;span style="color:#f92672"&gt;&amp;#34;File&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;testdata/sample_links.md&amp;#34;&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;Line&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;Message&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;Link unreachable: https://httpstat.us/404&amp;#34;&lt;/span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; { &lt;span style="color:#f92672"&gt;&amp;#34;File&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;testdata/sample_links.md&amp;#34;&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;Line&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;12&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;Message&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;Link unreachable: http://localhost-test:3001&amp;#34;&lt;/span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; { &lt;span style="color:#f92672"&gt;&amp;#34;File&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;testdata/sample_links.md&amp;#34;&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;Line&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;16&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;Message&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;duplicate heading: \&amp;#34;overview\&amp;#34;&amp;#34;&lt;/span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; { &lt;span style="color:#f92672"&gt;&amp;#34;File&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;testdata/sample_links.md&amp;#34;&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;Line&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;18&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;Message&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;image with empty alt text&amp;#34;&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;details&lt;/code&gt; maps file path → list of issues (&lt;code&gt;file&lt;/code&gt;, &lt;code&gt;line&lt;/code&gt;, &lt;code&gt;message&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;elapsed_ms&lt;/code&gt; is total wall time for the run.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Performance</title><link>https://shinagawa-web.github.io/gomarklint/docs/performance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://shinagawa-web.github.io/gomarklint/docs/performance/</guid><description>&lt;h1 id="performance"&gt;Performance&lt;a class="anchor" href="#performance"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;gomarklint&lt;/code&gt; is built for speed, with optimizations for both file parsing and external link validation.&lt;/p&gt;
&lt;h2 id="structural-checks"&gt;Structural checks&lt;a class="anchor" href="#structural-checks"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Headings, code blocks, blank lines, etc.:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Scanning &lt;strong&gt;185 files and 104,000+ lines&lt;/strong&gt; takes under &lt;strong&gt;60ms&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="external-link-checking---enable-link-check"&gt;External link checking (&lt;code&gt;--enable-link-check&lt;/code&gt;)&lt;a class="anchor" href="#external-link-checking---enable-link-check"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Optimized concurrent validation with intelligent batching&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;~2,000 external links&lt;/strong&gt; validated in &lt;strong&gt;under 10 seconds&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Significantly faster than traditional sequential HTTP checks&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="recommended-usage"&gt;Recommended usage&lt;a class="anchor" href="#recommended-usage"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;For rapid local feedback:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run without &lt;code&gt;--enable-link-check&lt;/code&gt; → completes in milliseconds&lt;/li&gt;
&lt;li&gt;Perfect for catching structural issues while editing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;For comprehensive validation:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>GitHub Actions</title><link>https://shinagawa-web.github.io/gomarklint/docs/github-actions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://shinagawa-web.github.io/gomarklint/docs/github-actions/</guid><description>&lt;h1 id="github-actions-integration"&gt;GitHub Actions Integration&lt;a class="anchor" href="#github-actions-integration"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;You can use gomarklint in your CI workflows using the official &lt;a href="https://github.com/marketplace/actions/gomarklint-markdown-linter"&gt;GitHub Action&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; It is recommended that you create a &lt;code&gt;.gomarklint.json&lt;/code&gt; configuration file in your repository root before using &lt;code&gt;gomarklint&lt;/code&gt; in GitHub Actions. If no configuration file is present, gomarklint will run with its default settings.
You can generate a starter config with: &lt;code&gt;gomarklint init&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="example-githubworkflowslintyml"&gt;Example: &lt;code&gt;.github/workflows/lint.yml&lt;/code&gt;&lt;a class="anchor" href="#example-githubworkflowslintyml"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yml" data-lang="yml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Lint Markdown&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;on&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;push&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;paths&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#e6db74"&gt;&amp;#39;**/*.md&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;pull_request&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;paths&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#e6db74"&gt;&amp;#39;**/*.md&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;jobs&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;markdown-lint&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;runs-on&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;ubuntu-latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;steps&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Checkout code&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;uses&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;actions/checkout@v4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Run gomarklint Action&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;uses&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;shinagawa-web/gomarklint-action@v1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Roadmap</title><link>https://shinagawa-web.github.io/gomarklint/docs/roadmap/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://shinagawa-web.github.io/gomarklint/docs/roadmap/</guid><description>&lt;h1 id="roadmap-post-v100"&gt;Roadmap (Post v1.0.0)&lt;a class="anchor" href="#roadmap-post-v100"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="core-quality--rule-expansion"&gt;Core Quality &amp;amp; Rule Expansion&lt;a class="anchor" href="#core-quality--rule-expansion"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; &lt;code&gt;max-line-length&lt;/code&gt;: Enforce maximum line width&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; &lt;code&gt;no-multiple-consecutive-blank-lines&lt;/code&gt;: Disallow multiple blank lines&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; &lt;code&gt;image-alt-text&lt;/code&gt; improvements: Enforce alt text style and length&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Rule severity levels (e.g. &lt;code&gt;warning&lt;/code&gt;, &lt;code&gt;error&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="extensibility"&gt;Extensibility&lt;a class="anchor" href="#extensibility"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Plugin system for custom rules (via Go interface or external binary)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Allow disabling specific rules via inline comments (e.g. &lt;code&gt;&amp;lt;!-- gomarklint-disable --&amp;gt;&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="testing--stability"&gt;Testing &amp;amp; Stability&lt;a class="anchor" href="#testing--stability"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Snapshot testing support for easier rule verification&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Regression test suite for real-world Markdown samples&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="developer-ux"&gt;Developer UX&lt;a class="anchor" href="#developer-ux"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; VS Code extension using gomarklint core&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Interactive mode (e.g. prompt to fix or explain errors)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; File caching for faster repeated linting&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ecosystem--ci"&gt;Ecosystem &amp;amp; CI&lt;a class="anchor" href="#ecosystem--ci"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; GitHub Actions integration&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Prebuilt binaries via &lt;code&gt;goreleaser&lt;/code&gt; (macOS/Linux/Windows)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Homebrew formula&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Docker image (e.g. &lt;code&gt;ghcr.io/shinagawa-web/gomarklint&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="internationalization"&gt;Internationalization&lt;a class="anchor" href="#internationalization"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Localized messages (e.g. Japanese, Spanish)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Rule messages with IDs and documentation links&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;Feel free to suggest more ideas by &lt;a href="https://github.com/shinagawa-web/gomarklint/issues"&gt;opening an issue or discussion on GitHub&lt;/a&gt;!&lt;/p&gt;</description></item><item><title>Migrating to v2</title><link>https://shinagawa-web.github.io/gomarklint/docs/migration-v2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://shinagawa-web.github.io/gomarklint/docs/migration-v2/</guid><description>&lt;h1 id="migrating-to-v2"&gt;Migrating to v2&lt;a class="anchor" href="#migrating-to-v2"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;v2 replaces the flat boolean config fields with a unified &lt;code&gt;rules&lt;/code&gt; map. This enables per-rule severity levels, rule options, and a much cleaner foundation for adding new rules.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="what-changed"&gt;What changed&lt;a class="anchor" href="#what-changed"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="config-file-format"&gt;Config file format&lt;a class="anchor" href="#config-file-format"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;v1&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;minHeadingLevel&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;enableLinkCheck&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;linkCheckTimeoutSeconds&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;skipLinkPatterns&amp;#34;&lt;/span&gt;: [],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;enableHeadingLevelCheck&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;enableDuplicateHeadingCheck&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;enableNoMultipleBlankLinesCheck&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;enableNoSetextHeadingsCheck&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;enableFinalBlankLineCheck&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;include&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;README.md&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;docs&amp;#34;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;ignore&amp;#34;&lt;/span&gt;: [],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;output&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;text&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;v2&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;default&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;rules&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;heading-level&amp;#34;&lt;/span&gt;: { &lt;span style="color:#f92672"&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;severity&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;error&amp;#34;&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;minLevel&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;duplicate-heading&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;no-multiple-blank-lines&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;no-setext-headings&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;final-blank-line&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;unclosed-code-block&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;empty-alt-text&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;external-link&amp;#34;&lt;/span&gt;: { &lt;span style="color:#f92672"&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;severity&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;error&amp;#34;&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;timeoutSeconds&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;skipPatterns&amp;#34;&lt;/span&gt;: [] }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;include&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;README.md&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;docs&amp;#34;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;ignore&amp;#34;&lt;/span&gt;: [],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;output&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;text&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="rule-value-shorthand"&gt;Rule value shorthand&lt;a class="anchor" href="#rule-value-shorthand"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Each rule entry accepts three forms (bool, string, or object):&lt;/p&gt;</description></item></channel></rss>