diff --git a/routes/skill_manager.py b/routes/skill_manager.py index bbb51a5..c984309 100644 --- a/routes/skill_manager.py +++ b/routes/skill_manager.py @@ -22,6 +22,7 @@ class SkillItem(BaseModel): name: str description: str user_skill: bool = False + category: str = "other" class SkillListResponse(BaseModel): @@ -35,6 +36,7 @@ class SkillValidationResult: valid: bool name: Optional[str] = None description: Optional[str] = None + category: Optional[str] = None error_message: Optional[str] = None @@ -267,7 +269,8 @@ def parse_plugin_json(plugin_json_path: str) -> SkillValidationResult: return SkillValidationResult( valid=True, name=plugin_config['name'], - description=plugin_config['description'] + description=plugin_config['description'], + category=plugin_config.get('category'), ) except json.JSONDecodeError as e: @@ -334,7 +337,8 @@ def parse_skill_frontmatter(skill_md_path: str) -> SkillValidationResult: return SkillValidationResult( valid=True, name=metadata['name'], - description=metadata['description'] + description=metadata['description'], + category=metadata.get('category'), ) except yaml.YAMLError as e: @@ -410,10 +414,13 @@ def get_skill_metadata_legacy(skill_path: str) -> Optional[dict]: """ result = get_skill_metadata(skill_path) if result.valid: - return { + ret = { 'name': result.name, - 'description': result.description + 'description': result.description, } + if result.category: + ret['category'] = result.category + return ret return None @@ -456,7 +463,8 @@ def get_official_skills(base_dir: str) -> List[SkillItem]: skills.append(SkillItem( name=metadata['name'], description=metadata['description'], - user_skill=False + user_skill=False, + category=metadata.get('category', 'other'), )) skill_names.add(skill_name) logger.debug(f"Found official skill: {metadata['name']} from {official_skills_dir}") @@ -489,7 +497,8 @@ def get_user_skills(base_dir: str, bot_id: str) -> List[SkillItem]: skills.append(SkillItem( name=metadata['name'], description=metadata['description'], - user_skill=True + user_skill=True, + category=metadata.get('category', 'custom'), )) logger.debug(f"Found user skill: {metadata['name']}")