{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Obsidian Plugin Manifest",
"description": "Schema for Obsidian plugin manifest.json files",
"type": "object",
"required": [
"id",
"name",
"version",
"minAppVersion",
"description",
"author"
],
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the plugin. Must be unique across all plugins.",
"pattern": "^[a-z0-9-]+$"
},
"name": {
"type": "string",
"description": "Display name of the plugin as shown in the UI",
"minLength": 1
},
"version": {
"type": "string",
"description": "Current version of the plugin following semantic versioning",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"minAppVersion": {
"type": "string",
"description": "Minimum Obsidian version required to run this plugin",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"description": {
"type": "string",
"description": "Brief description of what the plugin does",
"minLength": 1
},
"author": {
"type": "string",
"description": "Name of the plugin author or organization",
"minLength": 1
},
"authorUrl": {
"type": "string",
"description": "URL to the author's website or profile",
"format": "uri"
},
"fundingUrl": {
"oneOf": [
{
"type": "string",
"description": "Single funding URL",
"format": "uri"
},
{
"type": "object",
"description": "Multiple funding options with display names",
"patternProperties": {
"^.+$": {
"type": "string",
"format": "uri"
}
},
"additionalProperties": false
}
]
},
"isDesktopOnly": {
"type": "boolean",
"description": "Whether the plugin only works on desktop (not mobile)",
"default": false
}
},
"additionalProperties": false
}
I created json-schema definitions following the Obsidian Docs - Manifest page.
Schema Defintions
Obsidian Plugin Manifest Schema
{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "Obsidian Theme Manifest", "description": "Schema for Obsidian theme manifest.json files", "type": "object", "required": ["name", "version", "minAppVersion", "author"], "properties": { "name": { "type": "string", "description": "Display name of the theme as shown in the UI", "minLength": 1 }, "version": { "type": "string", "description": "Current version of the theme following semantic versioning", "pattern": "^\\d+\\.\\d+\\.\\d+$" }, "minAppVersion": { "type": "string", "description": "Minimum Obsidian version required for this theme", "pattern": "^\\d+\\.\\d+\\.\\d+$" }, "author": { "type": "string", "description": "Name of the theme author or organization", "minLength": 1 }, "authorUrl": { "type": "string", "description": "URL to the author's website or profile", "format": "uri" }, "fundingUrl": { "oneOf": [ { "type": "string", "description": "Single funding URL", "format": "uri" }, { "type": "object", "description": "Multiple funding options with display names", "patternProperties": { "^.+$": { "type": "string", "format": "uri" } }, "additionalProperties": false } ] }, "modes": { "type": "array", "description": "Supported color modes for the theme", "items": { "type": "string", "enum": ["light", "dark"] }, "uniqueItems": true, "minItems": 1 } }, "additionalProperties": falseObsidian Theme Manifest Schema
{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "Obsidian Plugin Manifest", "description": "Schema for Obsidian plugin manifest.json files", "type": "object", "required": [ "id", "name", "version", "minAppVersion", "description", "author" ], "properties": { "id": { "type": "string", "description": "Unique identifier for the plugin. Must be unique across all plugins.", "pattern": "^[a-z0-9-]+$" }, "name": { "type": "string", "description": "Display name of the plugin as shown in the UI", "minLength": 1 }, "version": { "type": "string", "description": "Current version of the plugin following semantic versioning", "pattern": "^\\d+\\.\\d+\\.\\d+$" }, "minAppVersion": { "type": "string", "description": "Minimum Obsidian version required to run this plugin", "pattern": "^\\d+\\.\\d+\\.\\d+$" }, "description": { "type": "string", "description": "Brief description of what the plugin does", "minLength": 1 }, "author": { "type": "string", "description": "Name of the plugin author or organization", "minLength": 1 }, "authorUrl": { "type": "string", "description": "URL to the author's website or profile", "format": "uri" }, "fundingUrl": { "oneOf": [ { "type": "string", "description": "Single funding URL", "format": "uri" }, { "type": "object", "description": "Multiple funding options with display names", "patternProperties": { "^.+$": { "type": "string", "format": "uri" } }, "additionalProperties": false } ] }, "isDesktopOnly": { "type": "boolean", "description": "Whether the plugin only works on desktop (not mobile)", "default": false } }, "additionalProperties": false }Preview
If configured properly in your code editor, you can get validation and definitions to show:
Next Steps