{"record":{"id":"c23cef499d1566d4","repo":"CherryHQ/cherry-studio","slug":"skill-md-missing-frontmatter-no-closing","errorCode":null,"errorMessage":"SKILL.md missing frontmatter (no closing ---)","messagePattern":"SKILL\\.md missing frontmatter \\(no closing ---\\)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"resources/skills/skill-creator/scripts/utils.py","lineNumber":22,"sourceCode":"\n\n\ndef parse_skill_md(skill_path: Path) -> tuple[str, str, str]:\n    \"\"\"Parse a SKILL.md file, returning (name, description, full_content).\"\"\"\n    content = (skill_path / \"SKILL.md\").read_text()\n    lines = content.split(\"\\n\")\n\n    if lines[0].strip() != \"---\":\n        raise ValueError(\"SKILL.md missing frontmatter (no opening ---)\")\n\n    end_idx = None\n    for i, line in enumerate(lines[1:], start=1):\n        if line.strip() == \"---\":\n            end_idx = i\n            break\n\n    if end_idx is None:\n        raise ValueError(\"SKILL.md missing frontmatter (no closing ---)\")\n\n    name = \"\"\n    description = \"\"\n    frontmatter_lines = lines[1:end_idx]\n    i = 0\n    while i < len(frontmatter_lines):\n        line = frontmatter_lines[i]\n        if line.startswith(\"name:\"):\n            name = line[len(\"name:\"):].strip().strip('\"').strip(\"'\")\n        elif line.startswith(\"description:\"):\n            value = line[len(\"description:\"):].strip()\n            # Handle YAML multiline indicators (>, |, >-, |-)\n            if value in (\">\", \"|\", \">-\", \"|-\"):\n                continuation_lines: list[str] = []\n                i += 1\n                while i < len(frontmatter_lines) and (frontmatter_lines[i].startswith(\"  \") or frontmatter_lines[i].startswith(\"\\t\")):\n                    continuation_lines.append(frontmatter_lines[i].strip())\n                    i += 1","sourceCodeStart":4,"sourceCodeEnd":40,"githubUrl":"https://github.com/CherryHQ/cherry-studio/blob/726446b54cd69ffe51a276638672f6d95ca0768c/resources/skills/skill-creator/scripts/utils.py#L4-L40","documentation":"Error \"SKILL.md missing frontmatter (no closing ---)\" thrown in CherryHQ/cherry-studio.","triggerScenarios":"parse_skill_md finds the opening '---' of SKILL.md frontmatter but no subsequent closing '---' line.","commonSituations":"Raised for truncated or malformed SKILL.md files where the frontmatter block was never terminated. Fix by adding the closing '---' line after the YAML frontmatter fields.","solutions":["Close the YAML frontmatter block with a second --- line after the frontmatter fields.","Check for unterminated or malformed frontmatter near the top of SKILL.md."],"exampleFix":"Ensure SKILL.md has both delimiters:\n---\nname: my-skill\n---\n<body>","handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"726446b54cd69ffe51a276638672f6d95ca0768c","analyzedAt":"2026-08-12T17:30:37.448Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}