Skip to content

プラグインのfrontmatter nameがYAMLブーリアンキーワードの場合にスラッシュコマンドピッカーが壊れる問題の修正

原文(日本語に翻訳)

プラグインのfrontmatter name がYAMLのブーリアンキーワード(truefalseyesno など)の場合に、スラッシュコマンドピッカーが壊れる問題を修正しました。

原文(英語)

Fixed slash command picker breaking when a plugin's frontmatter name is a YAML boolean keyword

概要

Claude Codeのプラグイン(スラッシュコマンドを定義するMarkdownファイル)のfrontmatterに name: truename: yes などのYAMLでブーリアン値として解釈されるキーワードを使用した場合、スラッシュコマンドのピッカーUI全体が壊れてしまう問題がありました。この修正により、YAMLのブーリアンキーワードがコマンド名として使われていても、ピッカーが正常に動作するようになります。

基本的な使い方

修正前の動作

プラグインのfrontmatterにYAMLブーリアンキーワードを使用した場合:

yaml
# /.claude/commands/verify.md のfrontmatter(問題のあるケース)
---
name: true   # YAML ではブール値 true として解釈される
description: 設定を確認するコマンド
---
# このプラグインがある状態でスラッシュコマンドを使おうとすると
/   # ← ピッカーを開こうとするとクラッシュまたは表示が壊れる

修正後の動作

yaml
# 同じfrontmatterでも問題なく動作する
---
name: true
description: 設定を確認するコマンド
---
# 修正後: ピッカーが正常に開く
/   # → コマンド一覧が正常に表示される

実践例

### YAMLブーリアンキーワードを含むプラグインの動作確認

以下のようなキーワードがプラグイン名に使われていた場合に問題が発生していました:

yaml
# 影響を受けていたキーワード(YAML 1.1 のブーリアンキーワード)
# true, false, yes, no, on, off (大文字・小文字の組み合わせも含む)

# 例: yes という名前のコマンド
---
name: yes
description: 確認を実行するコマンド
---
This command performs a confirmation action.
yaml
# 例: on という名前のコマンド
---
name: on
description: 機能を有効にするコマンド
---

### プラグイン名の安全な書き方(修正後も推奨)

修正後はYAMLブーリアンキーワードでも動作しますが、混乱を避けるためにクォートを使用することを推奨します:

yaml
# 推奨: クォートを使用して明示的に文字列として定義
---
name: "yes"
description: 確認を実行するコマンド
---

# または
---
name: 'true'
description: 検証コマンド
---

### 既存プラグインの確認方法

問題のあるプラグインを確認・修正する方法:

bash
# プロジェクトのカスタムコマンドディレクトリを確認
ls ~/.claude/commands/
ls ./.claude/commands/

# frontmatterのname フィールドを確認
grep -r "^name:" ~/.claude/commands/
grep -r "^name:" ./.claude/commands/

注意点

  • YAMLのブーリアンキーワードとして解釈される値は YAML 1.1 の仕様に基づくもので、truefalseyesnoonoff(大文字・小文字の組み合わせを含む)が該当します。
  • v2.1.98以降では修正されていますが、プラグイン名にはコマンドとして分かりやすい名前(英数字とハイフン)を使用することがベストプラクティスです。
  • この問題は1つのプラグインに問題のあるfrontmatterがあると、すべてのスラッシュコマンドピッカーが壊れる影響範囲の広い不具合でした。

関連情報