mdsmith
Esc
    v0.52.0 GitHub

    Rule Directory

    Complete list of all mdsmith rules with category, status, and description, generated from rule READMEs.

    All mdsmith rules. Each rule links to its full README with parameters, examples, and diagnostics.

    RuleNameCategoryStatusDescription
    MDS001line-lengthlinereadyLine exceeds maximum length.
    MDS002heading-styleheadingreadyHeading style must be consistent.
    MDS003heading-incrementheadingreadyHeading levels should increment by one. No jumping from # to ###.
    MDS004first-line-headingheadingreadyFirst line of the file should be a heading.
    MDS005no-duplicate-headingsheadingreadyNo two headings should have the same text.
    MDS006no-trailing-spaceswhitespacereadyNo trailing whitespace at the end of lines.
    MDS007no-hard-tabswhitespacereadyNo tab characters. Use spaces instead.
    MDS008no-multiple-blankswhitespacereadyNo more than one consecutive blank line.
    MDS009single-trailing-newlinewhitespacereadyFile must end with exactly one newline character.
    MDS010fenced-code-stylecodereadyFenced code blocks must use a consistent delimiter.
    MDS011fenced-code-languagecodereadyFenced code blocks must specify a language.
    MDS012no-bare-urlslinkreadyURLs must be wrapped in angle brackets or as a link, not left bare.
    MDS013blank-line-around-headingsheadingreadyHeadings must have a blank line before and after.
    MDS014blank-line-around-listslistreadyLists must have a blank line before and after.
    MDS015blank-line-around-fenced-codecodereadyFenced code blocks must have a blank line before and after.
    MDS016list-indentlistreadyList items must use consistent indentation.
    MDS017no-trailing-punctuation-in-headingheadingreadyHeadings should not end with punctuation.
    MDS018no-emphasis-as-headingheadingreadyDon’t use bold or emphasis on a standalone line as a heading substitute.
    MDS019catalogdirectivereadyCatalog content must reflect selected front matter fields from files matching its glob.
    MDS020required-structurestructuralreadyDocument structure and front matter must match its schema.
    MDS021includedirectivereadyInclude section content must match the referenced file.
    MDS022max-file-lengthstructuralreadyFile must not exceed maximum number of lines.
    MDS023paragraph-readabilityprosereadyParagraph readability index must not exceed a threshold.
    MDS024paragraph-structureprosereadyParagraphs must not exceed sentence and word limits.
    MDS025table-formattablereadyTables must have consistent edge pipes, equal column counts, surrounding blank lines, and prettier-style alignment.
    MDS026table-readabilitytablereadyTables must stay within readability complexity limits.
    MDS027cross-file-reference-integritylinkreadyLinks to local files and heading anchors must resolve.
    MDS028token-budgetprosereadyFile must not exceed a token budget.
    MDS029conciseness-scoringprosenot-readyParagraph conciseness score must not fall below a threshold.
    MDS030empty-section-bodyheadingreadySection headings must include meaningful body content.
    MDS031unclosed-code-blockcodereadyFenced code blocks must have a closing fence delimiter.
    MDS032no-empty-alt-textaccessibilityreadyImages must have non-empty alt text for accessibility.
    MDS033directory-structurestructuralreadyMarkdown files must exist only in explicitly allowed directories.
    MDS034markdown-flavorstructuralreadyFlags Markdown syntax that the declared target flavor does not render.
    MDS035toc-directivedirectivereadyFlag renderer-specific TOC directives that render as literal text on CommonMark and goldmark.
    MDS036max-section-lengthheadingreadySection length must not exceed per-level, per-heading, word, or paragraph limits.
    MDS037duplicated-contentprosereadyParagraphs should not repeat verbatim across Markdown files.
    MDS038tocdirectivereadyKeep toc generated heading lists in sync with document headings.
    MDS039builddirectivereadyValidate <?build?> directive parameters and keep the section body in sync with the recipe’s rendered body-template.
    MDS040recipe-safetydirectivereadyValidate each build.recipes command for shell-safety at lint time; the rule never executes any binary.
    MDS041no-inline-htmlstructuralreadyRaw HTML tags in Markdown are not allowed; use a Markdown construct or an mdsmith directive instead.
    MDS042emphasis-styleprosereadyEnforces a single delimiter character for bold and italic emphasis, and optionally forbids cross-delimiter nesting.
    MDS043no-reference-stylelinkreadyReference-style links and footnotes require global definition resolution; flag them in favor of inline links.
    MDS044horizontal-rule-stylewhitespacereadyThematic breaks must use a consistent delimiter style, exact length, and blank-line spacing.
    MDS045list-marker-stylelistreadyUnordered list items must use the configured bullet marker character.
    MDS046ordered-list-numberinglistreadyOrdered list items must be numbered in the configured style.
    MDS047ambiguous-emphasisprosereadyForbid emphasis sequences whose meaning a human cannot predict at a glance.
    MDS048git-hook-syncstructuralreadyGit artifacts must match the canonical glob-based template derived from .mdsmith.yml.
    MDS049no-space-in-link-textlinkreadyLink text and image alt text must not have leading or trailing whitespace inside the brackets.
    MDS050proper-namesprosereadyConfigured proper names (e.g. JavaScript, GitHub) must appear with their canonical casing.
    MDS051single-h1headingreadyAt most one H1 heading is allowed per file.
    MDS052no-space-in-code-spanswhitespacereadyInline code spans with leading or trailing whitespace inside the backticks are almost always typos; flag them.
    MDS053no-unused-link-definitionslinkreadyEvery [label]: url definition must be consumed by at least one reference-style link or image; duplicate labels are flagged.
    MDS054no-undefined-reference-labelslinkreadyReference-style links and images must have a matching link reference definition in the same file.
    MDS055forbidden-paragraph-startsprosereadyParagraphs must not begin with any configured prefix.
    MDS056forbidden-textprosereadyParagraphs must not contain any configured substring.
    MDS057required-text-patternsprosereadyHeading-bounded sections must match every configured regex.
    MDS058required-mentionsprosereadyHeading-bounded sections must contain every configured substring.
    MDS059blockquote-whitespacewhitespacereadyBlockquote markers must not be followed by multiple spaces, and adjacent blockquote blocks must not be separated by blank lines.
    MDS061list-marker-spacelistreadyEach list marker must be followed by the configured number of spaces.
    MDS062link-validitylinkreadyLinks must not use the reversed (text)[url] form, and every link or image must have a non-empty destination; a link must also have visible text.
    MDS063descriptive-link-textprosereadyLink text must be descriptive. Non-descriptive phrases like “click here”, “here”, “link”, and “more” fail screen readers and link-list navigation.
    MDS064atx-heading-whitespaceheadingreadyATX heading whitespace and indentation.
    MDS065code-block-stylecodereadyCode blocks must use a single delimiter — fenced or four-space indented — consistently across the file.
    MDS066commands-show-outputcodereadyA fenced code block whose every non-blank line begins with $ and shows no output must drop the prompt.
    MDS067callout-typestructuralreadyValidate Obsidian callout types against an allowed set.
    MDS068link-stylelinkreadyFlag links and images whose path, extension, form, or link-image-style deviates from the project’s declared links.style policy.
    MDS069unique-frontmatterstructuralreadyEvery file in the configured glob scope must hold a distinct value in the configured front-matter field.
    MDS070same-file-anchorlinkreadyEvery same-file #fragment link must resolve to a heading present in the same file.

    # Directive rules

    Rules whose nature: directive front matter marks them as <?...?> directive implementations. Filtered from the same source as the table above.

    RuleNameDescription
    MDS019catalogCatalog content must reflect selected front matter fields from files matching its glob.
    MDS021includeInclude section content must match the referenced file.
    MDS038tocKeep toc generated heading lists in sync with document headings.
    MDS039buildValidate <?build?> directive parameters and keep the section body in sync with the recipe’s rendered body-template.