Markdown analysis report (reports/*.md) and supplementary materials (_workspace/*.md) into a modern interactive web page (web/index.html + assets).
Execution mode: Agent team (pipeline + fan-out + incremental QA)
design-lead first creates the design system and data structure (pipeline stage 1), and based on those outputs, 3 members—visualization, frontend, and motion—work in parallel (fan-out), while web-qa verifies incrementally as soon as each module is completed.
Agent composition
| Team member | Agent type | Role | Skill | Output |
|---|---|---|---|---|
| design-lead | general-purpose | Design system + information architecture + data.json (prerequisite) | web-design-system | web/_design/* |
| visualization-engineer | general-purpose | Interactive charts (Chart.js/ECharts) | web-data-visualization | web/scripts/charts.js + chart-configs/ |
| frontend-engineer | general-purpose | HTML/CSS/Vanilla JS markup and components | web-frontend-build | web/index.html + styles/ + scripts/main.js |
| motion-designer | general-purpose | WebGL/Canvas background + GSAP scroll motion + micro-interactions | web-motion-animation | web/scripts/background-animation.js + scroll/microinteractions |
| web-qa | general-purpose | Incremental integration verification (tokens, data, semantics, responsiveness, performance) | web-quality-assurance | web/_design/qa-report.md |
| (Leader = orchestrator) | — | Progress coordination + final integration verification | — | User result reporting |
Workflow
Phase 0: Context check (support for follow-up work)
web/Check whether the directory exists- Determine execution mode:
web/does not exist → Initial build. Go to Phase 1web/exists + partial modification request (e.g., "just redo the charts", "only change the background motion", "change the color theme") → Partial re-execution. Re-invoke only the relevant agentweb/exists + full re-execution request → Existingweb/을web_{YYYYMMDD_HHMMSS}/then move to Phase 1
- For partial re-execution, specify the previous output path + change request in the relevant agent prompt
Phase 1: Input analysis & work directory preparation
- Identify input reports:
- Primary:
reports/SK하이닉스_분석보고서_20260512.md - Supplementary:
_workspace/01~05_*.md
- Primary:
web/_design/Create directory- Analyze user requirements:
- Extract special requests (e.g., specified color theme, type of background motion)
- Priorities (modernness vs information density, motion intensity, etc.)
- Input parameters to
web/_design/00_input.mdsave to
Phase 2: Design system definition (pipeline stage 1 — design-lead alone)
Execution mode: Sub-agent (design-lead standalone prerequisite work)
Invoke design-lead alone to generate the design system, information architecture, and data.json:
Agent(
name: "design-lead",
subagent_type: "general-purpose",
model: "opus",
prompt: ".claude/agents/design-lead.md 역할 + .claude/skills/web-design-system/SKILL.md 스킬 따라 작업. 입력: reports/SK하이닉스_분석보고서_20260512.md + _workspace/*. 출력: web/_design/design-tokens.json, information-architecture.md, component-catalog.md, data.json, style-guide.md"
)
Why design-lead works alone first: because all 3 subsequent members (viz/frontend/motion) receive design-lead's outputs as input. Parallelizing would cause conflicts with tokens not yet finalized.
Output verification (web-qa 1st pass):
- design-tokens.json completeness
- Accuracy of original report figures in data.json
- component-catalog sufficiency
Phase 3: Parallel implementation + incremental QA (fan-out — 4-person team)
Execution mode: agent team
After design-lead deliverables are ready, form a 4-person team (visualization, frontend, motion, web-qa):
TeamCreate(
team_name: "web-build-team",
members: [
{ name: "visualization-engineer", agent_type: "general-purpose", model: "opus",
prompt: "..." },
{ name: "frontend-engineer", agent_type: "general-purpose", model: "opus",
prompt: "..." },
{ name: "motion-designer", agent_type: "general-purpose", model: "opus",
prompt: "..." },
{ name: "web-qa", agent_type: "general-purpose", model: "opus",
prompt: "각 모듈 완성 직후 즉시 검증 (점진적 QA). 발견 버그는 해당 담당자에게 SendMessage. 단계별 검증 후 web/_design/qa-report.md 작성." }
]
)
TaskCreate(tasks: [
{ title: "차트 라이브러리 선택 + 7개 차트 구현", assignee: "visualization-engineer" },
{ title: "HTML 시맨틱 마크업 + CSS 디자인 토큰 + 반응형", assignee: "frontend-engineer" },
{ title: "Hero 배경 애니메이션(WebGL 또는 Canvas) + 스크롤 모션 + 마이크로 인터랙션", assignee: "motion-designer" },
{ title: "점진적 QA: 차트 완료 직후 검증", assignee: "web-qa" },
{ title: "점진적 QA: 마크업 완료 직후 검증", assignee: "web-qa" },
{ title: "점진적 QA: 모션 완료 직후 검증", assignee: "web-qa" },
{ title: "최종 통합 QA + qa-report.md", assignee: "web-qa", depends_on: ["..."] }
])
Team communication patterns:
- visualization → frontend: chart container HTML spec (ID/structure) SendMessage
- frontend → motion: background canvas container + trigger class spec SendMessage
- motion → visualization: coordinate scroll-entry stagger timing SendMessage
- web-qa → each owner: on bug discovery, specific location/expected/actual SendMessage
Deliverable storage:
| Team member | Output |
|---|---|
| visualization | web/scripts/charts.js, web/scripts/chart-configs/*.js |
| frontend | web/index.html, web/styles/*.css, web/scripts/main.js, web/scripts/data-loader.js |
| motion | web/scripts/background-animation.js, scroll-animations.js, microinteractions.js, web/styles/animations.css |
| web-qa | web/_design/qa-report.md |
Phase 4: Final integration verification & results report
- Wait for all team members to finish work (check via TaskGet)
- Read web-qa final report
- If P0/P1 bugs are found, request rework from the responsible owner (1 cycle)
- Report results to the user:
- Final deliverable path:
web/index.html - Key implementation items (design system, 7 chart types, background motion, interactions)
- QA report results (Pass/Warn/Fail counts)
- Data limitations/unsecured items
- Preview method:
cd web && python3 -m http.server 8000(or VS Code Live Server)
- Final deliverable path:
Phase 5: Cleanup
- Request shutdown from team members (SendMessage shutdown_request)
- Team cleanup (TeamDelete)
web/_design/Preserve directory (for post-verification/evolution)- Record this build in the CLAUDE.md change history
Data flow
[보고서 + _workspace/]
↓
[design-lead] (선행, 서브 에이전트)
↓
web/_design/
- design-tokens.json
- information-architecture.md
- component-catalog.md
- data.json
- style-guide.md
↓
[Team: visualization ↔ frontend ↔ motion ↔ web-qa]
↓
web/
- index.html
- styles/{main,components,responsive,animations}.css
- scripts/{main,data-loader,charts,background-animation,scroll-animations,microinteractions}.js
- scripts/chart-configs/*.js
- _design/qa-report.md
↓
[사용자] — http.server로 미리보기
Error handling
| Situation | Strategy |
|---|---|
| design-lead failure | Retry once. If it fails again, notify the user (prerequisite failure makes follow-up impossible) |
| 1 team member fails (Phase 3) | Retry once. If it fails again, proceed while specifying the missing area (e.g., static page without motion) |
| Chart data mismatch (found by QA) | Request 1 fix from viz-engineer |
| Token hardcoding detected | Request 1 fix from frontend |
| WebGL unsupported (motion) | PASS if CSS gradient fallback works; if it fails, change to a static background |
| Report data unavailable (N/A) | Clearly display "data unavailable" in the UI. Do not make arbitrary estimates |
| Many P0 bugs in Phase 4 integrated QA | Agree on priorities after reporting to the user |
Test scenarios
Normal flow
- User requests "turn the report into a webpage"
- Phase 0:
web/None → initial build - Phase 1: analyze report/workspace files,
web/_design/generation - Phase 2: run design-lead alone → generate tokens/IA/data.json, web-qa first-pass verification
- Phase 3: 4-person team composition, parallel implementation + incremental QA
- Phase 4: Final verification, report to user
web/index.htmlreport - Phase 5: Team cleanup
- User checks via
python3 -m http.serveror browser
Error flow — Motion failure
- In Phase 3, motion-designer fails to compile WebGL shader
- Leader requests one retry
- On repeated failure, apply only CSS gradient fallback
- State in qa-report.md: "WebGL shader not applied, CSS gradient fallback used"
- Report to user as a static page
Partial re-execution flow — Modify chart only
- User says "The HBM market share chart colors don't match, just redo the chart"
- Phase 0:
web/exists + partial modification request detected - Call only visualization-engineer alone (sub-agent), read previous chart-configs/ then modify only hbm-share.js
- web-qa re-verifies only that chart
- Report to user
Partial re-execution flow — Design token change
- User says "Make the light mode colors warmer"
- Call only design-lead to modify the light theme colors in design-tokens.json
- Call frontend-engineer to update CSS Custom Properties
- web-qa re-verification (confirm no impact on dark mode)
Preview method (user guidance)
cd /Users/robin/Downloads/kakaopay-research/web
python3 -m http.server 8000
# 또는
npx serve .
# 또는 VS Code Live Server 확장 사용
Open http://localhost:8000 in the browser.
Follow-up task keywords (reflected in description)
- Design: "modify design", "change theme", "change colors", "make it more modern", "enhance glassmorphism"
- Chart: "just redo the chart", "modify the HBM market share chart", "change the scenario chart"
- Motion: "change the background animation", "lower the motion intensity", "make it more flashy", "make it simple"
- Markup: "fix responsiveness", "mobile layout", "improve accessibility"
- Data: "update with the latest data", "reflect the report update"
- General: "re-execute", "make it again", "improve the previous result", "only a specific section"
Operations guide
- When adding a new chart, only a viz-engineer + qa cycle (frontend only adds a container)
- When adding a new section, design-lead's IA update → affects all other team members
- When updating data, modifying only design-lead's data.json reflects automatically (data-loader fetches)
- Rebuild recommended after quarterly earnings announcement (however, the analysis report itself must be updated first)