obsidianmd / obsidianmd/obsidian-developer-docs

Manifest Schema Definitions

Open
#196 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
JavaScript
Stars
521
Forks
174
PR merge metrics
No merged PRs in 30d

Description

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": false
Obsidian 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:

Image

Next Steps

  1. Would you like me to submit them to a project like JSON Schema Store
  2. Do you want them uploaded here to the obsidian-developer-docs repo?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No repository file, test, or entry point is named; start by locating where manifest documentation or schema assets belong in this repository. Review the proposed plugin and theme schemas, then confirm with maintainers whether they should be added here or submitted to JSON Schema Store; done requires an agreed location and validated manifest definitions.

Written by the indexing model from the issue text.

Assessment

Tech stack
json
Domain
documentation
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.