Skip to content

fix(skills): codex-fleet and omp-fleet frontmatter fails YAML parsing - #2

Open
UBRN wants to merge 1 commit into
avenoxai:mainfrom
UBRN:fix/skill-frontmatter-yaml
Open

fix(skills): codex-fleet and omp-fleet frontmatter fails YAML parsing#2
UBRN wants to merge 1 commit into
avenoxai:mainfrom
UBRN:fix/skill-frontmatter-yaml

Conversation

@UBRN

@UBRN UBRN commented Aug 11, 2026

Copy link
Copy Markdown

Both codex-fleet and omp-fleet currently fail to load. Their description values are unquoted plain YAML scalars containing ": " (colon-space), which YAML reads as a mapping indicator:

$ ruby -ryaml -e YAML.safe_load(File.read("skills/codex-fleet/SKILL.md")[4..])
mapping values are not allowed in this context at line 2 column 129

The failure is silent — a SKILL.md whose frontmatter does not parse is skipped with no error and no warning, so the skill simply never triggers. It looks identical to a skill that was loaded but did not match.

Three colon-space sequences per file, not one:

file columns
skills/codex-fleet/SKILL.md 129 (describes): ), 371 (locked: ), 562 (on: )
skills/omp-fleet/SKILL.md 241, 446, 527

Fix

Converted both to >- folded block scalars. No wording changed — the descriptions round-trip byte-identical (882 and 686 chars), so every trigger keyword is preserved verbatim.

skills/gptpro/SKILL.md was not broken, but its description is the same unquoted plain-scalar construct — one future ": " away from the identical failure. Hardened alongside, same zero-content-change treatment (423 chars, unchanged).

Verification

$ ruby -ryaml -e Dir["skills/*/SKILL.md"].each { |f| r=File.read(f,encoding:"UTF-8"); YAML.safe_load(r[4..r.index("\n---\n",3)]) }

Fails on the two files before this change, clean after. All 10 skills parse; name matches directory in every case; every description is under the 1024-char limit.

Note

Happy to follow up with a small CI check (ruby scripts/validate-skills.rb + a workflow) that parses every SKILL.md and fails the build on malformed frontmatter, if that is wanted — kept out of this PR to keep it to one concern. This bug class is invisible without one.

🤖 Generated with Claude Code

Both descriptions were unquoted plain YAML scalars containing ": "
(colon-space). YAML reads that as a mapping indicator, so the block
fails to parse:

  mapping values are not allowed in this context

A skill whose frontmatter does not parse is silently dropped — no
error, no warning, it just never loads. Anyone installing these two
from the repo got a skill that does nothing.

Three colon-space sequences per file, not one:
  codex-fleet  cols 129 ("describes): "), 371 ("locked: "), 562 ("on: ")
  omp-fleet    cols 241, 446, 527

Converted all three to >- folded blocks. Descriptions round-trip
byte-identical (882 / 686 / 423 chars), so every trigger keyword is
preserved verbatim.

gptpro was not broken but was the same fragile construct — one future
": " away from the identical failure. Hardened along with them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant