Skip to content

script-utils/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.

VariableDescription
manifestDescriptionESLint rule enforcing the Community directory’s constraints on a plugin’s manifest.json description.
MESSAGE_ID_CONTAINS_OBSIDIANMessage ID reported when the description contains the word Obsidian.
MESSAGE_ID_MISSING_PERIODMessage ID reported when the description does not end with a period.
MESSAGE_ID_NOT_CAPITALIZEDMessage ID reported when the description does not start with a capital letter.
MESSAGE_ID_SELF_REFERENCEMessage ID reported when the description refers to itself.
MESSAGE_ID_TOO_LONGMessage ID reported when the description is longer than the directory allows.
MESSAGE_ID_TOO_SHORTMessage ID reported when the description is too short to describe anything.