Slash command picker breaks when skill/command name is YAML boolean keyword

Resolved 💬 1 comment Opened Apr 2, 2026 by james-livefront Closed Apr 7, 2026

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

  1. Create a plugin with a skill:
---
name: true
description: "Any description"
---
Skill body.
  1. Enable the plugin
  2. Launch claude
  3. Type / at the input prompt
  4. No autocomplete dropdown appears

Expected Behavior

  • The picker should render normally, treating true as the string "true"
  • Or: plugin validation should reject non-string name fields 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).

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