ajbcoding/claude-skill-eval/moai-alfred-ask-user-questions

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Enterprise interactive survey orchestrator with AskUserQuestion tool integration, multi-select support, conditional branching, error recovery, and production-grade decision automation across all Alfred workflows; activates for requirement clarification, architectural decisions, risky operations, feature selection, and complex multi-step user interactions

Install

npx vskill@latest install ajbcoding/claude-skill-eval/moai-alfred-ask-user-questions

SKILL.md

Enterprise Interactive Survey Orchestrator v4.0.0

Skill Metadata

FieldValue
Skill Namemoai-alfred-ask-user-questions
Version4.0.0 Enterprise (2025-11-12)
Core ToolAskUserQuestion (Claude Code built-in)
Auto-loadWhen Alfred detects ambiguity in requests
TierAlfred (Workflow Orchestration)
Allowed toolsAskUserQuestion
Lines of Content850+, with 10+ production examples
Progressive Disclosure3-level (quick-reference, patterns, advanced)

πŸš€ What It Does (Enterprise Context)

Purpose: Empower Alfred sub-agents to actively conduct enterprise-grade surveys for requirement clarification, architectural decisions, and complex decision automation.

Leverages Claude Code's native AskUserQuestion tool to collect explicit, structured user input that transforms vague requests into precise specifications with guaranteed UX quality across all models.

