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
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
@ -268,7 +270,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:
@ -335,7 +338,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:
@ -411,10 +415,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
@ -457,7 +464,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}")
@ -490,7 +498,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']}")