# English Speaking Task Hint Modal Implementation Plan
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** Build a lazily generated, cached task-hint modal for English speaking dialogue sessions.
**Architecture:** The frontend opens a dedicated `TaskHintModal.vue` immediately and asks `DialogueChatView.vue` to lazy-load `TaskHint` through the existing `DialogueAPI`. The backend adds a per-session `task_hint` JSON cache, returns cached hints idempotently, and performs a single LLM JSON generation only when no cached hint exists. LLM output is parsed, validated, normalized, and replaced by deterministic fallback on any parse/schema/provider failure.
**Tech Stack:** Vue 3 `
```
- [ ] **Step 2: Run type-check**
Run:
```bash
cd /Users/buoy/Development/gitrepo/PPT
pnpm run type-check
```
Expected: PASS, because the component is not imported yet.
- [ ] **Step 3: Commit component**
```bash
cd /Users/buoy/Development/gitrepo/PPT
git add src/views/Editor/EnglishSpeaking/preview/TaskHintModal.vue
git commit -m "feat: add task hint modal component"
```
---
### Task 6: Wire DialogueChatView Lazy Loading
**Files:**
- Modify: `/Users/buoy/Development/gitrepo/PPT/src/views/Editor/EnglishSpeaking/preview/DialogueChatView.vue`
- [ ] **Step 1: Update imports**
Change imports near the top of the script:
```ts
import type { PreviewChatMessage, BadgeAchievement, DialogueReport, SessionStartInfo, TaskHint } from '@/types/englishSpeaking'
import TaskHintModal from './TaskHintModal.vue'
import { createDialogueApi } from '../services/llmService'
```
- [ ] **Step 2: Replace hint button handler**
Change:
```vue