ask-user-question について
ask-user-questionは、UIモーダルで質問や選択肢を提示し、回答を受け取るスキルです。作業前の確認や希望の収集、実行許可が必要なエージェント向けです。
主な機能
- 01UIモーダルで質問を表示
- 02選択肢を提示
- 03自由入力を受け付け
- 04ユーザーの選択を返却
活用シーン
- 01曖昧なタスク要件の確認
- 02ファイル整理の希望を収集
- 03機密操作や破壊的操作の事前確認
MCP 対応
このスキルは、MCPツールを使ってユーザーに質問し、回答を受け取る方法を説明しています。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ memtensor/ memos --skill ask-user-questionインストール後、Claude Code で/ask-user-questionを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
package-lock.jsonpackage.jsontsconfig.jsonsrc/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" }
]
}]
})
コメント
Markdown 対応