Slash command picker breaks when skill/command name is YAML boolean keyword
Description
The slash command autocomplete picker silently fails to render when any loaded plugin skill or command has a name field that is a YAML boolean keyword (true, false, yes, no, on, off).
The YAML frontmatter parser reads name: true as {name: true} (boolean) rather than {name: "true"} (string). The picker presumably calls a string method on the name value and throws, killing the dropdown entirely.
Steps to Reproduce
- Create a plugin with a skill:
---
name: true
description: "Any description"
---
Skill body.
- Enable the plugin
- Launch
claude - Type
/at the input prompt - No autocomplete dropdown appears
Expected Behavior
- The picker should render normally, treating
trueas the string"true" - Or: plugin validation should reject non-string
namefields at load time with a clear error
Actual Behavior
The picker silently fails. No error is shown. Typing / inserts the character but no dropdown appears. All other slash commands (including built-in ones) are also hidden -- a single bad name breaks the entire picker.
Workaround
Quote the name (name: "true") or rename to avoid YAML boolean keywords.
Environment
- Claude Code: 2.1.90 (Homebrew cask)
- Terminal: kitty 0.45.0
- OS: macOS (Darwin 25.4.0)
Notes
The boolean values affected by YAML 1.1 parsing include: true, false, yes, no, on, off, y, n (and their capitalized variants). All of these would likely trigger the same bug. A defensive fix could coerce name to string during plugin load, or the frontmatter parser could use YAML 1.2 rules (which only treat true/false as boolean).
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