skill category

This commit is contained in:
朱潮 2026-05-26 16:13:26 +08:00
parent 9d001c86fc
commit 203dcf4a4e

View File

@ -22,6 +22,7 @@ class SkillItem(BaseModel):
name: str name: str
description: str description: str
user_skill: bool = False user_skill: bool = False
category: str = "other"
class SkillListResponse(BaseModel): class SkillListResponse(BaseModel):
@ -35,6 +36,7 @@ class SkillValidationResult:
valid: bool valid: bool
name: Optional[str] = None name: Optional[str] = None
description: Optional[str] = None description: Optional[str] = None
category: Optional[str] = None
error_message: Optional[str] = None error_message: Optional[str] = None
@ -268,7 +270,8 @@ def parse_plugin_json(plugin_json_path: str) -> SkillValidationResult:
return SkillValidationResult( return SkillValidationResult(
valid=True, valid=True,
name=plugin_config['name'], name=plugin_config['name'],
description=plugin_config['description'] description=plugin_config['description'],
category=plugin_config.get('category'),
) )
except json.JSONDecodeError as e: except json.JSONDecodeError as e:
@ -335,7 +338,8 @@ def parse_skill_frontmatter(skill_md_path: str) -> SkillValidationResult:
return SkillValidationResult( return SkillValidationResult(
valid=True, valid=True,
name=metadata['name'], name=metadata['name'],
description=metadata['description'] description=metadata['description'],
category=metadata.get('category'),
) )
except yaml.YAMLError as e: except yaml.YAMLError as e:
@ -411,10 +415,13 @@ def get_skill_metadata_legacy(skill_path: str) -> Optional[dict]:
""" """
result = get_skill_metadata(skill_path) result = get_skill_metadata(skill_path)
if result.valid: if result.valid:
return { ret = {
'name': result.name, 'name': result.name,
'description': result.description 'description': result.description,
} }
if result.category:
ret['category'] = result.category
return ret
return None return None
@ -457,7 +464,8 @@ def get_official_skills(base_dir: str) -> List[SkillItem]:
skills.append(SkillItem( skills.append(SkillItem(
name=metadata['name'], name=metadata['name'],
description=metadata['description'], description=metadata['description'],
user_skill=False user_skill=False,
category=metadata.get('category', 'other'),
)) ))
skill_names.add(skill_name) skill_names.add(skill_name)
logger.debug(f"Found official skill: {metadata['name']} from {official_skills_dir}") logger.debug(f"Found official skill: {metadata['name']} from {official_skills_dir}")
@ -490,7 +498,8 @@ def get_user_skills(base_dir: str, bot_id: str) -> List[SkillItem]:
skills.append(SkillItem( skills.append(SkillItem(
name=metadata['name'], name=metadata['name'],
description=metadata['description'], description=metadata['description'],
user_skill=True user_skill=True,
category=metadata.get('category', 'custom'),
)) ))
logger.debug(f"Found user skill: {metadata['name']}") logger.debug(f"Found user skill: {metadata['name']}")