Skip to content
Data
Skill

/ask-user-question

Ask users questions via the UI. Use when you need clarification, user preferences, or confirmation before proceeding. The user CANNOT see CLI output - this tool is the ONLY way to communicate with them.

From plugin
memos
11k3 skills5 agents
Install
$ npx -y skills add MemTensor/MemOS --skill ask-user-question --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/ask-user-question

Context preview

The summary Claude sees to decide when to auto-load this skill.

Ask users questions via the UI. Use when you need clarification, user preferences, or confirmation before proceeding. The user CANNOT see CLI output - this tool is the ONLY way to communicate with them.

SKILL.md

ask-user-question.SKILL.md
name: ask-user-question
description: Ask users questions via the UI. Use when you need clarification, user preferences, or confirmation before proceeding. The user CANNOT see CLI output - this tool is the ONLY way to communicate with them.

Ask User Question

Use this MCP tool to ask users questions and get their responses. This is the **ONLY** way to communicate with the user - they cannot see CLI/terminal output.

Critical Rule

The user **CANNOT** see your text output or CLI prompts!

If you write "Let me ask you..." and then just output text - **THE USER WILL NOT SEE IT**. You MUST call this tool to display a modal in the UI.

When to Use

  • Clarifying questions before starting ambiguous tasks
  • Asking user preferences (e.g., "How would you like files organized?")
  • Confirming actions before executing (especially destructive/irreversible ones)
  • Getting approval for sensitive actions (financial, messaging, deletion, etc.)
  • Any situation where you need user input to proceed

Parameters

{
  "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` (required): The question text to display
  • `header` (optional): Short category label, shown as modal title (max 12 chars)
  • `options` (optional): Array of selectable choices (2-4 recommended)
  • `multiSelect` (optional): Allow selecting multiple options (default: false)

**Custom text input:** To allow users to type their own response, include an option with label "Other" (case-insensitive). When selected, the UI shows a text input field.

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

**Important:** When "Other" is selected, the response will be `User responded: [their text]` instead of `User selected: Other`. You must wait for and handle this text response - do NOT proceed as if they selected a predefined option.

Examples

Asking about organization preferences

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" }
    ]
  }]
})

Confirming a destructive action

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" }
    ]
  }]
})

Simple yes/no confirmation

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" }
    ]
  }]
})

Response Format

The tool returns the user's selection:

  • `User selected: By file type` - Single selection
  • `User selected: Option A, Option B` - Multiple selections (if multiSelect: true)
  • `User responded: [custom text]` - If user typed a custom response
  • `User declined to answer the question.` - If user dismissed the modal

Wrong vs Correct

**WRONG** (user won't see this):

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

**CORRECT** (user will see a modal):

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

Self-evolving memory OS for LLM & AI Agents: ultra-persistent memory, hybrid-retrieval, and cross-task skill reuse, with 35.24% token savings

Get the whole plugin
Stats
10,659
Stars
987
Forks
Active
Maintenance
TypeScript
Language
Apache-2.0
License
2d ago
Last commit
1y ago
Created

Repo: MemTensor/MemOS