Agent Skills: Project Batch Questions - Skill Guide

Standardize AskUserQuestion patterns and provide reusable question templates for batch optimization

UncategorizedID: AJBcoding/claude-skill-eval/moai-project-batch-questions

Install this agent skill to your local

pnpm dlx add-skill https://github.com/AJBcoding/claude-skill-eval/tree/HEAD/moai-adk-main/.claude/skills/moai-project-batch-questions

Skill Files

Browse the full folder contents for moai-project-batch-questions.

Download Skill

Loading file tree…

moai-adk-main/.claude/skills/moai-project-batch-questions/SKILL.md

Skill Metadata

Name
"moai-project-batch-questions"
Description
Standardize AskUserQuestion patterns and provide reusable question templates for batch optimization

Project Batch Questions - Skill Guide

Skill Metadata

| Field | Value | | ----- | ----- | | Skill Name | moai-project-batch-questions | | Version | 1.0.0 (2025-11-05) | | Core Tool | AskUserQuestion (Claude Code built-in) | | UX Goal | 60% interaction reduction through batching |


What It Does

Purpose: Standardize AskUserQuestion patterns with reusable batch templates that reduce user interactions while maintaining clarity.

Key capabilities:

  • Batch Templates: Pre-designed question groups for common scenarios
  • UX Optimization: 60% interaction reduction through strategic batching
  • Multi-language Support: Templates in Korean, English, Japanese, Chinese
  • Response Validation: Built-in validation and processing patterns
  • Error Handling: Graceful handling of invalid or missing responses

Batch Design Philosophy

Traditional vs Batch Approach

Traditional: Q1 → Answer → Q2 → Answer → Q3 → Answer (3 interactions) Batch: Q1 + Q2 + Q3 → All answers at once (1 interaction, 66% reduction)

Batching Rules

| Rule | Description | Example | |------|-------------|---------| | Related Questions | Group questions about same topic | Language settings | | Sequential Logic | Q2 depends on Q1 answer | Team mode conditional questions | | Same Decision Context | User thinking about same aspect | GitHub + Git workflow |


Core Batch Templates

Template 1: Language Selection Batch (3 questions)

Purpose: Set language preferences for project initialization Interaction Reduction: 3 turns → 1 turn (66% improvement)

const languageBatch = {
  questions: [
    {
      question: "Which language would you like to use for project initialization and documentation?",
      header: "Language",
      multiSelect: false,
      options: [
        { label: "English", description: "All dialogs and documentation in English" },
        { label: "한국어", description: "모든 대화와 문서를 한국어로" },
        { label: "日本語", description: "すべての対話と文書を日本語で" },
        { label: "中文", description: "所有对话和文档使用中文" }
      ]
    },
    {
      question: "In which language should Alfred's sub-agent prompts be written?",
      header: "Agent Prompt",
      multiSelect: false,
      options: [
        { label: "English (Global Standard)", description: "Reduces token usage by 15-20%" },
        { label: "Selected Language (Localized)", description: "Local efficiency with native language" }
      ]
    },
    {
      question: "How would you like to be called in our conversations? (max 20 chars)",
      header: "Nickname",
      multiSelect: false,
      options: [
        { label: "Enter custom nickname", description: "Type your preferred name using 'Other' option" }
      ]
    }
  ]
};

Template 2: Team Mode Settings Batch (2 questions)

Purpose: Configure team-specific GitHub and Git settings Interaction Reduction: 2 turns → 1 turn (50% improvement) Conditional: Only shown when mode: "team" detected

const teamModeBatch = {
  questions: [
    {
      question: "[Team Mode] Is 'Automatically delete head branches' enabled in your GitHub repository?",
      header: "GitHub Settings", 
      multiSelect: false,
      options: [
        { label: "Yes, already enabled", description: "PR merge 후 자동으로 원격 브랜치 삭제됨" },
        { label: "No, not enabled (Recommended)", description: "Settings → General에서 확인 필요" },
        { label: "Not sure / Need to check", description: "GitHub Settings 확인 후 다시 진행" }
      ]
    },
    {
      question: "[Team Mode] Which Git workflow should we use for SPEC documents?",
      header: "Git Workflow",
      multiSelect: false,
      options: [
        { label: "Feature Branch + PR", description: "매 SPEC마다 feature 브랜치 생성 → PR 리뷰 → develop 병합" },
        { label: "Direct Commit to Develop", description: "develop에 직접 커밋. 빠른 프로토타이핑에 최적" },
        { label: "Decide per SPEC", description: "SPEC 생성 시마다 매번 선택. 유연성 높지만 결정 필요" }
      ]
    }
  ]
};

Template 3: Report Generation Batch (1 question)

Purpose: Configure report generation with token cost awareness