Enterprise Capabilities:

  • βœ… Single-select & multi-select option types (independent or dependent)
  • βœ… 1-4 questions per survey (cognitive load optimization)
  • βœ… 2-4 options per question with trade-off analysis
  • βœ… Automatic "Other" option for custom input validation
  • βœ… Conditional branching based on user answers
  • βœ… Error recovery and retry logic
  • βœ… Integration across all Alfred commands (Plan/Run/Sync)
  • βœ… Multi-language support (user's configured language)
  • βœ… Accessibility-first TUI design
  • βœ… Reduces ambiguity β†’ single interaction vs 3-5 iterations

🎯 When to Use (Decision Framework)

βœ… MANDATORY ASK when user intent is ambiguous:
  1. Vague noun phrases: "Add dashboard", "Refactor auth", "Improve performance"
  • Missing concrete specification or scope
  1. Missing scope definition: No specification of WHERE, WHO, WHAT, HOW, WHEN
  • Could affect 5+ files or multiple modules
  1. Multiple valid paths: β‰₯2 reasonable implementation approaches
  • Different trade-offs (speed vs quality, simple vs comprehensive)
  1. Trade-off decisions: Performance vs reliability, cost vs features
  • No single objectively best answer
  1. Risky operations: Destructive actions (delete, migrate, reset)
  • Explicit informed consent required
  1. Architectural decisions: Technology selection, API design, database choice
  • Long-term impact requires clarification
❌ DON'T ask when:
  • User explicitly specified exact requirements
  • Decision is automatic (no choices, pure routing)
  • Single obvious path exists (no alternatives)
  • Quick yes/no confirmation only (keep it brief)
  • Information already provided in conversation

🎨 Design Principles (Enterprise Standards)

Core Principle: Certainty Over Guessing

Golden Rule: When in doubt, ask the user instead of assuming.

Why:

  • βœ… User sees exactly what you'll do β†’ no surprises
  • βœ… Single interaction vs 3-5 rounds of back-and-forth
  • βœ… Fast β†’ execute with certainty
  • βœ… Reduces "vibe coding" frustration
  • βœ… Builds trust through transparency

Pattern:

Ambiguous request detected
↓
Call AskUserQuestion({questions: [...]})
↓
User selects from clear options
↓
Proceed with confirmed specifications

πŸ—οΈ Architecture: 3-Level Progressive Disclosure

Level 1: Quick Start (Minimal Invocation)

Single-Select Pattern:

typescript
const answer = await AskUserQuestion({
questions: [
{
question: "How should we implement this?",
header: "Approach", // max 12 chars
multiSelect: false,
options: [
{
label: "Option 1", // 1-5 words
description: "What it does and why you'd pick it."
},
{
label: "Option 2",
description: "Alternative with different trade-offs."
}
]
}
]
});
// Returns: { "Approach": "Option 1" }

Multi-Select Pattern (independent features):

typescript
const answer = await AskUserQuestion({
questions: [
{
question: "Which features should we enable?",
header: "Features",
multiSelect: true,
options: [
{ label: "Feature A", description: "..." },
{ label: "Feature B", description: "..." },
{ label: "Feature C", description: "..." }
]
}
]
});
// Returns: { "Features": ["Feature A", "Feature C"] }
Level 2: Enterprise Patterns

Batch Questions (related decisions):

typescript
const answer = await AskUserQuestion({
questions: [
{
question: "Which database technology?",
header: "Database",
options: [
{ label: "PostgreSQL", description: "Relational, ACID, mature" },
{ label: "MongoDB", description: "Document, flexible schema" }
]
},
{
question: "Cache strategy?",
header: "Caching",
options: [
{ label: "Redis", description: "In-memory, fast" },
{ label: "Memcached", description: "Distributed cache" }
]
}
]
});

Conditional Flow (dependent decisions):

typescript
let questions = [
{
question: "What type of deployment?",
header: "Deployment Type",
options: [
{ label: "Docker", description: "Containerized" },
{ label: "Kubernetes", description: "Orchestrated" },
{ label: "Serverless", description: "Functions-as-a-Service" }
]
}
];
const initialAnswer = await AskUserQuestion({ questions });
// Follow-up based on initial choice
if (initialAnswer["Deployment Type"] === "Kubernetes") {
const kubeAnswer = await AskUserQuestion({
questions: [
{
question: "Which cluster provider?",
header: "K8s Provider",
options: [
{ label: "AWS EKS", description: "Amazon Elastic Kubernetes" },
{ label: "GCP GKE", description: "Google Kubernetes Engine" },
{ label: "Self-Managed", description: "On-premises cluster" }
]
}
]
});
}
Level 3: Advanced (Error Handling & Validation)

Custom Input Validation ("Other" option):

typescript
const answer = await AskUserQuestion({
questions: [
{
question: "Which framework?",
header: "Framework",
options: [
{ label: "React", description: "UI library" },
{ label: "Vue", description: "Progressive framework" },
{ label: "Other", description: "Custom framework or library" }
]
}
]
});
// Validate custom input
if (answer["Framework"] === "Other" ||
!VALID_FRAMEWORKS.includes(answer["Framework"])) {
const customAnswer = validateCustomInput(answer["Framework"]);
if (!customAnswer) {
// Re-ask with guidance
return retryWithGuidance();
}
}

Error Recovery:

typescript
try {
const answer = await AskUserQuestion({...});
} catch (error) {
if (error.type === "UserCancelled") {
// User pressed ESC - use default or abort
return fallbackToDefault();
} else if (error.type === "InvalidInput") {
// Validate and retry
return retryWithValidation();
}
}

Risky Operation Confirmation:

typescript
const answer = await AskUserQuestion({
questions: [
{
question: "This will DELETE 15 branches and merge to main. Continue?",
header: "Destructive Op",
options: [
{
label: "Proceed",
description: "Delete branches (CANNOT BE UNDONE)"
},
{
label: "Dry Run",
description: "Show what would be deleted"
},
{
label: "Cancel",
description: "Abort entire process"
}
]
}
]
});
if (answer["Destructive Op"] === "Proceed") {
// Require additional final confirmation
const final = await AskUserQuestion({
questions: [
{
question: "Type DELETE to confirm irreversible action:",
header: "Final Confirmation"
}
]
});
if (final["Final Confirmation"] === "DELETE") {
executeDeletion();
}
}

πŸ“‹ Key Constraints (TUI Optimization)

ConstraintReasonExample
1-4 questions maxAvoid user fatigueUse follow-up surveys instead
2-4 options per QPrevent choice overloadAvoid 5+ options (decision paralysis)
Header ≀12 charsTUI layout fit"DB Choice" not "Which Database Technology"
Label 1-5 wordsQuick scanning"PostgreSQL" not "SQL Database by PostgreSQL"
Description requiredEnables informed choiceAlways explain trade-offs
Auto "Other" optionAlways availableSystem adds automatically for custom input
No HTML/markdownPlain text TUIUse formatting sparingly
Language matchingUser experienceAlways match configured conversation_language

πŸ”„ Integration with Alfred Sub-agents

Sub-agentWhen to AskExample TriggerQuestions
spec-builder (/alfred:1-plan)SPEC title vague, scope undefined"Add feature" without specifics"Feature type?", "Scope?", "Users affected?"
tdd-implementer (/alfred:2-run)Implementation approach unclearMultiple valid implementation paths"Architecture?", "Libraries?", "Constraints?"
doc-syncer (/alfred:3-sync)Sync scope unclearFull vs partial sync decision"Full sync?", "Which files?", "Auto-commit?"
qa-validatorReview depth unclearQuick vs comprehensive check"Review level?", "Security focus?", "Performance?"

πŸŽ“ Top 10 Usage Patterns

Pattern 1: Feature Type Clarification

Trigger: "Add dashboard feature" without specifics Question: "Which dashboard type: Analytics, Admin, or Profile?" Outcome: Narrowed scope β†’ faster implementation

Pattern 2: Implementation Approach Selection

Trigger: Multiple valid tech choices Question: "JWT tokens, session-based, or OAuth?" Outcome: Locked architecture β†’ deterministic development

Pattern 3: Risky Operation Confirmation

Trigger: Destructive action (delete, migrate, reset) Question: "This will delete X. Proceed?" with retry confirmation Outcome: Explicit consent + audit trail

Pattern 4: Multi-Feature Selection

Trigger: "Which features to enable?" Question: Multi-select of independent features Outcome: Precise feature set β†’ no scope creep

Pattern 5: Sequential Conditional Decisions

Trigger: Dependent choices (Q2 depends on Q1) Question: First survey β†’ follow-up based on answer Outcome: Progressive narrowing β†’ precise specification

Pattern 6: Technology Stack Selection

Trigger: "Build with what stack?" Question: Database, cache, queue, API type Outcome: Full stack locked β†’ team alignment

Pattern 7: Performance vs Reliability

Trigger: Trade-off between conflicting goals Question: "Optimize for speed, reliability, or cost?" Outcome: Explicit requirements β†’ informed trade-offs

Pattern 8: Custom Input Handling

Trigger: "Other" option selected Question: "Please describe..." with validation Outcome: Unexpected inputs handled gracefully

Pattern 9: Experience Level Calibration

Trigger: Unclear target audience Question: "Beginner, intermediate, or advanced?" Outcome: Content adapted to expertise level

Pattern 10: Approval Workflow

Trigger: Major decision needs consensus Question: Multi-team approval with options Outcome: Documented decision with stakeholder buy-in


βœ… Best Practices Summary

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
4
7-day trend score
8

Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 10 May 2026, 5 months ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/ajbcoding/claude-skill-eval/moai-alfred-ask-user-questions/badge)](https://verified-skill.com/skills/ajbcoding/claude-skill-eval/moai-alfred-ask-user-questions)

Something wrong with this skill or its page? Tell us.