A collection of tools for Obsidian plugin development and validation.
A tool to check an Obsidian plugin manifest against community rules as described in the Validate Plugin Entry workflow of the obsidianmd/obsidian-releases project.
The easiest way to install is using Homebrew:
# Clone the repository
git clone https://github.com/yourusername/obsidian-tools.git
cd obsidian-tools
# Install dependencies and build tools
brew bundle
# Build the tool
task buildYou can also build directly with Go if you prefer:
go build -o obsidian-validate-plugin-manifest ./validate-plugin-manifest# Simple validation with default manifest.json
./obsidian-validate-plugin-manifest
# Validate a specific manifest file
./obsidian-validate-plugin-manifest --manifest path/to/manifest.json
# Output in JSON format (useful for CI/CD)
./obsidian-validate-plugin-manifest --manifest path/to/manifest.json --json
# Suppress informational output
./obsidian-validate-plugin-manifest --manifest path/to/manifest.json --quiet
# Show version information
./obsidian-validate-plugin-manifest --versionThe validator checks that manifest files comply with the Obsidian community plugin guidelines:
- Plugin ID and name must not contain "obsidian" or end with "plugin"
- Description must not contain "obsidian" or phrases like "this plugin"
- Description should be under 250 characters
- Version and minAppVersion follow proper format (numbers and dots only)
- URLs don't point to the Obsidian website
- Email addresses are discouraged in the author field
Run the unit tests with:
# Using Go directly
go test ./validate-plugin-manifest
# Or using Task (recommended)
task testFor more detailed test output:
# Using Go directly
go test -v ./validate-plugin-manifest
# Or using Task
task test -- -vFor successful validation:
📝 Validating manifest for plugin: Example Plugin
✅ Manifest validation passed!
For validation with errors:
📝 Validating manifest for plugin: Example Plugin
❌ Errors:
• Plugin ID should not contain the word 'obsidian'
• Plugin ID should not end with 'plugin'
• Description should not contain the word 'Obsidian'
• Description should be under 250 characters (currently 274)
⚠️ Warnings:
• Email addresses are discouraged in the author field
❌ Validation failed with 4 error(s) and 1 warning(s)
This project uses Homebrew for dependency management and Task as a build tool.
# Initial setup - installs all dependencies from Brewfile
task setup
# Verify your environment is correctly set up
task verify# Build the project
task build
# Run all tests
task test
task test:cover # Run with coverage report
task test:race # Run with race detection
# Format code
task format
# Run linters
task lint
# Fix linting and formatting issues
task fix
# Run the validator
task run
task run:json # With JSON outputThe Taskfile is organized into logical sections:
- Setup Tasks:
setup,verify - Build Tasks:
build,build:all,clean - Quality Tasks:
quality,fix,format,lint - Test Tasks:
test,test:cover,test:race - Run Tasks:
run,run:json - Maintenance Tasks:
update:deps - CI/CD Tasks:
ci,pre-commit
Run task --list-all to see all available tasks. See copilot instructions for more detailed development guidelines.