From c16d30e416c77b5122502cda294540b71541de7d Mon Sep 17 00:00:00 2001 From: Dmitry Khanukov Date: Mon, 27 Apr 2026 23:43:43 +0100 Subject: [PATCH] Allow compatibility in skill frontmatter validation --- .../skill-creator/scripts/quick_validate.py | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/skills/.system/skill-creator/scripts/quick_validate.py b/skills/.system/skill-creator/scripts/quick_validate.py index 0547b404..8f3b4d3f 100644 --- a/skills/.system/skill-creator/scripts/quick_validate.py +++ b/skills/.system/skill-creator/scripts/quick_validate.py @@ -10,6 +10,7 @@ import yaml MAX_SKILL_NAME_LENGTH = 64 +MAX_COMPATIBILITY_LENGTH = 500 def validate_skill(skill_path): @@ -37,7 +38,7 @@ def validate_skill(skill_path): except yaml.YAMLError as e: return False, f"Invalid YAML in frontmatter: {e}" - allowed_properties = {"name", "description", "license", "allowed-tools", "metadata"} + allowed_properties = {"name", "description", "license", "allowed-tools", "metadata", "compatibility"} unexpected_keys = set(frontmatter.keys()) - allowed_properties if unexpected_keys: @@ -88,6 +89,23 @@ def validate_skill(skill_path): f"Description is too long ({len(description)} characters). Maximum is 1024 characters.", ) + if "compatibility" in frontmatter: + compatibility = frontmatter.get("compatibility", "") + if not isinstance(compatibility, str): + return ( + False, + f"Compatibility must be a string, got {type(compatibility).__name__}", + ) + compatibility = compatibility.strip() + if not compatibility: + return False, "Compatibility cannot be empty" + if len(compatibility) > MAX_COMPATIBILITY_LENGTH: + return ( + False, + f"Compatibility is too long ({len(compatibility)} characters). " + f"Maximum is {MAX_COMPATIBILITY_LENGTH} characters.", + ) + return True, "Skill is valid!"