Skip to content

linters/eslint-rules/manifest-description

ESLint rule: manifest-description

Enforces the Community directory’s constraints on a plugin’s manifest.json description.

Two of these checks deliberately diverge from obsidianmd/validate-manifest:

  • Self-reference, not the word plugin. Upstream’s FORBIDDEN_WORDS bans the bare substring plugin in the description, which rejects two descriptions the directory itself passed untouched - Enhances Note composer core plugin. and ...not plugin updates... - because each names something other than itself. The directory’s actual objection is self-reference, so only self-referential phrases are matched here. - No character whitelist. Upstream’s format check rejects anything outside [A-Za-z0-9\s.,!?'"-], which fails backticks, em dashes, parentheses, colons and slashes. Seven live listings carry those and the directory flagged none, so the check is noise rather than a gate.

The no-Obsidian check has the opposite provenance: the directory enforces it and no Obsidian document states it, which is what cost a released plugin a version bump for one word.

Runs on the @eslint/json json/json language; see manifest-helpers.ts for why the AST is Momoa rather than ESTree.

Variable Description
manifestDescription ESLint rule enforcing the Community directory’s constraints on a plugin’s manifest.json description.
MESSAGE_ID_CONTAINS_OBSIDIAN Message ID reported when the description contains the word Obsidian.
MESSAGE_ID_MISSING_PERIOD Message ID reported when the description does not end with a period.
MESSAGE_ID_NOT_CAPITALIZED Message ID reported when the description does not start with a capital letter.
MESSAGE_ID_SELF_REFERENCE Message ID reported when the description refers to itself.
MESSAGE_ID_TOO_LONG Message ID reported when the description is longer than the directory allows.
MESSAGE_ID_TOO_SHORT Message ID reported when the description is too short to describe anything.