← back to ClawCoder

src/lib/onboarding/questions.ts

223 lines

export interface OnboardingQuestion {
  id: string
  step: number
  question: string
  whyWeAsk: string
  options: { value: string; label: string; description?: string }[]
}

export const ONBOARDING_QUESTIONS: OnboardingQuestion[] = [
  {
    id: 'profile',
    step: 1,
    question: 'What brings you here?',
    whyWeAsk: 'This helps us pick the right starting template for you.',
    options: [
      {
        value: 'learning',
        label: 'Help with my computer',
        description: 'I want technology to be easier',
      },
      {
        value: 'building',
        label: 'Build websites or apps',
        description: 'I write code or want to start',
      },
      {
        value: 'documents',
        label: 'Work with documents',
        description: 'Writing, spreadsheets, reports',
      },
      {
        value: 'business',
        label: 'Business workflows',
        description: 'Automate tasks and processes',
      },
    ],
  },
  {
    id: 'comfort',
    step: 2,
    question: 'How comfortable are you with technology?',
    whyWeAsk: 'We adjust our language and pace based on your experience.',
    options: [
      {
        value: 'beginner',
        label: 'New to this',
        description: 'I need things explained simply',
      },
      {
        value: 'somewhat',
        label: 'Somewhat comfortable',
        description: 'I know the basics',
      },
      {
        value: 'comfortable',
        label: 'Comfortable',
        description: 'I use tech tools daily',
      },
      {
        value: 'expert',
        label: 'Expert',
        description: 'I build things with technology',
      },
    ],
  },
  {
    id: 'age',
    step: 3,
    question: 'Which best describes you?',
    whyWeAsk: 'We optimize text size and interface design for comfort.',
    options: [
      {
        value: 'teen',
        label: 'Student (13-17)',
        description: 'Learning and exploring',
      },
      {
        value: 'young_adult',
        label: 'Young professional (18-30)',
        description: 'Starting my career',
      },
      {
        value: 'professional',
        label: 'Mid-career (31-50)',
        description: 'Experienced professional',
      },
      {
        value: 'pre_senior',
        label: 'Seasoned pro (51-65)',
        description: 'Decades of experience',
      },
      {
        value: 'senior',
        label: 'Lifelong learner (65+)',
        description: 'Exploring new horizons',
      },
    ],
  },
  {
    id: 'risk',
    step: 4,
    question: 'Is any of your data sensitive?',
    whyWeAsk: 'We set safety levels based on how careful we need to be.',
    options: [
      {
        value: 'no',
        label: 'No',
        description: 'Just personal projects',
      },
      {
        value: 'some',
        label: 'Some',
        description: 'Some work files or passwords',
      },
      {
        value: 'yes',
        label: 'Yes (health/finance/work)',
        description: 'I handle sensitive information',
      },
    ],
  },
  {
    id: 'style',
    step: 5,
    question: 'How should the assistant communicate?',
    whyWeAsk: 'This controls how much explanation you get.',
    options: [
      {
        value: 'detailed',
        label: 'Explain step-by-step',
        description: 'Walk me through everything',
      },
      {
        value: 'balanced',
        label: 'Only key points',
        description: 'Explain the important stuff',
      },
      {
        value: 'minimal',
        label: 'Just do it',
        description: 'Less talk, more action',
      },
    ],
  },
  {
    id: 'tools',
    step: 6,
    question: 'Will you connect other tools?',
    whyWeAsk:
      'This determines which MCP servers and integrations we recommend.',
    options: [
      { value: 'no', label: 'No, keep it simple' },
      { value: 'maybe', label: 'Maybe later' },
      {
        value: 'yes',
        label: 'Yes -- design, docs, or databases',
        description: 'I want to connect external tools',
      },
    ],
  },
  {
    id: 'workflow',
    step: 7,
    question: 'How do you prefer to work?',
    whyWeAsk: 'This shapes how we organize your rules and skills.',
    options: [
      {
        value: 'single',
        label: 'One task at a time',
        description: 'Focus on one thing',
      },
      {
        value: 'checklist',
        label: 'Checklists',
        description: 'Step-by-step lists',
      },
      {
        value: 'projects',
        label: 'Full projects',
        description: 'Plan and build end-to-end',
      },
    ],
  },
  {
    id: 'updates',
    step: 8,
    question: 'Should your CLAUDE.md improve over time?',
    whyWeAsk: 'Auto-updating keeps your config current as you learn.',
    options: [
      {
        value: 'yes',
        label: 'Yes, auto-update',
        description: 'Learn from my usage',
      },
      {
        value: 'ask',
        label: 'Ask me first',
        description: 'Suggest but let me decide',
      },
      {
        value: 'no',
        label: 'No, keep it fixed',
        description: 'I prefer manual control',
      },
    ],
  },
  {
    id: 'finish',
    step: 9,
    question: 'Ready to generate your setup?',
    whyWeAsk:
      'We will create your CLAUDE.md, rules, and recommended tools.',
    options: [
      { value: 'generate', label: 'Generate my setup!' },
      {
        value: 'review',
        label: 'Let me review first',
        description: 'Show me what you picked before generating',
      },
    ],
  },
]