OpenBMB / OpenBMB/PilotDeck

Skill creator parser truncates folded YAML descriptions after blank lines

Open Beginner friendly
#412 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
4k
Forks
453
Avg merge
12h 30m
Merged PRs (30d)
46

Description

Summary

skills/skill-creator/scripts/utils.py:parse_skill_md hand-parses SKILL.md frontmatter and truncates valid folded YAML descriptions when the folded block contains a blank paragraph separator. The same repository also validates skill frontmatter with yaml.safe_load, so a SKILL.md file can pass validation but be read incorrectly by the skill-creator evaluation/improvement flow.

Tested on OpenBMB/PilotDeck main at 0907c5c9ae66cc155f36775fc8472b3ea621880d.

Code path

  • skills/skill-creator/scripts/utils.py:7 defines parse_skill_md, returning (name, description, full_content).
  • skills/skill-creator/scripts/utils.py:35-41 collects multiline description: > continuation lines only while they are indented, so a blank YAML paragraph line stops parsing early.
  • skills/skill-creator/scripts/quick_validate.py:35 validates the same frontmatter with yaml.safe_load.
  • skills/skill-creator/scripts/run_loop.py:64, scripts/run_eval.py:279, and scripts/improve_description.py:213 consume parse_skill_md output.

Steps to reproduce

Create a temporary skill directory with this SKILL.md:

---
name: a
description: >
  0

  0
metadata:
  version: "1.0"
---
# Body
Body text.

Then compare parse_skill_md(skill_dir)[1] with yaml.safe_load(frontmatter)["description"].

Observed dynamic repro:

expected_description: "0\n0\n"
original_description: "0"

Expected behavior

parse_skill_md should return the same description value accepted by the repository's YAML validator for valid SKILL.md frontmatter.

Actual behavior

The parser stops at the blank line inside a valid folded block and silently drops the following paragraph.

Existing coverage

I searched current issues and PRs for parse_skill_md, folded YAML, frontmatter, and SKILL.md description, and did not find an existing issue or PR covering this root cause. Open PRs do not modify skills/skill-creator/scripts/utils.py.

Related but not covering:

  • PRs about case-insensitive SKILL.md discovery touch the skill manager/discovery path, not this frontmatter parser behavior.

Suggested fix

Use yaml.safe_load for the frontmatter in parse_skill_md, matching quick_validate.py, or otherwise implement YAML folded/literal block semantics consistently.

Suggested tests

  • Folded description block with an empty paragraph line.
  • Literal block description.
  • Quoted inline description.
  • Validation and parse_skill_md returning the same name and description.

Submitted with Codex.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with skills/skill-creator/scripts/utils.py:parse_skill_md and compare its output with yaml.safe_load as used in quick_validate.py. Reproduce the folded and literal block cases from the issue, then add coverage showing parse_skill_md matches validated name and description values, including blank paragraph lines.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, yaml
Domain
tooling
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
75/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.