Q&A Discussion Conductor
Overview
Systematically conduct structured Q&A discussions with users. Handles multiple question types, tracks progress, validates responses, and generates comprehensive summary reports. Perfect for assessments, onboarding, feedback collection, or educational interactions.
Core Capabilities
Question Types:
- •Multiple Choice: Select one or more correct answers from options
- •Single Choice: Select exactly one correct answer from options
- •Open-Ended: Free-form text responses with optional validation
Session Features:
- •Progress tracking (Question X of Y)
- •One question at a time for clarity
- •Smart re-prompting on invalid answers with helpful feedback
- •Complete response logging with validation status
- •Summary report after discussion completion
When to Use
Use this skill when you need to:
- •Conduct structured assessments or quizzes
- •Gather feedback through systematic questioning
- •Onboard users with validated knowledge checks
- •Create educational interactions with tracking
- •Run audits or compliance checks requiring documented responses
Don't use when:
- •Questions are casual or conversational (just chat naturally)
- •You don't need to validate or track responses
- •The discussion is exploratory rather than structured
The Process
Step 1: Define Questions
Create a structured question array with all necessary metadata:
typescript
const questions: Question[] = [
{
id: 'q1',
text: 'What is the capital of France?',
type: 'single',
options: ['London', 'Paris', 'Berlin', 'Madrid'],
correctAnswer: 'Paris'
},
{
id: 'q2',
text: 'Select all that apply: Which are JavaScript frameworks?',
type: 'multiple',
options: ['React', 'Django', 'Vue', 'Laravel'],
correctAnswers: ['React', 'Vue']
},
{
id: 'q3',
text: 'Explain why you chose your answer above',
type: 'open',
validation: (answer) => answer.length >= 10
}
];
Step 2: Conduct the Discussion
Call the main function to start:
typescript
const session = await conductDiscussion(questions);
The skill will:
- •Display each question clearly with progress indicator
- •Wait for user response
- •Validate against question criteria
- •Re-prompt if invalid with helpful feedback
- •Store validated response
- •Move to next question
- •Generate summary when complete
Step 3: Review Results
Access the session data for reporting:
typescript
// Session structure:
{
totalQuestions: number;
completedQuestions: number;
responses: Array<{
questionId: string;
text: string;
answer: string;
isValid: boolean;
attempts: number;
}>;
summary: {
totalAttempts: number;
validResponses: number;
invalidResponses: number;
completionTime: number;
};
}
Display Conventions
Question Presentation:
- •Clear title showing question number and total (e.g., "Question 1 of 5")
- •Question text prominently displayed
- •Options numbered for easy reference (1, 2, 3...)
- •Instructions vary by type:
- •Single choice: "Select one option (enter number)"
- •Multiple choice: "Select all that apply (enter numbers separated by commas)"
- •Open-ended: "Enter your response (minimum 10 characters)"
Validation Feedback:
- •Invalid input: "Invalid selection. Please enter 1, 2, 3, or 4"
- •Multiple choice format error: "Invalid format. Use: 1,2,3"
- •Open-ended validation failed: "Response too short. Please provide more detail"
- •Empty input: "Response cannot be empty"
Progress Display:
- •Each question shows: "Question 2 of 7"
- •Visual spacing between questions for clarity
- •Summary displayed after final question
Error Handling
Input Validation:
- •Out of range selections → re-prompt with valid range
- •Wrong format (single choice given multiple) → explain expected format
- •Empty responses → ask to provide an answer
- •Custom validation failures → explain criteria with helpful message
Session Errors:
- •No questions provided → throw clear error
- •Invalid question type → validate during setup
- •Timeout/interruption → save progress and allow resume
Key Principles
- •One question at a time - Never show multiple questions together
- •Clear feedback - Always explain why an answer is invalid
- •Complete tracking - Log every response with validation status
- •Flexible validation - Support exact match, list validation, and custom functions
- •User-friendly - Numbered options, clear instructions, helpful messages
- •Resumable - Design allows pausing and resuming if needed
Example Usage
See @index.ts for complete implementation with:
- •Full TypeScript types for all question types
- •Comprehensive error handling
- •Real-world usage examples
- •Integration patterns