機能

スラッシュコマンド

カスタムスラッシュコマンドを作成して、ワークフローを自動化し、チームの習慣を標準化します。

始めるには、Bob Shell で / を入力して利用可能なコマンドをすべて表示するか、.bob/commands/ または ~/.bob/commands/ に markdown ファイルを追加して独自のコマンドを作成します。

組み込みコマンド

Bob Shell には以下の組み込みスラッシュコマンドが含まれています:

コマンドエイリアス説明
/help利用可能なスラッシュコマンドをすべて表示する
/clear画面をクリアして会話履歴をリセットする
/condenseコンテキストウィンドウをインテリジェントに圧縮してスペースを確保する
/copy会話履歴からアイテムをクリップボードにコピーする
/modeアクティブなモードを切り替える(ピッカーを開く)
/resume以前の会話を参照して再開する
/settingsBob Shell の設定を表示・編集する
/mcp設定済み MCP サーバーを管理する
/manage-secretsMCP サーバー設定で使用するシークレットを管理する
/skillsプロンプトにスキル参照を挿入する
/init現在のワークスペースで Bob を初期化する
/status/infoセッション状態、使用状況、バージョン情報を表示する
/teamチームを選択する
/logsシステムビューアーで最新のログファイルを開く
/docsブラウザーで Bob Shell ドキュメントを開く
/bugバグレポートを送信する
/exit/quit/closeCLI を終了する

/manage-secrets サブコマンド

シークレットを使用すると、機密性の高い値(API key など)を保存し、MCP サーバー設定でハードコーディングせずに参照できます。

サブコマンド使用法説明
set/manage-secrets set KEY VALUEシークレット値を保存する
list/manage-secrets list保存されているすべてのシークレットキーを一覧表示する
rm/manage-secrets rm KEY保存されているシークレットを削除する

シークレットは ~/.bob/settings/ に暗号化して保存され、${KEY} 構文を使って MCP サーバー設定で参照できます。

スラッシュコマンドを使う理由

スラッシュコマンドにはいくつかの重要なメリットがあります:

  • ワークフローの自動化:複雑なマルチステップのプロセスを単一のコマンドに変換する
  • チームの標準化:一貫した慣行のためにチーム全体でコマンドを共有する
  • コンテキストの保持:すべてのコマンドにプロジェクト固有のコンテキストを含める
  • クイックアクセス:ファジー検索とオートコンプリートでコマンドを即座に見つける

スラッシュコマンドの仕組み

Bob Shell で / を入力すると、利用可能なコマンドをすべて表示するメニューが表示されます。これらのコマンドは 2 つのソースから提供されます:

コマンドタイプソース目的
カスタムワークフローコマンド.bob/commands/ または ~/.bob/commands/特定のタスク向けにユーザーが作成した自動化
モードコマンド組み込みおよびカスタムモードBob の操作コンテキストを切り替える

カスタムコマンドの作成

カスタムコマンドは、特定のディレクトリに markdown ファイルを追加することで Bob の機能を拡張します:

場所スコープパス
プロジェクト固有現在のプロジェクトのみで使用可能ワークスペースルートの .bob/commands/
グローバルすべてのプロジェクトで使用可能ホームディレクトリの ~/.bob/commands/

ファイル名がコマンド名になります。例:

.bob/commands/
├── review.md         → /review
├── test-api.md       → /test-api
└── deploy-check.md   → /deploy-check

コマンド名の処理

UI を通じてコマンドを作成する場合、Bob Shell はコマンド名を自動的に処理します:

  • 小文字に変換する
  • スペースをダッシュに置き換える
  • 特殊文字を削除する
  • 先頭と末尾のダッシュを削除する

例:"My Cool Command!" は my-cool-command になります

基本的なコマンドフォーマット

markdown ファイルを追加してシンプルなコマンドを作成します:

Help me review this code for security issues and suggest improvements.

frontmatter を使った高度なコマンド

拡張機能のために frontmatter を使ってメタデータを追加します:

---
description: Create a new API endpoint
argument-hint: <endpoint-name> <http-method>
---
Create a new API endpoint called $1 that handles $2 requests.
Include proper error handling and documentation.

frontmatter フィールド

フィールド目的
descriptionコマンドメニューに表示される"Create a new API endpoint"
argument-hint期待される引数を表示する"<endpoint-name> <http-method>"

ツール承認ダイアログ

Bob Shell がツールの使用をリクエストすると、承認ダイアログが表示されます。ダイアログには次のオプションがあります:

オプション説明
Approve Onceこの特定のツール呼び出しを許可します。今後の呼び出しでは再度確認されます。
Approve <group> tools for taskタスクの残りの時間、同じツールグループのすべてのツールを許可します。MCP ツールには表示されません。
Always Allow Command for taskタスクの残りの時間、特定のシェルコマンドを許可します。
Rejectツール呼び出しを拒否します。Bob Shell はアクションを実行しません。

ツール呼び出しを承認または拒否する際に、オプションのメモを追加することもできます。メモは会話コンテキストに含まれるため、Bob Shell はそれに応じて動作を調整できます。

Bob Shell が応答を完了する前にストリーミングを中断するには、Esc を押します。

Bob Shell でのコマンド管理

Bob Shell は Bob IDE と同じスラッシュコマンドをサポートしています。Bob Shell にはコマンドを管理するための専用 UI はありませんが、次のことができます:

  1. プロジェクトの .bob/commands/ ディレクトリ、またはホームディレクトリの ~/.bob/commands/ にコマンドファイルを手動で作成する
  2. 任意のテキストエディターで既存のコマンドファイルを編集する

スラッシュコマンドの使い方

