<!-- Parent: external-diagram-visual-generate/SKILL.md -->
# Interview Questions Reference

This document defines the questions Claude should ask (via `AskUserQuestion`) before generating images with external-diagram-visual-generate.

---

## How to Use This Reference

When a user requests an image, Claude should:

1. **Detect image type** from the request
2. **Find the matching question set** below
3. **Invoke AskUserQuestion** with those questions
4. **Build prompt** using the answers
5. **Generate image** with optimized parameters

### Skip Interview Triggers

Skip questions and use defaults when user says:
- "quick" - e.g., "Quick ERD of Account-Contact"
- "simple" - e.g., "Simple LWC mockup"
- "just generate" - e.g., "Just generate an architecture diagram"
- "fast" - e.g., "Fast ERD draft"

---

## ERD Diagram Questions

### When to Use
User mentions: ERD, entity relationship, data model, object relationships, schema diagram

### Questions

```json
{
  "questions": [
    {
      "question": "Which objects should be included in the ERD?",
      "header": "Objects",
      "multiSelect": false,
      "options": [
        {
          "label": "Core CRM (Recommended)",
          "description": "Account, Contact, Opportunity, Case - standard sales/service objects"
        },
        {
          "label": "Sales Cloud",
          "description": "Lead, Campaign, Quote, Order, PriceBook, Product"
        },
        {
          "label": "Service Cloud",
          "description": "Case, Knowledge, Entitlement, Asset, ServiceContract"
        },
        {
          "label": "Custom objects",
          "description": "I'll specify the custom objects to include"
        }
      ]
    },
    {
      "question": "What visual style do you prefer?",
      "header": "Style",
      "multiSelect": false,
      "options": [
        {
          "label": "Architect.salesforce.com (Recommended)",
          "description": "Official Salesforce style: dark border + light fill, header banner, legend bar"
        },
        {
          "label": "Whiteboard",
          "description": "Hand-drawn look, casual feel for brainstorming"
        },
        {
          "label": "Technical",
          "description": "Detailed with field names and data types"
        },
        {
          "label": "Minimalist",
          "description": "Simple boxes, focus on relationships only"
        }
      ]
    },
    {
      "question": "What's the primary purpose of this ERD?",
      "header": "Purpose",
      "multiSelect": false,
      "options": [
        {
          "label": "Documentation (4K)",
          "description": "High quality for wikis, docs, long-term reference"
        },
        {
          "label": "Quick draft (1K)",
          "description": "Fast iteration, refine the prompt first"
        },
        {
          "label": "Presentation",
          "description": "Slides for stakeholders, clean and simple"
        },
        {
          "label": "Architecture review",
          "description": "Technical discussion with developers/architects"
        }
      ]
    },
    {
      "question": "Any special requirements? (Select all that apply)",
      "header": "Extras",
      "multiSelect": true,
      "options": [
        {
          "label": "Include legend",
          "description": "Add a legend explaining colors and relationship types"
        },
        {
          "label": "Show field names",
          "description": "Display key fields inside each object box"
        },
        {
          "label": "Color-code by type",
          "description": "Standard=blue, Custom=orange, External=green"
        },
        {
          "label": "None",
          "description": "Use default styling without extras"
        }
      ]
    }
  ]
}
```

### Answer-to-Prompt Mapping

| Answer | Prompt Addition |
|--------|-----------------|
| Core CRM | "Account, Contact, Opportunity, Case with standard relationships" |
| Sales Cloud | "Lead, Campaign, Quote, Order, PriceBook, Product with conversion flows" |
| Service Cloud | "Case, Knowledge, Entitlement, Asset, ServiceContract hierarchy" |
| Architect.salesforce.com | "Official architect.salesforce.com style: page title, header banner with Salesforce logo, LEGEND bar (ENTITIES + RELATIONSHIPS), dark border + light translucent fill boxes (~25% opacity), labeled relationship lines, footer with copyright" |
| Whiteboard | "Hand-drawn sketch style, informal, whiteboard aesthetic" |
| Technical | "Include field names, data types, API names in each box" |
| Documentation (4K) | Use Python script with `-r 4K`, include full header + legend |
| Quick draft (1K) | Use CLI or Python with `-r 1K` |
| Include legend | "Include LEGEND bar at top with ENTITIES and RELATIONSHIPS sections" |
| Color-code | "Auto-detect cloud color: Sales=Teal #0B827C, Service=Magenta #9E2A7D, Platform=Purple #5A67D8" |

### Default Values (for Skip Mode)

- Objects: Core CRM
- Style: Architect.salesforce.com
- Purpose: Quick draft (1K)
- Extras: Include legend

---

