mcpField
A
ask-user-question

ask-user-question

github.com/memtensorエージェントワークフロー12.2k83 回インストール5 日前に更新
リポジトリ

ask-user-question について

ask-user-questionは、UIモーダルで質問や選択肢を提示し、回答を受け取るスキルです。作業前の確認や希望の収集、実行許可が必要なエージェント向けです。

主な機能

  1. 01UIモーダルで質問を表示
  2. 02選択肢を提示
  3. 03自由入力を受け付け
  4. 04ユーザーの選択を返却

活用シーン

  1. 01曖昧なタスク要件の確認
  2. 02ファイル整理の希望を収集
  3. 03機密操作や破壊的操作の事前確認

MCP 対応

このスキルは、MCPツールを使ってユーザーに質問し、回答を受け取る方法を説明しています。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/memtensor/memos --skill ask-user-question

インストール後、Claude Code で/ask-user-questionを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

package-lock.json
package.json
tsconfig.json
src/
index.ts

詳細

ユーザーに質問する

この MCP ツールを使ってユーザーに質問し、回答を得ます。ユーザーとコミュニケーションを取る唯一の方法です。ユーザーは CLI/ターミナルの出力を確認できません。

重要なルール

ユーザーは、テキスト出力や CLI プロンプトを確認できません!

「質問します……」と書いてテキストを出力するだけでは、ユーザーには表示されません。 このツールを呼び出して、UI にモーダルを表示する必要があります。

使用する場面

  • あいまいなタスクに着手する前に、確認の質問をする
  • ユーザーの希望を尋ねる(例:「ファイルをどのように整理しますか?」)
  • 実行前に操作を確認する(特に、破壊的または取り消せない操作)
  • 機密性の高い操作(金融、メッセージ送信、削除など)について承認を得る
  • 先に進むためにユーザーからの入力が必要な場合

パラメーター

{
  "questions": [{
    "question": "Your question to the user",
    "header": "Short label (max 12 chars)",
    "options": [
      { "label": "Option 1", "description": "What this does" },
      { "label": "Option 2", "description": "What this does" }
    ],
    "multiSelect": false
  }]
}
  • question(必須):表示する質問文
  • header(任意):カテゴリを示す短いラベル。モーダルのタイトルとして表示されます(最大 12 文字)
  • options(任意):選択肢の配列(推奨:2~4 個)
  • multiSelect(任意):複数選択を許可するかどうか(デフォルト:false)

自由入力: ユーザーが回答を入力できるようにするには、ラベルが「Other」(大文字と小文字は区別されません)の選択肢を含めます。これを選ぶと、UI にテキスト入力欄が表示されます。

{ "label": "Other", "description": "Type your own response" }

重要:「Other」が選択された場合、応答は User selected: Other ではなく User responded: [their text] になります。このテキストの応答を待って処理する必要があります。定義済みの選択肢が選ばれたものとして先に進まないでください。

例

ファイルの整理方法を尋ねる
AskUserQuestion({
  "questions": [{
    "question": "How would you like to organize your Downloads folder?",
    "header": "Organize",
    "options": [
      { "label": "By file type", "description": "Group into Documents, Images, Videos, etc." },
      { "label": "By date", "description": "Group by month/year" },
      { "label": "By project", "description": "You'll help me name project folders" }
    ]
  }]
})
破壊的な操作を確認する
AskUserQuestion({
  "questions": [{
    "question": "Delete these 15 duplicate files?",
    "header": "Confirm",
    "options": [
      { "label": "Delete all", "description": "Remove all 15 duplicates" },
      { "label": "Review first", "description": "Show me the list before deleting" },
      { "label": "Cancel", "description": "Don't delete anything" }
    ]
  }]
})
シンプルな「はい/いいえ」の確認
AskUserQuestion({
  "questions": [{
    "question": "Should I proceed with sending this email?",
    "header": "Send email",
    "options": [
      { "label": "Send", "description": "Send the email now" },
      { "label": "Cancel", "description": "Don't send" }
    ]
  }]
})

応答形式

ツールはユーザーの選択を返します。

  • User selected: By file type - 単一選択
  • User selected: Option A, Option B - 複数選択(multiSelect: true の場合)
  • User responded: [custom text] - ユーザーが自由入力した場合
  • User declined to answer the question. - ユーザーがモーダルを閉じた場合

誤った例と正しい例

誤り(ユーザーには表示されません):

I'll help organize your files. How would you like them organized?
- By type
- By date
- By project

正しい例(ユーザーにはモーダルが表示されます):

AskUserQuestion({
  "questions": [{
    "question": "How would you like your files organized?",
    "options": [
      { "label": "By type" },
      { "label": "By date" },
      { "label": "By project" }
    ]
  }]
})

コメント