Skip to content
Back to skills

Interactive

ASecurity

Ask the user questions or present choices via an interactive form. Use when you need to gather preferences, clarify ambiguous instructions, get decisions on implementation choices, or present a list of options for the user to select from. Never write options or questions as plain text — always use this tool.

  • 866 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added August 31, 2026
ai-agentstypescriptpythongoshellfrontendbackend

Works with

  • mcp

Security analysis

A100/100

Scanned August 31, 2026

npx -y skills add wecode-ai/Wegent --skill interactive --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Interactive?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Interactive
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/wecode-ai-interactive/badge)](https://www.skillsdirectory.com/skills/wecode-ai-interactive)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: "interactive"
description: "Ask the user questions or present choices via an interactive form. Use when you need to gather preferences, clarify ambiguous instructions, get decisions on implementation choices, or present a list of options for the user to select from. Never write options or questions as plain text — always use this tool."
displayName: "交互式表单提问"
version: "2.0.0"
author: "Wegent Team"
tags: ["interaction", "user-input", "form", "clarification"]
bindShells:
  - Chat
  - Agno
  - ClaudeCode
mcpServers:
  wegent-interactive-form-question:
    type: streamable-http
    url: "${{backend_url}}/mcp/interactive-form-question/sse"
    headers:
      Authorization: "Bearer ${{task_token}}"
    timeout: 300
---

# Ask User

You now have access to the `interactive_form_question` tool. Use it to ask the user questions during execution.

## When to Use

1. **Gather user preferences or requirements** — before starting or when more detail is needed
2. **Clarify ambiguous instructions** — when the request could be interpreted multiple ways
3. **Get decisions on implementation choices as you work** — when a fork in the road requires user input
4. **Offer choices on direction** — let the user steer when multiple valid paths exist
5. **Present any list of options to the user** — whenever you would naturally write a numbered/bulleted list of choices for the user to pick from, use `interactive_form_question` instead

**Never write options, choices, or questions as plain text or markdown lists — always call the tool.**

## Usage Notes

- Users can always select **"Other"** to provide custom text input, even on choice questions — you don't need to add it manually
- Use `multi_select: true` to allow multiple answers to be selected
- If you recommend a specific option, set `"recommended": true` on that option — the frontend will display the recommended badge automatically. **NEVER add "(Recommended)", "(推荐)" or any similar text to the `label` field** — the badge is rendered by the frontend, not by text in the label
- Always pass questions via `questions=[...]`. A single-question form is just a one-item `questions` array.
- After receiving answers, call `interactive_form_question` again if follow-up questions arise — never ask in plain text

## Behavior

`interactive_form_question` displays an interactive form and returns immediately . The current task ends silently and resumes when the user submits their answer as a new message.

## Tool Parameters

- `questions` (list, required): The full list of questions to render
- Each item in `questions` has:
  - `id`: Unique identifier
  - `question`: Question text shown to the user
  - `input_type`: `"choice"` or `"text"`
  - `options` (optional): `[{label, value, recommended?}]` for choice questions
  - `multi_select` (optional): Allow multiple selections; default `false`
  - `required` (optional): Whether the question must be answered; default `true`
  - `default` (optional): Pre-selected values
  - `placeholder` (optional): Placeholder for text input

## Examples

### Clarify ambiguous instructions

```
interactive_form_question(
  questions=[
    {
      "id": "environment",
      "question": "Which environment should I deploy to?",
      "input_type": "choice",
      "options": [
        {"label": "Development", "value": "dev", "recommended": true},
        {"label": "Staging", "value": "staging"},
        {"label": "Production", "value": "prod"}
      ]
    }
  ]
)
```

### Get a decision as you work

```
interactive_form_question(
  questions=[
    {
      "id": "cache_strategy",
      "question": "I found two approaches for the caching layer. Which do you prefer?",
      "input_type": "choice",
      "options": [
        {"label": "Option A — simple in-memory cache", "value": "simple", "recommended": true},
        {"label": "Option B — Redis with TTL control", "value": "redis"}
      ]
    }
  ]
)
```

### Gather requirements upfront (multi-question)

```
interactive_form_question(
  questions=[
    {
      "id": "language",
      "question": "Which language should I use?",
      "input_type": "choice",
      "options": [
        {"label": "Python", "value": "python", "recommended": true},
        {"label": "TypeScript", "value": "typescript"},
        {"label": "Go", "value": "go"}
      ]
    },
    {
      "id": "features",
      "question": "Which features to include?",
      "input_type": "choice",
      "multi_select": true,
      "options": [
        {"label": "Authentication", "value": "auth", "recommended": true},
        {"label": "Rate Limiting", "value": "rate_limit"},
        {"label": "Caching", "value": "caching"}
      ]
    },
    {
      "id": "notes",
      "question": "Anything else I should know?",
      "input_type": "text",
      "required": false,
      "placeholder": "Optional notes..."
    }
  ]
)
```

### Confirm before a destructive action

```
interactive_form_question(
  questions=[
    {
      "id": "overwrite_confirmation",
      "question": "This will overwrite the existing file. Proceed?",
      "input_type": "choice",
      "options": [
        {"label": "Yes, overwrite", "value": "yes"},
        {"label": "No, keep existing", "value": "no", "recommended": true}
      ]
    }
  ]
)
```

## Response Format

**Single-question:** `{"answer": ["value"]}` (choice) or `{"answer": "text"}` (text)

**Multi-question:** `{"answers": {"language": ["python"], "features": ["auth", "caching"], "notes": ""}}`

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.