## LWC Component Mockup Questions

### When to Use
User mentions: LWC, Lightning Web Component, component mockup, wireframe, UI mockup, form, table, card

### Questions

```json
{
  "questions": [
    {
      "question": "What type of component do you need?",
      "header": "Component",
      "multiSelect": false,
      "options": [
        {
          "label": "Data table (Recommended)",
          "description": "List view with columns, sorting, row actions"
        },
        {
          "label": "Record form",
          "description": "Create/edit form with fields and sections"
        },
        {
          "label": "Dashboard card",
          "description": "Metrics, charts, or KPI tiles"
        },
        {
          "label": "Custom layout",
          "description": "I'll describe the specific layout needed"
        }
      ]
    },
    {
      "question": "Which Salesforce object is this for?",
      "header": "Object",
      "multiSelect": false,
      "options": [
        {
          "label": "Account",
          "description": "Customer/company records"
        },
        {
          "label": "Contact",
          "description": "Individual person records"
        },
        {
          "label": "Opportunity",
          "description": "Sales deals and pipeline"
        },
        {
          "label": "Custom object",
          "description": "I'll specify the object name"
        }
      ]
    },
    {
      "question": "Where will this component be used?",
      "header": "Context",
      "multiSelect": false,
      "options": [
        {
          "label": "Lightning Record Page (Recommended)",
          "description": "Embedded on Account, Contact, etc. detail pages"
        },
        {
          "label": "Lightning App Page",
          "description": "Home page, dashboard, or custom app"
        },
        {
          "label": "Experience Cloud",
          "description": "Customer/partner portal (community)"
        },
        {
          "label": "Standalone app",
          "description": "Full-page Lightning app or utility bar"
        }
      ]
    },
    {
      "question": "Style preferences? (Select all that apply)",
      "header": "Style",
      "multiSelect": true,
      "options": [
        {
          "label": "SLDS standard",
          "description": "Standard Lightning Design System styling"
        },
        {
          "label": "Dense/compact",
          "description": "Reduced spacing for data-heavy views"
        },
        {
          "label": "Mobile-responsive",
          "description": "Adapts to mobile screen sizes"
        },
        {
          "label": "Card-based",
          "description": "Elevated card container with shadow"
        }
      ]
    }
  ]
}
```

### Answer-to-Prompt Mapping

| Answer | Prompt Addition |
|--------|-----------------|
| Data table | "Lightning datatable with columns, header with search, row actions menu" |
| Record form | "Lightning record form with sections, field labels, Save/Cancel buttons" |
| Dashboard card | "SLDS card component with metric value, label, trend indicator" |
| Lightning Record Page | "Component sized for record page sidebar or main content" |
| Experience Cloud | "Portal-friendly styling, user-facing design" |
| Dense/compact | "Compact spacing, reduced padding, data-dense layout" |
| Mobile-responsive | "Responsive design, single column on mobile" |

### Default Values (for Skip Mode)

- Component: Data table
- Object: Account
- Context: Lightning Record Page
- Style: SLDS standard

---

## Architecture/Integration Diagram Questions

### When to Use
User mentions: architecture, integration, system diagram, data flow, API flow, authentication flow

### Questions

```json
{
  "questions": [
    {
      "question": "What type of diagram do you need?",
      "header": "Diagram",
      "multiSelect": false,
      "options": [
        {
          "label": "Integration flow (Recommended)",
          "description": "System-to-system data synchronization"
        },
        {
          "label": "Data flow",
          "description": "Entity movement between systems"
        },
        {
          "label": "Authentication flow",
          "description": "OAuth, JWT, SSO sequence diagram"
        },
        {
          "label": "Event-driven",
          "description": "Platform Events, CDC, pub/sub architecture"
        }
      ]
    },
    {
      "question": "Which systems are involved?",
      "header": "Systems",
      "multiSelect": false,
      "options": [
        {
          "label": "Salesforce + ERP",
          "description": "SAP, Oracle, NetSuite, Microsoft Dynamics"
        },
        {
          "label": "Salesforce + Marketing",
          "description": "Marketo, Pardot, HubSpot, Marketing Cloud"
        },
        {
          "label": "Salesforce + Custom APIs",
          "description": "Internal services, microservices, legacy systems"
        },
        {
          "label": "Multiple systems",
          "description": "I'll specify the systems involved"
        }
      ]
    },
    {
      "question": "What protocols/patterns are used? (Select all that apply)",
      "header": "Protocols",
      "multiSelect": true,
      "options": [
        {
          "label": "REST APIs",
          "description": "JSON over HTTP, most common pattern"
        },
        {
          "label": "Platform Events / CDC",
          "description": "Salesforce event-driven integration"
        },
        {
          "label": "MuleSoft / iPaaS",
          "description": "Integration platform as middleware"
        },
        {
          "label": "SOAP / Legacy",
          "description": "XML-based, enterprise protocols"
        }
      ]
    },
    {
      "question": "What elements should be highlighted? (Select all that apply)",
      "header": "Elements",
      "multiSelect": true,
      "options": [
        {
          "label": "Auth badges",
          "description": "Show OAuth 2.0, JWT, API Key on connections"
        },
        {
          "label": "Error handling",
          "description": "Retry logic, dead letter queues, fallbacks"
        },
        {
          "label": "Data transforms",
          "description": "Mapping, conversion, enrichment steps"
        },
        {
          "label": "Timing/frequency",
          "description": "Sync intervals, batch schedules"
        }
      ]
    }
  ]
}
```

