Skip to content

4 of 29 skills never load: unquoted description: containing ": " breaks YAML frontmatter #44

Description

@condeagustin

Plugin version: 0.1.2-beta (installed via claude plugin install unity@claude-plugins-official)
Claude Code: Windows 11, user-scope install

Summary

Four skills ship with YAML frontmatter that fails to parse, so they are silently dropped from the
skill listing. They are present on disk and look correct to a reader, but never become available to
the agent. No error is surfaced anywhere — claude plugin list reports the plugin as enabled, and
the only symptom is that 25 skills appear instead of 29.

In each case description: is an unquoted YAML plain scalar whose text contains ": "
(colon followed by a space). YAML reads that as a nested mapping key, and parsing fails with
mapping values are not allowed here.

Affected skills

Skill Location Parser error Offending text
physics-3d-collision SKILL.md:3 line 2, col 110 ...Unity projects. Primary scope: OnCollisionEnter... (also ...Physics package): provides...)
tilemap-ruletile-createfromsegment SKILL.md:2 line 1, col 295 ...into Unity RuleTile TilingRules: 3x3 grid text patterns...
ui SKILL.md:2 line 1, col 526 ...when no framework is named: consult this skill...
ui-imgui SKILL.md:2 line 1, col 375 ...for NEW editor windows or tools: new editor UI defaults...

ui is the routing entry point for the whole UI family, so its absence is the most consequential:
requests that don't name a framework never reach the detect-then-route step, and ui-imgui is
missing as a routing target on top of that.

Reproduction

import re, yaml
fm = re.match(r'^---\n(.*?)\n---', open('skills/ui/SKILL.md').read(), re.S).group(1)
yaml.safe_load(fm)
# yaml.scanner.ScannerError: mapping values are not allowed here
#   in "<unicode string>", line 1, column 526

Across all 29 skills the correlation is exact: the 4 that fail yaml.safe_load are precisely the 4
absent from the agent's skill listing, with no false positives in either direction.

Suggested fix

Use a folded block scalar, which needs no quoting or escaping and is already used elsewhere in this
plugin (optimize-text-mesh-pro, setup-multiplayer-services):

---
description: >-
  Unity UI expert for menus, HUDs, screens, ... when no framework is named: consult this
  skill to detect which UI system the project uses before writing any UI code, ...
---

Verified locally on all four; the text is unchanged and sibling keys (name, required_packages)
are unaffected.

A CI check that yaml.safe_loads every skills/*/SKILL.md frontmatter and asserts a non-empty
description would catch this class of defect — it is invisible in review because the text reads
fine, and invisible at runtime because the skill just quietly isn't there.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions