# 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