Bob Shell で / を入力すると、次のタイプのコマンドを含む統合メニューが表示されます:

  1. 統合メニュー:カスタムコマンドとモード切り替えコマンドがまとめて表示される
  2. オートコンプリート:入力し始めるとコマンドがフィルタリングされる(例:/sam と入力すると sample-command-name が表示される)
  3. ファジー検索:部分一致でもコマンドを見つけられる
  4. 説明プレビュー:メニューにコマンドの説明が表示される
  5. 視覚的インジケーター:モードコマンドとカスタムコマンドが特別なアイコンで区別される
/mode code     Switch to Code mode
/mode ask      Switch to Ask mode
/review        Review code for security issues
/api-endpoint  <endpoint-name> <http-method>

引数ヒント

引数ヒントは、コマンドが追加の入力を期待している場合に、どのような情報を入力すればよいかを即座に示すスラッシュコマンドのサポート機能です。

/ を入力してコマンドメニューを表示すると、引数を期待するコマンドの横に薄いグレーのヒントが表示されます。このヒントは、コマンドが期待する引数の種類を示しています。

例:

  • /mode <mode_slug> — ヒント <mode_slug>codedebug などのモード名を入力することを示す
  • /api-endpoint <endpoint-name> <http-method> — エンドポイント名と HTTP メソッドの両方が必要なことを示す

コマンドを選択すると、スペースに続いてチャット入力フィールドに挿入されます。ヒントは挿入されません。次に何を入力すればよいかを示す視覚的なガイドにすぎません。コマンドの後に引数を手動で入力する必要があります。

カスタムコマンドへの引数ヒントの追加

frontmatter の argument-hint フィールドを使って、カスタムコマンドに引数ヒントを追加できます:

---
description: Create a new API endpoint
argument-hint: <endpoint-name> <http-method>
---
Create a new API endpoint called $1 that handles $2 requests.
Include proper error handling and documentation.

これにより、コマンドメニューに /api-endpoint <endpoint-name> <http-method> として表示されます。

引数ヒントのベストプラクティス

  • 具体的に記述する<arg> のような汎用的なプレースホルダーではなく、<file-path> のような説明的なプレースホルダーを使用する
  • 複数の引数を表示する:コマンドが複数の入力を必要とする場合は、すべてを表示する:<source> <destination>
  • 一貫したフォーマットを使用する:プレースホルダーは常に山括弧で囲む:<placeholder>
  • 簡潔に保つ:ヒントは短く明確にする

引数に関するよくある質問

質問回答
引数を入力しない場合はどうなりますか?コマンドが期待どおりに動作しないか、追加情報を求めるプロンプトが表示される場合があります。ヒントは最初から正確に入力できるようにするためのものです。
すべてのコマンドにヒントがありますか?いいえ。引数を取るよう設計されたコマンドのみヒントが表示されます。追加の入力なしで動作するコマンドにはヒントが表示されません。
ヒントを置き換えずにコマンドを使用できますか?ヒントテキスト(<mode_slug> など)は実際の値に置き換える必要があります。ヒントテキストのままにすると、コマンドが失敗するか予期しない動作をする可能性があります。

ベストプラクティス

コマンドの命名

  • 説明的でアクション指向の名前を使用する
  • 名前は簡潔だが明確に保つ
  • 複数単語のコマンドにはハイフンを使用する
  • helptest のような汎用的な名前は避ける
  • 注意:名前は自動的にスラッグ化される(小文字化、特殊文字の削除)
  • .md 拡張子は必要に応じて自動的に追加/削除される

コマンドのコンテンツ

  • 明確な指示から始める
  • 構造化されたフォーマット(リスト、セクション)を使用する
  • 具体的な要件を含める
  • プロジェクトの慣行を参照する
  • コマンドは単一のタスクに集中させる

整理

  • 関連するコマンドをサブディレクトリにまとめる
  • 一貫した命名パターンを使用する
  • 複雑なコマンドを文書化する
  • コマンドをバージョン管理する
  • チームのコマンドをプロジェクトのリポジトリで共有する

トラブルシューティング

コマンドが表示されない

コマンドがメニューに表示されない場合:

  • ファイルの場所を確認する:カスタムコマンドファイルが .bob/commands/ または ~/.bob/commands/ にあることを確認する
  • ファイル拡張子を確認する:カスタムコマンドは .md ファイルである必要がある

コマンドが見つからない

スラッシュコマンドが見つからない場合、LLM には次のように表示されます:

The slash command '/unknown-command' was not found. Please check the command name and try again.

コマンドの競合

  • カスタムプロジェクトコマンドは、同じ名前のグローバルカスタムコマンドより優先される
  • 競合を避けるためにユニークな名前を使用する
  • UI で重複する名前を作成すると、番号が付加される(例:new-command-1new-command-2

モードコマンドについて

スラッシュメニューにはモード切り替えコマンド(/mode code/mode ask など)が含まれており、これらは AI の操作モードを根本的に変更します。テキストを挿入するだけでなく、AI コンテキスト全体を切り替えます。作成したカスタムモードもスラッシュコマンドとして表示されます(例:スラッグ reviewer のモードは /reviewer になります)。これらのモードコマンドはカスタムワークフローコマンドで上書きできません。

クロスプラットフォームの互換性

スラッシュコマンドは Bob Shell と Bob IDE の両方で同じように動作します。つまり:

  • 一方の環境で作成したコマンドをもう一方でも使用できる
  • 同じコマンド構文と動作が両方の環境に適用される
  • チームで共有するコマンドは、チームメンバーがどちらのインターフェースを使用しているかにかかわらず一貫して動作する
このトピックはいかがですか?