# Ask User

Reusable pattern for presenting the user with explicit choices and gating execution...

- Repository: https://github.com/garrytan/gbrain (31427 stars)
- Category: AI and agents
- License: MIT
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add garrytan/gbrain --skill ask-user -g -a claude-code -y`
Codex: `npx skills add garrytan/gbrain --skill ask-user -g -a codex -y`
Cursor: `npx skills add garrytan/gbrain --skill ask-user -g -a cursor -y`
Gemini CLI: `npx skills add garrytan/gbrain --skill ask-user -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add garrytan/gbrain`

## Description

Reusable pattern for presenting the user with explicit choices and gating execution until they respond. Used by other skills when a decision point requires human input before proceeding. Platform-agnostic, works on Telegram (inline buttons), Discord, CLI, or any agent with a message tool.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Ask User, Choice Gate Pattern

## Contract

- Present 2-4 options (no more, decision paralysis kicks in past 4).
- Always include an escape hatch (Skip, Cancel, or "none of these").
- Stop the turn immediately after presenting choices. No follow-up tool calls,
  no preemptive action, no default-and-proceed.
- The user's response triggers the next turn. Acknowledge briefly, then branch.
- One question per message, never stack multiple choice gates.
- Self-explanatory option labels: action verb plus brief qualifier, not "Option 1".

## What This Is

A **formalized pattern** for presenting users with 2-4 options and **stopping
execution** until they respond. This is the canonical way to gate on user input
in any GBrain-powered agent.

This is NOT a traditional async/await. In an LLM agent, "gating" means:
1. Present the choices (buttons or numbered options)
2. Explicitly stop the current turn (do not proceed)
3. The user's response triggers the next turn
4. Read the response and branch accordingly

## When To Use

- Ambiguous requests with multiple valid interpretations
- Destructive operations (bulk deletes, overwrites)
- Filing/routing decisions ("where should this go?")
- Priority triage ("which should I do first?")
- Cold-start phase gates ("ready for the next import source?")
- Any fork where the wrong default wastes significant work

## When NOT To Use

- Clear, unambiguous instructions → just do it
- Low-stakes decisions → pick the best option and mention it
- Time-critical operations where delay costs more than a wrong choice
- When the user has already expressed a preference

## How To Present Choices

### Platform-agnostic format (works everywhere)

Present choices as a clear question with numbered or labeled options:

```
🔀 **How should I handle this?**

[context about the decision, 1-3 lines max]

1. **Option A**, short description
2. **Option B**, short description
3. **Option C**, short description
4. **Skip**, do nothing for now
```

The rest: https://github.com/garrytan/gbrain/blob/HEAD/plugin/skills/ask-user/SKILL.md
