Files
secondsky 75421faf2a fix: add license: MIT to 92 skills, correct Nitro preset naming
- Add missing license: MIT to YAML frontmatter for 92 skills (0 warnings now)
- Fix Nitro presets: cloudflare-pages -> cloudflare_pages, cloudflare-module -> cloudflare_module
- Updated across nuxt-v5 templates, commands, production skill, and deployment refs
2026-04-02 19:49:06 +02:00

272 lines
7.7 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://github.com/secondsky/claude-skills/schemas/plugin.schema.json",
"title": "Claude Code Plugin Schema",
"description": "JSON schema for validating plugin.json files in Claude Code plugins. Based on official Claude Code plugin specification (https://docs.claude.com/en/docs/claude-code/plugins-reference). Only 'name' is required.",
"type": "object",
"required": ["name"],
"additionalProperties": true,
"properties": {
"name": {
"type": "string",
"pattern": "^[a-z0-9-]+$",
"description": "Plugin name in kebab-case (REQUIRED). Used for namespacing components."
},
"version": {
"type": "string",
"description": "Semantic version (major.minor.patch). If also set in marketplace entry, plugin.json takes priority."
},
"description": {
"type": "string",
"minLength": 10,
"maxLength": 500,
"description": "Brief explanation of plugin purpose"
},
"author": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Author name"
},
"email": {
"type": "string",
"format": "email",
"description": "Author email"
},
"url": {
"type": "string",
"format": "uri",
"description": "Author URL"
}
},
"required": ["name"],
"additionalProperties": false,
"description": "Author information"
},
"homepage": {
"type": "string",
"format": "uri",
"description": "Documentation URL"
},
"repository": {
"type": "string",
"format": "uri",
"description": "Source code URL"
},
"license": {
"type": "string",
"minLength": 1,
"description": "License identifier (e.g. MIT, Apache-2.0)"
},
"keywords": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"minItems": 1,
"uniqueItems": true,
"description": "Discovery tags"
},
"commands": {
"oneOf": [
{
"type": "string",
"pattern": "^\\./.*",
"description": "Single command file/directory path (replaces default commands/)"
},
{
"type": "array",
"items": {
"type": "string",
"pattern": "^\\./.*"
},
"uniqueItems": true,
"description": "Array of command file/directory paths (replaces default commands/)"
}
],
"description": "Custom command files/directories. Replaces default commands/ directory."
},
"agents": {
"oneOf": [
{
"type": "string",
"pattern": "^\\./.*",
"description": "Single agent file/directory path (replaces default agents/)"
},
{
"type": "array",
"items": {
"type": "string",
"pattern": "^\\./.*"
},
"uniqueItems": true,
"description": "Array of agent file paths (replaces default agents/)"
}
],
"description": "Custom agent files. Replaces default agents/ directory."
},
"skills": {
"oneOf": [
{
"type": "string",
"pattern": "^\\./.*",
"description": "Single skill directory path (replaces default skills/)"
},
{
"type": "array",
"items": {
"type": "string",
"pattern": "^\\./.*"
},
"uniqueItems": true,
"description": "Array of skill directory paths (replaces default skills/)"
}
],
"description": "Custom skill directories. Replaces default skills/ directory."
},
"hooks": {
"oneOf": [
{
"type": "string",
"pattern": "^\\./.*",
"description": "Path to hooks config file"
},
{
"type": "array",
"items": {
"type": "string",
"pattern": "^\\./.*"
},
"description": "Array of hook config file paths"
},
{
"type": "object",
"description": "Inline hooks configuration",
"additionalProperties": true
}
],
"description": "Hook config paths or inline configuration. Hooks merge (not replace) from multiple sources."
},
"mcpServers": {
"oneOf": [
{
"type": "string",
"pattern": "^\\./.*",
"description": "Path to MCP servers config file"
},
{
"type": "array",
"items": {
"type": "string",
"pattern": "^\\./.*"
},
"description": "Array of MCP config file paths"
},
{
"type": "object",
"description": "Inline MCP server configuration",
"additionalProperties": true
}
],
"description": "MCP config paths or inline configuration. MCP servers merge (not replace) from multiple sources."
},
"outputStyles": {
"oneOf": [
{
"type": "string",
"pattern": "^\\./.*",
"description": "Single output style file/directory path"
},
{
"type": "array",
"items": {
"type": "string",
"pattern": "^\\./.*"
},
"uniqueItems": true,
"description": "Array of output style file/directory paths"
}
],
"description": "Custom output style files/directories. Replaces default output-styles/ directory."
},
"lspServers": {
"oneOf": [
{
"type": "string",
"pattern": "^\\./.*",
"description": "Path to LSP servers config file"
},
{
"type": "array",
"items": {
"type": "string",
"pattern": "^\\./.*"
},
"description": "Array of LSP config file paths"
},
{
"type": "object",
"description": "Inline LSP server configuration",
"additionalProperties": true
}
],
"description": "Language Server Protocol configs for code intelligence."
},
"userConfig": {
"type": "object",
"description": "User-configurable values prompted at enable time",
"additionalProperties": {
"type": "object",
"required": ["description"],
"properties": {
"description": {
"type": "string",
"minLength": 1,
"description": "Explanation of what this config value is for"
},
"sensitive": {
"type": "boolean",
"description": "Whether this value should be stored securely (default: false)"
}
},
"additionalProperties": false
}
},
"channels": {
"type": "array",
"description": "Channel declarations for message injection",
"items": {
"type": "object",
"required": ["server"],
"properties": {
"server": {
"type": "string",
"description": "Must match a key in the plugin's mcpServers"
},
"userConfig": {
"type": "object",
"additionalProperties": {
"type": "object",
"required": ["description"],
"properties": {
"description": {
"type": "string",
"minLength": 1
},
"sensitive": {
"type": "boolean"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}
}
}
}