{ "_comment": "Validation rules for plugins in the claude-code-plugins marketplace. These rules are used by the 'validate_plugin' skill.", "plugin_name": { "type": "string", "required": true, "min_length": 3, "max_length": 64, "pattern": "^[a-z0-9-]+$", "_comment": "Plugin name must be lowercase, alphanumeric, and can contain hyphens. No spaces allowed.", "error_message": "Plugin name must be lowercase, alphanumeric, and contain only hyphens. Minimum 3 characters, maximum 64." }, "description": { "type": "string", "required": true, "min_length": 20, "max_length": 500, "_comment": "A concise description of the plugin's functionality.", "error_message": "Description must be between 20 and 500 characters." }, "version": { "type": "string", "required": true, "pattern": "^\\d+\\.\\d+\\.\\d+$", "_comment": "Semantic versioning (e.g., 1.0.0).", "error_message": "Version must follow semantic versioning (e.g., 1.0.0)." }, "author": { "type": "string", "required": true, "min_length": 3, "max_length": 64, "_comment": "Author's name or organization.", "error_message": "Author must be between 3 and 64 characters." }, "skills": { "type": "array", "min_items": 1, "_comment": "List of skills provided by the plugin.", "items": { "type": "object", "properties": { "name": { "type": "string", "required": true, "min_length": 3, "max_length": 64, "pattern": "^[a-zA-Z0-9_]+$", "_comment": "Skill name must be alphanumeric and can contain underscores.", "error_message": "Skill name must be alphanumeric and contain only underscores. Minimum 3 characters, maximum 64." }, "description": { "type": "string", "required": true, "min_length": 20, "max_length": 500, "_comment": "A concise description of the skill's functionality.", "error_message": "Skill description must be between 20 and 500 characters." }, "parameters": { "type": "object", "_comment": "Parameters accepted by the skill. Should correspond to the function signature.", "additionalProperties": { "type": "object", "properties": { "type": { "type": "string", "enum": ["string", "number", "boolean", "array", "object"], "required": true, "_comment": "Data type of the parameter." }, "description": { "type": "string", "required": true, "min_length": 10, "max_length": 200, "_comment": "Description of the parameter's purpose.", "error_message": "Parameter description must be between 10 and 200 characters." }, "required": { "type": "boolean", "default": false, "_comment": "Whether the parameter is required." } }, "required": ["type", "description"] } } }, "required": ["name", "description"] } }, "api_url": { "type": "string", "required": true, "format": "uri", "_comment": "Base URL for the plugin's API.", "error_message": "API URL must be a valid URL." }, "license": { "type": "string", "required": true, "enum": ["MIT", "Apache-2.0", "GPL-3.0", "BSD-3-Clause", "Other"], "_comment": "License under which the plugin is distributed.", "error_message": "Invalid license type." }, "privacy_policy_url": { "type": "string", "required": false, "format": "uri", "_comment": "URL for the plugin's privacy policy. Required if the plugin collects user data.", "error_message": "Privacy policy URL must be a valid URL." } }