const reportGenerationBatch = {
  questions: [
    {
      question: "Configure report generation:\n\n⚡ **Minimal (Recommended)**: Essential reports only (20-30 tokens)\n📊 **Enable**: Full analysis reports (50-60 tokens)\n🚫 **Disable**: No reports (0 tokens)\n\nAffects future /alfred:3-sync costs.",
      header: "Report Generation",
      multiSelect: false,
      options: [
        { label: "⚡ Minimal (Recommended)", description: "80% token reduction, faster sync" },
        { label: "Enable", description: "Complete reports, higher token usage" },
        { label: "🚫 Disable", description: "No automatic reports, zero cost" }
      ]
    }
  ]
};

Template 4: Domain Selection Batch (Multi-select)

Purpose: Select project domains and technology areas

const domainSelectionBatch = {
  questions: [
    {
      question: "Which domains and technology areas should be included in this project?",
      header: "Domains",
      multiSelect: true,
      options: [
        { label: "Backend API", description: "REST/GraphQL APIs, server-side logic, databases" },
        { label: "Frontend Web", description: "React/Vue/Angular, UI components, client-side" },
        { label: "Mobile App", description: "iOS/Android apps, React Native, Flutter" },
        { label: "DevOps/Infrastructure", description: "CI/CD, Docker, Kubernetes, cloud" },
        { label: "Data/Analytics", description: "Data processing, ML pipelines, analytics" }
      ]
    }
  ]
};

Response Processing

Validation Function

function validateBatchResponse(responses: Record<string, string>, template: string): ValidationResult {
  const errors: string[] = [];
  
  switch (template) {
    case 'language-batch':
      const validLanguages = ['ko', 'en', 'ja', 'zh'];
      if (!validLanguages.includes(responses['Language'])) {
        errors.push('Invalid language selection');
      }
      if (responses['Nickname']?.length > 20) {
        errors.push('Nickname must be 20 characters or less');
      }
      break;
  }
  
  return { isValid: errors.length === 0, errors };
}

Configuration Mapping

function mapToConfig(responses: Record<string, string>, template: string): Partial<Config> {
  switch (template) {
    case 'language-batch':
      return {
        language: {
          conversation_language: responses['Language'],
          agent_prompt_language: responses['Agent Prompt'] === 'English (Global Standard)' ? 'english' : 'localized'
        },
        user: { nickname: responses['Nickname'], selected_at: new Date().toISOString() }
      };
      
    case 'team-mode-batch':
      return {
        github: {
          auto_delete_branches: responses['GitHub Settings'] === 'Yes, already enabled',
          spec_git_workflow: mapWorkflowToCode(responses['Git Workflow']),
          checked_at: new Date().toISOString()
        }
      };
  }
}

Usage Integration

Alfred Command Integration

// In 0-project.md command
async function initializeProject() {
  // Step 1: Language selection batch
  const languageResponses = await executeBatchTemplate(LANGUAGE_BATCH_TEMPLATE);
  
  // Step 2: Check for team mode
  if (isTeamMode()) {
    const teamResponses = await executeBatchTemplate(TEAM_MODE_BATCH_TEMPLATE);
  }
  
  // Step 3: Report generation batch  
  const reportResponses = await executeBatchTemplate(REPORT_GENERATION_BATCH_TEMPLATE);
}

Performance Metrics

Interaction Reduction

| Template | Traditional | Batch | Reduction | |----------|-------------|-------|-----------| | Language Selection | 3 interactions | 1 interaction | 66% | | Team Mode Settings | 2 interactions | 1 interaction | 50% | | Domain Selection | 5+ questions | 1 interaction | 80%+ |


Best Practices

✅ DO

  • Group related questions: Same decision context
  • Show total question count: "3 questions in this batch"
  • Use consistent headers: Short, descriptive (≤12 chars)
  • Include progress indicators: "Step 1 of 2"

❌ DON'T

  • Overload batches: Max 4 questions per batch
  • Mix unrelated topics: Keep thematic cohesion
  • Skip validation: Always verify responses
  • Ignore cancellation: Handle user gracefully

Quick Reference

Common Use Cases

| Use Case | Template | Questions | Interaction Reduction | |----------|----------|-----------|----------------------| | Project initialization | Language + Team batches | 5 questions total | 60% | | Settings modification | Targeted batches | 1-3 questions | 50-80% | | Feature configuration | Domain-specific batches | 2-4 questions | 75% |

Integration Checklist

  • [ ] Template selected for use case
  • [ ] Response validation configured
  • [ ] Error handling implemented
  • [ ] Configuration mapping tested
  • [ ] Multi-language support if needed

End of Skill | Created 2025-11-05 | Optimized for batch interaction reduction