From 44b4295a87649fa5f052b74437643471caeaa7e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=BD=AE?= Date: Fri, 23 Jan 2026 08:52:27 +0800 Subject: [PATCH] update parse_skill_frontmatter --- routes/skill_manager.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/routes/skill_manager.py b/routes/skill_manager.py index 2db3446..07e4e40 100644 --- a/routes/skill_manager.py +++ b/routes/skill_manager.py @@ -4,6 +4,7 @@ import shutil import zipfile import logging import asyncio +import yaml from typing import List, Optional from fastapi import APIRouter, HTTPException, Query, UploadFile, File, Form from pydantic import BaseModel @@ -294,14 +295,12 @@ def parse_skill_frontmatter(skill_md_path: str) -> Optional[dict]: return None frontmatter = frontmatter_match.group(1) - metadata = {} - # Parse key: value pairs from frontmatter - for line in frontmatter.split('\n'): - line = line.strip() - if ':' in line: - key, value = line.split(':', 1) - metadata[key.strip()] = value.strip() + # Parse YAML using yaml.safe_load + metadata = yaml.safe_load(frontmatter) + if not isinstance(metadata, dict): + logger.warning(f"Invalid frontmatter format in {skill_md_path}") + return None # Return name and description if both exist if 'name' in metadata and 'description' in metadata: