useuser

Ask humans questions via native macOS dialogs and notifications. Use when you need clarification, confirmation, or direct input from the user through system-level dialogs rather than chat. Supports text input, multiple choice, yes/no confirmation, information display, and system notifications.

16 stars

Best use case

useuser is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Ask humans questions via native macOS dialogs and notifications. Use when you need clarification, confirmation, or direct input from the user through system-level dialogs rather than chat. Supports text input, multiple choice, yes/no confirmation, information display, and system notifications.

Teams using useuser should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/useuser/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/backend/useuser/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/useuser/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How useuser Compares

Feature / AgentuseuserStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Ask humans questions via native macOS dialogs and notifications. Use when you need clarification, confirmation, or direct input from the user through system-level dialogs rather than chat. Supports text input, multiple choice, yes/no confirmation, information display, and system notifications.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Useuser

This skill enables you to ask humans questions through native macOS system dialogs. Use this when you need direct user input, confirmation before taking actions, or want to display important information that requires acknowledgment.

## When to Use This Skill

- **Clarification needed**: When you're uncertain about requirements or need more context
- **Confirmation required**: Before performing destructive or irreversible actions
- **User preferences**: When you need to know which option the user prefers
- **Important notifications**: When you need to alert the user about something significant
- **Blocking questions**: When you cannot proceed without user input

## Available Dialog Types

### 1. Text Input Dialog

Ask open-ended questions where the user types a response.

```bash
scripts/ask_text.sh "What is the database connection string?" "postgresql://localhost:5432/mydb" 300
```

**Parameters:**
- `$1` - Question text (required)
- `$2` - Default value (optional, defaults to empty)
- `$3` - Timeout in seconds (optional, defaults to 300). Use `0` or `none` for no timeout.

**Returns:** The text entered by the user, or "CANCELLED" if cancelled, or "TIMEOUT" if timed out.

**No timeout example:**
```bash
scripts/ask_text.sh "What is your preferred username?" "" 0
```

### 2. Multiple Choice Dialog

Present a list of options for the user to choose from.

```bash
scripts/ask_choice.sh "Which authentication method should I use?" "OAuth2" "JWT" "Session-based" "API Keys"
```

**Parameters:**
- `$1` - Question/prompt text (required)
- `$2+` - Available choices (at least 2 required)

**Returns:** The selected choice text, or "CANCELLED" if cancelled.

### 3. Yes/No Confirmation Dialog

Get a simple yes or no answer.

```bash
scripts/ask_confirm.sh "Should I delete the old migration files?" "no" 300
```

**Parameters:**
- `$1` - Question text (required)
- `$2` - Default button: "yes" or "no" (optional, defaults to "no")
- `$3` - Timeout in seconds (optional, defaults to 300). Use `0` or `none` for no timeout.

**Returns:** "YES" or "NO", or "CANCELLED" if cancelled, or "TIMEOUT" if timed out.

### 4. Information Dialog

Display information that requires user acknowledgment.

```bash
scripts/show_info.sh "Migration completed successfully! 47 records updated." 300
```

**Parameters:**
- `$1` - Message to display (required)
- `$2` - Timeout in seconds (optional, defaults to 300). Use `0` or `none` for no timeout.

**Returns:** "OK" when acknowledged, or "CANCELLED" if cancelled, or "TIMEOUT" if timed out.

### 5. System Notification

Send a macOS notification (non-blocking).

```bash
scripts/notify.sh "Build completed successfully" "Development Server" "Ready for testing" "yes"
```

**Parameters:**
- `$1` - Notification message (required)
- `$2` - Title (optional, defaults to "Useuser")
- `$3` - Subtitle (optional)
- `$4` - Play sound: "yes" or "no" (optional, defaults to "no")

**Returns:** "OK" on success.

## Usage Examples

### Example 1: Getting User Preferences

When setting up a new project:

```bash
# Ask what framework to use
framework=$(scripts/ask_choice.sh "Which framework should I use for this project?" "React" "Vue" "Svelte" "Angular")

if [ "$framework" != "CANCELLED" ]; then
    echo "User selected: $framework"
fi
```

### Example 2: Confirming Destructive Actions

Before deleting files:

```bash
confirm=$(scripts/ask_confirm.sh "This will permanently delete 15 files. Are you sure?" "no")

if [ "$confirm" = "YES" ]; then
    # Proceed with deletion
    echo "Deleting files..."
else
    echo "Operation cancelled by user"
fi
```

### Example 3: Getting Configuration Values

When you need specific input:

```bash
api_key=$(scripts/ask_text.sh "Please enter your API key:" "" 120)

if [ "$api_key" != "CANCELLED" ] && [ "$api_key" != "TIMEOUT" ]; then
    echo "API key received"
fi
```

### Example 4: Notifying About Long Operations

When a background task completes:

```bash
scripts/notify.sh "Database backup completed" "Backup Tool" "All 3 databases backed up successfully" "yes"
```

## Error Handling

All scripts handle errors gracefully:

- **User cancellation**: Returns "CANCELLED"
- **Timeout**: Returns "TIMEOUT" (for dialogs that support it)
- **AppleScript errors**: Returns "ERROR: <message>"

Always check the return value before proceeding:

```bash
result=$(scripts/ask_confirm.sh "Continue with deployment?")

case "$result" in
    "YES")
        echo "Deploying..."
        ;;
    "NO")
        echo "Deployment cancelled by user"
        ;;
    "CANCELLED")
        echo "Dialog was dismissed"
        ;;
    "TIMEOUT")
        echo "No response received, timing out"
        ;;
    ERROR*)
        echo "An error occurred: $result"
        ;;
esac
```

## Best Practices

1. **Be specific**: Ask clear, specific questions that have actionable answers
2. **Provide context**: Include relevant context in your questions
3. **Use appropriate dialog type**: Use confirmation for yes/no, choice for options, text for open-ended
4. **Set reasonable timeouts**: Don't make users wait forever, but give them enough time
5. **Handle all cases**: Always handle cancellation and timeout scenarios
6. **Minimize interruptions**: Only ask when you truly need human input
7. **Use notifications sparingly**: Reserve notifications for important, non-blocking updates

## Platform Requirements

- **macOS only**: This skill uses AppleScript via `osascript` and only works on macOS
- **Terminal permissions**: The terminal app may need permission to display dialogs (System Preferences > Privacy & Security > Accessibility)

Related Skills

bgo

10
from diegosouzapw/awesome-omni-skill

Automates the complete Blender build-go workflow, from building and packaging your extension/add-on to removing old versions, installing, enabling, and launching Blender for quick testing and iteration.

Coding & Development

Deployment Advisor

16
from diegosouzapw/awesome-omni-skill

Choose deployment strategy and infrastructure. Use when deciding where to deploy applications, setting up CI/CD, or configuring production environments. Covers Vercel, Railway, AWS, Cloudflare Workers, and Docker.

deploying-on-azure

16
from diegosouzapw/awesome-omni-skill

Design and implement Azure cloud architectures using best practices for compute, storage, databases, AI services, networking, and governance. Use when building applications on Microsoft Azure or migrating workloads to Azure cloud platform.

deploying-applications

16
from diegosouzapw/awesome-omni-skill

Deployment patterns from Kubernetes to serverless and edge functions. Use when deploying applications, setting up CI/CD, or managing infrastructure. Covers Kubernetes (Helm, ArgoCD), serverless (Vercel, Lambda), edge (Cloudflare Workers, Deno), IaC (Pulumi, OpenTofu, SST), and GitOps patterns.

deploying-airflow

16
from diegosouzapw/awesome-omni-skill

Deploy Airflow DAGs and projects. Use when the user wants to deploy code, push DAGs, set up CI/CD, deploy to production, or asks about deployment strategies for Airflow.

deploy_cicd

16
from diegosouzapw/awesome-omni-skill

CI/CD pipeline, GitHub Actions, automated deployment, release management, production shipping, and software delivery.

deploy

16
from diegosouzapw/awesome-omni-skill

Execute deployment workflows with pre-flight checks, environment validation, health verification, and rollback procedures. Use this skill whenever someone asks to deploy, push to staging, release to production, or says things like "deploy to staging", "release this to production", "run the deployment checklist", "is this ready to deploy", "execute the release", or "roll back the deployment". Also trigger when someone mentions deployment readiness, smoke tests after deploy, rollback procedures, or canary/blue-green deployment strategy.

deploy-script-review

16
from diegosouzapw/awesome-omni-skill

배포 스크립트의 보안·안전성 리뷰를 수행한다. 롤백 절차, 장애 대응, 권한 설정을 점검한다.

deploy-production

16
from diegosouzapw/awesome-omni-skill

Deploy to production environments with safety checks. Use when releasing code to production. Not for staging deploys or local builds unless specifically requested.

deploy-config

16
from diegosouzapw/awesome-omni-skill

Usar para configurar despliegue según hosting

dependencies-management-rules

16
from diegosouzapw/awesome-omni-skill

Mandates the usage of UV when installing dependencies to ensure consistency and efficiency across all environments.

denylist-stuck-messages

16
from diegosouzapw/awesome-omni-skill

Add message IDs to the relayer denylist. Use after investigating stuck messages with /investigate-stuck-messages, or when you have specific message IDs to denylist.