### Answer-to-Prompt Mapping

| Answer | Prompt Addition |
|--------|-----------------|
| Integration flow | "System integration diagram with bidirectional data flow arrows" |
| Authentication flow | "OAuth 2.0 sequence diagram with token exchange steps" |
| Salesforce + ERP | "Salesforce (cloud icon) connected to ERP (server icon)" |
| REST APIs | "REST/JSON labels on connection arrows" |
| Platform Events | "Platform Events pub/sub with event bus in center" |
| Auth badges | "OAuth 2.0 / JWT badges on integration arrows" |
| Error handling | "Error queue and retry logic shown as separate path" |

### Default Values (for Skip Mode)

- Diagram: Integration flow
- Systems: Salesforce + Custom APIs
- Protocols: REST APIs
- Elements: Auth badges

---

## Code Review Questions (Gemini Sub-Agent)

### When to Use
User mentions: review, code review, check my code, analyze, audit, best practices

### Questions for Apex Review

```json
{
  "questions": [
    {
      "question": "What type of Apex code is this?",
      "header": "Code Type",
      "multiSelect": false,
      "options": [
        {
          "label": "Trigger",
          "description": "Before/after trigger on an object"
        },
        {
          "label": "Batch job",
          "description": "Batch Apex for large data processing"
        },
        {
          "label": "Service class",
          "description": "Business logic, utility, or helper class"
        },
        {
          "label": "Controller",
          "description": "Aura/LWC controller or VF controller"
        }
      ]
    },
    {
      "question": "What should the review focus on?",
      "header": "Focus",
      "multiSelect": true,
      "options": [
        {
          "label": "Bulkification",
          "description": "SOQL/DML in loops, governor limits"
        },
        {
          "label": "Security",
          "description": "CRUD/FLS checks, injection vulnerabilities"
        },
        {
          "label": "Performance",
          "description": "Query optimization, caching, efficiency"
        },
        {
          "label": "Best practices",
          "description": "Naming, structure, patterns, testability"
        }
      ]
    }
  ]
}
```

---

## Quick Reference Card

| Image Type | Trigger Keywords | Questions |
|------------|-----------------|-----------|
| ERD | ERD, entity, data model, schema | Objects, Style, Purpose, Extras |
| LWC Mockup | LWC, component, mockup, wireframe | Component, Object, Context, Style |
| Architecture | architecture, integration, flow | Diagram, Systems, Protocols, Elements |
| Code Review | review, analyze, check, audit | Code Type, Focus |

---

## Example: Full Interview Flow

### User Says
"I need an ERD for my Service Cloud implementation"

### Claude Invokes AskUserQuestion
```
Objects: Core CRM / Sales Cloud / Service Cloud / Custom
Style: Professional / Whiteboard / Technical / Minimalist
Purpose: Documentation / Quick draft / Presentation / Review
Extras: Legend / Field names / Color-code / None
```

### User Selects
- Objects: Service Cloud
- Style: Professional
- Purpose: Documentation
- Extras: Legend, Color-code

### Claude Builds Prompt
```
Professional Salesforce ERD diagram showing Service Cloud objects:
- Case (blue, center): Main service object
- Knowledge (green, right): Linked articles
- Entitlement (yellow, left): Service level agreements
- Asset (orange, below): Customer-owned products
- ServiceContract (purple, top): Contract management

Relationships:
- Case → Knowledge (Lookup, dashed arrow)
- Case → Asset (Lookup, dashed arrow)
- Asset → ServiceContract (Master-Detail, solid arrow)

Color coding: Standard objects (blue), Service objects (green/yellow)
Include legend in bottom-right corner.
Clean white background, SLDS styling.
```

### Claude Generates
```bash
uv run scripts/generate_image.py \
  -p "[prompt above]" \
  -f "service-cloud-erd.png" \
  -r 4K
```
