Skip to content

pr-ready SKILL.md frontmatter is invalid YAML (unquoted argument-hint flow sequence) #850

Description

@s-annam

Problem

.claude/skills/pr-ready/SKILL.md has a frontmatter argument-hint that is not valid YAML:

argument-hint: [<pr-number>[,<pr-number>...]]

An unquoted value starting with [ is parsed as a YAML flow sequence, and the nested [ inside it is a syntax error:

while parsing a flow sequence
  in "<unicode string>", line 4, column 16:
    argument-hint: [<pr-number>[,<pr-number>...]]
                   ^
expected ',' or ']', but got '['

Reproduce:

python3 -c "
import yaml,sys
yaml.safe_load(open('.claude/skills/pr-ready/SKILL.md').read().split('---')[1])
"

Why it matters

Claude Code currently tolerates this and loads the skill, so there is no visible breakage today. Stricter YAML consumers do not — a harness parsing frontmatter with Go's yaml.v3 (or any strict parser) silently drops the skill entirely, with no error surfaced. The failure mode is invisible: the skill simply stops existing, and /pr-ready becomes an unknown command.

That makes this a latent portability bug rather than a cosmetic one. It also means the file cannot be validated by any tooling that parses frontmatter strictly, so the same class of error can accumulate unnoticed in other skills.

Fix

Quote the value:

argument-hint: "[<pr-number>[,<pr-number>...]]"

Suggested follow-up

Add a frontmatter-parse check over .claude/skills/*/SKILL.md so this class of breakage is caught mechanically rather than by chance:

python3 - <<'PY'
import glob, sys, yaml
bad = []
for f in sorted(glob.glob('.claude/skills/*/SKILL.md')):
    try:
        yaml.safe_load(open(f).read().split('---')[1])
    except Exception as e:
        bad.append((f, str(e).splitlines()[0]))
for f, e in bad:
    print(f'{f}: {e}')
sys.exit(1 if bad else 0)
PY

At the time of filing, pr-ready is the only skill that fails; collapse-pr, open-pr, revise-pr, and pr-review all parse cleanly.

Discovery

Found incidentally while validating the skills touched by #849. Deliberately not fixed there — it is pre-existing (it fails at HEAD independently of that change) and unrelated to that PR's scope.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingchoreMaintenance, deps, CI config, code cleanup

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions