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.
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 listreports the plugin as enabled, andthe 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
physics-3d-collisionSKILL.md:3...Unity projects. Primary scope: OnCollisionEnter...(also...Physics package): provides...)tilemap-ruletile-createfromsegmentSKILL.md:2...into Unity RuleTile TilingRules: 3x3 grid text patterns...uiSKILL.md:2...when no framework is named: consult this skill...ui-imguiSKILL.md:2...for NEW editor windows or tools: new editor UI defaults...uiis 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-imguiismissing as a routing target on top of that.
Reproduction
Across all 29 skills the correlation is exact: the 4 that fail
yaml.safe_loadare precisely the 4absent 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):Verified locally on all four; the text is unchanged and sibling keys (
name,required_packages)are unaffected.
A CI check that
yaml.safe_loads everyskills/*/SKILL.mdfrontmatter and asserts a non-emptydescriptionwould catch this class of defect — it is invisible in review because the text readsfine, and invisible at runtime because the skill just quietly isn't there.