← Back to the Obsidian Plugin Review Checker
eslint-plugin-obsidianmd is the official Obsidian team's ESLint plugin --
maintained under the obsidianmd GitHub organization, with around 40 rules that check
a plugin's TypeScript/JavaScript source against the full range of Obsidian's developer
guidelines. It is the deeper, broader tool, and it is meant to live inside a plugin's own
project as a permanent lint step, not to be run once from a browser tab. This checker is a
narrower, zero-install pre-flight pass for the specific patterns that most commonly delay a
first community-plugin review.
| Setup | eslint-plugin-obsidianmd is installed with npm install eslint-plugin-obsidianmd
--save-dev into an existing project, plus ESLint itself and an
eslint.config.mjs; its type-checked rules also need a TypeScript-aware parser
configuration. This checker needs none of that: open index.html and
pick your plugin's folder, or run node check.mjs . from the plugin's directory
with no config file at all. |
|---|---|
| versions.json cross-check | eslint-plugin-obsidianmd's validate-manifest rule checks
manifest.json's own structure, but none of its ~40 rules cross-check the current
manifest version against versions.json's own entries -- versions.json
is a separate file that ESLint, which lints source and config files, has no reason to open.
This checker reads both files and reports it directly. |
| Breadth | eslint-plugin-obsidianmd's ~40 rules cover command naming, settings-tab patterns,
sentence case in UI strings, API-version compatibility, and a long list of DOM and platform
API preferences -- far more than this checker looks at. This checker covers five things:
required manifest fields, sample-plugin template leftovers, the versions.json entry, and
innerHTML/outerHTML/insertAdjacentHTML usage. |
| When you'd reach for each | eslint-plugin-obsidianmd running on every commit in CI, for a project already set up with ESLint and TypeScript. This checker for a quick pass before a first submission, or when you just want an answer without touching the project's own lint configuration. |
Both tools exist because Obsidian's own published developer guidelines name these as review blockers, and both read from the same public documentation. Neither is the review process, and a clean report from either is not a guarantee of approval -- see this checker's own disclaimer on index.html, and verify against Obsidian's current plugin guidelines before you submit either way.
No. Its validate-manifest rule checks the structure of manifest.json on its own, and its sample-names and no-sample-code rules catch leftover sample-plugin template code, but none of its rules cross-check manifest.json's current version against versions.json's own entries. That specific cross-file check is what this tool's versions.json entry check does.
No. eslint-plugin-obsidianmd is installed with npm into an existing project and needs an eslint.config.mjs, plus a TypeScript-aware parser configuration for its type-checked rules. This checker needs none of that: open index.html and pick your plugin's folder, or run node check.mjs . from the plugin's own directory with no config file at all.
Both, for different jobs. eslint-plugin-obsidianmd is the deeper tool: around 40 rules covering the full range of Obsidian's developer guidelines -- command naming, settings-tab patterns, sentence case in UI strings, API version compatibility, and more -- wired into your project's own lint step so it runs on every change. This tool is a narrower, five-check pre-flight pass with zero setup: required manifest fields, sample-plugin template leftovers, the versions.json entry, and innerHTML/outerHTML/insertAdjacentHTML usage. Running this tool once before a first submission does not require touching your project's ESLint configuration at all.
No. This page is not affiliated with, endorsed by, or sponsored by Obsidian or Dynalist Inc. eslint-plugin-obsidianmd is maintained under the obsidianmd GitHub organization; it is named here only to describe what it is and is not, based on its own public repository and README.
← Back to the checker to pick your plugin's folder, or read fixing a missing versions.json entry for the mechanism this checker's own versions.json check is built on.